diff --git a/assets/templates/civicrm.shortcode.php b/assets/templates/civicrm.shortcode.php index 02f45e08df0447d01c21206d6d0ccf2f03bb3bcd..c590390b01a72437875c92bd261993dddbe6abad 100644 --- a/assets/templates/civicrm.shortcode.php +++ b/assets/templates/civicrm.shortcode.php @@ -2,7 +2,7 @@ /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ diff --git a/civicrm.php b/civicrm.php index c950968b5329b334a4b8b6e97210dcda05cb7f6e..4b804893eee96bf00ad8003191830f0c17517cce 100644 --- a/civicrm.php +++ b/civicrm.php @@ -2,11 +2,10 @@ /* Plugin Name: CiviCRM Description: CiviCRM - Growing and Sustaining Relationships -Version: 5.5.3 +Version: 5.6.0 Author: CiviCRM LLC Author URI: https://civicrm.org/ Plugin URI: https://wiki.civicrm.org/confluence/display/CRMDOC/Installing+CiviCRM+for+WordPress -GitHub Plugin URI: https://github.com/tadpolecc/civicrm.git License: AGPL3 Text Domain: civicrm Domain Path: /languages @@ -15,7 +14,7 @@ Domain Path: /languages /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ @@ -71,7 +70,7 @@ if ( ! defined( 'ABSPATH' ) ) exit; // set version here: when it changes, will force JS to reload -define( 'CIVICRM_PLUGIN_VERSION', '5' ); +define( 'CIVICRM_PLUGIN_VERSION', '4.7' ); // store reference to this file if (!defined('CIVICRM_PLUGIN_FILE')) { diff --git a/civicrm/CRM/ACL/API.php b/civicrm/CRM/ACL/API.php index b3eacfc3f0f0f408e31feb22472a9425bf00cbe6..b317fde85f27a462211fc15d316b35abbe0120f7 100644 --- a/civicrm/CRM/ACL/API.php +++ b/civicrm/CRM/ACL/API.php @@ -113,18 +113,18 @@ class CRM_ACL_API { } } - // first see if the contact has edit / view all contacts - if (CRM_Core_Permission::check('edit all contacts') || - ($type == self::VIEW && CRM_Core_Permission::check('view all contacts')) - ) { - return $deleteClause; - } - if (!$contactID) { $contactID = CRM_Core_Session::getLoggedInContactID(); } $contactID = (int) $contactID; + // first see if the contact has edit / view all permission + if (CRM_Core_Permission::check('edit all contacts', $contactID) || + ($type == self::VIEW && CRM_Core_Permission::check('view all contacts', $contactID)) + ) { + return $deleteClause; + } + $where = implode(' AND ', array( CRM_ACL_BAO_ACL::whereClause($type, diff --git a/civicrm/CRM/ACL/BAO/ACL.php b/civicrm/CRM/ACL/BAO/ACL.php index 15221f74565ead4bc8a0177ce0147f34df3c4c6a..2723f0f61e8eced30a4468ada4bdf7cb0de0e934 100644 --- a/civicrm/CRM/ACL/BAO/ACL.php +++ b/civicrm/CRM/ACL/BAO/ACL.php @@ -680,8 +680,8 @@ SELECT $acl.* * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { // note this also resets any ACL cache @@ -777,7 +777,7 @@ SELECT g.* $staticGroupIDs = array(); $cachedGroupIDs = array(); while ($dao->fetch()) { - // currently operation is restrcited to VIEW/EDIT + // currently operation is restricted to VIEW/EDIT if ($dao->where_clause) { if ($dao->select_tables) { $tmpTables = array(); diff --git a/civicrm/CRM/ACL/BAO/EntityRole.php b/civicrm/CRM/ACL/BAO/EntityRole.php index 757edce1cf10123c1b43a3dbe2ecbf56432f5c3a..42dd9167bc995efd481cc4ad53051c7f00c45826 100644 --- a/civicrm/CRM/ACL/BAO/EntityRole.php +++ b/civicrm/CRM/ACL/BAO/EntityRole.php @@ -80,8 +80,8 @@ class CRM_ACL_BAO_EntityRole extends CRM_ACL_DAO_EntityRole { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_ACL_DAO_EntityRole', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/ACL/Form/WordPress/Permissions.php b/civicrm/CRM/ACL/Form/WordPress/Permissions.php index 8310106827ac2c3d360bd5bfe00edcea55439ec8..580886435761a7242c0d34ed47ad10ad13fa6592 100644 --- a/civicrm/CRM/ACL/Form/WordPress/Permissions.php +++ b/civicrm/CRM/ACL/Form/WordPress/Permissions.php @@ -191,7 +191,7 @@ class CRM_ACL_Form_WordPress_Permissions extends CRM_Core_Form { CRM_Core_Session::setStatus("", ts('Wordpress Access Control Updated'), "success"); - // rebuild the menus to comply with the new permisssions/capabilites + // rebuild the menus to comply with the new permissions/capabilites CRM_Core_Invoke::rebuildMenuAndCaches(); CRM_Utils_System::redirect('admin.php?page=CiviCRM&q=civicrm/admin/access&reset=1'); diff --git a/civicrm/CRM/Activity/BAO/Activity.php b/civicrm/CRM/Activity/BAO/Activity.php index e7921e83cc40d91876cb563fbe7bc6feb410088e..be444ee7dd402594632db3fc0d1c7ed2709dff52 100644 --- a/civicrm/CRM/Activity/BAO/Activity.php +++ b/civicrm/CRM/Activity/BAO/Activity.php @@ -780,7 +780,7 @@ class CRM_Activity_BAO_Activity extends CRM_Activity_DAO_Activity { continue; } - $isBulkActivity = (!$bulkActivityTypeID || ($bulkActivityTypeID != $activity['activity_type_id'])); + $isBulkActivity = (!$bulkActivityTypeID || ($bulkActivityTypeID === $activity['activity_type_id'])); foreach ($mappingParams as $apiKey => $expectedName) { if (in_array($apiKey, array('assignee_contact_name', 'target_contact_name'))) { $activities[$id][$expectedName] = CRM_Utils_Array::value($apiKey, $activity, array()); @@ -2950,19 +2950,19 @@ INNER JOIN civicrm_option_group grp ON ( grp.id = val.option_group_id AND grp.n } elseif (isset($values['target_contact_counter']) && $values['target_contact_counter']) { $activity['target_contact_name'] = ''; - foreach ($values['target_contact_name'] as $tcID => $tcName) { - $targetTypeImage = ""; - $targetLink = CRM_Utils_System::href($tcName, 'civicrm/contact/view', "reset=1&cid={$tcID}"); - if ($showContactOverlay) { - $targetTypeImage = CRM_Contact_BAO_Contact_Utils::getImage( - CRM_Contact_BAO_Contact::getContactType($tcID), - FALSE, - $tcID); - $activity['target_contact_name'] .= "<div>$targetTypeImage $targetLink"; - } - else { - $activity['target_contact_name'] .= $targetLink; - } + $firstTargetName = reset($values['target_contact_name']); + $firstTargetContactID = key($values['target_contact_name']); + + $targetLink = CRM_Utils_System::href($firstTargetName, 'civicrm/contact/view', "reset=1&cid={$firstTargetContactID}"); + if ($showContactOverlay) { + $targetTypeImage = CRM_Contact_BAO_Contact_Utils::getImage( + CRM_Contact_BAO_Contact::getContactType($firstTargetContactID), + FALSE, + $firstTargetContactID); + $activity['target_contact_name'] .= "<div>$targetTypeImage $targetLink"; + } + else { + $activity['target_contact_name'] .= $targetLink; } if ($extraCount = $values['target_contact_counter'] - 1) { diff --git a/civicrm/CRM/Activity/Page/AJAX.php b/civicrm/CRM/Activity/Page/AJAX.php index 63d342f291178d4ab0ace57142157fb3b262bf44..4a53288813e26499bc25a0d86d354b681c7d4ff6 100644 --- a/civicrm/CRM/Activity/Page/AJAX.php +++ b/civicrm/CRM/Activity/Page/AJAX.php @@ -302,8 +302,8 @@ class CRM_Activity_Page_AJAX { $mainActivity->activity_date_time = $actDateTime; // Make sure this is current revision. $mainActivity->is_current_revision = TRUE; - // Drop all relations. - $mainActivity->parent_id = $mainActivity->original_id = NULL; + $mainActivity->original_id = $otherActivity->id; + $otherActivity->is_current_revision = FALSE; $mainActivity->save(); $mainActivityId = $mainActivity->id; @@ -327,7 +327,6 @@ class CRM_Activity_Page_AJAX { 1 => $params['caseID'], )) . ' ' . $otherActivity->subject; } - $otherActivity->activity_date_time = $actDateTime; $otherActivity->save(); $caseActivity->free(); diff --git a/civicrm/CRM/Admin/Form/Setting.php b/civicrm/CRM/Admin/Form/Setting.php index 695f6f097df4bcf63c494d270d9bafe460934f46..09c0b03842295585430788d12b4d72eed2d71d3f 100644 --- a/civicrm/CRM/Admin/Form/Setting.php +++ b/civicrm/CRM/Admin/Form/Setting.php @@ -36,8 +36,12 @@ */ class CRM_Admin_Form_Setting extends CRM_Core_Form { + use CRM_Admin_Form_SettingTrait; + protected $_settings = array(); + protected $includesReadOnlyFields; + /** * Set default values for the form. * @@ -93,80 +97,11 @@ class CRM_Admin_Form_Setting extends CRM_Core_Form { ) ); - $descriptions = array(); - $settingMetaData = $this->getSettingsMetaData(); - foreach ($settingMetaData as $setting => $props) { - if (isset($props['quick_form_type'])) { - if (isset($props['pseudoconstant'])) { - $options = civicrm_api3('Setting', 'getoptions', array( - 'field' => $setting, - )); - } - else { - $options = NULL; - } - //Load input as readonly whose values are overridden in civicrm.settings.php. - if (Civi::settings()->getMandatory($setting)) { - $props['html_attributes']['readonly'] = TRUE; - $setStatus = TRUE; - } - - $add = 'add' . $props['quick_form_type']; - if ($add == 'addElement') { - $this->$add( - $props['html_type'], - $setting, - ts($props['title']), - ($options !== NULL) ? $options['values'] : CRM_Utils_Array::value('html_attributes', $props, array()), - ($options !== NULL) ? CRM_Utils_Array::value('html_attributes', $props, array()) : NULL - ); - } - elseif ($add == 'addSelect') { - $this->addElement('select', $setting, ts($props['title']), $options['values'], CRM_Utils_Array::value('html_attributes', $props)); - } - elseif ($add == 'addCheckBox') { - $this->addCheckBox($setting, ts($props['title']), $options['values'], NULL, CRM_Utils_Array::value('html_attributes', $props), NULL, NULL, array(' ')); - } - elseif ($add == 'addChainSelect') { - $this->addChainSelect($setting, array( - 'label' => ts($props['title']), - )); - } - elseif ($add == 'addMonthDay') { - $this->add('date', $setting, ts($props['title']), CRM_Core_SelectValues::date(NULL, 'M d')); - } - else { - $this->$add($setting, ts($props['title'])); - } - // Migrate to using an array as easier in smart... - $descriptions[$setting] = ts($props['description']); - $this->assign("{$setting}_description", ts($props['description'])); - if ($setting == 'max_attachments') { - //temp hack @todo fix to get from metadata - $this->addRule('max_attachments', ts('Value should be a positive number'), 'positiveInteger'); - } - if ($setting == 'maxFileSize') { - //temp hack - $this->addRule('maxFileSize', ts('Value should be a positive number'), 'positiveInteger'); - } + $this->addFieldsDefinedInSettingsMetadata(); - } - } - if (!empty($setStatus)) { + if ($this->includesReadOnlyFields) { CRM_Core_Session::setStatus(ts("Some fields are loaded as 'readonly' as they have been set (overridden) in civicrm.settings.php."), '', 'info', array('expires' => 0)); } - // setting_description should be deprecated - see Mail.tpl for metadata based tpl. - $this->assign('setting_descriptions', $descriptions); - $this->assign('settings_fields', $settingMetaData); - } - - /** - * Get default entity. - * - * @return string - */ - public function getDefaultEntity() { - return 'Setting'; } /** @@ -185,6 +120,7 @@ class CRM_Admin_Form_Setting extends CRM_Core_Form { * @todo Document what I do. * * @param array $params + * @throws \CRM_Core_Exception */ public function commonProcess(&$params) { @@ -216,20 +152,19 @@ class CRM_Admin_Form_Setting extends CRM_Core_Form { unset($params[$name]); } } - $settings = array_intersect_key($params, $this->_settings); - $result = civicrm_api('setting', 'create', $settings + array('version' => 3)); - foreach ($settings as $setting => $settingGroup) { - //@todo array_diff this - unset($params[$setting]); + try { + $settings = $this->getSettingsToSetByMetadata($params); + civicrm_api3('setting', 'create', $settings); } - if (!empty($result['error_message'])) { - CRM_Core_Session::setStatus($result['error_message'], ts('Save Failed'), 'error'); + catch (CiviCRM_API3_Exception $e) { + CRM_Core_Session::setStatus($e->getMessage(), ts('Save Failed'), 'error'); } - //CRM_Core_BAO_ConfigSetting::create($params); + $this->filterParamsSetByMetadata($params); + $params = CRM_Core_BAO_ConfigSetting::filterSkipVars($params); if (!empty($params)) { - CRM_Core_Error::fatal('Unrecognized setting. This may be a config field which has not been properly migrated to a setting. (' . implode(', ', array_keys($params)) . ')'); + throw new CRM_Core_Exception('Unrecognized setting. This may be a config field which has not been properly migrated to a setting. (' . implode(', ', array_keys($params)) . ')'); } CRM_Core_Config::clearDBCache(); @@ -299,17 +234,4 @@ class CRM_Admin_Form_Setting extends CRM_Core_Form { ) + $autoSearchFields; } - /** - * Get the metadata relating to the settings on the form, ordered by the keys in $this->_settings. - * - * @return array - */ - protected function getSettingsMetaData() { - $allSettingMetaData = civicrm_api3('setting', 'getfields', array()); - $settingMetaData = array_intersect_key($allSettingMetaData['values'], $this->_settings); - // This array_merge re-orders to the key order of $this->_settings. - $settingMetaData = array_merge($this->_settings, $settingMetaData); - return $settingMetaData; - } - } diff --git a/civicrm/CRM/Admin/Form/SettingTrait.php b/civicrm/CRM/Admin/Form/SettingTrait.php new file mode 100644 index 0000000000000000000000000000000000000000..734eccc83098fd3eaa1df04efde53e0c6f7e3b11 --- /dev/null +++ b/civicrm/CRM/Admin/Form/SettingTrait.php @@ -0,0 +1,158 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 5 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2018 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC (c) 2004-2018 + */ + +/** + * This trait allows us to consolidate Preferences & Settings forms. + * + * It is intended mostly as part of a refactoring process to get rid of having 2. + */ +trait CRM_Admin_Form_SettingTrait { + + /** + * @var array + */ + protected $settingsMetadata; + + /** + * Get default entity. + * + * @return string + */ + public function getDefaultEntity() { + return 'Setting'; + } + + /** + * Get the metadata relating to the settings on the form, ordered by the keys in $this->_settings. + * + * @return array + */ + protected function getSettingsMetaData() { + if (empty($this->settingsMetadata)) { + $allSettingMetaData = civicrm_api3('setting', 'getfields', []); + $this->settingsMetadata = array_intersect_key($allSettingMetaData['values'], $this->_settings); + // This array_merge re-orders to the key order of $this->_settings. + $this->settingsMetadata = array_merge($this->_settings, $this->settingsMetadata); + } + return $this->settingsMetadata; + } + + /** + * Get the settings which can be stored based on metadata. + * + * @param array $params + * @return array + */ + protected function getSettingsToSetByMetadata($params) { + return array_intersect_key($params, $this->_settings); + } + + /** + * @param $params + */ + protected function filterParamsSetByMetadata(&$params) { + foreach ($this->getSettingsToSetByMetadata($params) as $setting => $settingGroup) { + //@todo array_diff this + unset($params[$setting]); + } + } + + /** + * Add fields in the metadata to the template. + */ + protected function addFieldsDefinedInSettingsMetadata() { + $settingMetaData = $this->getSettingsMetaData(); + $descriptions = []; + foreach ($settingMetaData as $setting => $props) { + if (isset($props['quick_form_type'])) { + if (isset($props['pseudoconstant'])) { + $options = civicrm_api3('Setting', 'getoptions', [ + 'field' => $setting, + ]); + } + else { + $options = NULL; + } + //Load input as readonly whose values are overridden in civicrm.settings.php. + if (Civi::settings()->getMandatory($setting)) { + $props['html_attributes']['readonly'] = TRUE; + $this->includesReadOnlyFields = TRUE; + } + + $add = 'add' . $props['quick_form_type']; + if ($add == 'addElement') { + $this->$add( + $props['html_type'], + $setting, + ts($props['title']), + ($options !== NULL) ? $options['values'] : CRM_Utils_Array::value('html_attributes', $props, []), + ($options !== NULL) ? CRM_Utils_Array::value('html_attributes', $props, []) : NULL + ); + } + elseif ($add == 'addSelect') { + $this->addElement('select', $setting, ts($props['title']), $options['values'], CRM_Utils_Array::value('html_attributes', $props)); + } + elseif ($add == 'addCheckBox') { + $this->addCheckBox($setting, ts($props['title']), $options['values'], NULL, CRM_Utils_Array::value('html_attributes', $props), NULL, NULL, [' ']); + } + elseif ($add == 'addChainSelect') { + $this->addChainSelect($setting, [ + 'label' => ts($props['title']), + ]); + } + elseif ($add == 'addMonthDay') { + $this->add('date', $setting, ts($props['title']), CRM_Core_SelectValues::date(NULL, 'M d')); + } + else { + $this->$add($setting, ts($props['title'])); + } + // Migrate to using an array as easier in smart... + $descriptions[$setting] = ts($props['description']); + $this->assign("{$setting}_description", ts($props['description'])); + if ($setting == 'max_attachments') { + //temp hack @todo fix to get from metadata + $this->addRule('max_attachments', ts('Value should be a positive number'), 'positiveInteger'); + } + if ($setting == 'maxFileSize') { + //temp hack + $this->addRule('maxFileSize', ts('Value should be a positive number'), 'positiveInteger'); + } + + } + } + // setting_description should be deprecated - see Mail.tpl for metadata based tpl. + $this->assign('setting_descriptions', $descriptions); + $this->assign('settings_fields', $settingMetaData); + } + +} diff --git a/civicrm/CRM/Badge/BAO/Layout.php b/civicrm/CRM/Badge/BAO/Layout.php index 1c5ce8021952440623d7fd47ccb0642fc3257e38..db9dd0de0b456bf3e6382e4980314af25145158d 100644 --- a/civicrm/CRM/Badge/BAO/Layout.php +++ b/civicrm/CRM/Badge/BAO/Layout.php @@ -70,9 +70,8 @@ class CRM_Badge_BAO_Layout extends CRM_Core_DAO_PrintLabel { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise - * + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Core_DAO_PrintLabel', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Campaign/BAO/Campaign.php b/civicrm/CRM/Campaign/BAO/Campaign.php index 8345d7fac404bcc4256c24c8989928de0f68706c..7cc0e111c8b770cfdfef755c1f07bd1d7d4453b5 100644 --- a/civicrm/CRM/Campaign/BAO/Campaign.php +++ b/civicrm/CRM/Campaign/BAO/Campaign.php @@ -551,8 +551,8 @@ INNER JOIN civicrm_group grp ON ( grp.id = campgrp.entity_id ) * @param bool $is_active * Value we want to set the is_active field. * - * @return CRM_Campaign_DAO_Campaign|null - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Campaign_DAO_Campaign', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Campaign/BAO/Survey.php b/civicrm/CRM/Campaign/BAO/Survey.php index df9b49022b8318bf037a85598343c53b97485343..a7e9f8ea08ecffb97fed939cfb8206b64e4a07ac 100644 --- a/civicrm/CRM/Campaign/BAO/Survey.php +++ b/civicrm/CRM/Campaign/BAO/Survey.php @@ -391,8 +391,8 @@ SELECT survey.id as id, * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Campaign_DAO_Survey', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Campaign/Selector/Search.php b/civicrm/CRM/Campaign/Selector/Search.php index 28c2b15b6d7961c6899021582a5765012b16e5fc..535a78349547fb580b15f66e9ba8123cdb56d2d0 100644 --- a/civicrm/CRM/Campaign/Selector/Search.php +++ b/civicrm/CRM/Campaign/Selector/Search.php @@ -282,7 +282,7 @@ class CRM_Campaign_Selector_Search extends CRM_Core_Selector_Base implements CRM ); list($select, $from) = explode(' FROM ', $sql); $selectSQL = " - SELECT 'civicrm_contact', contact_a.id, contact_a.id, '$cacheKey', contact_a.display_name + SELECT '$cacheKey', contact_a.id, contact_a.display_name FROM {$from} "; diff --git a/civicrm/CRM/Case/BAO/Case.php b/civicrm/CRM/Case/BAO/Case.php index 0d5f1d10c4277a1961579e630248970dff16ed40..0e4260c3ef8e74fd60e88b9f6949266dee921efb 100644 --- a/civicrm/CRM/Case/BAO/Case.php +++ b/civicrm/CRM/Case/BAO/Case.php @@ -676,7 +676,8 @@ LEFT JOIN civicrm_option_group aog ON aog.name='activity_type' $mask = CRM_Core_Action::mask($permissions); $caseTypes = CRM_Case_PseudoConstant::caseType('name'); - foreach ($result->fetchAll() as $key => $case) { + foreach ($result->fetchAll() as $case) { + $key = $case['case_id']; $casesList[$key] = array(); $casesList[$key]['DT_RowId'] = $case['case_id']; $casesList[$key]['DT_RowAttr'] = array('data-entity' => 'case', 'data-id' => $case['case_id']); @@ -909,15 +910,13 @@ SELECT case_status.label AS case_status, status_id, civicrm_case_type.title AS c * * @param null $context * @param int $userID - * @param null $type + * @param null $type (deprecated) * * @return array * Array of case activities * */ public static function getCaseActivity($caseID, &$params, $contactID, $context = NULL, $userID = NULL, $type = NULL) { - $values = array(); - $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); $assigneeID = CRM_Utils_Array::key('Activity Assignees', $activityContacts); $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); @@ -1088,9 +1087,6 @@ SELECT case_status.label AS case_status, status_id, civicrm_case_type.title AS c CRM_Activity_BAO_Activity::getStatusesByType(CRM_Activity_BAO_Activity::CANCELLED) ); - $contactViewUrl = CRM_Utils_System::url("civicrm/contact/view", "reset=1&cid=", FALSE, NULL, FALSE); - $hasViewContact = CRM_Core_Permission::giveMeAllACLs(); - if (!$userID) { $session = CRM_Core_Session::singleton(); $userID = $session->get('userID'); @@ -1112,75 +1108,74 @@ SELECT case_status.label AS case_status, status_id, civicrm_case_type.title AS c continue; } - $caseActivity['DT_RowId'] = $caseActivityId; + $caseActivities[$caseActivityId]['DT_RowId'] = $caseActivityId; //Add classes to the row, via DataTables syntax - $caseActivity['DT_RowClass'] = "crm-entity status-id-$dao->status"; + $caseActivities[$caseActivityId]['DT_RowClass'] = "crm-entity status-id-$dao->status"; if (CRM_Utils_Array::crmInArray($dao->status, $compStatusValues)) { - $caseActivity['DT_RowClass'] .= " status-completed"; + $caseActivities[$caseActivityId]['DT_RowClass'] .= " status-completed"; } else { if (CRM_Utils_Date::overdue($dao->display_date)) { - $caseActivity['DT_RowClass'] .= " status-overdue"; + $caseActivities[$caseActivityId]['DT_RowClass'] .= " status-overdue"; } else { - $caseActivity['DT_RowClass'] .= " status-scheduled"; + $caseActivities[$caseActivityId]['DT_RowClass'] .= " status-scheduled"; } } if (!empty($dao->priority)) { if ($dao->priority == CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'priority_id', 'Urgent')) { - $caseActivity['DT_RowClass'] .= " priority-urgent "; + $caseActivities[$caseActivityId]['DT_RowClass'] .= " priority-urgent "; } elseif ($dao->priority == CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'priority_id', 'Low')) { - $caseActivity['DT_RowClass'] .= " priority-low "; + $caseActivities[$caseActivityId]['DT_RowClass'] .= " priority-low "; } } //Add data to the row for inline editing, via DataTable syntax - $caseActivity['DT_RowAttr'] = array(); - $caseActivity['DT_RowAttr']['data-entity'] = 'activity'; - $caseActivity['DT_RowAttr']['data-id'] = $caseActivityId; + $caseActivities[$caseActivityId]['DT_RowAttr'] = array(); + $caseActivities[$caseActivityId]['DT_RowAttr']['data-entity'] = 'activity'; + $caseActivities[$caseActivityId]['DT_RowAttr']['data-id'] = $caseActivityId; //Activity Date and Time - $caseActivity['activity_date_time'] = CRM_Utils_Date::customFormat($dao->display_date); + $caseActivities[$caseActivityId]['activity_date_time'] = CRM_Utils_Date::customFormat($dao->display_date); //Activity Subject - $caseActivity['subject'] = $dao->subject; + $caseActivities[$caseActivityId]['subject'] = $dao->subject; //Activity Type - $caseActivity['type'] = (!empty($activityTypes[$dao->type]['icon']) ? '<span class="crm-i ' . $activityTypes[$dao->type]['icon'] . '"></span> ' : '') + $caseActivities[$caseActivityId]['type'] = (!empty($activityTypes[$dao->type]['icon']) ? '<span class="crm-i ' . $activityTypes[$dao->type]['icon'] . '"></span> ' : '') . $activityTypes[$dao->type]['label']; - //Activity Target (With) - $targetContact = ''; - if (isset($dao->target_contact_id)) { - $targetContact = $dao->target_contact_name; - if ($hasViewContact) { - $targetContact = '<a href="' . $contactViewUrl . $dao->target_contact_id . '">' . $dao->target_contact_name . '</a>'; + // Activity Target (With Contact) (There can be more than one) + $targetContact = self::formatContactLink($dao->target_contact_id, $dao->target_contact_name); + if (empty($caseActivities[$caseActivityId]['target_contact_name'])) { + $caseActivities[$caseActivityId]['target_contact_name'] = $targetContact; + } + else { + if (strpos($caseActivities[$caseActivityId]['target_contact_name'], $targetContact) === FALSE) { + $caseActivities[$caseActivityId]['target_contact_name'] .= '; ' . $targetContact; } } - $caseActivity['target_contact_name'] = $targetContact; - //Activity Source Contact (Reporter) - $sourceContact = $dao->source_contact_name; - if ($hasViewContact) { - $sourceContact = '<a href="' . $contactViewUrl . $dao->source_contact_id . '">' . $dao->source_contact_name . '</a>'; - } - $caseActivity['source_contact_name'] = $sourceContact; + // Activity Source Contact (Reporter) (There can only be one) + $sourceContact = self::formatContactLink($dao->source_contact_id, $dao->source_contact_name); + $caseActivities[$caseActivityId]['source_contact_name'] = $sourceContact; - //Activity Assignee. CRM-4485. - $assigneeContact = ''; - if (isset($dao->assignee_contact_id)) { - $assigneeContact = $dao->assignee_contact_name; - if ($hasViewContact) { - $assigneeContact = '<a href="' . $contactViewUrl . $dao->assignee_contact_id . '">' . $dao->assignee_contact_name . '</a>'; + // Activity Assignee (There can be more than one) + $assigneeContact = self::formatContactLink($dao->assignee_contact_id, $dao->assignee_contact_name); + if (empty($caseActivities[$caseActivityId]['assignee_contact_name'])) { + $caseActivities[$caseActivityId]['assignee_contact_name'] = $assigneeContact; + } + else { + if (strpos($caseActivities[$caseActivityId]['assignee_contact_name'], $assigneeContact) === FALSE) { + $caseActivities[$caseActivityId]['assignee_contact_name'] .= '; ' . $assigneeContact; } } - $caseActivity['assignee_contact_name'] = $assigneeContact; //Activity Status - $caseActivity['status_id'] = $activityStatuses[$dao->status]; + $caseActivities[$caseActivityId]['status_id'] = $activityStatuses[$dao->status]; // FIXME: Why are we not using CRM_Core_Action for these links? This is too much manual work and likely to get out-of-sync with core markup. $url = ""; @@ -1204,7 +1199,7 @@ SELECT case_status.label AS case_status, status_id, civicrm_case_type.title AS c } elseif (!$caseDeleted) { $url = ' <a ' . $css . ' href="' . $restoreUrl . $additionalUrl . '">' . ts('Restore') . '</a>'; - $caseActivity['status_id'] = $caseActivity['status_id'] . '<br /> (deleted)'; + $caseActivities[$caseActivityId]['status_id'] = $caseActivities[$caseActivityId]['status_id'] . '<br /> (deleted)'; } //check for operations. @@ -1217,24 +1212,46 @@ SELECT case_status.label AS case_status, status_id, civicrm_case_type.title AS c // if there are file attachments we will return how many and, if only one, add a link to it if (!empty($dao->attachment_ids)) { $attachmentIDs = array_unique(explode(',', $dao->attachment_ids)); - $caseActivity['no_attachments'] = count($attachmentIDs); + $caseActivities[$caseActivityId]['no_attachments'] = count($attachmentIDs); $url .= implode(' ', CRM_Core_BAO_File::paperIconAttachment('civicrm_activity', $caseActivityId)); } - $caseActivity['links'] = $url; - - array_push($caseActivities, $caseActivity); + $caseActivities[$caseActivityId]['links'] = $url; } $dao->free(); $caseActivitiesDT = array(); - $caseActivitiesDT['data'] = $caseActivities; + $caseActivitiesDT['data'] = array_values($caseActivities); $caseActivitiesDT['recordsTotal'] = $caseCount; $caseActivitiesDT['recordsFiltered'] = $caseCount; return $caseActivitiesDT; } + /** + * Helper function to generate a formatted contact link/name for display in the Case activities tab + * + * @param $contactId + * @param $contactName + * + * @return string + */ + private static function formatContactLink($contactId, $contactName) { + if (empty($contactId)) { + return NULL; + } + + $hasViewContact = CRM_Contact_BAO_Contact_Permission::allow($contactId); + + if ($hasViewContact) { + $contactViewUrl = CRM_Utils_System::url("civicrm/contact/view", "reset=1&cid={$contactId}"); + return "<a href=\"{$contactViewUrl}\">" . $contactName . "</a>"; + } + else { + return $contactName; + } + } + /** * Get Case Related Contacts. * diff --git a/civicrm/CRM/Case/Form/Activity.php b/civicrm/CRM/Case/Form/Activity.php index d12b8716cc5b242a7b3e442ce97dd654b2d67d1d..7fd6f54d7de6e32d2f0d21cc21ef1eeca86ba13a 100644 --- a/civicrm/CRM/Case/Form/Activity.php +++ b/civicrm/CRM/Case/Form/Activity.php @@ -178,10 +178,9 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity { $atArray, $this->_currentUserId ); - $activities = array_keys($activities); - $activities = $activities[0]; + $activityId = CRM_Utils_Array::first(array_keys($activities['data'])); $editUrl = CRM_Utils_System::url('civicrm/case/activity', - "reset=1&cid={$this->_currentlyViewedContactId}&caseid={$caseId}&action=update&id={$activities}" + "reset=1&cid={$this->_currentlyViewedContactId}&caseid={$caseId}&action=update&id={$activityId}" ); } CRM_Core_Error::statusBounce(ts("You can not add another '%1' activity to this case. %2", diff --git a/civicrm/CRM/Case/Page/AJAX.php b/civicrm/CRM/Case/Page/AJAX.php index bc09f142f0a41f3dca0522b710a7df30985586bb..9301abd0eed93567c00bfe8c17161effa5ff20ab 100644 --- a/civicrm/CRM/Case/Page/AJAX.php +++ b/civicrm/CRM/Case/Page/AJAX.php @@ -207,7 +207,7 @@ class CRM_Case_Page_AJAX { 'recordsTotal' => $cases['total'], ); unset($cases['total']); - $casesDT['data'] = $cases; + $casesDT['data'] = array_values($cases); CRM_Utils_JSON::output($casesDT); } diff --git a/civicrm/CRM/Contact/BAO/ContactType.php b/civicrm/CRM/Contact/BAO/ContactType.php index cb13346f556a1bd91fa98d7b7010b056757c2b17..d7a211ebac47f93b8f1dd82af3677c586fb37843 100644 --- a/civicrm/CRM/Contact/BAO/ContactType.php +++ b/civicrm/CRM/Contact/BAO/ContactType.php @@ -694,8 +694,8 @@ WHERE name = %1"; * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { $params = array('id' => $id); diff --git a/civicrm/CRM/Contact/BAO/Group.php b/civicrm/CRM/Contact/BAO/Group.php index 8c08654256d78acd477d7017d4c70506a31a3d0b..a5374fe7a68f22a222d37627518621b6b9e49773 100644 --- a/civicrm/CRM/Contact/BAO/Group.php +++ b/civicrm/CRM/Contact/BAO/Group.php @@ -539,8 +539,8 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { * @param bool $isActive * Value we want to set the is_active field. * - * @return CRM_Core_DAO|null - * DAO object on success, NULL otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $isActive) { return CRM_Core_DAO::setFieldValue('CRM_Contact_DAO_Group', $id, 'is_active', $isActive); diff --git a/civicrm/CRM/Contact/BAO/GroupContact.php b/civicrm/CRM/Contact/BAO/GroupContact.php index 3ac3b2b0eb1986ed3af59eff947021ce5a1b7813..faf2e2a1438d710058c46972a4f766edc24feb1e 100644 --- a/civicrm/CRM/Contact/BAO/GroupContact.php +++ b/civicrm/CRM/Contact/BAO/GroupContact.php @@ -51,17 +51,27 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact { * * @return CRM_Contact_BAO_Group */ - public static function add(&$params) { + public static function add($params) { + $hook = empty($params['id']) ? 'create' : 'edit'; + CRM_Utils_Hook::pre($hook, 'GroupContact', CRM_Utils_Array::value('id', $params), $params); - $dataExists = self::dataExists($params); - if (!$dataExists) { + if (!self::dataExists($params)) { return NULL; } $groupContact = new CRM_Contact_BAO_GroupContact(); $groupContact->copyValues($params); - CRM_Contact_BAO_SubscriptionHistory::create($params); $groupContact->save(); + + // Lookup existing info for the sake of subscription history + if (!empty($params['id'])) { + $groupContact->find(TRUE); + $params = $groupContact->toArray(); + } + CRM_Contact_BAO_SubscriptionHistory::create($params); + + CRM_Utils_Hook::post($hook, 'GroupContact', $groupContact->id, $groupContact); + return $groupContact; } @@ -74,12 +84,7 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact { * @return bool */ public static function dataExists(&$params) { - // return if no data present - if ($params['group_id'] == 0) { - return FALSE; - } - - return TRUE; + return (!empty($params['id']) || (!empty($params['group_id']) && !empty($params['contact_id']))); } /** diff --git a/civicrm/CRM/Contact/BAO/Query.php b/civicrm/CRM/Contact/BAO/Query.php index ef6d06646deb5622d824ebdb26a8bf499369d1f9..e5db7e134d742be306bb136c3625f95de000788e 100644 --- a/civicrm/CRM/Contact/BAO/Query.php +++ b/civicrm/CRM/Contact/BAO/Query.php @@ -2235,6 +2235,7 @@ class CRM_Contact_BAO_Query { $this->_qill[$grouping][] = "$field[title] $op \"$value\""; } elseif ($name === 'email_greeting') { + CRM_Core_Error::deprecatedFunctionWarning('pass in email_greeting_id or email_greeting_display'); $filterCondition = array('greeting_type' => 'email_greeting'); $this->optionValueQuery( $name, $op, $value, $grouping, @@ -2244,6 +2245,7 @@ class CRM_Contact_BAO_Query { ); } elseif ($name === 'postal_greeting') { + CRM_Core_Error::deprecatedFunctionWarning('pass in postal_greeting_id or postal_greeting_display'); $filterCondition = array('greeting_type' => 'postal_greeting'); $this->optionValueQuery( $name, $op, $value, $grouping, @@ -2253,6 +2255,7 @@ class CRM_Contact_BAO_Query { ); } elseif ($name === 'addressee') { + CRM_Core_Error::deprecatedFunctionWarning('pass in addressee_id or addressee_display'); $filterCondition = array('greeting_type' => 'addressee'); $this->optionValueQuery( $name, $op, $value, $grouping, @@ -4205,6 +4208,12 @@ civicrm_relationship.start_date > {$today} } $sql = " CREATE TEMPORARY TABLE {$relationshipTempTable} + ( + `contact_id` int(10) unsigned NOT NULL DEFAULT '0', + `contact_id_alt` int(10) unsigned NOT NULL DEFAULT '0', + KEY `contact_id` (`contact_id`), + KEY `contact_id_alt` (`contact_id_alt`) + ) (SELECT contact_id_b as contact_id, contact_id_a as contact_id_alt, civicrm_relationship.id FROM civicrm_relationship INNER JOIN civicrm_contact c ON civicrm_relationship.contact_id_a = c.id @@ -5969,8 +5978,8 @@ AND displayRelType.is_active = 1 } } else { - // LOWER roughly translates to 'hurt my database without deriving any benefit' See CRM-19811. - $wc = self::caseImportant($op) ? "LOWER({$field['where']})" : "{$field['where']}"; + CRM_Core_Error::deprecatedFunctionWarning('pass $ids to this method'); + $wc = "{$field['where']}"; } if (in_array($name, $pseudoFields)) { if (!in_array($name, array('gender_id', 'prefix_id', 'suffix_id', 'communication_style_id'))) { diff --git a/civicrm/CRM/Contact/BAO/RelationshipType.php b/civicrm/CRM/Contact/BAO/RelationshipType.php index 55e32582ff55d1cabff8f0c9803338754c3a1e12..346131b9f3ddb1c07a0a8a36efdd65f571076617 100644 --- a/civicrm/CRM/Contact/BAO/RelationshipType.php +++ b/civicrm/CRM/Contact/BAO/RelationshipType.php @@ -68,8 +68,8 @@ class CRM_Contact_BAO_RelationshipType extends CRM_Contact_DAO_RelationshipType * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Contact_DAO_RelationshipType', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Contact/Form/Relationship.php b/civicrm/CRM/Contact/Form/Relationship.php index fc115dcf92524ceda91d4ebfcf2841f52c4b4b5a..73aae1120140eea5d0fd950928e83434925e0491 100644 --- a/civicrm/CRM/Contact/Form/Relationship.php +++ b/civicrm/CRM/Contact/Form/Relationship.php @@ -227,7 +227,7 @@ class CRM_Contact_Form_Relationship extends CRM_Core_Form { $defaults['description'] = CRM_Utils_Array::value('description', $this->_values); $defaults['is_active'] = CRM_Utils_Array::value('is_active', $this->_values); - // The javascript on the form will swap these fields if it is a b_a relationship, so we compensate here + // The postprocess function will swap these fields if it is a b_a relationship, so we compensate here $defaults['is_permission_a_b'] = CRM_Utils_Array::value('is_permission_' . $this->_rtype, $this->_values); $defaults['is_permission_b_a'] = CRM_Utils_Array::value('is_permission_' . strrev($this->_rtype), $this->_values); @@ -578,22 +578,23 @@ class CRM_Contact_Form_Relationship extends CRM_Core_Form { /** * Prepares parameters to be used for create/update actions * - * @param array $params + * @param array $values * * @return array */ - private function preparePostProcessParameters($params) { - $relationshipTypeParts = explode('_', $params['relationship_type_id']); + private function preparePostProcessParameters($values) { + $params = $values; + list($relationshipTypeId, $a, $b) = explode('_', $params['relationship_type_id']); - $params['relationship_type_id'] = $relationshipTypeParts[0]; - $params['contact_id_' . $relationshipTypeParts[1]] = $this->_contactId; + $params['relationship_type_id'] = $relationshipTypeId; + $params['contact_id_' . $a] = $this->_contactId; if (empty($this->_relationshipId)) { - $params['contact_id_' . $relationshipTypeParts[2]] = explode(',', $params['related_contact_id']); + $params['contact_id_' . $b] = explode(',', $params['related_contact_id']); } else { $params['id'] = $this->_relationshipId; - $params['contact_id_' . $relationshipTypeParts[2]] = $params['related_contact_id']; + $params['contact_id_' . $b] = $params['related_contact_id']; foreach (array('start_date', 'end_date') as $dateParam) { if (!empty($params[$dateParam])) { @@ -602,11 +603,11 @@ class CRM_Contact_Form_Relationship extends CRM_Core_Form { } } - // CRM-14612 - Don't use adv-checkbox as it interferes with the form js - $params['is_permission_a_b'] = CRM_Utils_Array::value('is_permission_a_b', $params, 0); - $params['is_permission_b_a'] = CRM_Utils_Array::value('is_permission_b_a', $params, 0); + // If this is a b_a relationship these form elements are flipped + $params['is_permission_a_b'] = CRM_Utils_Array::value("is_permission_{$a}_{$b}", $values, 0); + $params['is_permission_b_a'] = CRM_Utils_Array::value("is_permission_{$b}_{$a}", $values, 0); - return array($params, $relationshipTypeParts[1]); + return array($params, $a); } /** diff --git a/civicrm/CRM/Contact/Form/Search/Custom/ContribSYBNT.php b/civicrm/CRM/Contact/Form/Search/Custom/ContribSYBNT.php index cf2b1e950be59178278235c38f703c3025eb27f8..8a8703800d5d339fc36bf1e587e4da6689d7ff77 100644 --- a/civicrm/CRM/Contact/Form/Search/Custom/ContribSYBNT.php +++ b/civicrm/CRM/Contact/Form/Search/Custom/ContribSYBNT.php @@ -404,7 +404,7 @@ AND c.receive_date < {$this->start_date_1} * @param array $formValues * */ - public static function formatSavedSearchFields(&$formValues) { + public static function formatSavedSearchFields($formValues) { $dateFields = array( 'start_date_1', 'end_date_1', @@ -418,6 +418,8 @@ AND c.receive_date < {$this->start_date_1} $formValues[$element] = date('Y-m-d', strtotime($value)); } } + + return $formValues; } } diff --git a/civicrm/CRM/Contact/Form/Task.php b/civicrm/CRM/Contact/Form/Task.php index 369d59451367e91e50fcc22c2e7d603842640ff8..2c03f1e7233ccee2b35fb90e6d7a3a889fa575c7 100644 --- a/civicrm/CRM/Contact/Form/Task.php +++ b/civicrm/CRM/Contact/Form/Task.php @@ -165,9 +165,6 @@ class CRM_Contact_Form_Task extends CRM_Core_Form_Task { if ((CRM_Utils_Array::value('radio_ts', self::$_searchFormValues) == 'ts_all') || ($form->_task == CRM_Contact_Task::SAVE_SEARCH) ) { - $sortByCharacter = $form->get('sortByCharacter'); - $cacheKey = ($sortByCharacter && $sortByCharacter != 'all') ? "{$cacheKey}_alphabet" : $cacheKey; - // since we don't store all contacts in prevnextcache, when user selects "all" use query to retrieve contacts // rather than prevnext cache table for most of the task actions except export where we rebuild query to fetch // final result set diff --git a/civicrm/CRM/Contact/Form/Task/EmailCommon.php b/civicrm/CRM/Contact/Form/Task/EmailCommon.php index 3f12ee333a4d11a9239ff9eb8255c803978c2b7a..889adc25abb2f752ea2b142d2f981e8e5510db01 100644 --- a/civicrm/CRM/Contact/Form/Task/EmailCommon.php +++ b/civicrm/CRM/Contact/Form/Task/EmailCommon.php @@ -89,7 +89,11 @@ class CRM_Contact_Form_Task_EmailCommon { } $form->_emails = $fromEmailValues; + $defaults = array(); $form->_fromEmails = $fromEmailValues; + if (!Civi::settings()->get('allow_mail_from_logged_in_contact')) { + $defaults['from_email_address'] = current(CRM_Core_BAO_Domain::getNameAndEmail(FALSE, TRUE)); + } if (is_numeric(key($form->_fromEmails))) { // Add signature $defaultEmail = civicrm_api3('email', 'getsingle', array('id' => key($form->_fromEmails))); @@ -100,8 +104,8 @@ class CRM_Contact_Form_Task_EmailCommon { if (!empty($defaultEmail['signature_text'])) { $defaults['text_message'] = "\n\n--\n" . $defaultEmail['signature_text']; } - $form->setDefaults($defaults); } + $form->setDefaults($defaults); } /** diff --git a/civicrm/CRM/Contact/Selector.php b/civicrm/CRM/Contact/Selector.php index 066e4a4476fd22a14557c37bc9f35f32aa960cb2..f048612ab7116eb803f6c86ded746d321315ddd2 100644 --- a/civicrm/CRM/Contact/Selector.php +++ b/civicrm/CRM/Contact/Selector.php @@ -903,7 +903,6 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se $countRow = Civi::service('prevnext')->getCount($cacheKey); // $sortByCharacter triggers a refresh in the prevNext cache if ($sortByCharacter && $sortByCharacter != 'all') { - $cacheKey .= "_alphabet"; $this->fillupPrevNextCache($sort, $cacheKey, 0, max(self::CACHE_SIZE, $pageSize)); } elseif (($firstRecord + $pageSize) >= $countRow) { @@ -1039,7 +1038,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se // the other alternative of running the FULL query will just be incredibly inefficient // and slow things down way too much on large data sets / complex queries - $selectSQL = "SELECT DISTINCT 'civicrm_contact', contact_a.id, contact_a.id, '$cacheKey', contact_a.sort_name"; + $selectSQL = "SELECT DISTINCT '$cacheKey', contact_a.id, contact_a.sort_name"; $sql = str_replace(array("SELECT contact_a.id as contact_id", "SELECT contact_a.id as id"), $selectSQL, $sql); try { diff --git a/civicrm/CRM/Contribute/BAO/ContributionPage.php b/civicrm/CRM/Contribute/BAO/ContributionPage.php index 0197f65cdcbfc50962151ca824ce34bd1d746cd1..c8a63a5adcda062816338e7f949878b043b61164 100644 --- a/civicrm/CRM/Contribute/BAO/ContributionPage.php +++ b/civicrm/CRM/Contribute/BAO/ContributionPage.php @@ -74,8 +74,8 @@ class CRM_Contribute_BAO_ContributionPage extends CRM_Contribute_DAO_Contributio * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Contribute_DAO_ContributionPage', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Contribute/BAO/Premium.php b/civicrm/CRM/Contribute/BAO/Premium.php index a7db1d5efd48f604cc84d6f87509bdca837b4060..5a8063925e85e8d3954071cd69068fcd0ea31246 100644 --- a/civicrm/CRM/Contribute/BAO/Premium.php +++ b/civicrm/CRM/Contribute/BAO/Premium.php @@ -74,8 +74,8 @@ class CRM_Contribute_BAO_Premium extends CRM_Contribute_DAO_Premium { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Contribute_DAO_Premium', $id, 'premiums_active ', $is_active); diff --git a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php index 62295f1c70ca7db182413be80c62fe7e7cac52be..9e59495c619241253100f6422578fb684f702b4a 100644 --- a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php +++ b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php @@ -46,6 +46,9 @@ * */ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task { + + use CRM_Financial_Form_SalesTaxTrait; + public $_mode; public $_action; diff --git a/civicrm/CRM/Contribute/Form/AdditionalPayment.php b/civicrm/CRM/Contribute/Form/AdditionalPayment.php index 075206d6928222679d8cd8d21fd17392a8b1953a..d05088c118cc4ac7c535002a0b47767457a2a595 100644 --- a/civicrm/CRM/Contribute/Form/AdditionalPayment.php +++ b/civicrm/CRM/Contribute/Form/AdditionalPayment.php @@ -174,7 +174,7 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract $defaults['total_amount'] = CRM_Utils_Money::format(abs($this->_refund), NULL, NULL, TRUE); } elseif ($this->_owed) { - $defaults['total_amount'] = number_format($this->_owed, 2); + $defaults['total_amount'] = CRM_Utils_Money::formatLocaleNumericRoundedForDefaultCurrency($this->_owed); } // Set $newCredit variable in template to control whether link to credit card mode is included diff --git a/civicrm/CRM/Contribute/Form/Contribution.php b/civicrm/CRM/Contribute/Form/Contribution.php index 77a15ced8221c800f8a36872a8c640a68d026ae7..3090952dc55180df88f15f148dadfc445470d3cb 100644 --- a/civicrm/CRM/Contribute/Form/Contribution.php +++ b/civicrm/CRM/Contribute/Form/Contribution.php @@ -378,7 +378,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP } } - $amountFields = array('non_deductible_amount', 'fee_amount', 'net_amount'); + $amountFields = array('non_deductible_amount', 'fee_amount'); foreach ($amountFields as $amt) { if (isset($defaults[$amt])) { $defaults[$amt] = CRM_Utils_Money::format($defaults[$amt], NULL, '%a'); @@ -535,7 +535,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP 'invoice_id', 'non_deductible_amount', 'fee_amount', - 'net_amount', ); foreach ($additionalDetailFields as $key) { if (!empty($defaults[$key])) { @@ -883,13 +882,6 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $softErrors = CRM_Contribute_Form_SoftCredit::formRule($fields, $errors, $self); - if (!empty($fields['total_amount']) && (!empty($fields['net_amount']) || !empty($fields['fee_amount']))) { - $sum = CRM_Utils_Rule::cleanMoney($fields['net_amount']) + CRM_Utils_Rule::cleanMoney($fields['fee_amount']); - if (CRM_Utils_Rule::cleanMoney($fields['total_amount']) != $sum) { - $errors['total_amount'] = ts('The sum of fee amount and net amount must be equal to total amount'); - } - } - //CRM-16285 - Function to handle validation errors on form, for recurring contribution field. CRM_Contribute_BAO_ContributionRecur::validateRecurContribution($fields, $files, $self, $errors); diff --git a/civicrm/CRM/Contribute/Form/Contribution/Confirm.php b/civicrm/CRM/Contribute/Form/Contribution/Confirm.php index a8b19f13e04ff52b36a2ae67470eb159a6713071..78a08ea421eee0ce2242fc2caed97b816c82f126 100644 --- a/civicrm/CRM/Contribute/Form/Contribution/Confirm.php +++ b/civicrm/CRM/Contribute/Form/Contribution/Confirm.php @@ -1842,7 +1842,7 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr * * Ie the membership block supports a separate transactions AND the contribution form has been configured for a * contribution - * transaction AND a membership transaction AND the payment processor supports double financial transactions (ie. NOT doTransferPayment style) + * transaction AND a membership transaction AND the payment processor supports double financial transactions (ie. NOT doTransferCheckout style) * * @param int $formID * @param bool $amountBlockActiveOnForm diff --git a/civicrm/CRM/Core/BAO/ActionSchedule.php b/civicrm/CRM/Core/BAO/ActionSchedule.php index e783523e0a003616cb5ace50f0f168e87fdc36cb..b7cb0b2c3f7118592edba146aedfcac423842c20 100644 --- a/civicrm/CRM/Core/BAO/ActionSchedule.php +++ b/civicrm/CRM/Core/BAO/ActionSchedule.php @@ -259,8 +259,8 @@ FROM civicrm_action_schedule cas * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Core_DAO_ActionSchedule', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Core/BAO/CustomField.php b/civicrm/CRM/Core/BAO/CustomField.php index 3c13c724c4d8eca0a0c56dc63a3a8166cd5e3b62..6fc3fe7d49e7b014b058d60f7e2da1a98afe97e7 100644 --- a/civicrm/CRM/Core/BAO/CustomField.php +++ b/civicrm/CRM/Core/BAO/CustomField.php @@ -363,8 +363,8 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { @@ -1662,7 +1662,7 @@ SELECT id $value = 0; } - $fileID = NULL; + $fileId = NULL; if ($customFields[$customFieldId]['data_type'] == 'File') { if (empty($value)) { @@ -1701,20 +1701,20 @@ SELECT $columnName FROM $tableName WHERE id = %1"; $params = array(1 => array($customValueId, 'Integer')); - $fileID = CRM_Core_DAO::singleValueQuery($query, $params); + $fileId = CRM_Core_DAO::singleValueQuery($query, $params); } $fileDAO = new CRM_Core_DAO_File(); - if ($fileID) { - $fileDAO->id = $fileID; + if ($fileId) { + $fileDAO->id = $fileId; } $fileDAO->uri = $filename; $fileDAO->mime_type = $mimeType; $fileDAO->upload_date = date('YmdHis'); $fileDAO->save(); - $fileID = $fileDAO->id; + $fileId = $fileDAO->id; $value = $filename; } @@ -1742,7 +1742,7 @@ SELECT $columnName 'custom_group_id' => $groupID, 'table_name' => $tableName, 'column_name' => $columnName, - 'file_id' => $fileID, + 'file_id' => $fileId, 'is_multiple' => $customFields[$customFieldId]['is_multiple'], ); diff --git a/civicrm/CRM/Core/BAO/CustomGroup.php b/civicrm/CRM/Core/BAO/CustomGroup.php index 17d089d656ec96947024d6072cc881795970830e..f4b61a577722c92001815064b75be7b8f994f1a9 100644 --- a/civicrm/CRM/Core/BAO/CustomGroup.php +++ b/civicrm/CRM/Core/BAO/CustomGroup.php @@ -253,8 +253,8 @@ class CRM_Core_BAO_CustomGroup extends CRM_Core_DAO_CustomGroup { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { // reset the cache diff --git a/civicrm/CRM/Core/BAO/Job.php b/civicrm/CRM/Core/BAO/Job.php index a67ffaa5b07f852b00472ad51a2d54f9b1b7680f..dfd28028a0e52b3d531853a4d0768f3ccc67ce5a 100644 --- a/civicrm/CRM/Core/BAO/Job.php +++ b/civicrm/CRM/Core/BAO/Job.php @@ -90,9 +90,8 @@ class CRM_Core_BAO_Job extends CRM_Core_DAO_Job { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise - * + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Core_DAO_Job', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Core/BAO/LocationType.php b/civicrm/CRM/Core/BAO/LocationType.php index d75cb632f18fa942d15b1f38bc1edbe7486bbed3..6362f126aaa355674b73c7e76bc4751d7fd9fc2b 100644 --- a/civicrm/CRM/Core/BAO/LocationType.php +++ b/civicrm/CRM/Core/BAO/LocationType.php @@ -76,9 +76,8 @@ class CRM_Core_BAO_LocationType extends CRM_Core_DAO_LocationType { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise - * + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Core_DAO_LocationType', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Core/BAO/MessageTemplate.php b/civicrm/CRM/Core/BAO/MessageTemplate.php index 871ca35427d77a8f9c2639e67a7e5921b262fe74..9d2b002aacb47a656edda85d4a6315f3fd5e82d9 100644 --- a/civicrm/CRM/Core/BAO/MessageTemplate.php +++ b/civicrm/CRM/Core/BAO/MessageTemplate.php @@ -66,8 +66,8 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, NULL otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Core_DAO_MessageTemplate', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Core/BAO/Navigation.php b/civicrm/CRM/Core/BAO/Navigation.php index 9b5f50a00c5350acea1780ec7773e962127e0607..e08778fc8b322a50adfceed9a0e1dee8451fa0c5 100644 --- a/civicrm/CRM/Core/BAO/Navigation.php +++ b/civicrm/CRM/Core/BAO/Navigation.php @@ -50,8 +50,8 @@ class CRM_Core_BAO_Navigation extends CRM_Core_DAO_Navigation { * @param bool $is_active * Value we want to set the is_active field. * - * @return CRM_Core_DAO_Navigation|NULL - * DAO object on success, NULL otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Core_DAO_Navigation', $id, 'is_active', $is_active); @@ -493,8 +493,9 @@ FROM civicrm_navigation WHERE domain_id = $domainID"; $config = CRM_Core_Config::singleton(); $makeLink = FALSE; - if (isset($url) && $url) { - if (substr($url, 0, 4) !== 'http') { + if (!empty($url)) { + // Skip processing fully-formed urls + if (substr($url, 0, 4) !== 'http' && $url[0] !== '/') { //CRM-7656 --make sure to separate out url path from url params, //as we'r going to validate url path across cross-site scripting. $parsedUrl = parse_url($url); diff --git a/civicrm/CRM/Core/BAO/OptionGroup.php b/civicrm/CRM/Core/BAO/OptionGroup.php index bbabcef8bd42e1fcc265e20d6e3a3159b2749375..4c1ccc9dfb9a856dd54afd4bbd7b435a108224f6 100644 --- a/civicrm/CRM/Core/BAO/OptionGroup.php +++ b/civicrm/CRM/Core/BAO/OptionGroup.php @@ -69,8 +69,8 @@ class CRM_Core_BAO_OptionGroup extends CRM_Core_DAO_OptionGroup { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Core_DAO_OptionGroup', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Core/BAO/OptionValue.php b/civicrm/CRM/Core/BAO/OptionValue.php index 98a331c6f4422edd1ea37c66fb8604af845005ec..5c3c2dfd26c5d6c4b519390f5c40815c769b4ee0 100644 --- a/civicrm/CRM/Core/BAO/OptionValue.php +++ b/civicrm/CRM/Core/BAO/OptionValue.php @@ -151,8 +151,8 @@ class CRM_Core_BAO_OptionValue extends CRM_Core_DAO_OptionValue { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Core_DAO_OptionValue', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Core/BAO/Setting.php b/civicrm/CRM/Core/BAO/Setting.php index 96a8b7d414bfbe1e9f63cbb1584a0683f8678f9c..5b891898022ddaa41b42e5a334d3140a7681125f 100644 --- a/civicrm/CRM/Core/BAO/Setting.php +++ b/civicrm/CRM/Core/BAO/Setting.php @@ -103,7 +103,7 @@ class CRM_Core_BAO_Setting extends CRM_Core_DAO_Setting { } /** - * Store multiple items in the setting table. + * Get multiple items from the setting table. * * @param array $params * (required) An api formatted array of keys and values. diff --git a/civicrm/CRM/Core/BAO/UFField.php b/civicrm/CRM/Core/BAO/UFField.php index e3ce7a46b557c23ee8dc17f1dcd5fe2450f9e860..9629d21e1a536717554805027aab06c8e88bbe9e 100644 --- a/civicrm/CRM/Core/BAO/UFField.php +++ b/civicrm/CRM/Core/BAO/UFField.php @@ -158,8 +158,8 @@ class CRM_Core_BAO_UFField extends CRM_Core_DAO_UFField { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { //check if custom data profile field is disabled diff --git a/civicrm/CRM/Core/BAO/UFGroup.php b/civicrm/CRM/Core/BAO/UFGroup.php index 4434d2b43952de7445a4a3feb75f899ce72b1254..8e294147d973d9fb27f7cb57584fba617607f932 100644 --- a/civicrm/CRM/Core/BAO/UFGroup.php +++ b/civicrm/CRM/Core/BAO/UFGroup.php @@ -116,8 +116,8 @@ class CRM_Core_BAO_UFGroup extends CRM_Core_DAO_UFGroup { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * CRM_Core_DAO_UFGroup object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Core_DAO_UFGroup', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Core/BAO/UFMatch.php b/civicrm/CRM/Core/BAO/UFMatch.php index a781b645873d603d23d2782cc3cf74a047bad3f1..a3581258433012f4fad3724b6c17f6200b4c397a 100644 --- a/civicrm/CRM/Core/BAO/UFMatch.php +++ b/civicrm/CRM/Core/BAO/UFMatch.php @@ -51,10 +51,12 @@ class CRM_Core_BAO_UFMatch extends CRM_Core_DAO_UFMatch { } $dao = new CRM_Core_DAO_UFMatch(); $dao->copyValues($params); + // Fixme: this function cannot update records if (!$dao->find(TRUE)) { $dao->save(); + Civi::$statics[__CLASS__][$params['domain_id']][(int) $dao->contact_id] = (int) $dao->uf_id; + CRM_Utils_Hook::post($hook, 'UFMatch', $dao->id, $dao); } - CRM_Utils_Hook::post($hook, 'UFMatch', $dao->id, $dao); return $dao; } @@ -468,8 +470,11 @@ AND domain_id = %4 $ufmatch = new CRM_Core_DAO_UFMatch(); $ufmatch->uf_id = $ufID; - $ufmatch->domain_id = CRM_Core_Config::domainID(); + $ufmatch->domain_id = $domainId = CRM_Core_Config::domainID(); $ufmatch->delete(); + + // Flush cache + Civi::$statics[__CLASS__][$domainId] = []; } /** @@ -478,20 +483,29 @@ AND domain_id = %4 * @param int $ufID * Id of UF for which related contact_id is required. * - * @return int + * @return int|NULL * contact_id on success, null otherwise */ public static function getContactId($ufID) { - if (!isset($ufID)) { + if (!$ufID) { return NULL; } + $domainId = CRM_Core_Config::domainID(); + if (!isset(Civi::$statics[__CLASS__][$domainId])) { + Civi::$statics[__CLASS__][$domainId] = []; + } + $contactId = array_search($ufID, Civi::$statics[__CLASS__][$domainId]); + if ($contactId) { + return $contactId; + } $ufmatch = new CRM_Core_DAO_UFMatch(); - $ufmatch->uf_id = $ufID; - $ufmatch->domain_id = CRM_Core_Config::domainID(); + $ufmatch->domain_id = $domainId; if ($ufmatch->find(TRUE)) { - return (int ) $ufmatch->contact_id; + $contactId = (int) $ufmatch->contact_id; + Civi::$statics[__CLASS__][$domainId][$contactId] = (int) $ufID; + return $contactId; } return NULL; } @@ -502,22 +516,26 @@ AND domain_id = %4 * @param int $contactID * ID of the contact for which related uf_id is required. * - * @return int + * @return int|NULL * uf_id of the given contact_id on success, null otherwise */ public static function getUFId($contactID) { - if (!isset($contactID)) { + if (!$contactID) { return NULL; } - $domain = CRM_Core_BAO_Domain::getDomain(); - $ufmatch = new CRM_Core_DAO_UFMatch(); + $domainId = CRM_Core_Config::domainID(); + $contactID = (int) $contactID; - $ufmatch->contact_id = $contactID; - $ufmatch->domain_id = $domain->id; - if ($ufmatch->find(TRUE)) { - return $ufmatch->uf_id; + if (empty(Civi::$statics[__CLASS__][$domainId]) || !array_key_exists($contactID, Civi::$statics[__CLASS__][$domainId])) { + Civi::$statics[__CLASS__][$domainId][$contactID] = NULL; + $ufmatch = new CRM_Core_DAO_UFMatch(); + $ufmatch->contact_id = $contactID; + $ufmatch->domain_id = $domainId; + if ($ufmatch->find(TRUE)) { + Civi::$statics[__CLASS__][$domainId][$contactID] = (int) $ufmatch->uf_id; + } } - return NULL; + return Civi::$statics[__CLASS__][$domainId][$contactID]; } /** diff --git a/civicrm/CRM/Core/DAO/AllCoreTables.php b/civicrm/CRM/Core/DAO/AllCoreTables.php index 6be5be07f763499ac0ec58febc8a082e08e2518f..2bfbf0aeeb9ccc43092bc65d1a5e949b0fe0badd 100644 --- a/civicrm/CRM/Core/DAO/AllCoreTables.php +++ b/civicrm/CRM/Core/DAO/AllCoreTables.php @@ -126,7 +126,7 @@ class CRM_Core_DAO_AllCoreTables { /** * Modify indices to account for localization options. * - * @param CRM_Core_DAO $class DAO class + * @param string $class DAO class * @param array $originalIndices index definitions before localization * * @return array diff --git a/civicrm/CRM/Core/DAO/CustomField.php b/civicrm/CRM/Core/DAO/CustomField.php index fea2e7e4c7df6d3ed5dd65c7b2d4b45f872e2fc8..cda6a54a25d979e465b208c56da29c19cd27e10b 100644 --- a/civicrm/CRM/Core/DAO/CustomField.php +++ b/civicrm/CRM/Core/DAO/CustomField.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/CustomField.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:7f096c92af68ef9564675e3d708fbbe1) + * (GenCodeChecksum:73d7ccebba6055cae4fa0c9d797025c4) */ /** @@ -256,6 +256,7 @@ class CRM_Core_DAO_CustomField extends CRM_Core_DAO { if (!isset(Civi::$statics[__CLASS__]['links'])) { Civi::$statics[__CLASS__]['links'] = static ::createReferenceColumns(__CLASS__); Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'custom_group_id', 'civicrm_custom_group', 'id'); + Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'option_group_id', 'civicrm_option_group', 'id'); CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'links_callback', Civi::$statics[__CLASS__]['links']); } return Civi::$statics[__CLASS__]['links']; @@ -598,6 +599,7 @@ class CRM_Core_DAO_CustomField extends CRM_Core_DAO { 'entity' => 'CustomField', 'bao' => 'CRM_Core_BAO_CustomField', 'localizable' => 0, + 'FKClassName' => 'CRM_Core_DAO_OptionGroup', 'pseudoconstant' => [ 'table' => 'civicrm_option_group', 'keyColumn' => 'id', diff --git a/civicrm/CRM/Core/DAO/OptionValue.php b/civicrm/CRM/Core/DAO/OptionValue.php index dbf7059bb18280c8f0e52c33975fbf350fc376fc..ba11ef224af76d93bd6aa8429a4c7a4c1ff0cc76 100644 --- a/civicrm/CRM/Core/DAO/OptionValue.php +++ b/civicrm/CRM/Core/DAO/OptionValue.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/OptionValue.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:8cf699b034cbd9d7b8fe0a69250a79ba) + * (GenCodeChecksum:c2177ac5574657232c71d57dbf7e0e55) */ /** @@ -395,6 +395,10 @@ class CRM_Core_DAO_OptionValue extends CRM_Core_DAO { 'entity' => 'OptionValue', 'bao' => 'CRM_Core_BAO_OptionValue', 'localizable' => 0, + 'pseudoconstant' => [ + 'optionGroupName' => 'visibility', + 'optionEditPath' => 'civicrm/admin/options/visibility', + ] ], 'icon' => [ 'name' => 'icon', diff --git a/civicrm/CRM/Core/DAO/PrevNextCache.php b/civicrm/CRM/Core/DAO/PrevNextCache.php index bc01e75e1c94aa855dd6001fdc924ce627906786..c55e0b7369d278760ec1790abcbcf6e853052b82 100644 --- a/civicrm/CRM/Core/DAO/PrevNextCache.php +++ b/civicrm/CRM/Core/DAO/PrevNextCache.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/PrevNextCache.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:cfce4435348e53ba9941ce5ed223c05b) + * (GenCodeChecksum:5e4976ab94ea074a01a14e9eb0dde913) */ /** @@ -127,7 +127,7 @@ class CRM_Core_DAO_PrevNextCache extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_INT, 'title' => ts('Prev Next Entity ID 2'), 'description' => 'FK to entity table specified in entity_table column.', - 'required' => TRUE, + 'required' => FALSE, 'table_name' => 'civicrm_prevnext_cache', 'entity' => 'PrevNextCache', 'bao' => 'CRM_Core_BAO_PrevNextCache', diff --git a/civicrm/CRM/Core/DAO/UFField.php b/civicrm/CRM/Core/DAO/UFField.php index b560e442ed366c1f5a8e9d53b71d1d9a25a44130..f0945794cce5aeefd6b75491828b22e62af3c1b0 100644 --- a/civicrm/CRM/Core/DAO/UFField.php +++ b/civicrm/CRM/Core/DAO/UFField.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/UFField.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:4777c5b97760d4bd4b7138468d18ded5) + * (GenCodeChecksum:20b17223454fb0b4a8e2801193ff253c) */ /** @@ -363,6 +363,10 @@ class CRM_Core_DAO_UFField extends CRM_Core_DAO { 'entity' => 'UFField', 'bao' => 'CRM_Core_BAO_UFField', 'localizable' => 0, + 'pseudoconstant' => [ + 'optionGroupName' => 'phone_type', + 'optionEditPath' => 'civicrm/admin/options/phone_type', + ] ], 'website_type_id' => [ 'name' => 'website_type_id', @@ -373,6 +377,10 @@ class CRM_Core_DAO_UFField extends CRM_Core_DAO { 'entity' => 'UFField', 'bao' => 'CRM_Core_BAO_UFField', 'localizable' => 0, + 'pseudoconstant' => [ + 'optionGroupName' => 'website_type', + 'optionEditPath' => 'civicrm/admin/options/website_type', + ] ], 'label' => [ 'name' => 'label', diff --git a/civicrm/CRM/Core/Form.php b/civicrm/CRM/Core/Form.php index 70e560494a7a23b1cf1d056d20073c3c42f9c2d5..613bcf227deeb3854f3d1edf4f214b2eec23a4fe 100644 --- a/civicrm/CRM/Core/Form.php +++ b/civicrm/CRM/Core/Form.php @@ -2069,7 +2069,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page { $validUser = CRM_Contact_BAO_Contact_Utils::validChecksum($tempID, $userChecksum); if ($validUser) { CRM_Core_Resources::singleton()->addVars('coreForm', array('contact_id' => (int) $tempID)); - CRM_Core_Resources::singleton()->addVars('coreForm', array('checksum' => (int) $tempID)); + CRM_Core_Resources::singleton()->addVars('coreForm', array('checksum' => $userChecksum)); return $tempID; } } diff --git a/civicrm/CRM/Core/I18n/SchemaStructure_5_4_alpha1.php b/civicrm/CRM/Core/I18n/SchemaStructure_5_4_alpha1.php new file mode 100644 index 0000000000000000000000000000000000000000..5c881410a554884f5cadbb652c61cdafb1ecbe3d --- /dev/null +++ b/civicrm/CRM/Core/I18n/SchemaStructure_5_4_alpha1.php @@ -0,0 +1,714 @@ +<?php +/* ++--------------------------------------------------------------------+ +| CiviCRM version 5 | ++--------------------------------------------------------------------+ +| Copyright CiviCRM LLC (c) 2004-2018 | ++--------------------------------------------------------------------+ +| This file is a part of CiviCRM. | +| | +| CiviCRM is free software; you can copy, modify, and distribute it | +| under the terms of the GNU Affero General Public License | +| Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | +| | +| CiviCRM is distributed in the hope that it will be useful, but | +| WITHOUT ANY WARRANTY; without even the implied warranty of | +| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | +| See the GNU Affero General Public License for more details. | +| | +| You should have received a copy of the GNU Affero General Public | +| License and the CiviCRM Licensing Exception along | +| with this program; if not, contact CiviCRM LLC | +| at info[AT]civicrm[DOT]org. If you have questions about the | +| GNU Affero General Public License or the licensing of CiviCRM, | +| see the CiviCRM license FAQ at http://civicrm.org/licensing | ++--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC (c) 2004-2018 + * + * Generated from schema_structure.tpl + * DO NOT EDIT. Generated by CRM_Core_CodeGen + */ +class CRM_Core_I18n_SchemaStructure_5_4_alpha1 { + + /** + * Get translatable columns. + * + * @return array + * A table-indexed array of translatable columns. + */ + public static function columns() { + static $result = NULL; + if (!$result) { + $result = [ + 'civicrm_location_type' => [ + 'display_name' => "varchar(64)", + ], + 'civicrm_option_group' => [ + 'title' => "varchar(255)", + 'description' => "varchar(255)", + ], + 'civicrm_relationship_type' => [ + 'label_a_b' => "varchar(64)", + 'label_b_a' => "varchar(64)", + 'description' => "varchar(255)", + ], + 'civicrm_contact_type' => [ + 'label' => "varchar(64)", + 'description' => "text", + ], + 'civicrm_batch' => [ + 'title' => "varchar(255)", + 'description' => "text", + ], + 'civicrm_premiums' => [ + 'premiums_intro_title' => "varchar(255)", + 'premiums_intro_text' => "text", + 'premiums_nothankyou_label' => "varchar(255)", + ], + 'civicrm_membership_status' => [ + 'label' => "varchar(128)", + ], + 'civicrm_survey' => [ + 'title' => "varchar(255)", + 'instructions' => "text", + 'thankyou_title' => "varchar(255)", + 'thankyou_text' => "text", + ], + 'civicrm_participant_status_type' => [ + 'label' => "varchar(255)", + ], + 'civicrm_case_type' => [ + 'title' => "varchar(64)", + 'description' => "varchar(255)", + ], + 'civicrm_tell_friend' => [ + 'title' => "varchar(255)", + 'intro' => "text", + 'suggested_message' => "text", + 'thankyou_title' => "varchar(255)", + 'thankyou_text' => "text", + ], + 'civicrm_custom_group' => [ + 'title' => "varchar(64)", + 'help_pre' => "text", + 'help_post' => "text", + ], + 'civicrm_custom_field' => [ + 'label' => "varchar(255)", + 'help_pre' => "text", + 'help_post' => "text", + ], + 'civicrm_option_value' => [ + 'label' => "varchar(512)", + 'description' => "text", + ], + 'civicrm_group' => [ + 'title' => "varchar(64)", + ], + 'civicrm_contribution_page' => [ + 'title' => "varchar(255)", + 'intro_text' => "text", + 'pay_later_text' => "text", + 'pay_later_receipt' => "text", + 'initial_amount_label' => "varchar(255)", + 'initial_amount_help_text' => "text", + 'thankyou_title' => "varchar(255)", + 'thankyou_text' => "text", + 'thankyou_footer' => "text", + 'receipt_from_name' => "varchar(255)", + 'receipt_text' => "text", + 'footer_text' => "text", + ], + 'civicrm_product' => [ + 'name' => "varchar(255)", + 'description' => "text", + 'options' => "text", + ], + 'civicrm_membership_type' => [ + 'name' => "varchar(128)", + 'description' => "varchar(255)", + ], + 'civicrm_membership_block' => [ + 'new_title' => "varchar(255)", + 'new_text' => "text", + 'renewal_title' => "varchar(255)", + 'renewal_text' => "text", + ], + 'civicrm_price_set' => [ + 'title' => "varchar(255)", + 'help_pre' => "text", + 'help_post' => "text", + ], + 'civicrm_dashboard' => [ + 'label' => "varchar(255)", + ], + 'civicrm_uf_group' => [ + 'title' => "varchar(64)", + 'frontend_title' => "varchar(64)", + 'help_pre' => "text", + 'help_post' => "text", + 'cancel_button_text' => "varchar(64)", + 'submit_button_text' => "varchar(64)", + ], + 'civicrm_uf_field' => [ + 'help_post' => "text", + 'help_pre' => "text", + 'label' => "varchar(255)", + ], + 'civicrm_price_field' => [ + 'label' => "varchar(255)", + 'help_pre' => "text", + 'help_post' => "text", + ], + 'civicrm_price_field_value' => [ + 'label' => "varchar(255)", + 'description' => "text", + 'help_pre' => "text", + 'help_post' => "text", + ], + 'civicrm_pcp_block' => [ + 'link_text' => "varchar(255)", + ], + 'civicrm_event' => [ + 'title' => "varchar(255)", + 'summary' => "text", + 'description' => "text", + 'registration_link_text' => "varchar(255)", + 'event_full_text' => "text", + 'fee_label' => "varchar(255)", + 'intro_text' => "text", + 'footer_text' => "text", + 'confirm_title' => "varchar(255)", + 'confirm_text' => "text", + 'confirm_footer_text' => "text", + 'confirm_email_text' => "text", + 'confirm_from_name' => "varchar(255)", + 'thankyou_title' => "varchar(255)", + 'thankyou_text' => "text", + 'thankyou_footer_text' => "text", + 'pay_later_text' => "text", + 'pay_later_receipt' => "text", + 'initial_amount_label' => "varchar(255)", + 'initial_amount_help_text' => "text", + 'waitlist_text' => "text", + 'approval_req_text' => "text", + 'template_title' => "varchar(255)", + ], + ]; + } + return $result; + } + + /** + * Get a table indexed array of the indices for translatable fields. + * + * @return array + * Indices for translatable fields. + */ + public static function indices() { + static $result = NULL; + if (!$result) { + $result = [ + 'civicrm_custom_group' => [ + 'UI_title_extends' => [ + 'name' => 'UI_title_extends', + 'field' => [ + 'title', + 'extends', + ], + 'unique' => 1, + ], + ], + 'civicrm_custom_field' => [ + 'UI_label_custom_group_id' => [ + 'name' => 'UI_label_custom_group_id', + 'field' => [ + 'label', + 'custom_group_id', + ], + 'unique' => 1, + ], + ], + 'civicrm_group' => [ + 'UI_title' => [ + 'name' => 'UI_title', + 'field' => [ + 'title', + ], + 'unique' => 1, + ], + ], + ]; + } + return $result; + } + + /** + * Get tables with translatable fields. + * + * @return array + * Array of names of tables with fields that can be translated. + */ + public static function tables() { + static $result = NULL; + if (!$result) { + $result = array_keys(self::columns()); + } + return $result; + } + + /** + * Get a list of widgets for editing translatable fields. + * + * @return array + * Array of the widgets for editing translatable fields. + */ + public static function widgets() { + static $result = NULL; + if (!$result) { + $result = [ + 'civicrm_location_type' => [ + 'display_name' => [ + 'type' => "Text", + ], + ], + 'civicrm_option_group' => [ + 'title' => [ + 'type' => "Text", + ], + 'description' => [ + 'type' => "Text", + ], + ], + 'civicrm_relationship_type' => [ + 'label_a_b' => [ + 'type' => "Text", + ], + 'label_b_a' => [ + 'type' => "Text", + ], + 'description' => [ + 'type' => "Text", + ], + ], + 'civicrm_contact_type' => [ + 'label' => [ + 'type' => "Text", + ], + 'description' => [ + 'type' => "TextArea", + 'rows' => "2", + 'cols' => "60", + ], + ], + 'civicrm_batch' => [ + 'title' => [ + 'type' => "Text", + ], + 'description' => [ + 'type' => "TextArea", + 'rows' => "4", + 'cols' => "80", + ], + ], + 'civicrm_premiums' => [ + 'premiums_intro_title' => [ + 'type' => "Text", + ], + 'premiums_intro_text' => [ + 'type' => "Text", + ], + 'premiums_nothankyou_label' => [ + 'type' => "Text", + ], + ], + 'civicrm_membership_status' => [ + 'label' => [ + 'type' => "Text", + ], + ], + 'civicrm_survey' => [ + 'title' => [ + 'type' => "Text", + 'required' => "true", + ], + 'instructions' => [ + 'type' => "TextArea", + 'rows' => "20", + 'cols' => "80", + ], + 'thankyou_title' => [ + 'type' => "Text", + ], + 'thankyou_text' => [ + 'type' => "TextArea", + 'rows' => "8", + 'cols' => "60", + ], + ], + 'civicrm_participant_status_type' => [ + 'label' => [ + 'type' => "Text", + ], + ], + 'civicrm_case_type' => [ + 'title' => [ + 'type' => "Text", + 'required' => "true", + ], + 'description' => [ + 'type' => "Text", + ], + ], + 'civicrm_tell_friend' => [ + 'title' => [ + 'type' => "Text", + ], + 'intro' => [ + 'type' => "Text", + ], + 'suggested_message' => [ + 'type' => "Text", + ], + 'thankyou_title' => [ + 'type' => "Text", + ], + 'thankyou_text' => [ + 'type' => "Text", + ], + ], + 'civicrm_custom_group' => [ + 'title' => [ + 'type' => "Text", + 'required' => "true", + ], + 'help_pre' => [ + 'type' => "TextArea", + 'rows' => "4", + 'cols' => "80", + ], + 'help_post' => [ + 'type' => "TextArea", + 'rows' => "4", + 'cols' => "80", + ], + ], + 'civicrm_custom_field' => [ + 'label' => [ + 'type' => "Text", + 'required' => "true", + ], + 'help_pre' => [ + 'type' => "Text", + ], + 'help_post' => [ + 'type' => "Text", + ], + ], + 'civicrm_option_value' => [ + 'label' => [ + 'type' => "Text", + 'required' => "true", + ], + 'description' => [ + 'type' => "TextArea", + 'rows' => "8", + 'cols' => "60", + ], + ], + 'civicrm_group' => [ + 'title' => [ + 'type' => "Text", + ], + ], + 'civicrm_contribution_page' => [ + 'title' => [ + 'type' => "Text", + ], + 'intro_text' => [ + 'type' => "RichTextEditor", + 'rows' => "6", + 'cols' => "50", + ], + 'pay_later_text' => [ + 'type' => "Text", + ], + 'pay_later_receipt' => [ + 'type' => "Text", + ], + 'initial_amount_label' => [ + 'type' => "Text", + ], + 'initial_amount_help_text' => [ + 'type' => "Text", + ], + 'thankyou_title' => [ + 'type' => "Text", + ], + 'thankyou_text' => [ + 'type' => "RichTextEditor", + 'rows' => "8", + 'cols' => "60", + ], + 'thankyou_footer' => [ + 'type' => "RichTextEditor", + 'rows' => "8", + 'cols' => "60", + ], + 'receipt_from_name' => [ + 'type' => "Text", + ], + 'receipt_text' => [ + 'type' => "TextArea", + 'rows' => "6", + 'cols' => "50", + ], + 'footer_text' => [ + 'type' => "RichTextEditor", + 'rows' => "6", + 'cols' => "50", + ], + ], + 'civicrm_product' => [ + 'name' => [ + 'type' => "Text", + 'required' => "true", + ], + 'description' => [ + 'type' => "Text", + ], + 'options' => [ + 'type' => "Text", + ], + ], + 'civicrm_membership_type' => [ + 'name' => [ + 'type' => "Text", + 'label' => "Name", + ], + 'description' => [ + 'type' => "TextArea", + 'rows' => "6", + 'cols' => "50", + 'label' => "Description", + ], + ], + 'civicrm_membership_block' => [ + 'new_title' => [ + 'type' => "Text", + ], + 'new_text' => [ + 'type' => "Text", + ], + 'renewal_title' => [ + 'type' => "Text", + ], + 'renewal_text' => [ + 'type' => "Text", + ], + ], + 'civicrm_price_set' => [ + 'title' => [ + 'type' => "Text", + 'required' => "true", + ], + 'help_pre' => [ + 'type' => "TextArea", + 'rows' => "4", + 'cols' => "80", + ], + 'help_post' => [ + 'type' => "TextArea", + 'rows' => "4", + 'cols' => "80", + ], + ], + 'civicrm_dashboard' => [ + 'label' => [ + 'type' => "Text", + ], + ], + 'civicrm_uf_group' => [ + 'title' => [ + 'type' => "Text", + 'required' => "true", + ], + 'frontend_title' => [ + 'type' => "Text", + ], + 'help_pre' => [ + 'type' => "TextArea", + 'rows' => "4", + 'cols' => "80", + ], + 'help_post' => [ + 'type' => "TextArea", + 'rows' => "4", + 'cols' => "80", + ], + 'cancel_button_text' => [ + 'type' => "Text", + ], + 'submit_button_text' => [ + 'type' => "Text", + ], + ], + 'civicrm_uf_field' => [ + 'help_post' => [ + 'type' => "Text", + ], + 'help_pre' => [ + 'type' => "Text", + ], + 'label' => [ + 'type' => "Text", + 'required' => "true", + ], + ], + 'civicrm_price_field' => [ + 'label' => [ + 'type' => "Text", + 'required' => "true", + ], + 'help_pre' => [ + 'type' => "TextArea", + 'rows' => "4", + 'cols' => "80", + ], + 'help_post' => [ + 'type' => "TextArea", + 'rows' => "4", + 'cols' => "80", + ], + ], + 'civicrm_price_field_value' => [ + 'label' => [ + 'type' => "Text", + ], + 'description' => [ + 'type' => "TextArea", + 'rows' => "2", + 'cols' => "60", + ], + 'help_pre' => [ + 'type' => "TextArea", + 'rows' => "2", + 'cols' => "60", + ], + 'help_post' => [ + 'type' => "TextArea", + 'rows' => "2", + 'cols' => "60", + ], + ], + 'civicrm_pcp_block' => [ + 'link_text' => [ + 'type' => "Text", + ], + ], + 'civicrm_event' => [ + 'title' => [ + 'type' => "Text", + ], + 'summary' => [ + 'type' => "TextArea", + 'rows' => "4", + 'cols' => "60", + ], + 'description' => [ + 'type' => "TextArea", + 'rows' => "8", + 'cols' => "60", + ], + 'registration_link_text' => [ + 'type' => "Text", + ], + 'event_full_text' => [ + 'type' => "TextArea", + 'rows' => "4", + 'cols' => "60", + ], + 'fee_label' => [ + 'type' => "Text", + ], + 'intro_text' => [ + 'type' => "TextArea", + 'rows' => "6", + 'cols' => "50", + ], + 'footer_text' => [ + 'type' => "TextArea", + 'rows' => "6", + 'cols' => "50", + ], + 'confirm_title' => [ + 'type' => "Text", + ], + 'confirm_text' => [ + 'type' => "TextArea", + 'rows' => "6", + 'cols' => "50", + ], + 'confirm_footer_text' => [ + 'type' => "TextArea", + 'rows' => "6", + 'cols' => "50", + ], + 'confirm_email_text' => [ + 'type' => "TextArea", + 'rows' => "4", + 'cols' => "50", + ], + 'confirm_from_name' => [ + 'type' => "Text", + ], + 'thankyou_title' => [ + 'type' => "Text", + ], + 'thankyou_text' => [ + 'type' => "TextArea", + 'rows' => "6", + 'cols' => "50", + ], + 'thankyou_footer_text' => [ + 'type' => "TextArea", + 'rows' => "6", + 'cols' => "50", + ], + 'pay_later_text' => [ + 'type' => "Text", + ], + 'pay_later_receipt' => [ + 'type' => "Text", + ], + 'initial_amount_label' => [ + 'type' => "Text", + ], + 'initial_amount_help_text' => [ + 'type' => "Text", + ], + 'waitlist_text' => [ + 'type' => "TextArea", + 'rows' => "4", + 'cols' => "60", + ], + 'approval_req_text' => [ + 'type' => "TextArea", + 'rows' => "4", + 'cols' => "60", + ], + 'template_title' => [ + 'type' => "Text", + ], + ], + ]; + } + return $result; + } + +} diff --git a/civicrm/CRM/Core/Payment.php b/civicrm/CRM/Core/Payment.php index b686cd8501a36f70b3b0e90f1e6566abda1749be..13f506bcd118e2627c14e1fe5cb51e63362b139b 100644 --- a/civicrm/CRM/Core/Payment.php +++ b/civicrm/CRM/Core/Payment.php @@ -1153,7 +1153,7 @@ abstract class CRM_Core_Payment { } /** - * Process payment - this function wraps around both doTransferPayment and doDirectPayment. + * Process payment - this function wraps around both doTransferCheckout and doDirectPayment. * * The function ensures an exception is thrown & moves some of this logic out of the form layer and makes the forms * more agnostic. diff --git a/civicrm/CRM/Core/Payment/PayPalImpl.php b/civicrm/CRM/Core/Payment/PayPalImpl.php index 8ab1bbec3a72056eb575540aabfd24a98813578a..e5cd28035117c78ae3960b62cf390f52153ce76d 100644 --- a/civicrm/CRM/Core/Payment/PayPalImpl.php +++ b/civicrm/CRM/Core/Payment/PayPalImpl.php @@ -478,7 +478,7 @@ class CRM_Core_Payment_PayPalImpl extends CRM_Core_Payment { } /** - * Process payment - this function wraps around both doTransferPayment and doDirectPayment. + * Process payment - this function wraps around both doTransferCheckout and doDirectPayment. * * The function ensures an exception is thrown & moves some of this logic out of the form layer and makes the forms * more agnostic. diff --git a/civicrm/CRM/Core/Permission.php b/civicrm/CRM/Core/Permission.php index a532a4a2c4d2a679c89a55be794bbbe5e55462e6..49d003dd62c4ddddd00f70c8bdf1862b210629f7 100644 --- a/civicrm/CRM/Core/Permission.php +++ b/civicrm/CRM/Core/Permission.php @@ -83,9 +83,11 @@ class CRM_Core_Permission { /** * Given a permission string or array, check for access requirements - * @param mixed $permissions + * @param string|array $permissions * The permission to check as an array or string -see examples. - * arrays + * + * @param int $contactId + * Contact id to check permissions for. Defaults to current logged-in user. * * Ex 1 * @@ -117,15 +119,20 @@ class CRM_Core_Permission { * @return bool * true if yes, else false */ - public static function check($permissions) { + public static function check($permissions, $contactId = NULL) { $permissions = (array) $permissions; + $userId = NULL; + if ($contactId) { + $userId = CRM_Core_BAO_UFMatch::getUFId($contactId); + } + /** @var CRM_Core_Permission_Temp $tempPerm */ $tempPerm = CRM_Core_Config::singleton()->userPermissionTemp; foreach ($permissions as $permission) { if (is_array($permission)) { foreach ($permission as $orPerm) { - if (self::check($orPerm)) { + if (self::check($orPerm, $contactId)) { //one of our 'or' permissions has succeeded - stop checking this permission return TRUE; } @@ -135,9 +142,9 @@ class CRM_Core_Permission { } else { // This is an individual permission - $granted = CRM_Core_Config::singleton()->userPermissionClass->check($permission); + $granted = CRM_Core_Config::singleton()->userPermissionClass->check($permission, $userId); // Call the permission_check hook to permit dynamic escalation (CRM-19256) - CRM_Utils_Hook::permission_check($permission, $granted); + CRM_Utils_Hook::permission_check($permission, $granted, $contactId); if ( !$granted && !($tempPerm && $tempPerm->check($permission)) diff --git a/civicrm/CRM/Core/Permission/Backdrop.php b/civicrm/CRM/Core/Permission/Backdrop.php index f6a0d6f330ab45035ff9024bfd2a552d63ac213e..3d40db218ec20d3caeb294e630d76850f9609d8f 100644 --- a/civicrm/CRM/Core/Permission/Backdrop.php +++ b/civicrm/CRM/Core/Permission/Backdrop.php @@ -68,12 +68,12 @@ class CRM_Core_Permission_Backdrop extends CRM_Core_Permission_DrupalBase { * @param string $str * The permission to check. * - * @param int $contactID + * @param int $userId * * @return bool * true if yes, else false */ - public function check($str, $contactID = NULL) { + public function check($str, $userId = NULL) { $str = $this->translatePermission($str, 'Drupal', array( 'view user account' => 'access user profiles', 'administer users' => 'administer users', @@ -85,7 +85,11 @@ class CRM_Core_Permission_Backdrop extends CRM_Core_Permission_DrupalBase { return TRUE; } if (function_exists('user_access')) { - return user_access($str) ? TRUE : FALSE; + $account = NULL; + if ($userId) { + $account = user_load($userId); + } + return user_access($str, $account); } return TRUE; } diff --git a/civicrm/CRM/Core/Permission/Base.php b/civicrm/CRM/Core/Permission/Base.php index c1a48cc49ce4f0b709e8ea836ed1b9e436f2cb9a..be286cafbdb949f84d5ec77463cbf3917d0ebb3a 100644 --- a/civicrm/CRM/Core/Permission/Base.php +++ b/civicrm/CRM/Core/Permission/Base.php @@ -157,9 +157,10 @@ class CRM_Core_Permission_Base { * * @param string $str * The permission to check. + * @param int $userId * */ - public function check($str) { + public function check($str, $userId = NULL) { //no default behaviour } diff --git a/civicrm/CRM/Core/Permission/Drupal.php b/civicrm/CRM/Core/Permission/Drupal.php index 45ebe56fe1497a3dea4cdcd8a017d712ca333511..03b8ed6eda22c87a47831bd9161207b336bc78a0 100644 --- a/civicrm/CRM/Core/Permission/Drupal.php +++ b/civicrm/CRM/Core/Permission/Drupal.php @@ -68,12 +68,12 @@ class CRM_Core_Permission_Drupal extends CRM_Core_Permission_DrupalBase { * @param string $str * The permission to check. * - * @param int $contactID + * @param int $userId * * @return bool * true if yes, else false */ - public function check($str, $contactID = NULL) { + public function check($str, $userId = NULL) { $str = $this->translatePermission($str, 'Drupal', array( 'view user account' => 'access user profiles', 'administer users' => 'administer users', @@ -85,7 +85,11 @@ class CRM_Core_Permission_Drupal extends CRM_Core_Permission_DrupalBase { return TRUE; } if (function_exists('user_access')) { - return user_access($str) ? TRUE : FALSE; + $account = NULL; + if ($userId) { + $account = user_load($userId); + } + return user_access($str, $account); } return TRUE; } diff --git a/civicrm/CRM/Core/Permission/Drupal6.php b/civicrm/CRM/Core/Permission/Drupal6.php index 93ddf08a4c53cfce610adb20755441233dff38d4..9aaa4ffc02173a0c8dd676e21ccb62dd3ea0538a 100644 --- a/civicrm/CRM/Core/Permission/Drupal6.php +++ b/civicrm/CRM/Core/Permission/Drupal6.php @@ -67,12 +67,12 @@ class CRM_Core_Permission_Drupal6 extends CRM_Core_Permission_DrupalBase { * @param string $str * The permission to check. * - * @param int $contactID + * @param int $userId * * @return bool * true if yes, else false */ - public function check($str, $contactID = NULL) { + public function check($str, $userId = NULL) { $str = $this->translatePermission($str, 'Drupal6', array( 'view user account' => 'access user profiles', 'administer users' => 'administer users', @@ -84,7 +84,11 @@ class CRM_Core_Permission_Drupal6 extends CRM_Core_Permission_DrupalBase { return TRUE; } if (function_exists('user_access')) { - return user_access($str) ? TRUE : FALSE; + $account = NULL; + if ($userId) { + $account = user_load($userId); + } + return user_access($str, $account); } return TRUE; } diff --git a/civicrm/CRM/Core/Permission/Drupal8.php b/civicrm/CRM/Core/Permission/Drupal8.php index 7c65629ef26de5f565cf13a1358a24fdd903fb1f..3969874fae185ca621cdbc8638b09da2bb1807e8 100644 --- a/civicrm/CRM/Core/Permission/Drupal8.php +++ b/civicrm/CRM/Core/Permission/Drupal8.php @@ -43,11 +43,11 @@ class CRM_Core_Permission_Drupal8 extends CRM_Core_Permission_DrupalBase { * @param string $str * The permission to check. * - * @param null $contactID + * @param int $userId * * @return bool */ - public function check($str, $contactID = NULL) { + public function check($str, $userId = NULL) { $str = $this->translatePermission($str, 'Drupal', array( 'view user account' => 'access user profiles', )); @@ -58,7 +58,8 @@ class CRM_Core_Permission_Drupal8 extends CRM_Core_Permission_DrupalBase { if ($str == CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION) { return TRUE; } - return \Drupal::currentUser()->hasPermission($str); + $acct = $userId ? \Drupal\user\Entity\User::load($userId) : \Drupal::currentUser(); + return $acct->hasPermission($str); } /** diff --git a/civicrm/CRM/Core/Permission/Joomla.php b/civicrm/CRM/Core/Permission/Joomla.php index 50f583fb61c34b5b4f56f7da168210a06ff2774e..a0e256b718fbe649b4e7a82c67bdae9ae45f1df7 100644 --- a/civicrm/CRM/Core/Permission/Joomla.php +++ b/civicrm/CRM/Core/Permission/Joomla.php @@ -42,12 +42,17 @@ class CRM_Core_Permission_Joomla extends CRM_Core_Permission_Base { * * @param string $str * The permission to check. + * @param int $userId * * @return bool * true if yes, else false */ - public function check($str) { + public function check($str, $userId = NULL) { $config = CRM_Core_Config::singleton(); + // JFactory::getUser does strict type checking, so convert falesy values to NULL + if (!$userId) { + $userId = NULL; + } $translated = $this->translateJoomlaPermission($str); if ($translated === CRM_Core_Permission::ALWAYS_DENY_PERMISSION) { @@ -61,7 +66,7 @@ class CRM_Core_Permission_Joomla extends CRM_Core_Permission_Base { // we've not yet figured out how to bootstrap joomla, so we should // not execute hooks if joomla is not loaded if (defined('_JEXEC')) { - $user = JFactory::getUser(); + $user = JFactory::getUser($userId); $api_key = CRM_Utils_Request::retrieve('api_key', 'String', $store, FALSE, NULL, 'REQUEST'); // If we are coming from REST we don't have a user but we do have the api_key for a user. diff --git a/civicrm/CRM/Core/Permission/Soap.php b/civicrm/CRM/Core/Permission/Soap.php index 57938812b6bf98b2191dbc8e7fe1e78bea3dda79..9ea9ef60e8d48013ddd182b084a7d005818855b0 100644 --- a/civicrm/CRM/Core/Permission/Soap.php +++ b/civicrm/CRM/Core/Permission/Soap.php @@ -43,11 +43,12 @@ class CRM_Core_Permission_Soap extends CRM_Core_Permission_Base { * * @param string $str * The permission to check. + * @param int $userId * * @return bool * true if yes, else false */ - public function check($str) { + public function check($str, $userId = NULL) { return TRUE; } diff --git a/civicrm/CRM/Core/Permission/UnitTests.php b/civicrm/CRM/Core/Permission/UnitTests.php index 8dc1a057934c8df49a61e1d4c8697b0151fa1b7d..22b18f76f0feba64fd8e85fcccbad62ac1306c25 100644 --- a/civicrm/CRM/Core/Permission/UnitTests.php +++ b/civicrm/CRM/Core/Permission/UnitTests.php @@ -46,11 +46,12 @@ class CRM_Core_Permission_UnitTests extends CRM_Core_Permission_Base { * * @param string $str * The permission to check. + * @param int $userId * * @return bool * true if yes, else false */ - public function check($str) { + public function check($str, $userId = NULL) { if ($str == CRM_Core_Permission::ALWAYS_DENY_PERMISSION) { return FALSE; } diff --git a/civicrm/CRM/Core/Permission/WordPress.php b/civicrm/CRM/Core/Permission/WordPress.php index bc032d05a276f0b0fdf2ff426de14c61bc6f2588..12ec6438615a0b1f5992af0fe19beabad18d43ac 100644 --- a/civicrm/CRM/Core/Permission/WordPress.php +++ b/civicrm/CRM/Core/Permission/WordPress.php @@ -42,11 +42,12 @@ class CRM_Core_Permission_WordPress extends CRM_Core_Permission_Base { * * @param string $str * The permission to check. + * @param int $userId * * @return bool * true if yes, else false */ - public function check($str) { + public function check($str, $userId = NULL) { // Generic cms 'administer users' role tranlates to users with the 'edit_users' capability' in WordPress $str = $this->translatePermission($str, 'WordPress', array( 'administer users' => 'edit_users', @@ -74,16 +75,18 @@ class CRM_Core_Permission_WordPress extends CRM_Core_Permission_Base { return TRUE; } - if (current_user_can('super admin') || current_user_can('administrator')) { + $user = $userId ? get_userdata($userId) : wp_get_current_user(); + + if ($user->has_cap('super admin') || $user->has_cap('administrator')) { return TRUE; } // Make string lowercase and convert spaces into underscore $str = CRM_Utils_String::munge(strtolower($str)); - if (is_user_logged_in()) { + if ($user->exists()) { // Check whether the logged in user has the capabilitity - if (current_user_can($str)) { + if ($user->has_cap($str)) { return TRUE; } } diff --git a/civicrm/CRM/Core/PrevNextCache/Interface.php b/civicrm/CRM/Core/PrevNextCache/Interface.php index c71b57ed24f05c0afb07f9adc9c1993205cde1a3..edaf0d6778ce9bae1658773d6d249c458f1b7a4c 100644 --- a/civicrm/CRM/Core/PrevNextCache/Interface.php +++ b/civicrm/CRM/Core/PrevNextCache/Interface.php @@ -39,7 +39,7 @@ interface CRM_Core_PrevNextCache_Interface { * @param string $cacheKey * @param string $sql * A SQL query. The query *MUST* be a SELECT statement which yields - * the following columns (in order): entity_table, entity_id1, entity_id2, cacheKey, data + * the following columns (in order): cacheKey, entity_id1, data * @return bool */ public function fillWithSql($cacheKey, $sql); @@ -50,9 +50,7 @@ interface CRM_Core_PrevNextCache_Interface { * @param string $cacheKey * @param array $rows * A list of cache records. Each record should have keys: - * - entity_table * - entity_id1 - * - entity_id2 * - data * @return bool */ @@ -89,20 +87,24 @@ interface CRM_Core_PrevNextCache_Interface { * * @param string $cacheKey * @param int $id1 - * @param int $id2 * * @return array + * List of neighbors. + * [ + * 'foundEntry' => 1, + * 'prev' => ['id1' => 123, 'data'=>'foo'], + * 'next' => ['id1' => 456, 'data'=>'foo'], + * ] */ - public function getPositions($cacheKey, $id1, $id2); + public function getPositions($cacheKey, $id1); /** * Delete an item from the prevnext cache table based on the entity. * * @param int $id * @param string $cacheKey - * @param string $entityTable */ - public function deleteItem($id = NULL, $cacheKey = NULL, $entityTable = 'civicrm_contact'); + public function deleteItem($id = NULL, $cacheKey = NULL); /** * Get count of matching rows. diff --git a/civicrm/CRM/Core/PrevNextCache/Sql.php b/civicrm/CRM/Core/PrevNextCache/Sql.php index 2f20a63ba96721e126d86dd3a44091f9436de45e..5a5897353332e0ee6b74fe2d7dcd08d152271beb 100644 --- a/civicrm/CRM/Core/PrevNextCache/Sql.php +++ b/civicrm/CRM/Core/PrevNextCache/Sql.php @@ -37,13 +37,13 @@ class CRM_Core_PrevNextCache_Sql implements CRM_Core_PrevNextCache_Interface { * * @param string $sql * A SQL query. The query *MUST* be a SELECT statement which yields - * the following columns (in order): entity_table, entity_id1, entity_id2, cacheKey, data + * the following columns (in order): cacheKey, entity_id1, data * @return bool * @throws CRM_Core_Exception */ public function fillWithSql($cacheKey, $sql) { $insertSQL = " -INSERT INTO civicrm_prevnext_cache ( entity_table, entity_id1, entity_id2, cacheKey, data ) +INSERT INTO civicrm_prevnext_cache (cacheKey, entity_id1, data) "; $result = CRM_Core_DAO::executeQuery($insertSQL . $sql, [], FALSE, NULL, FALSE, TRUE, TRUE); if (is_a($result, 'DB_Error')) { @@ -59,9 +59,7 @@ INSERT INTO civicrm_prevnext_cache ( entity_table, entity_id1, entity_id2, cache $insert = CRM_Utils_SQL_Insert::into('civicrm_prevnext_cache') ->columns([ - 'entity_table', 'entity_id1', - 'entity_id2', 'cacheKey', 'data' ]); @@ -85,38 +83,35 @@ INSERT INTO civicrm_prevnext_cache ( entity_table, entity_id1, entity_id2, cache * To unselect all contact IDs, use NULL. */ public function markSelection($cacheKey, $action, $cIds = NULL) { - $entity_table = 'civicrm_contact'; - if (!$cacheKey) { return; } $params = array(); - $entity_whereClause = " AND entity_table = '{$entity_table}'"; if ($cIds && $cacheKey && $action) { if (is_array($cIds)) { $cIdFilter = "(" . implode(',', $cIds) . ")"; $whereClause = " -WHERE cacheKey LIKE %1 +WHERE cacheKey = %1 AND (entity_id1 IN {$cIdFilter} OR entity_id2 IN {$cIdFilter}) "; } else { $whereClause = " -WHERE cacheKey LIKE %1 +WHERE cacheKey = %1 AND (entity_id1 = %2 OR entity_id2 = %2) "; $params[2] = array("{$cIds}", 'Integer'); } if ($action == 'select') { $whereClause .= "AND is_selected = 0"; - $sql = "UPDATE civicrm_prevnext_cache SET is_selected = 1 {$whereClause} {$entity_whereClause}"; - $params[1] = array("{$cacheKey}%", 'String'); + $sql = "UPDATE civicrm_prevnext_cache SET is_selected = 1 {$whereClause}"; + $params[1] = array($cacheKey, 'String'); } elseif ($action == 'unselect') { $whereClause .= "AND is_selected = 1"; - $sql = "UPDATE civicrm_prevnext_cache SET is_selected = 0 {$whereClause} {$entity_whereClause}"; - $params[1] = array("%{$cacheKey}%", 'String'); + $sql = "UPDATE civicrm_prevnext_cache SET is_selected = 0 {$whereClause}"; + $params[1] = array($cacheKey, 'String'); } // default action is reseting } @@ -124,10 +119,9 @@ AND (entity_id1 = %2 OR entity_id2 = %2) $sql = " UPDATE civicrm_prevnext_cache SET is_selected = 0 -WHERE cacheKey LIKE %1 AND is_selected = 1 - {$entity_whereClause} +WHERE cacheKey = %1 AND is_selected = 1 "; - $params[1] = array("{$cacheKey}%", 'String'); + $params[1] = array($cacheKey, 'String'); } CRM_Core_DAO::executeQuery($sql, $params); } @@ -145,31 +139,25 @@ WHERE cacheKey LIKE %1 AND is_selected = 1 * @return array|NULL */ public function getSelection($cacheKey, $action = 'get') { - $entity_table = 'civicrm_contact'; - if (!$cacheKey) { return NULL; } $params = array(); - $entity_whereClause = " AND entity_table = '{$entity_table}'"; if ($cacheKey && ($action == 'get' || $action == 'getall')) { $actionGet = ($action == "get") ? " AND is_selected = 1 " : ""; $sql = " -SELECT entity_id1, entity_id2 FROM civicrm_prevnext_cache -WHERE cacheKey LIKE %1 +SELECT entity_id1 FROM civicrm_prevnext_cache +WHERE cacheKey = %1 $actionGet - $entity_whereClause ORDER BY id "; - $params[1] = array("{$cacheKey}%", 'String'); + $params[1] = array($cacheKey, 'String'); $contactIds = array($cacheKey => array()); $cIdDao = CRM_Core_DAO::executeQuery($sql, $params); while ($cIdDao->fetch()) { - if ($cIdDao->entity_id1 == $cIdDao->entity_id2) { - $contactIds[$cacheKey][$cIdDao->entity_id1] = 1; - } + $contactIds[$cacheKey][$cIdDao->entity_id1] = 1; } return $contactIds; } @@ -180,15 +168,46 @@ ORDER BY id * * @param string $cacheKey * @param int $id1 - * @param int $id2 - * - * NOTE: I don't really get why there are two ID columns, but we'll - * keep passing them through as a matter of safe-refactoring. * * @return array */ - public function getPositions($cacheKey, $id1, $id2) { - return CRM_Core_BAO_PrevNextCache::getPositions($cacheKey, $id1, $id2); + public function getPositions($cacheKey, $id1) { + $mergeId = CRM_Core_DAO::singleValueQuery( + "SELECT id FROM civicrm_prevnext_cache WHERE cacheKey = %2 AND entity_id1 = %1", + [ + 1 => [$id1, 'Integer'], + 2 => [$cacheKey, 'String'], + ] + ); + + $pos = ['foundEntry' => 0]; + if ($mergeId) { + $pos['foundEntry'] = 1; + + $sql = "SELECT pn.id, pn.entity_id1, pn.entity_id2, pn.data FROM civicrm_prevnext_cache pn "; + $wherePrev = " WHERE pn.id < %1 AND pn.cacheKey = %2 ORDER BY ID DESC LIMIT 1"; + $whereNext = " WHERE pn.id > %1 AND pn.cacheKey = %2 ORDER BY ID ASC LIMIT 1"; + $p = [ + 1 => [$mergeId, 'Integer'], + 2 => [$cacheKey, 'String'], + ]; + + $dao = CRM_Core_DAO::executeQuery($sql . $wherePrev, $p); + if ($dao->fetch()) { + $pos['prev']['id1'] = $dao->entity_id1; + $pos['prev']['mergeId'] = $dao->id; + $pos['prev']['data'] = $dao->data; + } + + $dao = CRM_Core_DAO::executeQuery($sql . $whereNext, $p); + if ($dao->fetch()) { + $pos['next']['id1'] = $dao->entity_id1; + $pos['next']['mergeId'] = $dao->id; + $pos['next']['data'] = $dao->data; + } + } + return $pos; + } /** @@ -196,10 +215,21 @@ ORDER BY id * * @param int $id * @param string $cacheKey - * @param string $entityTable */ - public function deleteItem($id = NULL, $cacheKey = NULL, $entityTable = 'civicrm_contact') { - CRM_Core_BAO_PrevNextCache::deleteItem($id, $cacheKey, $entityTable); + public function deleteItem($id = NULL, $cacheKey = NULL) { + $sql = "DELETE FROM civicrm_prevnext_cache WHERE (1)"; + $params = array(); + + if (is_numeric($id)) { + $sql .= " AND ( entity_id1 = %2 OR entity_id2 = %2 )"; + $params[2] = array($id, 'Integer'); + } + + if (isset($cacheKey)) { + $sql .= " AND cacheKey = %3"; + $params[3] = array($cacheKey, 'String'); + } + CRM_Core_DAO::executeQuery($sql, $params); } /** @@ -209,7 +239,9 @@ ORDER BY id * @return int */ public function getCount($cacheKey) { - return CRM_Core_BAO_PrevNextCache::getCount($cacheKey, NULL, "entity_table = 'civicrm_contact'"); + $query = "SELECT COUNT(*) FROM civicrm_prevnext_cache pn WHERE pn.cacheKey = %1"; + $params = [1 => [$cacheKey, 'String']]; + return (int) CRM_Core_DAO::singleValueQuery($query, $params, TRUE, FALSE); } } diff --git a/civicrm/CRM/Core/Resources.php b/civicrm/CRM/Core/Resources.php index 7be010ab6bb151c63538569e20f06813219d62ea..e24e36ff5c9959f7467e304859e816ce8d002d9d 100644 --- a/civicrm/CRM/Core/Resources.php +++ b/civicrm/CRM/Core/Resources.php @@ -725,6 +725,7 @@ class CRM_Core_Resources { "bower_components/datatables/media/css/jquery.dataTables.min.css", "bower_components/jquery-validation/dist/jquery.validate.min.js", "packages/jquery/plugins/jquery.ui.datepicker.validation.min.js", + "js/crm.datepicker.js", "js/Common.js", "js/crm.ajax.js", "js/wysiwyg/crm.wysiwyg.js", diff --git a/civicrm/CRM/Event/BAO/Event.php b/civicrm/CRM/Event/BAO/Event.php index 30ca5ffaf6d4abe8b573ac85396deddd789baa31..2e6c5e0bd70e2f9cfa7833320cd7131dd54ea7e9 100644 --- a/civicrm/CRM/Event/BAO/Event.php +++ b/civicrm/CRM/Event/BAO/Event.php @@ -67,8 +67,8 @@ class CRM_Event_BAO_Event extends CRM_Event_DAO_Event { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Event_DAO_Event', $id, 'is_active', $is_active); @@ -1826,7 +1826,10 @@ WHERE id = $cfID $title = $groupTitles = array(); foreach ($additionalIDs as $pId => $cId) { //get the params submitted by participant. - $participantParams = CRM_Utils_Array::value($pId, $values['params'], array()); + $participantParams = NULL; + if (isset($values['params'])) { + $participantParams = CRM_Utils_Array::value($pId, $values['params'], array()); + } list($profilePre, $groupTitles) = self::buildCustomDisplay($preProfileID, 'additionalCustomPre', @@ -2064,9 +2067,7 @@ WHERE ce.loc_block_id = $locBlockId"; * the permission that the user has (or null) */ public static function checkPermission($eventId = NULL, $type = CRM_Core_Permission::VIEW) { - static $permissions = NULL; - - if (empty($permissions)) { + if (!isset(Civi::$statics[__CLASS__]['permissions'])) { $params = array( 'check_permissions' => 1, 'return' => 'title', @@ -2085,19 +2086,19 @@ WHERE ce.loc_block_id = $locBlockId"; // Search again, but only events created by the user. $params['created_id'] = 'user_contact_id'; $result = civicrm_api3('Event', 'get', $params); - $createdEvents = CRM_Utils_Array::collect('title', $result['values']); + $createdEvents = array_keys($result['values']); // Note: for a multisite setup, a user with edit all events, can edit all events // including those from other sites if (CRM_Core_Permission::check('edit all events')) { - $permissions[CRM_Core_Permission::EDIT] = array_keys($allEvents); + Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::EDIT] = array_keys($allEvents); } else { - $permissions[CRM_Core_Permission::EDIT] = CRM_ACL_API::group(CRM_Core_Permission::EDIT, NULL, 'civicrm_event', $allEvents, $createdEvents); + Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::EDIT] = CRM_ACL_API::group(CRM_Core_Permission::EDIT, NULL, 'civicrm_event', $allEvents, $createdEvents); } if (CRM_Core_Permission::check('edit all events')) { - $permissions[CRM_Core_Permission::VIEW] = array_keys($allEvents); + Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::VIEW] = array_keys($allEvents); } else { if (CRM_Core_Permission::check('access CiviEvent') && @@ -2108,25 +2109,25 @@ WHERE ce.loc_block_id = $locBlockId"; // at the same time also allow any hook to override if needed. $createdEvents = array_keys($allEvents); } - $permissions[CRM_Core_Permission::VIEW] = CRM_ACL_API::group(CRM_Core_Permission::VIEW, NULL, 'civicrm_event', $allEvents, $createdEvents); + Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::VIEW] = CRM_ACL_API::group(CRM_Core_Permission::VIEW, NULL, 'civicrm_event', $allEvents, $createdEvents); } - $permissions[CRM_Core_Permission::DELETE] = array(); + Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::DELETE] = array(); if (CRM_Core_Permission::check('delete in CiviEvent')) { // Note: we want to restrict the scope of delete permission to // events that are editable/viewable (usecase multisite). // We can remove array_intersect once we have ACL support for delete functionality. - $permissions[CRM_Core_Permission::DELETE] = array_intersect($permissions[CRM_Core_Permission::EDIT], - $permissions[CRM_Core_Permission::VIEW] + Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::DELETE] = array_intersect(Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::EDIT], + Civi::$statics[__CLASS__]['permissions'][CRM_Core_Permission::VIEW] ); } } if ($eventId) { - return in_array($eventId, $permissions[$type]) ? TRUE : FALSE; + return in_array($eventId, Civi::$statics[__CLASS__]['permissions'][$type]) ? TRUE : FALSE; } - return $permissions; + return Civi::$statics[__CLASS__]['permissions']; } /** diff --git a/civicrm/CRM/Event/BAO/ParticipantStatusType.php b/civicrm/CRM/Event/BAO/ParticipantStatusType.php index 53f2720e9ca6f3fb9ed16cb3e5ee283e2fe294b8..b41b3693ccbb59d2cd907e2d27955886cfc6c664 100644 --- a/civicrm/CRM/Event/BAO/ParticipantStatusType.php +++ b/civicrm/CRM/Event/BAO/ParticipantStatusType.php @@ -125,7 +125,6 @@ class CRM_Event_BAO_ParticipantStatusType extends CRM_Event_DAO_ParticipantStatu $returnMessages = array(); - $participantRole = CRM_Event_PseudoConstant::participantRole(); $pendingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Pending'"); $expiredStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Negative'"); $waitingStatuses = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Waiting'"); @@ -137,8 +136,6 @@ class CRM_Event_BAO_ParticipantStatusType extends CRM_Event_DAO_ParticipantStatu $expiredParticipantCount = $waitingConfirmCount = $waitingApprovalCount = 0; //get all participant who's status in class pending and waiting - $query = "SELECT * FROM civicrm_participant WHERE status_id IN {$statusIds} ORDER BY register_date"; - $query = " SELECT participant.id, participant.contact_id, diff --git a/civicrm/CRM/Event/Form/ManageEvent/Repeat.php b/civicrm/CRM/Event/Form/ManageEvent/Repeat.php index f031f006e0be0d9e491ebec9a541a0fcce2d2874..495522b2a2aa3113c97114aa5a270d306e96771d 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Repeat.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Repeat.php @@ -192,8 +192,8 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { } /** - * This function checks if there was any registraion for related event ids, - * and returns array of ids with no regsitrations + * This function checks if there was any registration for related event ids, + * and returns array of ids with no registrations * * @param string or int or object... $eventID * diff --git a/civicrm/CRM/Event/Form/Participant.php b/civicrm/CRM/Event/Form/Participant.php index 5897aff52bb954058040b74c9a3fca7d9b996686..ec7863ccac2a4982ac34282bd8dda7febc9c161a 100644 --- a/civicrm/CRM/Event/Form/Participant.php +++ b/civicrm/CRM/Event/Form/Participant.php @@ -1692,7 +1692,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } } $this->assign('totalTaxAmount', $totalTaxAmount); - $this->assign('taxTerm', CRM_Utils_Array::value('tax_term', $invoiceSettings)); + $this->assign('taxTerm', $this->getSalesTaxTerm()); $this->assign('dataArray', $dataArray); } if (!empty($additionalParticipantDetails)) { diff --git a/civicrm/CRM/Event/Page/EventInfo.php b/civicrm/CRM/Event/Page/EventInfo.php index 9f58bddb3009705349107430a82ccfe8fc8d2204..e7bb4ea2a3ec99b5d9a7d10129bf4ce067194180 100644 --- a/civicrm/CRM/Event/Page/EventInfo.php +++ b/civicrm/CRM/Event/Page/EventInfo.php @@ -152,6 +152,12 @@ class CRM_Event_Page_EventInfo extends CRM_Core_Page { $displayOpt = CRM_Utils_Array::value('tax_display_settings', $invoiceSettings); $invoicing = CRM_Utils_Array::value('invoicing', $invoiceSettings); foreach ($fieldValues['options'] as $optionId => $optionVal) { + if (CRM_Utils_Array::value('visibility_id', $optionVal) != array_search('public', $visibility) && + $adminFieldVisible == FALSE + ) { + continue; + } + $values['feeBlock']['isDisplayAmount'][$fieldCnt] = CRM_Utils_Array::value('is_display_amounts', $fieldValues); if ($invoicing && isset($optionVal['tax_amount'])) { $values['feeBlock']['value'][$fieldCnt] = CRM_Price_BAO_PriceField::getTaxLabel($optionVal, 'amount', $displayOpt, $taxTerm); diff --git a/civicrm/CRM/Export/BAO/Export.php b/civicrm/CRM/Export/BAO/Export.php index f248f51a77b028b53d664a9050e81cd24721a6ca..651fc0f6026b37b89b90859d7ad87ac2f5fa1544 100644 --- a/civicrm/CRM/Export/BAO/Export.php +++ b/civicrm/CRM/Export/BAO/Export.php @@ -41,24 +41,6 @@ class CRM_Export_BAO_Export { // CRM-7675 const EXPORT_ROW_COUNT = 100000; - /** - * Key representing the head of household in the relationship array. - * - * e.g. 8_a_b. - * - * @var string - */ - protected static $headOfHouseholdRelationshipKey; - - /** - * Key representing the head of household in the relationship array. - * - * e.g. 8_a_b. - * - * @var string - */ - protected static $memberOfHouseholdRelationshipKey; - /** * Key representing the head of household in the relationship array. * @@ -140,10 +122,8 @@ class CRM_Export_BAO_Export { /** * Get Query Group By Clause - * @param int $exportMode + * @param \CRM_Export_BAO_ExportProcessor $processor * Export Mode - * @param string $queryMode - * Query Mode * @param array $returnProperties * Return Properties * @param object $query @@ -152,8 +132,10 @@ class CRM_Export_BAO_Export { * @return string $groupBy * Group By Clause */ - public static function getGroupBy($exportMode, $queryMode, $returnProperties, $query) { + public static function getGroupBy($processor, $returnProperties, $query) { $groupBy = ''; + $exportMode = $processor->getExportMode(); + $queryMode = $processor->getQueryMode(); if (!empty($returnProperties['tags']) || !empty($returnProperties['groups']) || CRM_Utils_Array::value('notes', $returnProperties) || // CRM-9552 @@ -244,7 +226,7 @@ class CRM_Export_BAO_Export { $queryOperator = 'AND' ) { - $processor = new CRM_Export_BAO_ExportProcessor($exportMode, $fields, $queryOperator); + $processor = new CRM_Export_BAO_ExportProcessor($exportMode, $fields, $queryOperator, $mergeSameHousehold); $returnProperties = array(); $phoneTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Phone', 'phone_type_id'); @@ -252,9 +234,6 @@ class CRM_Export_BAO_Export { // without manually testing the export of IM provider still works. $imProviders = CRM_Core_PseudoConstant::get('CRM_Core_DAO_IM', 'provider_id'); self::$relationshipTypes = $processor->getRelationshipTypes(); - //also merge Head of Household - self::$memberOfHouseholdRelationshipKey = CRM_Utils_Array::key('Household Member of', self::$relationshipTypes); - self::$headOfHouseholdRelationshipKey = CRM_Utils_Array::key('Head of Household for', self::$relationshipTypes); $queryMode = $processor->getQueryMode(); @@ -373,18 +352,16 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c foreach ($returnProperties as $key => $value) { if (!$processor->isRelationshipTypeKey($key)) { - $returnProperties[self::$memberOfHouseholdRelationshipKey][$key] = $value; - $returnProperties[self::$headOfHouseholdRelationshipKey][$key] = $value; + foreach ($processor->getHouseholdRelationshipTypes() as $householdRelationshipType) { + if (!in_array($key, ['location_type', 'im_provider'])) { + $returnProperties[$householdRelationshipType][$key] = $value; + } + } } } - - unset($returnProperties[self::$memberOfHouseholdRelationshipKey]['location_type']); - unset($returnProperties[self::$memberOfHouseholdRelationshipKey]['im_provider']); - unset($returnProperties[self::$headOfHouseholdRelationshipKey]['location_type']); - unset($returnProperties[self::$headOfHouseholdRelationshipKey]['im_provider']); } - list($relationQuery, $allRelContactArray) = self::buildRelatedContactArray($selectAll, $ids, $exportMode, $componentTable, $returnProperties, $queryMode); + list($relationQuery, $allRelContactArray) = self::buildRelatedContactArray($selectAll, $ids, $processor, $componentTable, $returnProperties); // make sure the groups stuff is included only if specifically specified // by the fields param (CRM-1969), else we limit the contacts outputted to only @@ -429,7 +406,7 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c $queryString = "$select $from $where $having"; - $groupBy = self::getGroupBy($exportMode, $queryMode, $returnProperties, $query); + $groupBy = self::getGroupBy($processor, $returnProperties, $query); $queryString .= $groupBy; @@ -617,8 +594,9 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c // merge the records if they have corresponding households if ($mergeSameHousehold) { - self::mergeSameHousehold($exportTempTable, $headerRows, $sqlColumns, self::$memberOfHouseholdRelationshipKey); - self::mergeSameHousehold($exportTempTable, $headerRows, $sqlColumns, self::$headOfHouseholdRelationshipKey); + foreach ($processor->getHouseholdRelationshipTypes() as $householdRelationshipType) { + self::mergeSameHousehold($exportTempTable, $sqlColumns, $householdRelationshipType); + } } // call export hook @@ -630,7 +608,7 @@ INSERT INTO {$componentTable} SELECT distinct gc.contact_id FROM civicrm_group_c self::writeCSVFromTable($exportTempTable, $headerRows, $sqlColumns, $exportMode); } else { - // return tableName and sqlColumns in test context + // return tableName sqlColumns headerRows in test context return array($exportTempTable, $sqlColumns, $headerRows); } @@ -1168,18 +1146,15 @@ WHERE id IN ( $deleteIDString ) * * @param string $exportTempTable * Temporary temp table that stores the records. - * @param array $headerRows - * Array of headers for the export file. * @param array $sqlColumns * Array of names of the table columns of the temp table. * @param string $prefix * Name of the relationship type that is prefixed to the table columns. */ - public static function mergeSameHousehold($exportTempTable, &$headerRows, &$sqlColumns, $prefix) { + public static function mergeSameHousehold($exportTempTable, &$sqlColumns, $prefix) { $prefixColumn = $prefix . '_'; $allKeys = array_keys($sqlColumns); $replaced = array(); - $headerRows = array_values($headerRows); // name map of the non standard fields in header rows & sql columns $mappingFields = array( @@ -1211,9 +1186,6 @@ WHERE id IN ( $deleteIDString ) foreach ($replaced as $from => $to) { $clause[] = "$from = $to "; unset($sqlColumns[$to]); - if ($key = CRM_Utils_Array::key($to, $allKeys)) { - unset($headerRows[$key]); - } } $query .= implode(",\n", $clause); $query .= " WHERE {$replaced['civicrm_primary_id']} != ''"; @@ -1402,18 +1374,19 @@ WHERE {$whereClause}"; * Columns to go in the temp table. * @param \CRM_Export_BAO_ExportProcessor $processor * @param array|string $value - * @param array $phoneTypes - * @param array $imProviders * * @return array */ - public static function setHeaderRows($field, $headerRows, $sqlColumns, $processor, $value, $phoneTypes, $imProviders) { + public static function setHeaderRows($field, $headerRows, $sqlColumns, $processor, $value) { $queryFields = $processor->getQueryFields(); if (substr($field, -11) == 'campaign_id') { // @todo - set this correctly in the xml rather than here. $headerRows[] = ts('Campaign ID'); } + elseif ($processor->isMergeSameHousehold() && $field === 'id') { + $headerRows[] = ts('Household ID'); + } elseif (isset($queryFields[$field]['title'])) { $headerRows[] = $queryFields[$field]['title']; } @@ -1437,7 +1410,10 @@ WHERE {$whereClause}"; } } - $headerRows[] = $headerName; + if (!$processor->isHouseholdMergeRelationshipTypeKey($field)) { + // Do not add to header row if we are only generating for merge reasons. + $headerRows[] = $headerName; + } self::sqlColumnDefn($processor, $sqlColumns, $headerName); } @@ -1466,10 +1442,10 @@ WHERE {$whereClause}"; if (!empty($type[1])) { if (CRM_Utils_Array::value(0, $type) == 'phone') { - $hdr .= "-" . CRM_Utils_Array::value($type[1], $phoneTypes); + $hdr .= "-" . CRM_Core_PseudoConstant::getLabel('CRM_Core_BAO_Phone', 'phone_type_id', $type[1]); } elseif (CRM_Utils_Array::value(0, $type) == 'im') { - $hdr .= "-" . CRM_Utils_Array::value($type[1], $imProviders); + $hdr .= "-" . CRM_Core_PseudoConstant::getLabel('CRM_Core_BAO_IM', 'provider_id', $type[1]); } } $headerName = $field . '-' . $hdr; @@ -1525,12 +1501,11 @@ WHERE {$whereClause}"; $metadata = $headerRows = $outputColumns = $sqlColumns = array(); $phoneTypes = CRM_Core_PseudoConstant::get('CRM_Core_DAO_Phone', 'phone_type_id'); $imProviders = CRM_Core_PseudoConstant::get('CRM_Core_DAO_IM', 'provider_id'); - $queryFields = $processor->getQueryFields(); foreach ($returnProperties as $key => $value) { if ($key != 'location' || !is_array($value)) { $outputColumns[$key] = $value; - list($headerRows, $sqlColumns) = self::setHeaderRows($key, $headerRows, $sqlColumns, $processor, $value, $phoneTypes, $imProviders); + list($headerRows, $sqlColumns) = self::setHeaderRows($key, $headerRows, $sqlColumns, $processor, $value); } else { foreach ($value as $locationType => $locationFields) { @@ -1555,7 +1530,7 @@ WHERE {$whereClause}"; $metadata[$daoFieldName]['pseudoconstant']['var'] = 'imProviders'; } self::sqlColumnDefn($processor, $sqlColumns, $outputFieldName); - list($headerRows, $sqlColumns) = self::setHeaderRows($outputFieldName, $headerRows, $sqlColumns, $processor, $value, $phoneTypes, $imProviders); + list($headerRows, $sqlColumns) = self::setHeaderRows($outputFieldName, $headerRows, $sqlColumns, $processor, $value); if ($actualDBFieldName == 'country' || $actualDBFieldName == 'world_region') { $metadata[$daoFieldName] = array('context' => 'country'); } @@ -1727,15 +1702,16 @@ WHERE {$whereClause}"; /** * @param $selectAll * @param $ids - * @param $exportMode + * @param \CRM_Export_BAO_ExportProcessor $processor * @param $componentTable * @param $returnProperties - * @param $queryMode + * * @return array */ - protected static function buildRelatedContactArray($selectAll, $ids, $exportMode, $componentTable, $returnProperties, $queryMode) { + protected static function buildRelatedContactArray($selectAll, $ids, $processor, $componentTable, $returnProperties) { $allRelContactArray = $relationQuery = array(); - + $queryMode = $processor->getQueryMode(); + $exportMode = $processor->getExportMode(); foreach (self::$relationshipTypes as $rel => $dnt) { if ($relationReturnProperties = CRM_Utils_Array::value($rel, $returnProperties)) { $allRelContactArray[$rel] = array(); diff --git a/civicrm/CRM/Export/BAO/ExportProcessor.php b/civicrm/CRM/Export/BAO/ExportProcessor.php index 574941470439751ce8c763c613e1c6c0cf23a44e..b038424a4daabff8b1cfbf25f5cf94e53301463f 100644 --- a/civicrm/CRM/Export/BAO/ExportProcessor.php +++ b/civicrm/CRM/Export/BAO/ExportProcessor.php @@ -72,6 +72,13 @@ class CRM_Export_BAO_ExportProcessor { */ protected $requestedFields; + /** + * Is the contact being merged into a single household. + * + * @var bool + */ + protected $isMergeSameHousehold; + /** * Key representing the head of household in the relationship array. * @@ -99,13 +106,15 @@ class CRM_Export_BAO_ExportProcessor { * @param int $exportMode * @param array|NULL $requestedFields * @param string $queryOperator + * @param bool $isMergeSameHousehold */ - public function __construct($exportMode, $requestedFields, $queryOperator) { + public function __construct($exportMode, $requestedFields, $queryOperator, $isMergeSameHousehold = FALSE) { $this->setExportMode($exportMode); $this->setQueryMode(); $this->setQueryOperator($queryOperator); $this->setRequestedFields($requestedFields); $this->setRelationshipTypes(); + $this->setIsMergeSameHousehold($isMergeSameHousehold); } /** @@ -158,6 +167,34 @@ class CRM_Export_BAO_ExportProcessor { ); } + /** + * @return bool + */ + public function isMergeSameHousehold() { + return $this->isMergeSameHousehold; + } + + /** + * @param bool $isMergeSameHousehold + */ + public function setIsMergeSameHousehold($isMergeSameHousehold) { + $this->isMergeSameHousehold = $isMergeSameHousehold; + } + + /** + * Return relationship types for household merge. + * + * @return mixed + */ + public function getHouseholdRelationshipTypes() { + if (!$this->isMergeSameHousehold()) { + return []; + } + return [ + CRM_Utils_Array::key('Household Member of', $this->getRelationshipTypes()), + CRM_Utils_Array::key('Head of Household for', $this->getRelationshipTypes()), + ]; + } /** * @param $fieldName @@ -167,6 +204,15 @@ class CRM_Export_BAO_ExportProcessor { return array_key_exists($fieldName, $this->relationshipTypes); } + + /** + * @param $fieldName + * @return bool + */ + public function isHouseholdMergeRelationshipTypeKey($fieldName) { + return in_array($fieldName, $this->getHouseholdRelationshipTypes()); + } + /** * @return string */ diff --git a/civicrm/CRM/Financial/BAO/FinancialAccount.php b/civicrm/CRM/Financial/BAO/FinancialAccount.php index e171ee9a48bd943685a795e1d81eeffde2a5599a..9e37d4ceaf4db9f34c7ede44bcde362ab9ba4930 100644 --- a/civicrm/CRM/Financial/BAO/FinancialAccount.php +++ b/civicrm/CRM/Financial/BAO/FinancialAccount.php @@ -67,8 +67,8 @@ class CRM_Financial_BAO_FinancialAccount extends CRM_Financial_DAO_FinancialAcco * @param bool $is_active * Value we want to set the is_active field. * - * @return CRM_Core_DAO|null - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Financial_DAO_FinancialAccount', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Financial/BAO/PaymentProcessor.php b/civicrm/CRM/Financial/BAO/PaymentProcessor.php index 3054bb464989e11fb7ce2c35a8ea0af17a533842..e312d2ebc94feeff3312138ed093699420efe7ef 100644 --- a/civicrm/CRM/Financial/BAO/PaymentProcessor.php +++ b/civicrm/CRM/Financial/BAO/PaymentProcessor.php @@ -150,9 +150,8 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces * @param bool $is_active * Value we want to set the is_active field. * - * @return CRM_Financial_DAO_PaymentProcessor|null - * DAO object on success, null otherwise - * + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Financial_DAO_PaymentProcessor', $id, 'is_active', $is_active); @@ -273,7 +272,7 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces */ public static function getAllPaymentProcessors($mode = 'all', $reset = FALSE, $isCurrentDomainOnly = TRUE) { - $cacheKey = 'CRM_Financial_BAO_Payment_Processor_' . $mode . '_' . CRM_Core_Config::domainID(); + $cacheKey = 'CRM_Financial_BAO_Payment_Processor_' . $mode . '_' . $isCurrentDomainOnly . '_' . CRM_Core_Config::domainID(); if (!$reset) { $processors = CRM_Utils_Cache::singleton()->get($cacheKey); if (!empty($processors)) { @@ -370,10 +369,10 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces public static function getPaymentProcessors($capabilities = array(), $ids = FALSE) { $testProcessors = in_array('TestMode', $capabilities) ? self::getAllPaymentProcessors('test') : array(); if (is_array($ids)) { - $processors = self::getAllPaymentProcessors('all', TRUE, FALSE); + $processors = self::getAllPaymentProcessors('all', FALSE, FALSE); } else { - $processors = self::getAllPaymentProcessors('all', TRUE); + $processors = self::getAllPaymentProcessors('all'); } if (in_array('TestMode', $capabilities) && is_array($ids)) { diff --git a/civicrm/CRM/Financial/BAO/PaymentProcessorType.php b/civicrm/CRM/Financial/BAO/PaymentProcessorType.php index 6667d8bab7d92f7ade1ab0a013f2c91256ca00fb..70d99b4c555f335b5aa40da3b60d2f09a349fe95 100644 --- a/civicrm/CRM/Financial/BAO/PaymentProcessorType.php +++ b/civicrm/CRM/Financial/BAO/PaymentProcessorType.php @@ -73,9 +73,8 @@ class CRM_Financial_BAO_PaymentProcessorType extends CRM_Financial_DAO_PaymentPr * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise - * + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Financial_DAO_PaymentProcessorType', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Financial/Form/PaymentEdit.php b/civicrm/CRM/Financial/Form/PaymentEdit.php index 3f53f37e8446e9656c3aad68f2c95a92f64d2567..32d5aebc9015ddf8b83ba8fbb1e994ff0f52b556 100644 --- a/civicrm/CRM/Financial/Form/PaymentEdit.php +++ b/civicrm/CRM/Financial/Form/PaymentEdit.php @@ -81,7 +81,13 @@ class CRM_Financial_Form_PaymentEdit extends CRM_Core_Form { * @return array */ public function setDefaultValues() { - return $this->_values; + $defaults = $this->_values; + // Format money fields - localize for display + $moneyFields = ['total_amount', 'fee_amount', 'net_amount']; + foreach ($moneyFields as $field) { + $defaults[$field] = CRM_Utils_Money::formatLocaleNumericRoundedForDefaultCurrency($this->_values[$field]); + } + return $defaults; } /** diff --git a/civicrm/CRM/Financial/Form/SalesTaxTrait.php b/civicrm/CRM/Financial/Form/SalesTaxTrait.php new file mode 100644 index 0000000000000000000000000000000000000000..072126a2f45d37570c01d0ef5efa5a281b2466aa --- /dev/null +++ b/civicrm/CRM/Financial/Form/SalesTaxTrait.php @@ -0,0 +1,90 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 4.7 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2018 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007 and the CiviCRM Licensing Exception. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License and the CiviCRM Licensing Exception along | + | with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC (c) 2004-2018 + */ + +trait CRM_Financial_Form_SalesTaxTrait { + + /** + * Assign the sales tax term to the template. + */ + public function assignSalesTaxTermToTemplate() { + $this->assign('taxTerm', $this->getSalesTaxTerm()); + } + + /** + * Assign sales tax rates to the template. + */ + public function assignSalesTaxRates() { + $this->assign('taxRates', json_encode(CRM_Core_PseudoConstant::getTaxRates())); + } + + /** + * Return the string to be assigned to the template for sales tax - e.g GST, VAT. + * + * @return string + */ + public function getSalesTaxTerm() { + $invoiceSettings = Civi::settings()->get('contribution_invoice_settings'); + $invoicing = CRM_Utils_Array::value('invoicing', $invoiceSettings); + if (!$invoicing) { + return ''; + } + return CRM_Utils_Array::value('tax_term', $invoiceSettings); + } + + /** + * Assign information to the template required for sales tax purposes. + */ + public function assignSalesTaxMetadataToTemplate() { + $this->assignSalesTaxRates(); + $this->assignSalesTaxTermToTemplate(); + } + + /** + * Get sales tax rates. + * + * @return array + */ + public function getTaxRatesForFinancialTypes() { + return CRM_Core_PseudoConstant::getTaxRates(); + } + + /** + * @param int $financialTypeID + * + * @return string + */ + public function getTaxRateForFinancialType($financialTypeID) { + return CRM_Utils_Array::value($financialTypeID, $this->getTaxRatesForFinancialTypes()); + } + +} diff --git a/civicrm/CRM/Friend/Form.php b/civicrm/CRM/Friend/Form.php index 9b2a9c9f765540efcb5a4c9a63e36c8eb216eadc..459384ca45346caca661dbe292c34e5c1cdc1255 100644 --- a/civicrm/CRM/Friend/Form.php +++ b/civicrm/CRM/Friend/Form.php @@ -95,6 +95,7 @@ class CRM_Friend_Form extends CRM_Core_Form { if ($pcomponent == 'event') { $this->_entityTable = 'civicrm_event'; $isShare = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $this->_entityId, 'is_share'); + $this->_title = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $this->_entityId, 'title'); } else { $isShare = CRM_Utils_Array::value('is_share', $values); diff --git a/civicrm/CRM/Logging/Schema.php b/civicrm/CRM/Logging/Schema.php index a24906ef91b1e79ca374af2d5c63847170126e52..c11b32e136bb9560586207bb1a271f4129b80869 100644 --- a/civicrm/CRM/Logging/Schema.php +++ b/civicrm/CRM/Logging/Schema.php @@ -331,7 +331,7 @@ AND (TABLE_NAME LIKE 'log_civicrm_%' $nonStandardTableNameString ) $updateLogConn = TRUE; } if (!empty($alterSql)) { - CRM_Core_DAO::executeQuery("ALTER TABLE {$this->db}.{$logTable} " . implode(', ', $alterSql)); + CRM_Core_DAO::executeQuery("ALTER TABLE {$this->db}.{$logTable} " . implode(', ', $alterSql), [], TRUE, NULL, FALSE, FALSE); } } if ($updateLogConn) { diff --git a/civicrm/CRM/Mailing/BAO/Component.php b/civicrm/CRM/Mailing/BAO/Component.php index 969d4b57e0471e04e922554ab57c36807030100a..6840e3edeee9b0e15f5af408e71c20a9a9f63049 100644 --- a/civicrm/CRM/Mailing/BAO/Component.php +++ b/civicrm/CRM/Mailing/BAO/Component.php @@ -67,8 +67,8 @@ class CRM_Mailing_BAO_Component extends CRM_Mailing_DAO_Component { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Mailing_DAO_Component', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Mailing/BAO/Mailing.php b/civicrm/CRM/Mailing/BAO/Mailing.php index 212284f00ee82f09cc36837396c9a07b98d16c7b..dd4ef5bc013ed71cd92dfe30153d805129e1b3f5 100644 --- a/civicrm/CRM/Mailing/BAO/Mailing.php +++ b/civicrm/CRM/Mailing/BAO/Mailing.php @@ -282,8 +282,10 @@ class CRM_Mailing_BAO_Mailing extends CRM_Mailing_DAO_Mailing { // Get recipients selected in prior mailings if (!empty($priorMailingIDs['Include'])) { CRM_Utils_SQL_Select::from('civicrm_mailing_recipients') - ->select("contact_id, $entityColumn") + ->select("DISTINCT civicrm_mailing_recipients.contact_id, $entityColumn") + ->join('temp', " LEFT JOIN $excludeTempTablename temp ON civicrm_mailing_recipients.contact_id = temp.contact_id ") ->where('mailing_id IN (#mailings)') + ->where('temp.contact_id IS NULL') ->param('#mailings', $priorMailingIDs['Include']) ->insertIgnoreInto($includedTempTablename, array('contact_id', $entityColumn)) ->execute(); diff --git a/civicrm/CRM/Member/BAO/MembershipStatus.php b/civicrm/CRM/Member/BAO/MembershipStatus.php index 2fa7203cc157b07e4c189b567a8047086638aff3..7c7d4518648272d70d23115f68202e1bd098deeb 100644 --- a/civicrm/CRM/Member/BAO/MembershipStatus.php +++ b/civicrm/CRM/Member/BAO/MembershipStatus.php @@ -74,8 +74,8 @@ class CRM_Member_BAO_MembershipStatus extends CRM_Member_DAO_MembershipStatus { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Member_DAO_MembershipStatus', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Member/BAO/MembershipType.php b/civicrm/CRM/Member/BAO/MembershipType.php index 796e047a0731b3b474d446b7240f668795a69e39..c308b8ca02a6ec2704ac5a3e539672f89f8d20c7 100644 --- a/civicrm/CRM/Member/BAO/MembershipType.php +++ b/civicrm/CRM/Member/BAO/MembershipType.php @@ -76,8 +76,8 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Member_DAO_MembershipType', $id, 'is_active', $is_active); @@ -507,6 +507,7 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType { * * @param int $membershipId * @param $changeToday + * If provided, specify an alternative date to use as "today" for renewal * @param int $membershipTypeID * If provided, overrides the membership type of the $membershipID membership. * @param int $numRenewTerms diff --git a/civicrm/CRM/Member/Form.php b/civicrm/CRM/Member/Form.php index 4c41ab201f61d56b1619bca66fe50aed72309700..913654e2b8140fd9c2d189a0bd9553e6eb241299 100644 --- a/civicrm/CRM/Member/Form.php +++ b/civicrm/CRM/Member/Form.php @@ -91,6 +91,29 @@ class CRM_Member_Form extends CRM_Contribute_Form_AbstractEditPayment { return 'Membership'; } + /** + * @var array + */ + protected $statusMessage = []; + + /** + * Add to the status message. + * + * @param $message + */ + protected function addStatusMessage($message) { + $this->statusMessage[] = $message; + } + + /** + * Get the status message. + * + * @return string + */ + protected function getStatusMessage() { + return implode(' ', $this->statusMessage); + } + /** * Values submitted to the form, processed along the way. * @@ -189,6 +212,7 @@ class CRM_Member_Form extends CRM_Contribute_Form_AbstractEditPayment { * Build the form object. */ public function buildQuickForm() { + $this->assignSalesTaxMetadataToTemplate(); $this->addPaymentProcessorSelect(TRUE, FALSE, TRUE); CRM_Core_Payment_Form::buildPaymentForm($this, $this->_paymentProcessor, FALSE, TRUE, $this->getDefaultPaymentInstrumentId()); diff --git a/civicrm/CRM/Member/Form/Membership.php b/civicrm/CRM/Member/Form/Membership.php index b81bc5ec3bb6c1bd5736a8a6999d14fdf7764986..19766da30a5e129cc718d4574a47d0d8c22db726 100644 --- a/civicrm/CRM/Member/Form/Membership.php +++ b/civicrm/CRM/Member/Form/Membership.php @@ -396,14 +396,8 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { */ public function buildQuickForm() { - $this->assign('taxRates', json_encode(CRM_Core_PseudoConstant::getTaxRates())); - $this->assign('currency', CRM_Core_Config::singleton()->defaultCurrencySymbol); - $invoiceSettings = Civi::settings()->get('contribution_invoice_settings'); - $invoicing = CRM_Utils_Array::value('invoicing', $invoiceSettings); - if (isset($invoicing)) { - $this->assign('taxTerm', CRM_Utils_Array::value('tax_term', $invoiceSettings)); - } + $isUpdateToExistingRecurringMembership = $this->isUpdateToExistingRecurringMembership(); // build price set form. $buildPriceSet = FALSE; if ($this->_priceSetId || !empty($_POST['price_set_id'])) { @@ -564,9 +558,8 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { ); $sel->setOptions(array($selMemTypeOrg, $selOrgMemType)); - $elements = array(); - if ($sel) { - $elements[] = $sel; + if ($isUpdateToExistingRecurringMembership) { + $sel->freeze(); } $this->applyFilter('__ALL__', 'trim'); @@ -578,8 +571,8 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $this->addDate('join_date', ts('Member Since'), FALSE, array('formatType' => 'activityDate')); $this->addDate('start_date', ts('Start Date'), FALSE, array('formatType' => 'activityDate')); $endDate = $this->addDate('end_date', ts('End Date'), FALSE, array('formatType' => 'activityDate')); - if ($endDate) { - $elements[] = $endDate; + if ($endDate && $isUpdateToExistingRecurringMembership) { + $endDate->freeze(); } $this->add('text', 'source', ts('Source'), @@ -601,8 +594,8 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $statusOverride = $this->addElement('select', 'is_override', ts('Status Override?'), CRM_Member_StatusOverrideTypes::getSelectOptions() ); - if ($statusOverride) { - $elements[] = $statusOverride; + if ($statusOverride && $isUpdateToExistingRecurringMembership) { + $statusOverride->freeze(); } $this->add('datepicker', 'status_override_end_date', ts('Status Override End Date'), '', FALSE, array('minDate' => time(), 'time' => FALSE)); @@ -669,24 +662,13 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $this->assign('displayName', $this->_memberDisplayName); } - $isRecur = FALSE; - if ($this->_action & CRM_Core_Action::UPDATE) { - $recurContributionId = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership', $this->_id, - 'contribution_recur_id' + if ($isUpdateToExistingRecurringMembership && CRM_Member_BAO_Membership::isCancelSubscriptionSupported($this->_id)) { + $this->assign('cancelAutoRenew', + CRM_Utils_System::url('civicrm/contribute/unsubscribe', "reset=1&mid={$this->_id}") ); - if ($recurContributionId && !CRM_Member_BAO_Membership::isSubscriptionCancelled($this->_id)) { - $isRecur = TRUE; - if (CRM_Member_BAO_Membership::isCancelSubscriptionSupported($this->_id)) { - $this->assign('cancelAutoRenew', - CRM_Utils_System::url('civicrm/contribute/unsubscribe', "reset=1&mid={$this->_id}") - ); - } - foreach ($elements as $elem) { - $elem->freeze(); - } - } } - $this->assign('isRecur', $isRecur); + + $this->assign('isRecur', $isUpdateToExistingRecurringMembership); $this->addFormRule(array('CRM_Member_Form_Membership', 'formRule'), $this); $mailingInfo = Civi::settings()->get('mailing_backend'); @@ -1124,8 +1106,6 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $formValues = $this->setPriceSetParameters($formValues); $params = $softParams = $ids = array(); - $allMemberStatus = CRM_Member_PseudoConstant::membershipStatus(); - $allContributionStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); $this->processBillingAddress(); if ($this->_id) { @@ -1196,7 +1176,6 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $params['tax_amount'] = $formValues['tax_amount']; } $params['total_amount'] = CRM_Utils_Array::value('amount', $formValues); - $submittedFinancialType = CRM_Utils_Array::value('financial_type_id', $formValues); if (!empty($lineItem[$this->_priceSetId])) { foreach ($lineItem[$this->_priceSetId] as &$li) { if (!empty($li['membership_type_id'])) { @@ -1208,6 +1187,7 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { ///CRM-11529 for quick config backoffice transactions //when financial_type_id is passed in form, update the //lineitems with the financial type selected in form + $submittedFinancialType = CRM_Utils_Array::value('financial_type_id', $formValues); if ($isQuickConfig && $submittedFinancialType) { $li['financial_type_id'] = $submittedFinancialType; } @@ -1269,9 +1249,9 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { } } - // max related memberships - take from form or inherit from membership type foreach ($this->_memTypeSelected as $memType) { if (array_key_exists('max_related', $formValues)) { + // max related memberships - take from form or inherit from membership type $membershipTypeValues[$memType]['max_related'] = CRM_Utils_Array::value('max_related', $formValues); } $membershipTypeValues[$memType]['custom'] = CRM_Core_BAO_CustomField::postProcess($formValues, @@ -1296,6 +1276,9 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $softParams['contact_id'] = $this->_contactID; } } + + $pendingMembershipStatusId = CRM_Core_PseudoConstant::getKey('CRM_Member_BAO_Membership', 'status_id', 'Pending'); + if (!empty($formValues['record_contribution'])) { $recordContribution = array( 'total_amount', @@ -1326,10 +1309,11 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { } } + $completedContributionStatusId = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'); if (empty($params['is_override']) && - CRM_Utils_Array::value('contribution_status_id', $params) != array_search('Completed', $allContributionStatus) + CRM_Utils_Array::value('contribution_status_id', $params) != $completedContributionStatusId ) { - $params['status_id'] = array_search('Pending', $allMemberStatus); + $params['status_id'] = $pendingMembershipStatusId; $params['skipStatusCal'] = TRUE; $params['is_pay_later'] = 1; $this->assign('is_pay_later', 1); @@ -1448,12 +1432,14 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $ids['contribution'] = $contribution->id; $params['contribution_recur_id'] = $paymentParams['contributionRecurID']; } + $paymentStatus = NULL; if ($params['total_amount'] > 0.0) { $payment = $this->_paymentProcessor['object']; try { $result = $payment->doPayment($paymentParams); $formValues = array_merge($formValues, $result); + $paymentStatus = CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $formValues['payment_status_id']); // Assign amount to template if payment was successful. $this->assign('amount', $params['total_amount']); } @@ -1474,8 +1460,8 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { } } - if ($formValues['payment_status_id'] != array_search('Completed', $allContributionStatus)) { - $params['status_id'] = array_search('Pending', $allMemberStatus); + if ($paymentStatus !== 'Completed') { + $params['status_id'] = $pendingMembershipStatusId; $params['skipStatusCal'] = TRUE; // unset send-receipt option, since receipt will be sent when ipn is received. unset($formValues['send_receipt'], $formValues['send_receipt']); @@ -1493,7 +1479,7 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { } } $now = date('YmdHis'); - $params['receive_date'] = $now; + $params['receive_date'] = date('YmdHis'); $params['invoice_id'] = $formValues['invoiceID']; $params['contribution_source'] = ts('%1 Membership Signup: Credit card or direct debit (by %2)', array(1 => $membershipType, 2 => $userName) @@ -1685,7 +1671,8 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { } if ($taxAmount) { $this->assign('totalTaxAmount', $totalTaxAmount); - $this->assign('taxTerm', CRM_Utils_Array::value('tax_term', $invoiceSettings)); + // Not sure why would need this on Submit.... unless it's being used when sending mails in which case this is the wrong place + $this->assign('taxTerm', $this->getSalesTaxTerm()); } $this->assign('dataArray', $dataArray); } @@ -1838,11 +1825,10 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { * * @param CRM_Member_BAO_Membership $membership * @param string $endDate - * @param bool $receiptSend * * @return string */ - protected function getStatusMessageForUpdate($membership, $endDate, $receiptSend) { + protected function getStatusMessageForUpdate($membership, $endDate) { // End date can be modified by hooks, so if end date is set then use it. $endDate = ($membership->end_date) ? $membership->end_date : $endDate; @@ -1851,10 +1837,6 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { $endDate = CRM_Utils_Date::customFormat($endDate); $statusMsg .= ' ' . ts('The membership End Date is %1.', array(1 => $endDate)); } - - if ($receiptSend) { - $statusMsg .= ' ' . ts('A confirmation and receipt has been sent to %1.', array(1 => $this->_contributorEmail)); - } return $statusMsg; } @@ -1862,17 +1844,15 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { * Get status message for create action. * * @param string $endDate - * @param bool $receiptSend * @param array $membershipTypes * @param array $createdMemberships * @param bool $isRecur * @param array $calcDates - * @param bool $mailSent * * @return array|string */ - protected function getStatusMessageForCreate($endDate, $receiptSend, $membershipTypes, $createdMemberships, - $isRecur, $calcDates, $mailSent) { + protected function getStatusMessageForCreate($endDate, $membershipTypes, $createdMemberships, + $isRecur, $calcDates) { // FIX ME: fix status messages $statusMsg = array(); @@ -1896,9 +1876,6 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { } } $statusMsg = implode('<br/>', $statusMsg); - if ($receiptSend && !empty($mailSent)) { - $statusMsg .= ' ' . ts('A membership confirmation and receipt has been sent to %1.', array(1 => $this->_contributorEmail)); - } return $statusMsg; } @@ -1910,19 +1887,21 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { * @param $createdMemberships * @param $isRecur * @param $calcDates - * @param $mailSend + * @param $mailSent */ - protected function setStatusMessage($membership, $endDate, $receiptSend, $membershipTypes, $createdMemberships, $isRecur, $calcDates, $mailSend) { - $statusMsg = ''; + protected function setStatusMessage($membership, $endDate, $receiptSend, $membershipTypes, $createdMemberships, $isRecur, $calcDates, $mailSent) { if (($this->_action & CRM_Core_Action::UPDATE)) { - $statusMsg = $this->getStatusMessageForUpdate($membership, $endDate, $receiptSend); + $this->addStatusMessage($this->getStatusMessageForUpdate($membership, $endDate)); } elseif (($this->_action & CRM_Core_Action::ADD)) { - $statusMsg = $this->getStatusMessageForCreate($endDate, $receiptSend, $membershipTypes, $createdMemberships, - $isRecur, $calcDates, $mailSend); + $this->addStatusMessage($this->getStatusMessageForCreate($endDate, $membershipTypes, $createdMemberships, + $isRecur, $calcDates)); + } + if ($receiptSend && $mailSent) { + $this->addStatusMessage(ts('A membership confirmation and receipt has been sent to %1.', array(1 => $this->_contributorEmail))); } - CRM_Core_Session::setStatus($statusMsg, ts('Complete'), 'success'); + CRM_Core_Session::setStatus($this->getStatusMessage(), ts('Complete'), 'success'); //CRM-15187 // display message when membership type is changed if (($this->_action & CRM_Core_Action::UPDATE) && $this->_id && !in_array($this->_memType, $this->_memTypeSelected)) { @@ -1945,4 +1924,19 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { } } + /** + * @return bool + */ + protected function isUpdateToExistingRecurringMembership() { + $isRecur = FALSE; + if ($this->_action & CRM_Core_Action::UPDATE + && CRM_Core_DAO::getFieldValue('CRM_Member_DAO_Membership', $this->_id, + 'contribution_recur_id') + && !CRM_Member_BAO_Membership::isSubscriptionCancelled($this->_id)) { + + $isRecur = TRUE; + } + return $isRecur; + } + } diff --git a/civicrm/CRM/Member/Form/MembershipRenewal.php b/civicrm/CRM/Member/Form/MembershipRenewal.php index 25c90c49699081035d74b470da92e6f3c26e01f6..d5eb08968a686c0ae65cb3bfb70c8abcbdc1b320 100644 --- a/civicrm/CRM/Member/Form/MembershipRenewal.php +++ b/civicrm/CRM/Member/Form/MembershipRenewal.php @@ -244,10 +244,7 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form { } //CRM-16950 - $taxRates = CRM_Core_PseudoConstant::getTaxRates(); - $taxRate = CRM_Utils_Array::value($this->allMembershipTypeDetails[$defaults['membership_type_id']]['financial_type_id'], $taxRates); - - $invoiceSettings = Civi::settings()->get('contribution_invoice_settings'); + $taxRate = $this->getTaxRateForFinancialType($this->allMembershipTypeDetails[$defaults['membership_type_id']]['financial_type_id']); // auto renew options if enabled for the membership $options = CRM_Core_SelectValues::memberAutoRenew(); @@ -276,7 +273,8 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form { //CRM-16950 $taxAmount = NULL; $totalAmount = CRM_Utils_Array::value('minimum_fee', $values); - if (CRM_Utils_Array::value($values['financial_type_id'], $taxRates)) { + // @todo - feels a bug - we use taxRate from the form default rather than from the specified type?!? + if ($this->getTaxRateForFinancialType($values['financial_type_id'])) { $taxAmount = ($taxRate / 100) * CRM_Utils_Array::value('minimum_fee', $values); $totalAmount = $totalAmount + $taxAmount; } @@ -287,7 +285,7 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form { 'financial_type_id' => CRM_Utils_Array::value('financial_type_id', $values), 'total_amount' => CRM_Utils_Money::format($totalAmount, NULL, '%a'), 'total_amount_numeric' => $totalAmount, - 'tax_message' => $taxAmount ? ts("Includes %1 amount of %2", array(1 => CRM_Utils_Array::value('tax_term', $invoiceSettings), 2 => CRM_Utils_Money::format($taxAmount))) : $taxAmount, + 'tax_message' => $taxAmount ? ts("Includes %1 amount of %2", array(1 => $this->getSalesTaxTerm(), 2 => CRM_Utils_Money::format($taxAmount))) : $taxAmount, ); if (!empty($values['auto_renew'])) { diff --git a/civicrm/CRM/PCP/BAO/PCP.php b/civicrm/CRM/PCP/BAO/PCP.php index b21a3a21469cc6e41f9883519557d8336fa74413..eaea71fbde4bd7f98f449ba55bc2cabb50798407 100644 --- a/civicrm/CRM/PCP/BAO/PCP.php +++ b/civicrm/CRM/PCP/BAO/PCP.php @@ -709,7 +709,9 @@ WHERE pcp.id = %1 AND cc.contribution_status_id =1 AND cc.is_test = 0"; * Campaign page id. * * @param bool $is_active - * @return null + * + * @return bool + * true if we found and updated the object, else false */ public static function setDisable($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_PCP_DAO_PCP', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Price/BAO/PriceField.php b/civicrm/CRM/Price/BAO/PriceField.php index 0dd12fd66c55bc3038cda89a903e86ad903515fb..4e63f49f59a578e97c1add4b40d3871c6667f547 100644 --- a/civicrm/CRM/Price/BAO/PriceField.php +++ b/civicrm/CRM/Price/BAO/PriceField.php @@ -225,8 +225,8 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise. + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Price_DAO_PriceField', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Price/BAO/PriceFieldValue.php b/civicrm/CRM/Price/BAO/PriceFieldValue.php index b309facc0816caddf6b97f2fbacafee3ec99cff5..a8c0b1b587ffe87af76bce1e015567d015c31cdb 100644 --- a/civicrm/CRM/Price/BAO/PriceFieldValue.php +++ b/civicrm/CRM/Price/BAO/PriceFieldValue.php @@ -223,9 +223,8 @@ class CRM_Price_BAO_PriceFieldValue extends CRM_Price_DAO_PriceFieldValue { * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise - * + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Price_DAO_PriceFieldValue', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Price/BAO/PriceSet.php b/civicrm/CRM/Price/BAO/PriceSet.php index 1f8d2fe79bf6acf189714a2e22e9b6c26c5550d4..922653857d8f5264384f966e71c77ad992266b09 100644 --- a/civicrm/CRM/Price/BAO/PriceSet.php +++ b/civicrm/CRM/Price/BAO/PriceSet.php @@ -105,10 +105,8 @@ class CRM_Price_BAO_PriceSet extends CRM_Price_DAO_PriceSet { * Id of the database record. * @param $isActive * - * @internal param bool $is_active value we want to set the is_active field - * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $isActive) { return CRM_Core_DAO::setFieldValue('CRM_Price_DAO_PriceSet', $id, 'is_active', $isActive); @@ -1473,8 +1471,8 @@ GROUP BY mt.member_of_contact_id "; * @param bool $isQuickConfig we want to set the is_quick_config field. * Value we want to set the is_quick_config field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsQuickConfig($id, $isQuickConfig) { return CRM_Core_DAO::setFieldValue('CRM_Price_DAO_PriceSet', $id, 'is_quick_config', $isQuickConfig); diff --git a/civicrm/CRM/Report/BAO/ReportInstance.php b/civicrm/CRM/Report/BAO/ReportInstance.php index a7dc5733cb44b26fb43adbe2e376f67caaef8480..7cc1f4eda1665daf49afe12d6eac49687b1044f6 100644 --- a/civicrm/CRM/Report/BAO/ReportInstance.php +++ b/civicrm/CRM/Report/BAO/ReportInstance.php @@ -45,7 +45,6 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance { * @return CRM_Report_DAO_ReportInstance */ public static function add(&$params) { - $instance = new CRM_Report_DAO_ReportInstance(); if (empty($params)) { return NULL; } @@ -109,10 +108,10 @@ class CRM_Report_BAO_ReportInstance extends CRM_Report_DAO_ReportInstance { $instance->save(); if ($instanceID) { - CRM_Utils_Hook::pre('edit', 'ReportInstance', $instance->id, $instance); + CRM_Utils_Hook::post('edit', 'ReportInstance', $instance->id, $instance); } else { - CRM_Utils_Hook::pre('create', 'ReportInstance', $instance->id, $instance); + CRM_Utils_Hook::post('create', 'ReportInstance', $instance->id, $instance); } return $instance; } diff --git a/civicrm/CRM/Report/Form.php b/civicrm/CRM/Report/Form.php index 722c35f32364f3895c42aa49cbe297b994db1552..76861112042e4181ed98c55f7e6162dfdc6a9c11 100644 --- a/civicrm/CRM/Report/Form.php +++ b/civicrm/CRM/Report/Form.php @@ -1393,6 +1393,10 @@ class CRM_Report_Form extends CRM_Core_Form { if (!CRM_Core_Permission::check('view report sql')) { return; } + $ignored_output_modes = array('pdf', 'csv', 'print'); + if (in_array($this->_outputMode, $ignored_output_modes)) { + return; + } $this->tabs['Developer'] = array( 'title' => ts('Developer'), 'tpl' => 'Developer', @@ -1403,7 +1407,7 @@ class CRM_Report_Form extends CRM_Core_Form { $this->sqlArray[] = $sql; foreach ($this->sqlArray as $sql) { foreach (array('LEFT JOIN') as $term) { - $sql = str_replace($term, '<br>  ' . $term, $sql); + $sql = str_replace($term, '<br> ' . $term, $sql); } foreach (array('FROM', 'WHERE', 'GROUP BY', 'ORDER BY', 'LIMIT', ';') as $term) { $sql = str_replace($term, '<br><br>' . $term, $sql); @@ -1411,6 +1415,8 @@ class CRM_Report_Form extends CRM_Core_Form { $this->sqlFormattedArray[] = $sql; $this->assign('sql', implode(';<br><br><br><br>', $this->sqlFormattedArray)); } + $this->assign('sqlModes', $sqlModes = CRM_Utils_SQL::getSqlModes()); + } /** @@ -2699,39 +2705,7 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND if (!empty($field['pseudofield'])) { continue; } - $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { - if (CRM_Utils_Array::value('operatorType', $field) == - CRM_Report_Form::OP_MONTH - ) { - $op = CRM_Utils_Array::value("{$fieldName}_op", $this->_params); - $value = CRM_Utils_Array::value("{$fieldName}_value", $this->_params); - if (is_array($value) && !empty($value)) { - $clause - = "(month({$field['dbAlias']}) $op (" . implode(', ', $value) . - '))'; - } - } - else { - $relative = CRM_Utils_Array::value("{$fieldName}_relative", $this->_params); - $from = CRM_Utils_Array::value("{$fieldName}_from", $this->_params); - $to = CRM_Utils_Array::value("{$fieldName}_to", $this->_params); - $fromTime = CRM_Utils_Array::value("{$fieldName}_from_time", $this->_params); - $toTime = CRM_Utils_Array::value("{$fieldName}_to_time", $this->_params); - $clause = $this->dateClause($field['dbAlias'], $relative, $from, $to, $field['type'], $fromTime, $toTime); - } - } - else { - $op = CRM_Utils_Array::value("{$fieldName}_op", $this->_params); - if ($op) { - $clause = $this->whereClause($field, - $op, - CRM_Utils_Array::value("{$fieldName}_value", $this->_params), - CRM_Utils_Array::value("{$fieldName}_min", $this->_params), - CRM_Utils_Array::value("{$fieldName}_max", $this->_params) - ); - } - } + $clause = $this->generateFilterClause($field, $fieldName); if (!empty($clause)) { if (!empty($field['having'])) { @@ -4937,7 +4911,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a * @param array $field * @param string $table */ - private function setEntityRefDefaults(&$field, $table) { + public function setEntityRefDefaults(&$field, $table) { $field['attributes'] = $field['attributes'] ? $field['attributes'] : array(); $field['attributes'] += array( 'entity' => CRM_Core_DAO_AllCoreTables::getBriefName(CRM_Core_DAO_AllCoreTables::getClassForTable($table)), @@ -5794,4 +5768,50 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a } } + /** + * Generate clause for the selected filter. + * + * @param array $field + * Field specification + * @param string $fieldName + * Field name. + * + * @return string + * Relevant where clause. + */ + protected function generateFilterClause($field, $fieldName) { + if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + if (CRM_Utils_Array::value('operatorType', $field) == + CRM_Report_Form::OP_MONTH + ) { + $op = CRM_Utils_Array::value("{$fieldName}_op", $this->_params); + $value = CRM_Utils_Array::value("{$fieldName}_value", $this->_params); + if (is_array($value) && !empty($value)) { + return "(month({$field['dbAlias']}) $op (" . implode(', ', $value) . + '))'; + } + } + else { + $relative = CRM_Utils_Array::value("{$fieldName}_relative", $this->_params); + $from = CRM_Utils_Array::value("{$fieldName}_from", $this->_params); + $to = CRM_Utils_Array::value("{$fieldName}_to", $this->_params); + $fromTime = CRM_Utils_Array::value("{$fieldName}_from_time", $this->_params); + $toTime = CRM_Utils_Array::value("{$fieldName}_to_time", $this->_params); + return $this->dateClause($field['dbAlias'], $relative, $from, $to, $field['type'], $fromTime, $toTime); + } + } + else { + $op = CRM_Utils_Array::value("{$fieldName}_op", $this->_params); + if ($op) { + return $this->whereClause($field, + $op, + CRM_Utils_Array::value("{$fieldName}_value", $this->_params), + CRM_Utils_Array::value("{$fieldName}_min", $this->_params), + CRM_Utils_Array::value("{$fieldName}_max", $this->_params) + ); + } + } + return ''; + } + } diff --git a/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php b/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php index aef934e7fa2770eadc95b060fd254a5f9ba39a8c..8c86c2b9a027389d97ca6df35de1280a0e151025 100644 --- a/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php +++ b/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php @@ -189,22 +189,9 @@ class CRM_Report_Form_Contact_CurrentEmployer extends CRM_Report_Form { ), ), ), - 'civicrm_group' => array( - 'dao' => 'CRM_Contact_DAO_Group', - 'alias' => 'cgroup', - 'filters' => array( - 'gid' => array( - 'name' => 'group_id', - 'title' => ts('Group'), - 'type' => CRM_Utils_Type::T_INT, - 'group' => TRUE, - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Core_PseudoConstant::staticGroup(), - ), - ), - ), ); + $this->_groupFilter = TRUE; $this->_tagFilter = TRUE; parent::__construct(); } @@ -373,7 +360,7 @@ FROM civicrm_contact {$this->_aliases['civicrm_contact']} // Handle ID to label conversion for contact fields $entryFound = $this->alterDisplayContactFields($row, $rows, $rowNum, 'contact/currentEmployer', 'View Contact Detail') ? TRUE : $entryFound; - + $entryFound = $this->alterDisplayAddressFields($row, $rows, $rowNum, NULL, NULL) ? TRUE : $entryFound; // display birthday in the configured custom format if (array_key_exists('civicrm_contact_birth_date', $row)) { $birthDate = $row['civicrm_contact_birth_date']; @@ -396,21 +383,6 @@ FROM civicrm_contact {$this->_aliases['civicrm_contact']} $entryFound = TRUE; } - // handle country - if (array_key_exists('civicrm_address_country_id', $row)) { - if ($value = $row['civicrm_address_country_id']) { - $rows[$rowNum]['civicrm_address_country_id'] = CRM_Core_PseudoConstant::country($value, FALSE); - } - $entryFound = TRUE; - } - - if (array_key_exists('civicrm_address_state_province_id', $row)) { - if ($value = $row['civicrm_address_state_province_id']) { - $rows[$rowNum]['civicrm_address_state_province_id'] = CRM_Core_PseudoConstant::stateProvince($value, FALSE); - } - $entryFound = TRUE; - } - // skip looking further in rows, if first row itself doesn't // have the column we need if (!$entryFound) { diff --git a/civicrm/CRM/Report/Form/Contact/Detail.php b/civicrm/CRM/Report/Form/Contact/Detail.php index 238bffa09b8cc7af6039c23b45d7335ce0571d81..7658ca71ff24cc150ee64be0d6074465be820a99 100644 --- a/civicrm/CRM/Report/Form/Contact/Detail.php +++ b/civicrm/CRM/Report/Form/Contact/Detail.php @@ -840,12 +840,7 @@ class CRM_Report_Form_Contact_Detail extends CRM_Report_Form { $entryFound = TRUE; } - if (array_key_exists('civicrm_address_state_province_id', $row)) { - if ($value = $row['civicrm_address_state_province_id']) { - $rows[$rowNum]['civicrm_address_state_province_id'] = CRM_Core_PseudoConstant::stateProvince($value, FALSE); - } - $entryFound = TRUE; - } + $entryFound = $this->alterDisplayAddressFields($row, $rows, $rowNum, NULL, NULL) ? TRUE : $entryFound; // skip looking further in rows, if first row itself doesn't // have the column we need diff --git a/civicrm/CRM/Report/Form/Contact/Relationship.php b/civicrm/CRM/Report/Form/Contact/Relationship.php index 0e34078cdfb1f19f716de7d9cc01fef65e05ea8f..7b975912065859dedeb2aff4c96fbd3b54528c7c 100644 --- a/civicrm/CRM/Report/Form/Contact/Relationship.php +++ b/civicrm/CRM/Report/Form/Contact/Relationship.php @@ -720,23 +720,7 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { $entryFound = TRUE; } - // Handle country - // @todo use alterDisplayAddressFields function - if (array_key_exists('civicrm_address_country_id', $row)) { - if ($value = $row['civicrm_address_country_id']) { - $rows[$rowNum]['civicrm_address_country_id'] = CRM_Core_PseudoConstant::country($value, FALSE); - } - $entryFound = TRUE; - } - - // Handle state/province - // @todo use alterDisplayAddressFields function - if (array_key_exists('civicrm_address_state_province_id', $row)) { - if ($value = $row['civicrm_address_state_province_id']) { - $rows[$rowNum]['civicrm_address_state_province_id'] = CRM_Core_PseudoConstant::stateProvince($value, FALSE); - } - $entryFound = TRUE; - } + $entryFound = $this->alterDisplayAddressFields($row, $rows, $rowNum, NULL, NULL) ? TRUE : $entryFound; // Handle contact name A // @todo refactor into separate function diff --git a/civicrm/CRM/Report/Form/Contribute/Detail.php b/civicrm/CRM/Report/Form/Contribute/Detail.php index 2369127d1aedaa8c5b40105a5ff382ee04e573f3..466e47f201168e2a4ab676463078f2632a92753b 100644 --- a/civicrm/CRM/Report/Form/Contribute/Detail.php +++ b/civicrm/CRM/Report/Form/Contribute/Detail.php @@ -253,6 +253,7 @@ class CRM_Report_Form_Contribute_Detail extends CRM_Report_Form { 'contribution_id' => array( 'name' => 'id', 'required' => TRUE, + 'default' => TRUE, 'title' => ts('Contribution'), ), ), @@ -262,6 +263,7 @@ class CRM_Report_Form_Contribute_Detail extends CRM_Report_Form { 'dao' => 'CRM_Contribute_DAO_ContributionSoft', 'fields' => array( 'soft_credit_type_id' => array('title' => ts('Soft Credit Type')), + 'soft_credit_amount' => ['title' => ts('Soft Credit amount'), 'name' => 'amount', 'type' => CRM_Utils_Type::T_MONEY], ), 'filters' => array( 'soft_credit_type_id' => array( @@ -272,6 +274,12 @@ class CRM_Report_Form_Contribute_Detail extends CRM_Report_Form { 'type' => CRM_Utils_Type::T_STRING, ), ), + 'group_bys' => array( + 'soft_credit_id' => array( + 'name' => 'id', + 'title' => ts('Soft Credit'), + ), + ), ), 'civicrm_financial_trxn' => array( 'dao' => 'CRM_Financial_DAO_FinancialTrxn', @@ -376,18 +384,7 @@ class CRM_Report_Form_Contribute_Detail extends CRM_Report_Form { ON {$this->_aliases['civicrm_contact']}.id = {$this->_aliases['civicrm_contribution']}.contact_id AND {$this->_aliases['civicrm_contribution']}.is_test = 0"; - if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == - 'both' - ) { - $this->_from .= "\n LEFT JOIN civicrm_contribution_soft contribution_soft_civireport - ON contribution_soft_civireport.contribution_id = {$this->_aliases['civicrm_contribution']}.id"; - } - elseif (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == - 'soft_credits_only' - ) { - $this->_from .= "\n INNER JOIN civicrm_contribution_soft contribution_soft_civireport - ON contribution_soft_civireport.contribution_id = {$this->_aliases['civicrm_contribution']}.id"; - } + $this->joinContributionToSoftCredit(); $this->appendAdditionalFromJoins(); } @@ -533,9 +530,7 @@ GROUP BY {$this->_aliases['civicrm_contribution']}.currency"; } // 1. use main contribution query to build temp table 1 $sql = $this->buildQuery(); - $tempQuery = "CREATE TEMPORARY TABLE civireport_contribution_detail_temp1 {$this->_databaseAttributes} AS {$sql}"; - $this->temporaryTables['civireport_contribution_detail_temp1'] = ['name' => 'civireport_contribution_detail_temp1', 'temporary' => TRUE]; - $this->executeReportQuery($tempQuery); + $this->createTemporaryTable('civireport_contribution_detail_temp1', $sql); $this->setPager(); // 2. customize main contribution query for soft credit, and build temp table 2 with soft credit contributions only @@ -551,13 +546,10 @@ GROUP BY {$this->_aliases['civicrm_contribution']}.currency"; $select = str_ireplace('contribution_civireport.total_amount', 'contribution_soft_civireport.amount', $this->_select); $select = str_ireplace("'Contribution' as", "'Soft Credit' as", $select); - // We really don't want to join soft credit in if not required. - if (!empty($this->_groupBy) && !$this->noDisplayContributionOrSoftColumn) { - $this->_groupBy .= ', contribution_soft_civireport.amount'; - } + // we inner join with temp1 to restrict soft contributions to those in temp1 table. // no group by here as we want to display as many soft credit rows as actually exist. - $sql = "{$select} {$this->_from} {$this->_where}"; + $sql = "{$select} {$this->_from} {$this->_where} $this->_groupBy"; $tempQuery = "CREATE TEMPORARY TABLE civireport_contribution_detail_temp2 {$this->_databaseAttributes} AS {$sql}"; $this->executeReportQuery($tempQuery); $this->temporaryTables['civireport_contribution_detail_temp2'] = ['name' => 'civireport_contribution_detail_temp2', 'temporary' => TRUE]; @@ -583,7 +575,7 @@ GROUP BY {$this->_aliases['civicrm_contribution']}.currency"; if ($this->isContributionBaseMode ) { $this->executeReportQuery( - "CREATE TEMPORARY TABLE civireport_contribution_detail_temp3 {$this->_databaseAttributes} AS (SELECT * FROM civireport_contribution_detail_temp1)" + "CREATE TEMPORARY TABLE civireport_contribution_detail_temp3 {$this->_databaseAttributes} AS (SELECT * FROM {$this->temporaryTables['civireport_contribution_detail_temp1']['name']})" ); } elseif (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == @@ -595,7 +587,7 @@ GROUP BY {$this->_aliases['civicrm_contribution']}.currency"; } else { $this->executeReportQuery("CREATE TEMPORARY TABLE civireport_contribution_detail_temp3 {$this->_databaseAttributes} -(SELECT * FROM civireport_contribution_detail_temp1) +(SELECT * FROM {$this->temporaryTables['civireport_contribution_detail_temp1']['name']}) UNION ALL (SELECT * FROM civireport_contribution_detail_temp2)"); } @@ -606,12 +598,11 @@ UNION ALL /** * Store group bys into array - so we can check elsewhere what is grouped. * - * If we are generating a table of soft credits we do not want to be using - * group by. + * If we are generating a table of soft credits we need to group by them. */ protected function storeGroupByArray() { if ($this->queryMode === 'SoftCredit') { - $this->_groupByArray = []; + $this->_groupByArray = [$this->_aliases['civicrm_contribution_soft'] . '.id']; } else { parent::storeGroupByArray(); @@ -744,10 +735,9 @@ UNION ALL array_key_exists('civicrm_contribution_contribution_id', $row) ) { $query = " -SELECT civicrm_contact_id, civicrm_contact_sort_name, civicrm_contribution_total_amount, civicrm_contribution_currency +SELECT civicrm_contact_id, civicrm_contact_sort_name, civicrm_contribution_total_amount_sum, civicrm_contribution_currency FROM civireport_contribution_detail_temp2 WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribution_id']}"; - $this->addToDeveloperTab($query); $dao = CRM_Core_DAO::executeQuery($query); $string = ''; $separator = ($this->_outputMode !== 'csv') ? "<br/>" : ' '; @@ -756,7 +746,7 @@ WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribu $dao->civicrm_contact_id); $string = $string . ($string ? $separator : '') . "<a href='{$url}'>{$dao->civicrm_contact_sort_name}</a> " . - CRM_Utils_Money::format($dao->civicrm_contribution_total_amount, $dao->civicrm_contribution_currency); + CRM_Utils_Money::format($dao->civicrm_contribution_total_amount_sum, $dao->civicrm_contribution_currency); } $rows[$rowNum]['civicrm_contribution_soft_credits'] = $string; } @@ -768,9 +758,8 @@ WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribu ) { $query = " SELECT civicrm_contact_id, civicrm_contact_sort_name -FROM civireport_contribution_detail_temp1 +FROM {$this->temporaryTables['civireport_contribution_detail_temp1']['name']} WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribution_id']}"; - $this->addToDeveloperTab($query); $dao = CRM_Core_DAO::executeQuery($query); $string = ''; while ($dao->fetch()) { @@ -922,7 +911,7 @@ WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribu public function softCreditFrom() { $this->_from = " - FROM civireport_contribution_detail_temp1 temp1_civireport + FROM {$this->temporaryTables['civireport_contribution_detail_temp1']['name']} temp1_civireport INNER JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} ON temp1_civireport.civicrm_contribution_contribution_id = {$this->_aliases['civicrm_contribution']}.id INNER JOIN civicrm_contribution_soft contribution_soft_civireport @@ -977,4 +966,21 @@ WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribu $this->addFinancialTrxnFromClause(); } + /** + * Add join to the soft credit table. + */ + protected function joinContributionToSoftCredit() { + if (!CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) && !$this->isTableSelected('civicrm_contribution_soft')) { + return; + } + $joinType = ' LEFT '; + if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == 'soft_credits_only') { + $joinType = ' INNER '; + } + $this->_from .= " + $joinType JOIN civicrm_contribution_soft {$this->_aliases['civicrm_contribution_soft']} + ON {$this->_aliases['civicrm_contribution_soft']}.contribution_id = {$this->_aliases['civicrm_contribution']}.id + "; + } + } diff --git a/civicrm/CRM/Report/Form/Member/Detail.php b/civicrm/CRM/Report/Form/Member/Detail.php index 9430c6fb600b97c64f271ef4f151d65d1239aefe..ba415048658747219199464707a3957ff96db974 100644 --- a/civicrm/CRM/Report/Form/Member/Detail.php +++ b/civicrm/CRM/Report/Form/Member/Detail.php @@ -360,20 +360,6 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { $entryFound = TRUE; } - if (array_key_exists('civicrm_address_state_province_id', $row)) { - if ($value = $row['civicrm_address_state_province_id']) { - $rows[$rowNum]['civicrm_address_state_province_id'] = CRM_Core_PseudoConstant::stateProvince($value, FALSE); - } - $entryFound = TRUE; - } - - if (array_key_exists('civicrm_address_country_id', $row)) { - if ($value = $row['civicrm_address_country_id']) { - $rows[$rowNum]['civicrm_address_country_id'] = CRM_Core_PseudoConstant::country($value, FALSE); - } - $entryFound = TRUE; - } - if (array_key_exists('civicrm_contact_sort_name', $row) && $rows[$rowNum]['civicrm_contact_sort_name'] && array_key_exists('civicrm_contact_id', $row) diff --git a/civicrm/CRM/Report/Form/Pledge/Pbnp.php b/civicrm/CRM/Report/Form/Pledge/Pbnp.php index 6658257a278ba2b1fb99ca4c9977a7c1c34a6981..d0d20efec4d48d9c912501942603d468bd2c23e1 100644 --- a/civicrm/CRM/Report/Form/Pledge/Pbnp.php +++ b/civicrm/CRM/Report/Form/Pledge/Pbnp.php @@ -181,20 +181,6 @@ class CRM_Report_Form_Pledge_Pbnp extends CRM_Report_Form { 'fields' => array('email' => NULL), 'grouping' => 'contact-fields', ), - 'civicrm_group' => array( - 'dao' => 'CRM_Contact_DAO_Group', - 'alias' => 'cgroup', - 'filters' => array( - 'gid' => array( - 'name' => 'group_id', - 'title' => ts('Group'), - 'type' => CRM_Utils_Type::T_INT, - 'group' => TRUE, - 'operatorType' => CRM_Report_Form::OP_MULTISELECT, - 'options' => CRM_Core_PseudoConstant::staticGroup(), - ), - ), - ), ); // If we have a campaign, build out the relevant elements @@ -211,6 +197,7 @@ class CRM_Report_Form_Pledge_Pbnp extends CRM_Report_Form { ); } + $this->_groupFilter = TRUE; $this->_tagFilter = TRUE; $this->_currencyColumn = 'civicrm_pledge_currency'; parent::__construct(); diff --git a/civicrm/CRM/Upgrade/Incremental/General.php b/civicrm/CRM/Upgrade/Incremental/General.php index 5737fbd5e4711300e6586e44a578fbaf5cb1346e..6b0ed69819312e41fb6f6a70f07657f1dae4e6a7 100644 --- a/civicrm/CRM/Upgrade/Incremental/General.php +++ b/civicrm/CRM/Upgrade/Incremental/General.php @@ -41,12 +41,12 @@ class CRM_Upgrade_Incremental_General { /** * The recommended PHP version. */ - const RECOMMENDED_PHP_VER = '7.0'; + const RECOMMENDED_PHP_VER = '7.1'; /** * The previous recommended PHP version. */ - const MIN_RECOMMENDED_PHP_VER = '5.6'; + const MIN_RECOMMENDED_PHP_VER = '7.0'; /** * The minimum PHP version required to install Civi. diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveFive.php b/civicrm/CRM/Upgrade/Incremental/php/FiveFive.php index e521a12e19bf6fd8511f7a367612279644af5367..c1d96128a19ceebb07e0a0232d56db2433e74212 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveFive.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveFive.php @@ -84,21 +84,4 @@ class CRM_Upgrade_Incremental_php_FiveFive extends CRM_Upgrade_Incremental_Base // return TRUE; // } - /** - * Upgrade function. - * - * @param string $rev - */ - public function upgrade_5_5_2($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', array(1 => $rev)), 'runSql', $rev); - $this->addTask('dev/core#107 - Add Activity\'s default assignee options', 'addActivityDefaultAssigneeOptions'); - } - - public static function addActivityDefaultAssigneeOptions() { - // This data was originally added via upgrader in 5.4.alpha1. However, it was omitted from the - // default data for new installations. Re-running the upgrader should fix sites initialized - // between 5.4.alpha1-5.5.1. - return CRM_Upgrade_Incremental_php_FiveFour::addActivityDefaultAssigneeOptions(); - } - } diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveSix.php b/civicrm/CRM/Upgrade/Incremental/php/FiveSix.php new file mode 100644 index 0000000000000000000000000000000000000000..c1718f0df8510e72c667c257753aa8fc97a9c724 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveSix.php @@ -0,0 +1,87 @@ +<?php +/* + +--------------------------------------------------------------------+ + | CiviCRM version 5 | + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC (c) 2004-2017 | + +--------------------------------------------------------------------+ + | This file is a part of CiviCRM. | + | | + | CiviCRM is free software; you can copy, modify, and distribute it | + | under the terms of the GNU Affero General Public License | + | Version 3, 19 November 2007. | + | | + | CiviCRM is distributed in the hope that it will be useful, but | + | WITHOUT ANY WARRANTY; without even the implied warranty of | + | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | See the GNU Affero General Public License for more details. | + | | + | You should have received a copy of the GNU Affero General Public | + | License along with this program; if not, contact CiviCRM LLC | + | at info[AT]civicrm[DOT]org. If you have questions about the | + | GNU Affero General Public License or the licensing of CiviCRM, | + | see the CiviCRM license FAQ at http://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +/** + * Upgrade logic for FiveSix */ +class CRM_Upgrade_Incremental_php_FiveSix extends CRM_Upgrade_Incremental_Base { + + /** + * Compute any messages which should be displayed beforeupgrade. + * + * Note: This function is called iteratively for each upcoming + * revision to the database. + * + * @param string $preUpgradeMessage + * @param string $rev + * a version number, e.g. '4.4.alpha1', '4.4.beta3', '4.4.0'. + * @param null $currentVer + */ + public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { + // Example: Generate a pre-upgrade message. + // if ($rev == '5.12.34') { + // $preUpgradeMessage .= '<p>' . ts('A new permission has been added called %1 This Permission is now used to control access to the Manage Tags screen', array(1 => 'manage tags')) . '</p>'; + // } + } + + /** + * Compute any messages which should be displayed after upgrade. + * + * @param string $postUpgradeMessage + * alterable. + * @param string $rev + * an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs. + */ + public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) { + // Example: Generate a post-upgrade message. + // if ($rev == '5.12.34') { + // $postUpgradeMessage .= '<br /><br />' . ts("By default, CiviCRM now disables the ability to import directly from SQL. To use this feature, you must explicitly grant permission 'import SQL datasource'."); + // } + } + + /* + * Important! All upgrade functions MUST add a 'runSql' task. + * Uncomment and use the following template for a new upgrade version + * (change the x in the function name): + */ + + /** + * Upgrade function. + * + * @param string $rev + */ + public function upgrade_5_6_beta2($rev) { + $this->addTask(ts('Upgrade DB to %1: SQL', array(1 => $rev)), 'runSql', $rev); + $this->addTask('dev/core#107 - Add Activity\'s default assignee options', 'addActivityDefaultAssigneeOptions'); + } + + public static function addActivityDefaultAssigneeOptions() { + // This data was originally added via upgrader in 5.4.alpha1. However, it was omitted from the + // default data for new installations. Re-running the upgrader should fix sites initialized + // between 5.4.alpha1-5.6.beta1. + return CRM_Upgrade_Incremental_php_FiveFour::addActivityDefaultAssigneeOptions(); + } + +} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.5.0.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.5.0.mysql.tpl deleted file mode 100644 index b27009b9dc6544dedc032f5560bc33f865edfd5f..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.5.0.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 5.5.0 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.5.1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.5.1.mysql.tpl deleted file mode 100644 index dd195d7382e8f111ec240f02651defe6242152c1..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.5.1.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 5.5.1 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.5.2.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.5.2.mysql.tpl deleted file mode 100644 index 770c1b934da046d7fdc1a3b5c455e50ba5790f39..0000000000000000000000000000000000000000 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.5.2.mysql.tpl +++ /dev/null @@ -1 +0,0 @@ -{* file to handle db changes in 5.5.2 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.5.3.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.5.3.mysql.tpl index 426aad33fd9744baa0144902a520dea0cca2ad25..c56f140dbd44b8a43d83a6294b5fec7278e250ec 100644 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.5.3.mysql.tpl +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.5.3.mysql.tpl @@ -1,7 +1,2 @@ #fix typo when setting default in https://github.com/civicrm/civicrm-core/pull/12410 ALTER TABLE civicrm_option_group MODIFY COLUMN is_locked TINYINT(4) NOT NULL DEFAULT 0 COMMENT 'A lock to remove the ability to add new options via the UI.'; - -UPDATE civicrm_option_group -SET is_locked = 0 -WHERE name REGEXP '.*_2018[0-9]+$' -AND id IN (SELECT DISTINCT option_group_id FROM civicrm_custom_field); diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.6.0.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.6.0.mysql.tpl new file mode 100644 index 0000000000000000000000000000000000000000..875b794ea469d1b987d3107911ffd97839a3f262 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.6.0.mysql.tpl @@ -0,0 +1 @@ +{* file to handle db changes in 5.6.0 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.6.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.6.alpha1.mysql.tpl new file mode 100644 index 0000000000000000000000000000000000000000..04dc9c84d7d04ad224fe85f76d46246429399b9a --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.6.alpha1.mysql.tpl @@ -0,0 +1,4 @@ +{* file to handle db changes in 5.6.alpha1 during upgrade *} + +ALTER TABLE civicrm_prevnext_cache + CHANGE `entity_id2` `entity_id2` int unsigned NULL COMMENT 'FK to entity table specified in entity_table column.'; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.6.beta1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.6.beta1.mysql.tpl new file mode 100644 index 0000000000000000000000000000000000000000..038f2d411c7f02d59cef11310276313cf3d81852 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.6.beta1.mysql.tpl @@ -0,0 +1 @@ +{* file to handle db changes in 5.6.beta1 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.6.beta2.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.6.beta2.mysql.tpl new file mode 100644 index 0000000000000000000000000000000000000000..e3e109cf4702fb42177934d51ed98f67082afe9e --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.6.beta2.mysql.tpl @@ -0,0 +1 @@ +{* file to handle db changes in 5.6.beta2 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Snapshot/V4p2/Price/BAO/Field.php b/civicrm/CRM/Upgrade/Snapshot/V4p2/Price/BAO/Field.php index 0abb97f3a7a94a6ffb92fa35b20844517953da6a..8f7ef8c62a504fdf181856ff9376d6a2890aa6ce 100644 --- a/civicrm/CRM/Upgrade/Snapshot/V4p2/Price/BAO/Field.php +++ b/civicrm/CRM/Upgrade/Snapshot/V4p2/Price/BAO/Field.php @@ -172,8 +172,8 @@ class CRM_Upgrade_Snapshot_V4p2_Price_BAO_Field extends CRM_Upgrade_Snapshot_V4p * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Upgrade_Snapshot_V4p2_Price_DAO_Field', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Upgrade/Snapshot/V4p2/Price/BAO/FieldValue.php b/civicrm/CRM/Upgrade/Snapshot/V4p2/Price/BAO/FieldValue.php index 0bc631b35fdccc69dfecf55c7d1b771e4dfef7c9..10b6c2cd93615541b0ac585f0e4595f89e24dcb2 100644 --- a/civicrm/CRM/Upgrade/Snapshot/V4p2/Price/BAO/FieldValue.php +++ b/civicrm/CRM/Upgrade/Snapshot/V4p2/Price/BAO/FieldValue.php @@ -177,9 +177,8 @@ class CRM_Upgrade_Snapshot_V4p2_Price_BAO_FieldValue extends CRM_Upgrade_Snapsho * @param bool $is_active * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise - * + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $is_active) { return CRM_Core_DAO::setFieldValue('CRM_Upgrade_Snapshot_V4p2_Price_DAO_FieldValue', $id, 'is_active', $is_active); diff --git a/civicrm/CRM/Upgrade/Snapshot/V4p2/Price/BAO/Set.php b/civicrm/CRM/Upgrade/Snapshot/V4p2/Price/BAO/Set.php index 080524203a1c96e2892f63ec2c0d916aa22e2e4a..4b0d898963075d326204d48fcc6cce4dbd627146 100644 --- a/civicrm/CRM/Upgrade/Snapshot/V4p2/Price/BAO/Set.php +++ b/civicrm/CRM/Upgrade/Snapshot/V4p2/Price/BAO/Set.php @@ -82,8 +82,8 @@ class CRM_Upgrade_Snapshot_V4p2_Price_BAO_Set extends CRM_Upgrade_Snapshot_V4p2_ * @param bool $isActive * Value we want to set the is_active field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsActive($id, $isActive) { return CRM_Core_DAO::setFieldValue('CRM_Upgrade_Snapshot_V4p2_Price_DAO_Set', $id, 'is_active', $isActive); @@ -1134,8 +1134,8 @@ GROUP BY mt.member_of_contact_id"; * @param bool $isQuickConfig we want to set the is_quick_config field. * Value we want to set the is_quick_config field. * - * @return Object - * DAO object on success, null otherwise + * @return bool + * true if we found and updated the object, else false */ public static function setIsQuickConfig($id, $isQuickConfig) { return CRM_Core_DAO::setFieldValue('CRM_Upgrade_Snapshot_V4p2_Price_DAO_Set', $id, 'is_quick_config', $isQuickConfig); diff --git a/civicrm/CRM/Utils/Check/Component/Env.php b/civicrm/CRM/Utils/Check/Component/Env.php index a253716e42f30e6b639bcb4157153a31006d8be1..0c44427fe6c03eb1676d53164bd6e433fdf53c4b 100644 --- a/civicrm/CRM/Utils/Check/Component/Env.php +++ b/civicrm/CRM/Utils/Check/Component/Env.php @@ -68,7 +68,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { elseif (version_compare($phpVersion, CRM_Upgrade_Incremental_General::MIN_INSTALL_PHP_VER) >= 0) { $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, - ts('This system uses PHP version %1. This meets the minimum requirements for CiviCRM to function but is not recommended. At least PHP version %2 is recommended; the preferrred version is %3.', + ts('This system uses PHP version %1. This meets the minimum requirements for CiviCRM to function but is not recommended. At least PHP version %2 is recommended; the preferred version is %3.', array( 1 => $phpVersion, 2 => CRM_Upgrade_Incremental_General::MIN_RECOMMENDED_PHP_VER, @@ -125,13 +125,21 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { */ public function checkPhpEcrypt() { $messages = array(); + $mailingBackend = Civi::settings()->get('mailing_backend'); + if (!is_array($mailingBackend) + || !isset($mailingBackend['outBound_option']) + || $mailingBackend['outBound_option'] != CRM_Mailing_Config::OUTBOUND_OPTION_SMTP + || !CRM_Utils_Array::value('smtpAuth', $mailingBackend) + ) { + return $messages; + } + $test_pass = 'iAmARandomString'; $encrypted_test_pass = CRM_Utils_Crypt::encrypt($test_pass); if ($encrypted_test_pass == base64_encode($test_pass)) { $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, - ts('Your PHP does not include the recommended encryption functions. Some passwords will not be stored encrypted, and if you have recently upgraded from a PHP that does include these functions, your encrypted passwords will not be decrypted correctly. If you are using PHP 7.0 or earlier, you probably want to include the "%1" extension.', - array('1' => 'mcrypt') + ts('Your PHP does not include the mcrypt encryption functions. Your SMTP password will not be stored encrypted, and if you have recently upgraded from a PHP that stored it with encryption, it will not be decrypted correctly.' ), ts('PHP Missing Extension "mcrypt"'), \Psr\Log\LogLevel::WARNING, @@ -560,26 +568,24 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { } elseif (!is_writable($basedir)) { $messages[] = new CRM_Utils_Check_Message( - __FUNCTION__, + __FUNCTION__ . 'Writable', ts('Your extensions directory (%1) is read-only. If you would like to perform downloads or upgrades, then change the file permissions.', array(1 => $basedir)), ts('Read-Only Extensions'), \Psr\Log\LogLevel::WARNING, 'fa-plug' ); - return $messages; } if (empty($extensionSystem->getDefaultContainer()->baseUrl)) { $messages[] = new CRM_Utils_Check_Message( - __FUNCTION__, + __FUNCTION__ . 'URL', ts('The extensions URL is not properly set. Please go to the <a href="%1">URL setting page</a> and correct it.', array(1 => CRM_Utils_System::url('civicrm/admin/setting/url', 'reset=1'))), ts('Extensions url missing'), \Psr\Log\LogLevel::ERROR, 'fa-plug' ); - return $messages; } if (!$extensionSystem->getBrowser()->isEnabled()) { @@ -680,7 +686,7 @@ class CRM_Utils_Check_Component_Env extends CRM_Utils_Check_Component { if ($errors) { $messages[] = new CRM_Utils_Check_Message( - __FUNCTION__, + __FUNCTION__ . 'Error', '<ul><li>' . implode('</li><li>', $errors) . '</li></ul>', ts('Extension Error'), \Psr\Log\LogLevel::ERROR, diff --git a/civicrm/CRM/Utils/Hook.php b/civicrm/CRM/Utils/Hook.php index 81b322cb5e9aacfc21e233d887ee9d04c02d2ea8..92989a902534cb7c4a605b9482377d6cb7a95cf8 100644 --- a/civicrm/CRM/Utils/Hook.php +++ b/civicrm/CRM/Utils/Hook.php @@ -1820,13 +1820,15 @@ abstract class CRM_Utils_Hook { * The name of an atomic permission, ie. 'access deleted contacts' * @param bool $granted * Whether this permission is currently granted. The hook can change this value. + * @param int $contactId + * Contact whose permissions we are checking (if null, assume current user). * * @return null * The return value is ignored */ - public static function permission_check($permission, &$granted) { - return self::singleton()->invoke(array('permission', 'granted'), $permission, $granted, - self::$_nullObject, self::$_nullObject, self::$_nullObject, self::$_nullObject, + public static function permission_check($permission, &$granted, $contactId) { + return self::singleton()->invoke(array('permission', 'granted', 'contactId'), $permission, $granted, $contactId, + self::$_nullObject, self::$_nullObject, self::$_nullObject, 'civicrm_permission_check' ); } diff --git a/civicrm/CRM/Utils/Money.php b/civicrm/CRM/Utils/Money.php index 59168cb606a7dc6c890c16118db69f0f5f3fe6f3..455562afd290f765565e8f8a5614d983f8737631 100644 --- a/civicrm/CRM/Utils/Money.php +++ b/civicrm/CRM/Utils/Money.php @@ -95,26 +95,13 @@ class CRM_Utils_Money { if (!$currency) { $currency = $config->defaultCurrency; } - - // money_format() exists only in certain PHP install (CRM-650) - // setlocale() affects native gettext (CRM-11054, CRM-9976) - if (is_numeric($amount) && function_exists('money_format')) { - $lc = setlocale(LC_MONETARY, 0); - setlocale(LC_MONETARY, 'en_US.utf8', 'en_US', 'en_US.utf8', 'en_US', 'C'); - $amount = money_format($valueFormat, $amount); - setlocale(LC_MONETARY, $lc); - } - - $rep = array( - ',' => $config->monetaryThousandSeparator, - '.' => $config->monetaryDecimalPoint, - ); - + $amount = self::formatNumericByFormat($amount, $valueFormat); // If it contains tags, means that HTML was passed and the // amount is already converted properly, // so don't mess with it again. + // @todo deprecate handling for the html tags because .... WTF if (strpos($amount, '<') === FALSE) { - $amount = strtr($amount, $rep); + $amount = self::replaceCurrencySeparators($amount); } $replacements = array( @@ -186,4 +173,105 @@ class CRM_Utils_Money { return TRUE; } + /** + * Format money for display (just numeric part) according to the current locale. + * + * This calls the underlying system function but does not handle currency separators. + * + * It's not totally clear when it changes the $amount value but has historical usage. + * + * @param $amount + * + * @return string + */ + protected static function formatLocaleNumeric($amount) { + return self::formatNumericByFormat($amount, CRM_Core_Config::singleton()->moneyvalueformat); + } + + /** + * Format money for display (just numeric part) according to the current locale with rounding. + * + * At this stage this is conceived as an internal function with the currency wrapper + * functions determining the number of places. + * + * This calls the underlying system function but does not handle currency separators. + * + * It's not totally clear when it changes the $amount value but has historical usage. + * + * @param string $amount + * @param int $numberOfPlaces + * + * @return string + */ + protected static function formatLocaleNumericRounded($amount, $numberOfPlaces) { + return self::formatLocaleNumeric(round($amount, $numberOfPlaces)); + } + + /** + * Format money for display (just numeric part) according to the current locale with rounding. + * + * This handles both rounding & replacement of the currency separators for the locale. + * + * @param string $amount + * @param string $currency + * + * @return string + * Formatted amount. + */ + public static function formatLocaleNumericRoundedByCurrency($amount, $currency) { + $amount = self::formatLocaleNumericRounded($amount, self::getCurrencyPrecision($currency)); + return self::replaceCurrencySeparators($amount); + } + + /** + * Format money for display (just numeric part) according to the current locale with rounding based on the + * default currency for the site. + * + * @param $amount + * @return mixed + */ + public static function formatLocaleNumericRoundedForDefaultCurrency($amount) { + return self::formatLocaleNumericRoundedByCurrency($amount, self::getCurrencyPrecision(CRM_Core_Config::singleton()->defaultCurrency)); + } + + /** + * Replace currency separators. + * + * @param string $amount + * + * @return string + */ + protected static function replaceCurrencySeparators($amount) { + $config = CRM_Core_Config::singleton(); + $rep = array( + ',' => $config->monetaryThousandSeparator, + '.' => $config->monetaryDecimalPoint, + ); + return strtr($amount, $rep); + } + + /** + * Format numeric part of currency by the passed in format. + * + * This is envisaged as an internal function, with wrapper functions defining valueFormat + * into easily understood functions / variables and handling separator conversions and + * rounding. + * + * @param string $amount + * @param string $valueFormat + * + * @return string + */ + protected static function formatNumericByFormat($amount, $valueFormat) { + // money_format() exists only in certain PHP install (CRM-650) + // setlocale() affects native gettext (CRM-11054, CRM-9976) + if (is_numeric($amount) && function_exists('money_format')) { + $lc = setlocale(LC_MONETARY, 0); + setlocale(LC_MONETARY, 'en_US.utf8', 'en_US', 'en_US.utf8', 'en_US', 'C'); + $amount = money_format($valueFormat, $amount); + setlocale(LC_MONETARY, $lc); + } + return $amount; + } + } diff --git a/civicrm/CRM/Utils/PDF/Label.php b/civicrm/CRM/Utils/PDF/Label.php index 0f6a613feb8c35815e0a63bea435fecc864a806b..97d765de033bfa8409a8ad7ab732d734644742e0 100644 --- a/civicrm/CRM/Utils/PDF/Label.php +++ b/civicrm/CRM/Utils/PDF/Label.php @@ -184,8 +184,10 @@ class CRM_Utils_PDF_Label extends TCPDF { * @param string $text */ public function generateLabel($text) { + // paddingLeft is used for both left & right padding so needs to be + // subtracted twice from width to get the width that is available for text $args = array( - 'w' => $this->width, + 'w' => $this->width - 2 * $this->paddingLeft, 'h' => 0, 'txt' => $text, 'border' => 0, diff --git a/civicrm/CRM/Utils/Recent.php b/civicrm/CRM/Utils/Recent.php index f3baf09271927f078747cb57930c96411460b359..0fadf5de6fe87c18930ab5d7d1a6223e6ee59bed 100644 --- a/civicrm/CRM/Utils/Recent.php +++ b/civicrm/CRM/Utils/Recent.php @@ -116,7 +116,7 @@ class CRM_Utils_Recent { // make sure item is not already present in list for ($i = 0; $i < count(self::$_recent); $i++) { - if (self::$_recent[$i]['type'] === $type && self::$_recent[$i]['id'] === $id) { + if (self::$_recent[$i]['type'] === $type && self::$_recent[$i]['id'] == $id) { // delete item from array array_splice(self::$_recent, $i, 1); break; @@ -174,6 +174,7 @@ class CRM_Utils_Recent { } } + CRM_Utils_Hook::recent(self::$_recent); $session = CRM_Core_Session::singleton(); $session->set(self::STORE_NAME, self::$_recent); } @@ -200,15 +201,17 @@ class CRM_Utils_Recent { self::$_recent[] = $tempRecent[$i]; } + CRM_Utils_Hook::recent(self::$_recent); $session = CRM_Core_Session::singleton(); $session->set(self::STORE_NAME, self::$_recent); } /** * Check if a provider is allowed to add stuff. - * If correspondig setting is empty, all are allowed + * If corresponding setting is empty, all are allowed * * @param string $providerName + * @return bool */ public static function isProviderEnabled($providerName) { @@ -230,6 +233,8 @@ class CRM_Utils_Recent { /** * Gets the list of available providers to civi's recent items stack + * + * @return array */ public static function getProviders() { $providers = array( diff --git a/civicrm/CRM/Utils/System/Drupal.php b/civicrm/CRM/Utils/System/Drupal.php index 4a677da3f6aa1ba9abc61aca9220395bd8de464c..0d6bf7e68f17a4421e512d7dc55aa947acf507fd 100644 --- a/civicrm/CRM/Utils/System/Drupal.php +++ b/civicrm/CRM/Utils/System/Drupal.php @@ -861,4 +861,13 @@ AND u.status = 1 } } + /** + * Append Drupal7 js to coreResourcesList. + * + * @param array $list + */ + public function appendCoreResources(&$list) { + $list[] = 'js/crm.drupal7.js'; + } + } diff --git a/civicrm/CRM/Utils/System/Drupal8.php b/civicrm/CRM/Utils/System/Drupal8.php index 1413f2bd7b9bdcacbb98779cd8d15bd8525b0ff2..b535b0a841bff2481cff3f5fde9f4d7296435dda 100644 --- a/civicrm/CRM/Utils/System/Drupal8.php +++ b/civicrm/CRM/Utils/System/Drupal8.php @@ -664,4 +664,13 @@ class CRM_Utils_System_Drupal8 extends CRM_Utils_System_DrupalBase { return \Drupal::languageManager()->getCurrentLanguage()->getId(); } + /** + * Append Drupal8 js to coreResourcesList. + * + * @param array $list + */ + public function appendCoreResources(&$list) { + $list[] = 'js/crm.drupal8.js'; + } + } diff --git a/civicrm/CRM/Utils/System/DrupalBase.php b/civicrm/CRM/Utils/System/DrupalBase.php index 6c1eebcd6b5351bf5eebfebdfbae4ecc4240879b..4f81b304ea20ee7a735cfadab4083cdd1be0a09d 100644 --- a/civicrm/CRM/Utils/System/DrupalBase.php +++ b/civicrm/CRM/Utils/System/DrupalBase.php @@ -300,15 +300,6 @@ abstract class CRM_Utils_System_DrupalBase extends CRM_Utils_System_Base { _drupal_flush_css_js(); } - /** - * Append Drupal js to coreResourcesList. - * - * @param array $list - */ - public function appendCoreResources(&$list) { - $list[] = 'js/crm.drupal.js'; - } - /** * @inheritDoc */ diff --git a/civicrm/CRM/Utils/System/Joomla.php b/civicrm/CRM/Utils/System/Joomla.php index 2b8ec1a31a83da2fedcf0bbf7fe758b9985949a7..fafb599b2ff076526292527d3a83c04b9ae0f193 100644 --- a/civicrm/CRM/Utils/System/Joomla.php +++ b/civicrm/CRM/Utils/System/Joomla.php @@ -529,7 +529,7 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base { */ public function getBasePath() { global $civicrm_root; - $joomlaPath = explode('/administrator', $civicrm_root); + $joomlaPath = explode(DIRECTORY_SEPARATOR . 'administrator', $civicrm_root); $joomlaBase = $joomlaPath[0]; return $joomlaBase; } @@ -589,6 +589,14 @@ class CRM_Utils_System_Joomla extends CRM_Utils_System_Base { define('JDEBUG', FALSE); } + // Set timezone for Joomla on Cron + $config = JFactory::getConfig(); + $timezone = $config->get('offset'); + if ($timezone) { + date_default_timezone_set($timezone); + CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone(); + } + // CRM-14281 Joomla wasn't available during bootstrap, so hook_civicrm_config never executes. $config = CRM_Core_Config::singleton(); CRM_Utils_Hook::config($config); diff --git a/civicrm/Civi/Token/TokenCompatSubscriber.php b/civicrm/Civi/Token/TokenCompatSubscriber.php index d00acd75092236e8466f963130f1b1304ee6ff02..8e2ac735ba1b176cb5216da295183ec7733282b9 100644 --- a/civicrm/Civi/Token/TokenCompatSubscriber.php +++ b/civicrm/Civi/Token/TokenCompatSubscriber.php @@ -90,7 +90,7 @@ class TokenCompatSubscriber implements EventSubscriberInterface { // less randomly. \CRM_Utils_Hook::tokenValues($contactArray, (array) $contactId, - empty($row->context['mailingJob']) ? NULL : $row->context['mailingJob']->id, + empty($row->context['mailingJobId']) ? NULL : $row->context['mailingJobId'], $messageTokens, $row->context['controller'] ); diff --git a/civicrm/ang/crmMailing/BlockPreview.js b/civicrm/ang/crmMailing/BlockPreview.js index c2b692462e53dc8388eca0cac11e66ce74833e20..5e582dc0566a0d5cb06576db3bf397c66cbf1a4f 100644 --- a/civicrm/ang/crmMailing/BlockPreview.js +++ b/civicrm/ang/crmMailing/BlockPreview.js @@ -21,6 +21,7 @@ }); }; scope.doSend = function doSend(recipient) { + recipient = JSON.parse(JSON.stringify(recipient).replace(/\,\s/g, ',')); scope.$eval(attr.onSend, { preview: {recipient: recipient} }); diff --git a/civicrm/ang/crmMailing/services.js b/civicrm/ang/crmMailing/services.js index e50a0a0f7a7a5dca40039ea4be5026775f8b97cf..45c206373230e3a0002834b5ec657f8b7a4d0ed2 100644 --- a/civicrm/ang/crmMailing/services.js +++ b/civicrm/ang/crmMailing/services.js @@ -262,26 +262,24 @@ // @param mailing Object (per APIv3) // @return Promise an object with "subject", "body_text", "body_html" preview: function preview(mailing) { + return this.getPreviewContent(qApi, mailing); + }, + + // @param backend + // @param mailing Object (per APIv3) + // @return preview content + getPreviewContent: function getPreviewContent(backend, mailing) { if (CRM.crmMailing.workflowEnabled && !CRM.checkPerm('create mailings') && !CRM.checkPerm('access CiviMail')) { - return qApi('Mailing', 'preview', {id: mailing.id}).then(function(result) { + return backend('Mailing', 'preview', {id: mailing.id}).then(function(result) { return result.values; }); } else { - // Protect against races in saving and previewing by chaining create+preview. - var params = angular.extend({}, mailing, mailing.recipients, { - id: mailing.id, - 'api.Mailing.preview': { - id: '$value.id' - } - }); - delete params.scheduled_date; - delete params.recipients; // the content was merged in - params._skip_evil_bao_auto_recipients_ = 1; // skip recipient rebuild on mail preview - return qApi('Mailing', 'create', params).then(function(result) { - mailing.modified_date = result.values[result.id].modified_date; + var params = angular.extend({}, mailing); + delete params.id; + return backend('Mailing', 'preview', params).then(function(result) { // changes rolled back, so we don't care about updating mailing - return result.values[result.id]['api.Mailing.preview'].values; + return result.values; }); } }, @@ -451,7 +449,7 @@ }; var result = null; var p = crmMailingMgr - .preview(mailing) + .getPreviewContent(CRM.api3, mailing) .then(function (content) { var options = CRM.utils.adjustDialogDefaults({ autoOpen: false, diff --git a/civicrm/api/v3/Case.php b/civicrm/api/v3/Case.php index 7aa2bdf88f3bb90b1e70d89f2c5ab2e1123fc463..87d13b534762493e2cc4ace373aec7a98c87af20 100644 --- a/civicrm/api/v3/Case.php +++ b/civicrm/api/v3/Case.php @@ -202,7 +202,7 @@ function _civicrm_api3_case_get_spec(&$params) { ); $params['tag_id'] = array( 'title' => 'Tags', - 'description' => 'Find activities with specified tags.', + 'description' => 'Find cases with specified tags.', 'type' => 1, 'FKClassName' => 'CRM_Core_DAO_Tag', 'FKApiName' => 'Tag', diff --git a/civicrm/api/v3/EntityTag.php b/civicrm/api/v3/EntityTag.php index a3098bea8591850d7c90df5553017f31bc5f8b2b..16b7890ab5cb4475fee491109d97d6681420045f 100644 --- a/civicrm/api/v3/EntityTag.php +++ b/civicrm/api/v3/EntityTag.php @@ -101,7 +101,7 @@ function _civicrm_api3_entity_tag_delete_spec(&$params) { */ function _civicrm_api3_entity_tag_common($params, $op = 'add') { - $entityIDs = array(); + $entityIDs = $tagIDs = array(); $entityTable = 'civicrm_contact'; if (is_array($params)) { foreach ($params as $n => $v) { @@ -109,7 +109,12 @@ function _civicrm_api3_entity_tag_common($params, $op = 'add') { $entityIDs[] = $v; } elseif (substr($n, 0, 6) == 'tag_id') { - $tagIDs[] = $v; + if (is_array($v)) { + $tagIDs = array_merge($tagIDs, $v); + } + else { + $tagIDs[] = $v; + } } elseif (substr($n, 0, 12) == 'entity_table') { $entityTable = $v; @@ -156,3 +161,36 @@ function _civicrm_api3_entity_tag_common($params, $op = 'add') { } return $values; } + +/** + * Replace tags for an entity + */ +function civicrm_api3_entity_tag_replace($params) { + $transaction = new CRM_Core_Transaction(); + try { + $baseParams = _civicrm_api3_generic_replace_base_params($params); + unset($baseParams['tag_id']); + + // Lookup pre-existing records + $preexisting = civicrm_api3('entity_tag', 'get', $baseParams); + $preexisting = array_column($preexisting['values'], 'tag_id'); + $toAdd = isset($params['tag_id']) ? $params['tag_id'] : array_column($params['values'], 'tag_id'); + $toRemove = array_diff($preexisting, $toAdd); + + $result = []; + if ($toAdd) { + $result = _civicrm_api3_entity_tag_common(array_merge($baseParams, ['tag_id' => $toAdd]), 'add'); + } + if ($toRemove) { + $result += _civicrm_api3_entity_tag_common(array_merge($baseParams, ['tag_id' => $toRemove]), 'remove'); + } + // Not really errors + unset($result['is_error'], $result['error_message']); + + return civicrm_api3_create_success($result, $params, 'EntityTag', 'replace'); + } + catch(Exception $e) { + $transaction->rollback(); + return civicrm_api3_create_error($e->getMessage()); + } +} diff --git a/civicrm/api/v3/Mailing.php b/civicrm/api/v3/Mailing.php index 39df78ef10262030f8e2f8ced7b353e1dea23bf2..b36910159176f161ff590119472b86b8bdf906a4 100644 --- a/civicrm/api/v3/Mailing.php +++ b/civicrm/api/v3/Mailing.php @@ -547,21 +547,22 @@ function civicrm_api3_mailing_event_open($params) { * @throws \API_Exception */ function civicrm_api3_mailing_preview($params) { - civicrm_api3_verify_mandatory($params, - 'CRM_Mailing_DAO_Mailing', - array('id'), - FALSE - ); - $fromEmail = NULL; if (!empty($params['from_email'])) { $fromEmail = $params['from_email']; } - $session = CRM_Core_Session::singleton(); $mailing = new CRM_Mailing_BAO_Mailing(); - $mailing->id = $params['id']; - $mailing->find(TRUE); + $mailingID = CRM_Utils_Array::value('id', $params); + if ($mailingID) { + $mailing->id = $mailingID; + $mailing->find(TRUE); + } + else { + $mailing->copyValues($params); + } + + $session = CRM_Core_Session::singleton(); CRM_Mailing_BAO_Mailing::tokenReplace($mailing); diff --git a/civicrm/api/v3/PaymentProcessor.php b/civicrm/api/v3/PaymentProcessor.php index 2f51ca951dee70058c560379740406b2b4b04ee8..20a7e0a510cea02ae6f6f215add173c02f2ccc87 100644 --- a/civicrm/api/v3/PaymentProcessor.php +++ b/civicrm/api/v3/PaymentProcessor.php @@ -61,6 +61,7 @@ function _civicrm_api3_payment_processor_create_spec(&$params) { $params['payment_processor_type_id']['api.required'] = 1; $params['is_default']['api.default'] = 0; $params['is_test']['api.default'] = 0; + $params['domain_id']['api.default'] = CRM_Core_Config::domainID(); } /** diff --git a/civicrm/api/v3/PaymentProcessorType.php b/civicrm/api/v3/PaymentProcessorType.php index 337839693525beb7a6acb5f48c826d3037627b1c..b6d678318dbe552f5c8b611bf1f102383040cc03 100644 --- a/civicrm/api/v3/PaymentProcessorType.php +++ b/civicrm/api/v3/PaymentProcessorType.php @@ -56,7 +56,6 @@ function _civicrm_api3_payment_processor_type_create_spec(&$params) { $params['class_name']['api.required'] = 1; $params['is_active']['api.default'] = 1; $params['is_recur']['api.default'] = FALSE; - // FIXME bool support // $params['is_recur']['api.required'] = 1; $params['name']['api.required'] = 1; $params['title']['api.required'] = 1; $params['payment_instrument_id']['api.default'] = 'Credit Card'; diff --git a/civicrm/api/v3/Profile.php b/civicrm/api/v3/Profile.php index 2951c8d65c37a8de947acb331874f8bf42f6bd2a..22a26becab367ba7ca71c1beadc1fb584fad4aa5 100644 --- a/civicrm/api/v3/Profile.php +++ b/civicrm/api/v3/Profile.php @@ -202,14 +202,35 @@ function civicrm_api3_profile_submit($params) { $entity = strtolower(CRM_Utils_Array::value('entity', $field)); if ($entity && !in_array($entity, array_merge($contactEntities, $locationEntities))) { - $contactParams['api.' . $entity . '.create'][$fieldName] = $value; - //@todo we are not currently declaring this option - if (isset($params['batch_id']) && strtolower($entity) == 'contribution') { - $contactParams['api.' . $entity . '.create']['batch_id'] = $params['batch_id']; - } - if (isset($params[$entity . '_id'])) { - //todo possibly declare $entity_id in getfields ? - $contactParams['api.' . $entity . '.create']['id'] = $params[$entity . '_id']; + switch ($entity) { + case 'note': + if ($value) { + $contactParams['api.Note.create'] = [ + 'note' => $value, + 'contact_id' => 'user_contact_id', + ]; + } + break; + + case 'entity_tag': + if (!is_array($value)) { + $value = $value ? explode(',', $value) : []; + } + $contactParams['api.entity_tag.replace'] = [ + 'tag_id' => $value, + ]; + break; + + default: + $contactParams['api.' . $entity . '.create'][$fieldName] = $value; + //@todo we are not currently declaring this option + if (isset($params['batch_id']) && strtolower($entity) == 'contribution') { + $contactParams['api.' . $entity . '.create']['batch_id'] = $params['batch_id']; + } + if (isset($params[$entity . '_id'])) { + //todo possibly declare $entity_id in getfields ? + $contactParams['api.' . $entity . '.create']['id'] = $params[$entity . '_id']; + } } } else { @@ -230,7 +251,7 @@ function civicrm_api3_profile_submit($params) { ); } - $contactParams['contact_id'] = CRM_Utils_Array::value('contact_id', $params); + $contactParams['contact_id'] = empty($params['contact_id']) ? CRM_Utils_Array::value('id', $params) : $params['contact_id']; $contactParams['profile_id'] = $profileID; $contactParams['skip_custom'] = 1; @@ -291,6 +312,11 @@ function _civicrm_api3_profile_submit_spec(&$params, $apirequest) { } $params['profile_id']['api.required'] = TRUE; $params['profile_id']['title'] = 'Profile ID'; + // Profile forms submit tag values as a string; hack to get past api wrapper validation + if (!empty($params['tag_id'])) { + unset($params['tag_id']['pseudoconstant']); + $params['tag_id']['type'] = CRM_Utils_Type::T_STRING; + } } /** @@ -663,6 +689,7 @@ function _civicrm_api3_map_profile_fields_to_entity(&$field) { 'soft_credit_type' => 'contribution_soft', 'group' => 'group_contact', 'tag' => 'entity_tag', + 'note' => 'note', ); if (array_key_exists($fieldName, $hardCodedEntityMappings)) { $entity = $hardCodedEntityMappings[$fieldName]; diff --git a/civicrm/api/v3/Setting.php b/civicrm/api/v3/Setting.php index df4b6a8f59f22def31cd409ae40c3ea8a52b7446..62a74d270bb8a6fc0419090c145e2f450d18a0fd 100644 --- a/civicrm/api/v3/Setting.php +++ b/civicrm/api/v3/Setting.php @@ -313,7 +313,7 @@ function _civicrm_api3_setting_create_spec(&$params) { */ function civicrm_api3_setting_get($params) { $domains = _civicrm_api3_setting_getDomainArray($params); - $result = $result = CRM_Core_BAO_Setting::getItems($params, $domains, CRM_Utils_Array::value('return', $params, array())); + $result = CRM_Core_BAO_Setting::getItems($params, $domains, CRM_Utils_Array::value('return', $params, array())); return civicrm_api3_create_success($result, $params, 'Setting', 'get'); } /** diff --git a/civicrm/civicrm-version.php b/civicrm/civicrm-version.php index 8507abe7b1bb474b39b56860d4674397b52a005f..ba95fa041cc4ae8fb1982cb3c2c8caf193375809 100644 --- a/civicrm/civicrm-version.php +++ b/civicrm/civicrm-version.php @@ -1,7 +1,7 @@ <?php /** @deprecated */ function civicrmVersion( ) { - return array( 'version' => '5.5.3', + return array( 'version' => '5.6.0', 'cms' => 'Wordpress', 'revision' => '' ); } diff --git a/civicrm/composer.json b/civicrm/composer.json index 1078ccf3d30346eefb791349eebd4dd61199eefb..0988e0cd99530c697b8e7673e32eb7cecfbe860e 100644 --- a/civicrm/composer.json +++ b/civicrm/composer.json @@ -36,13 +36,14 @@ "require": { "dompdf/dompdf" : "0.8.*", "electrolinux/phpquery": "^0.9.6", - "symfony/config": "^2.6.13 || ~3.0", - "symfony/dependency-injection": "^2.6.13 || ~3.0", - "symfony/event-dispatcher": "^2.6.13 || ~3.0", - "symfony/filesystem": "^2.6.13 || ~3.0", - "symfony/process": "^2.6.13 || ~3.0", + "symfony/config": "^2.8.44 || ~3.0", + "symfony/polyfill-iconv": "~1.0", + "symfony/dependency-injection": "^2.8.44 || ~3.0", + "symfony/event-dispatcher": "^2.8.44 || ~3.0", + "symfony/filesystem": "^2.8.44 || ~3.0", + "symfony/process": "^2.8.44 || ~3.0", "psr/log": "~1.0.0", - "symfony/finder": "^2.6.13 || ~3.0", + "symfony/finder": "^2.8.44 || ~3.0", "tecnickcom/tcpdf" : "6.2.*", "totten/ca-config": "~17.05", "zetacomponents/base": "1.7.*", diff --git a/civicrm/composer.lock b/civicrm/composer.lock index 8f3e4d2659e99894ff0300d04addd2785b5eb1e3..7b5f352c9f7c94faaf2c80911a625dfb9ff3e1e1 100644 --- a/civicrm/composer.lock +++ b/civicrm/composer.lock @@ -1,10 +1,10 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "233f9c457d9e7d49a6d96c356e1035f1", + "content-hash": "38f5450ab72f881008f5cd10bb588b6f", "packages": [ { "name": "civicrm/civicrm-cxn-rpc", @@ -110,6 +110,9 @@ "extra": { "branch-alias": { "dev-develop": "0.7-dev" + }, + "patches_applied": { + "Fix Fatal error: Uncaught Dompdf Exception: No block-level parent found.": "tools/scripts/composer/patches/dompdf_no_block_level_parent_fix.patch" } }, "autoload": { @@ -526,6 +529,14 @@ "pear/auth_sasl": "Install optionally via your project's composer.json" }, "type": "library", + "extra": { + "patches_applied": { + "CRM-8744 Display CiviCRM Specific error message": "tools/scripts/composer/patches/net-smtp-patch.patch", + "Fix PHP7 Compliance": "tools/scripts/composer/patches/net-smtp-php7-patch.patch", + "Fix Pass by reference issues": "tools/scripts/composer/patches/net-smtp-ref-patch.patch", + "Fix TLS support issue in PHP5.6": "tools/scripts/composer/patches/net-smtp-tls-patch.patch" + } + }, "autoload": { "psr-0": { "Net": "./" @@ -1222,36 +1233,42 @@ }, { "name": "symfony/config", - "version": "v2.6.13", - "target-dir": "Symfony/Component/Config", + "version": "v2.8.44", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "0ca496cbe208fc37c4cf3415ebb3056e0963115b" + "reference": "06c0be4cdd8363f3ec8d592c9a4d1b981d5052af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/0ca496cbe208fc37c4cf3415ebb3056e0963115b", - "reference": "0ca496cbe208fc37c4cf3415ebb3056e0963115b", + "url": "https://api.github.com/repos/symfony/config/zipball/06c0be4cdd8363f3ec8d592c9a4d1b981d5052af", + "reference": "06c0be4cdd8363f3ec8d592c9a4d1b981d5052af", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/filesystem": "~2.3" + "php": ">=5.3.9", + "symfony/filesystem": "~2.3|~3.0.0", + "symfony/polyfill-ctype": "~1.8" }, "require-dev": { - "symfony/phpunit-bridge": "~2.7" + "symfony/yaml": "~2.7|~3.0.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Config\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1269,50 +1286,52 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2015-07-08T05:59:48+00:00" + "time": "2018-07-26T11:13:39+00:00" }, { "name": "symfony/dependency-injection", - "version": "v2.6.13", - "target-dir": "Symfony/Component/DependencyInjection", + "version": "v2.8.44", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "d9fe6837d74aed11e5ee741cd6b6dfe45e0af78e" + "reference": "ad2446d39d11c3daaa7f147d957941a187e47357" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d9fe6837d74aed11e5ee741cd6b6dfe45e0af78e", - "reference": "d9fe6837d74aed11e5ee741cd6b6dfe45e0af78e", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ad2446d39d11c3daaa7f147d957941a187e47357", + "reference": "ad2446d39d11c3daaa7f147d957941a187e47357", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, "conflict": { "symfony/expression-language": "<2.6" }, "require-dev": { - "symfony/config": "~2.2", - "symfony/expression-language": "~2.6", - "symfony/phpunit-bridge": "~2.7", - "symfony/yaml": "~2.1" + "symfony/config": "~2.2|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/yaml": "~2.3.42|~2.7.14|~2.8.7|~3.0.7" }, "suggest": { "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", "symfony/yaml": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\DependencyInjection\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1330,33 +1349,31 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2015-07-22T10:08:40+00:00" + "time": "2018-07-26T11:13:39+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v2.6.13", - "target-dir": "Symfony/Component/EventDispatcher", + "version": "v2.8.44", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "672593bc4b0043a0acf91903bb75a1c82d8f2e02" + "reference": "84ae343f39947aa084426ed1138bb96bf94d1f12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/672593bc4b0043a0acf91903bb75a1c82d8f2e02", - "reference": "672593bc4b0043a0acf91903bb75a1c82d8f2e02", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/84ae343f39947aa084426ed1138bb96bf94d1f12", + "reference": "84ae343f39947aa084426ed1138bb96bf94d1f12", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.0,>=2.0.5", - "symfony/dependency-injection": "~2.6", - "symfony/expression-language": "~2.6", - "symfony/phpunit-bridge": "~2.7", - "symfony/stopwatch": "~2.3" + "symfony/config": "^2.0.5|~3.0.0", + "symfony/dependency-injection": "~2.6|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0" }, "suggest": { "symfony/dependency-injection": "", @@ -1365,13 +1382,16 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1389,39 +1409,39 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2015-05-02T15:18:45+00:00" + "time": "2018-07-26T09:03:18+00:00" }, { "name": "symfony/filesystem", - "version": "v2.6.13", - "target-dir": "Symfony/Component/Filesystem", + "version": "v2.8.44", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "823c035b1a5c13a4924e324d016eb07e70f94735" + "reference": "2d6a4deccdfa2e4e9f113138b93457b2d0886c15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/823c035b1a5c13a4924e324d016eb07e70f94735", - "reference": "823c035b1a5c13a4924e324d016eb07e70f94735", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/2d6a4deccdfa2e4e9f113138b93457b2d0886c15", + "reference": "2d6a4deccdfa2e4e9f113138b93457b2d0886c15", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Filesystem\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1439,39 +1459,38 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2015-07-08T05:59:48+00:00" + "time": "2018-07-26T11:13:39+00:00" }, { "name": "symfony/finder", - "version": "v2.6.13", - "target-dir": "Symfony/Component/Finder", + "version": "v2.8.44", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "203a10f928ae30176deeba33512999233181dd28" + "reference": "f0de0b51913eb2caab7dfed6413b87e14fca780e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/203a10f928ae30176deeba33512999233181dd28", - "reference": "203a10f928ae30176deeba33512999233181dd28", + "url": "https://api.github.com/repos/symfony/finder/zipball/f0de0b51913eb2caab7dfed6413b87e14fca780e", + "reference": "f0de0b51913eb2caab7dfed6413b87e14fca780e", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" + "php": ">=5.3.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } }, "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Finder\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1489,39 +1508,152 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2015-07-09T16:02:48+00:00" + "time": "2018-07-26T11:13:39+00:00" }, { - "name": "symfony/process", - "version": "v2.6.13", - "target-dir": "Symfony/Component/Process", + "name": "symfony/polyfill-ctype", + "version": "v1.8.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "57f1e88bb5dafa449b83f9f265b11d52d517b3e9" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/57f1e88bb5dafa449b83f9f265b11d52d517b3e9", - "reference": "57f1e88bb5dafa449b83f9f265b11d52d517b3e9", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/7cc359f1b7b80fc25ed7796be7d96adc9b354bae", + "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-04-30T19:57:29+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.9.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "bcc0cd69185b8a5d8b4a5400c489ed3333bf9bb2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/bcc0cd69185b8a5d8b4a5400c489ed3333bf9bb2", + "reference": "bcc0cd69185b8a5d8b4a5400c489ed3333bf9bb2", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-iconv": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "1.9-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\Process\\": "" + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "time": "2018-08-06T14:22:27+00:00" + }, + { + "name": "symfony/process", + "version": "v2.8.44", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "cc83afdb5ac99147806b3bb65a3ff1227664f596" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/cc83afdb5ac99147806b3bb65a3ff1227664f596", + "reference": "cc83afdb5ac99147806b3bb65a3ff1227664f596", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1539,7 +1671,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2015-06-30T16:10:16+00:00" + "time": "2018-07-26T11:13:39+00:00" }, { "name": "tecnickcom/tcpdf", diff --git a/civicrm/css/civicrm.css b/civicrm/css/civicrm.css index a89e60458bc8eaaa5fa9c89f714df2eaeebbd787..a4d85b07b68cf332fd9cb51fb548eea1e09fc428 100644 --- a/civicrm/css/civicrm.css +++ b/civicrm/css/civicrm.css @@ -384,6 +384,10 @@ input.crm-form-entityref { text-align: right; } +.crm-container .crm-section .label label{ + white-space: normal; +} + .crm-container .label-left .label { text-align: left; } diff --git a/civicrm/css/civicrmNavigation.css b/civicrm/css/civicrmNavigation.css index e005bb004bd2846aeed67e1ebd42edc00a4b47ee..5cf48d3f3cd81cc7c6cb18e4bf52e75f2ce58700 100644 --- a/civicrm/css/civicrmNavigation.css +++ b/civicrm/css/civicrmNavigation.css @@ -63,7 +63,7 @@ html>body .innerbox } #civicrm-menu { - position:absolute; + position:fixed; top:0; left:0; background:#1B1B1B repeat-x; diff --git a/civicrm/css/contactSummary.css b/civicrm/css/contactSummary.css index c29270bac9795acb7492d63749b5138bdb9e1187..4cb7aaa69b367877b1a8854dbcc898a186b9f0ca 100644 --- a/civicrm/css/contactSummary.css +++ b/civicrm/css/contactSummary.css @@ -35,7 +35,14 @@ div#crm-contact-thumbnail { #crm-container div.crm-inline-edit.form { cursor: default; border: 2px dashed #6665BF; - overflow: auto; + box-shadow: rgba(255, 255, 255, 0.3) 0 0 0 99999px; + background-color: white; + float: left; + z-index: 99; +} + +#mainTabContainer:not(.narrowpage) .contactCardRight div.crm-inline-edit.form { + float: right; } #crm-container .crm-inline-edit.add-new { @@ -52,12 +59,12 @@ div#crm-contact-thumbnail { border-bottom-left-radius: 1em; } -#crm-container .crm-inline-edit.add-new .crm-edit-help { +#crm-container .crm-address-block+.crm-address-block .add-new .crm-edit-help { display: block; background-color: #EBEBEB; } -#crm-container .crm-edit-ready .crm-inline-edit:hover .crm-edit-help { +#crm-container .crm-edit-ready .crm-summary-block .crm-inline-edit:hover .crm-edit-help { display: block; background-color: #DFE1FF; } @@ -66,6 +73,10 @@ div#crm-contact-thumbnail { display: none !important; } +#crm-container .crm-address-block+.crm-address-block .add-new .crm-summary-row { + display: none; +} + #crm-container span.crm-custom-greeting { font-size: 9px; } @@ -76,7 +87,8 @@ div#crm-contact-thumbnail { white-space: nowrap; } #crm-container table.crm-inline-edit-form td.crm-label, -#crm-container div.crm-inline-edit-form .crm-label { +#crm-container div.crm-inline-edit-form .crm-label, +#crm-container div.crm-inline-edit-form .messages { white-space: normal; } diff --git a/civicrm/css/joomla.css b/civicrm/css/joomla.css index dc64be3d27614c904d646d02675e8ab2f33b1b2e..195f38bec45203c161a2fc9858302c4c09d43fd4 100644 --- a/civicrm/css/joomla.css +++ b/civicrm/css/joomla.css @@ -295,14 +295,7 @@ br.clear { /* Moved from civicrm.css in v3.2 */ ul#civicrm-menu { - z-index: 1; position:relative; - border: none; - left:0px; - height:0px; - padding: 2px 0px 25px 2px !important; - padding-bottom:25px !important; /*moz bottom */ - padding-bottom:2px; /*ie bottom */ } div#toolbar-box div.m { diff --git a/civicrm/ext/api4/Civi/Api4/Action/Address/Create.php b/civicrm/ext/api4/Civi/Api4/Action/Address/Create.php index b755dea70682e95cf2bc7a57a1bcaf1bb4c3f130..33e563ab41c8e44530aea6ad22ebfccd16a8e4ec 100644 --- a/civicrm/ext/api4/Civi/Api4/Action/Address/Create.php +++ b/civicrm/ext/api4/Civi/Api4/Action/Address/Create.php @@ -35,11 +35,10 @@ class Create extends DefaultCreate { * @inheritDoc */ public function _run(Result $result) { - foreach (['streetParsing', 'skipGeocode', 'fixAddress'] as $fieldName) { - $this->values[_civicrm_api_get_entity_name_from_camel($fieldName)] = $this->$fieldName; - } + $this->values['street_parsing'] = $this->streetParsing; + $this->values['skip_geocode'] = $this->skipGeocode; + $this->values['fix_address'] = $this->fixAddress; parent::_run($result); } - } diff --git a/civicrm/ext/api4/Civi/Api4/Action/Address/Update.php b/civicrm/ext/api4/Civi/Api4/Action/Address/Update.php new file mode 100644 index 0000000000000000000000000000000000000000..e0815d9fa2334820b5f455ff5d38b2772a3c97e6 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/Address/Update.php @@ -0,0 +1,44 @@ +<?php + +namespace Civi\Api4\Action\Address; + +use Civi\Api4\Generic\Result; +use Civi\Api4\Action\Update as DefaultUpdate; + +/** + * @inheritDoc + */ +class Update extends DefaultUpdate { + + /** + * Optional param to indicate you want the street_address field parsed into individual params + * + * @var bool + */ + protected $streetParsing = TRUE; + + /** + * Optional param to indicate you want to skip geocoding (useful when importing a lot of addresses at once, the job Geocode and Parse Addresses can execute this task after the import) + * + * @var bool + */ + protected $skipGeocode = FALSE; + + /** + * When true, apply various fixes to the address before insert. + * + * @var bool + */ + protected $fixAddress = TRUE; + + /** + * @inheritDoc + */ + public function _run(Result $result) { + $this->values['street_parsing'] = $this->streetParsing; + $this->values['skip_geocode'] = $this->skipGeocode; + $this->values['fix_address'] = $this->fixAddress; + parent::_run($result); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/GroupContact/Create.php b/civicrm/ext/api4/Civi/Api4/Action/GroupContact/Create.php new file mode 100644 index 0000000000000000000000000000000000000000..687cc77c418937e6d0dbb56aaa6ea1eff0070769 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/GroupContact/Create.php @@ -0,0 +1,39 @@ +<?php + +namespace Civi\Api4\Action\GroupContact; + +use Civi\Api4\Generic\Result; +use Civi\Api4\Action\Create as DefaultCreate; + +/** + * @inheritDoc + * + * @method $this setMethod(string $method) Indicate who added/removed the group. + * @method $this setTracking(string $tracking) Specify ip address or other tracking info. + */ +class Create extends DefaultCreate { + + /** + * String to indicate who added/removed the group. + * + * @var string + */ + protected $method = 'API'; + + /** + * IP address or other tracking info about who performed this group subscription. + * + * @var string + */ + protected $tracking = ''; + + /** + * @inheritDoc + */ + public function _run(Result $result) { + $this->values['method'] = $this->method; + $this->values['tracking'] = $this->tracking; + parent::_run($result); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/GroupContact/Update.php b/civicrm/ext/api4/Civi/Api4/Action/GroupContact/Update.php new file mode 100644 index 0000000000000000000000000000000000000000..6e02f8acd3d6e231adcd8b2eee4ec2abdd906fc1 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Action/GroupContact/Update.php @@ -0,0 +1,39 @@ +<?php + +namespace Civi\Api4\Action\GroupContact; + +use Civi\Api4\Generic\Result; +use Civi\Api4\Action\Update as DefaultUpdate; + +/** + * @inheritDoc + * + * @method $this setMethod(string $method) Indicate who added/removed the group. + * @method $this setTracking(string $tracking) Specify ip address or other tracking info. + */ +class Update extends DefaultUpdate { + + /** + * String to indicate who added/removed the group. + * + * @var string + */ + protected $method = 'API'; + + /** + * IP address or other tracking info about who performed this group subscription. + * + * @var string + */ + protected $tracking = ''; + + /** + * @inheritDoc + */ + public function _run(Result $result) { + $this->values['method'] = $this->method; + $this->values['tracking'] = $this->tracking; + parent::_run($result); + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Action/Update.php b/civicrm/ext/api4/Civi/Api4/Action/Update.php index 6d2222cb136f1660178d88f7fc44c169dba1a7f1..f07bd50991dd6abfa3125a9666db9436c8965fc9 100644 --- a/civicrm/ext/api4/Civi/Api4/Action/Update.php +++ b/civicrm/ext/api4/Civi/Api4/Action/Update.php @@ -34,6 +34,7 @@ use Civi\Api4\Generic\Result; * * @method $this setValues(array $values) Set all field values from an array of key => value pairs. * @method $this addValue($field, $value) Set field value to update. + * @method $this setReload(bool $reload) Specify whether complete objects will be returned after saving. */ class Update extends Get { @@ -59,6 +60,16 @@ class Update extends Get { */ protected $values = []; + /** + * Reload object after saving. + * + * Setting to TRUE will load complete records and return them as the api result. + * If FALSE the api usually returns only the fields specified to be updated. + * + * @var bool + */ + protected $reload = FALSE; + /** * @param $key * diff --git a/civicrm/ext/api4/Civi/Api4/Address.php b/civicrm/ext/api4/Civi/Api4/Address.php index 6c2f03a2471d20e736049d72bddd04b834ebfd4b..ccf9a5e73136b2511bde0f8b89c943e32b5a6889 100644 --- a/civicrm/ext/api4/Civi/Api4/Address.php +++ b/civicrm/ext/api4/Civi/Api4/Address.php @@ -12,6 +12,9 @@ use Civi\Api4\Generic\AbstractEntity; * Creating a new address requires at minimum a contact's ID and location type ID * and other attributes (although optional) like street address, city, country etc. * + * @method static Action\Address\Create create + * @method static Action\Address\Update update + * * @package Civi\Api4 */ class Address extends AbstractEntity { diff --git a/civicrm/ext/api4/Civi/Api4/Generic/AbstractAction.php b/civicrm/ext/api4/Civi/Api4/Generic/AbstractAction.php index 574b60ce71a6ce401a250f93b9255643bb9e3360..f7b4611372a2f85fce2a2ebcee0e214acb39c842 100644 --- a/civicrm/ext/api4/Civi/Api4/Generic/AbstractAction.php +++ b/civicrm/ext/api4/Civi/Api4/Generic/AbstractAction.php @@ -391,8 +391,9 @@ abstract class AbstractAction implements \ArrayAccess { } // Some BAOs are weird and don't support a straightforward "create" method. $oddballs = [ - 'Website' => 'add', 'Address' => 'add', + 'GroupContact' => 'add', + 'Website' => 'add', ]; $method = UtilsArray::value($this->getEntity(), $oddballs, 'create'); if (!method_exists($bao, $method)) { @@ -410,6 +411,10 @@ abstract class AbstractAction implements \ArrayAccess { throw new \API_Exception($errMessage); } + if (!empty($this->reload) && is_a($createResult, 'CRM_Core_DAO')) { + $createResult->find(TRUE); + } + // trim back the junk and just get the array: return $this->baoToArray($createResult); } @@ -449,8 +454,8 @@ abstract class AbstractAction implements \ArrayAccess { } /** - * @param $params - * @param $entityId + * @param array $params + * @param int $entityId * @return mixed */ private function formatCustomParams(&$params, $entityId) { diff --git a/civicrm/ext/api4/Civi/Api4/GroupContact.php b/civicrm/ext/api4/Civi/Api4/GroupContact.php new file mode 100644 index 0000000000000000000000000000000000000000..351ccd6bb16f36485f2672a3babb6d5c4612fbd8 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/GroupContact.php @@ -0,0 +1,19 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * GroupContact entity - link between groups and contacts. + * + * A contact can either be "Added" "Removed" or "Pending" in a group. + * CiviCRM only considers them to be "in" a group if their status is "Added". + * + * @method static Action\GroupContact\Create create + * @method static Action\GroupContact\Update update + * + * @package Civi\Api4 + */ +class GroupContact extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/Note.php b/civicrm/ext/api4/Civi/Api4/Note.php new file mode 100644 index 0000000000000000000000000000000000000000..b88a4ead7b777e61448b833ed0960587f7ef3399 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Note.php @@ -0,0 +1,13 @@ +<?php + +namespace Civi\Api4; +use Civi\Api4\Generic\AbstractEntity; + +/** + * Note entity. + * + * @package Civi\Api4 + */ +class Note extends AbstractEntity { + +} diff --git a/civicrm/ext/api4/Civi/Api4/Query/Api4SelectQuery.php b/civicrm/ext/api4/Civi/Api4/Query/Api4SelectQuery.php index 6cc30ad21beda8cb074faed5b361c6aebca27759..bc53649e286a3dc40e54752fcda9e929f374d37b 100644 --- a/civicrm/ext/api4/Civi/Api4/Query/Api4SelectQuery.php +++ b/civicrm/ext/api4/Civi/Api4/Query/Api4SelectQuery.php @@ -304,14 +304,14 @@ class Api4SelectQuery extends SelectQuery { * @param $key */ protected function joinFK($key) { - $stack = explode('.', $key); + $pathArray = explode('.', $key); - if (count($stack) < 2) { + if (count($pathArray) < 2) { return; } + /** @var \Civi\Api4\Service\Schema\Joiner $joiner */ $joiner = \Civi::container()->get('joiner'); - $pathArray = explode('.', $key); $field = array_pop($pathArray); $pathString = implode('.', $pathArray); diff --git a/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/NoteCreationSpecProvider.php b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/NoteCreationSpecProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..f12e592cf8df4ac9e82205153755f778c5a0e937 --- /dev/null +++ b/civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/NoteCreationSpecProvider.php @@ -0,0 +1,28 @@ +<?php + +namespace Civi\Api4\Service\Spec\Provider; + +use Civi\Api4\Service\Spec\RequestSpec; + + +class NoteCreationSpecProvider implements SpecProviderInterface { + + /** + * @param RequestSpec $spec + */ + public function modifySpec(RequestSpec $spec) { + $spec->getFieldByName('note')->setRequired(TRUE); + $spec->getFieldByName('entity_table')->setDefaultValue('civicrm_contact'); + } + + /** + * @param string $entity + * @param string $action + * + * @return bool + */ + public function applies($entity, $action) { + return $entity === 'Note' && $action === 'create'; + } + +} diff --git a/civicrm/ext/api4/Civi/Api4/Utils/FormattingUtil.php b/civicrm/ext/api4/Civi/Api4/Utils/FormattingUtil.php index 4b5fbd5fb91d105853c0f2eeb2f85fe1b6ad6a3d..1529529b6765a2f3e0c63777e182ef9585721200 100644 --- a/civicrm/ext/api4/Civi/Api4/Utils/FormattingUtil.php +++ b/civicrm/ext/api4/Civi/Api4/Utils/FormattingUtil.php @@ -95,6 +95,11 @@ class FormattingUtil { switch ($dataType) { case 'Timestamp': $value = date('Y-m-d H:i:s', strtotime($value)); + break; + + case 'Date': + $value = date('Ymd', strtotime($value)); + break; } } diff --git a/civicrm/ext/api4/info.xml b/civicrm/ext/api4/info.xml index afe7956acee6298c56f53699eba8054fe675dda6..3437ca54e8ff9f71215e5ea4aa41e962c9b10163 100644 --- a/civicrm/ext/api4/info.xml +++ b/civicrm/ext/api4/info.xml @@ -13,8 +13,8 @@ <url desc="Documentation">https://wiki.civicrm.org/confluence/display/CRM/API+v4+Spec</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2018-09-05</releaseDate> - <version>4.0.0</version> + <releaseDate>2018-10-03</releaseDate> + <version>4.1.0</version> <develStage>stable</develStage> <compatibility> <ver>5.0</ver> diff --git a/civicrm/ext/api4/services.xml b/civicrm/ext/api4/services.xml index 95de18ec265cdf0a2f9c732652e64247acb142da..409b8bd8e51b1699fe4b675ecbff956830a989f1 100644 --- a/civicrm/ext/api4/services.xml +++ b/civicrm/ext/api4/services.xml @@ -53,6 +53,10 @@ <tag name="spec_provider"/> </service> + <service class="Civi\Api4\Service\Spec\Provider\NoteCreationSpecProvider"> + <tag name="spec_provider"/> + </service> + <service class="Civi\Api4\Service\Spec\Provider\ContributionCreationSpecProvider"> <tag name="spec_provider"/> </service> diff --git a/civicrm/ext/api4/tests/phpunit/Action/DateTest.php b/civicrm/ext/api4/tests/phpunit/Action/DateTest.php new file mode 100644 index 0000000000000000000000000000000000000000..8cdbfc7c6c058b9bd854f3f957a40b8e2329465d --- /dev/null +++ b/civicrm/ext/api4/tests/phpunit/Action/DateTest.php @@ -0,0 +1,46 @@ +<?php + +namespace Civi\Test\Api4\Action; + +use Civi\Api4\Contact; +use Civi\Api4\Relationship; +use Civi\Test\Api4\UnitTestCase; + +/** + * @group headless + */ +class DateTest extends UnitTestCase { + + public function testRelationshipDate() { + $c1 = Contact::create() + ->addValue('first_name', 'c') + ->addValue('last_name', 'one') + ->execute() + ->first()['id']; + $c2 = Contact::create() + ->addValue('first_name', 'c') + ->addValue('last_name', 'two') + ->execute() + ->first()['id']; + $r = Relationship::create() + ->addValue('contact_id_a', $c1) + ->addValue('contact_id_b', $c2) + ->addValue('relationship_type_id', 1) + ->addValue('start_date', 'now') + ->addValue('end_date', 'now + 1 week') + ->execute() + ->first()['id']; + $result = Relationship::get() + ->addWhere('start_date', '=', 'now') + ->addWhere('end_date', '>', 'now + 1 day') + ->execute() + ->indexBy('id'); + $this->assertArrayHasKey($r, $result); + $result = Relationship::get() + ->addWhere('start_date', '<', 'now') + ->execute() + ->indexBy('id'); + $this->assertArrayNotHasKey($r, $result); + } + +} diff --git a/civicrm/ext/api4/tests/phpunit/DataSets/ConformanceTest.json b/civicrm/ext/api4/tests/phpunit/DataSets/ConformanceTest.json index 85b74c177a9804a39ad4e82eec8809039bd9285d..0283e74254f995553d19ac33a07419f798690576 100644 --- a/civicrm/ext/api4/tests/phpunit/DataSets/ConformanceTest.json +++ b/civicrm/ext/api4/tests/phpunit/DataSets/ConformanceTest.json @@ -58,5 +58,11 @@ "title": "The Singularity", "event_type_id": "major_historical_event" } + ], + "Group": [ + { + "name": "the_group", + "title": "The Group" + } ] } diff --git a/civicrm/ext/api4/tests/phpunit/Service/TestCreationParameterProvider.php b/civicrm/ext/api4/tests/phpunit/Service/TestCreationParameterProvider.php index 948e980eef7b401a7c5f3a6f38404792ca07d05e..453f32019c6fbe6de566f07dae02f19767ed92a5 100644 --- a/civicrm/ext/api4/tests/phpunit/Service/TestCreationParameterProvider.php +++ b/civicrm/ext/api4/tests/phpunit/Service/TestCreationParameterProvider.php @@ -128,6 +128,9 @@ class TestCreationParameterProvider { case 'String': return StringHelper::createRandom(10, implode('', range('a', 'z'))); + case 'Text': + return StringHelper::createRandom(100, implode('', range('a', 'z'))); + case 'Money': return sprintf('%d.%2d', rand(0, 2000), rand(1, 99)); } diff --git a/civicrm/js/AlternateContactSelector.js b/civicrm/js/AlternateContactSelector.js index 6098b242910ceacc705e1bf2320abeb1a7f1edbc..bb73d17e0dc2e8a0f02afaaf6e0ac88a225b842e 100644 --- a/civicrm/js/AlternateContactSelector.js +++ b/civicrm/js/AlternateContactSelector.js @@ -9,7 +9,7 @@ CRM.$(function($) { $.each(result.values, function (id, value) { $.each(value, function (fieldname, fieldvalue) { $('#' + fieldname).val(fieldvalue).change(); - $("[name=" + fieldname + "]").val([fieldvalue]); + $('[name="' + fieldname + '"]').val([fieldvalue]); if ($.isArray(fieldvalue)) { $.each(fieldvalue, function (index, val) { $("#" + fieldname + "_" + val).prop('checked', true); diff --git a/civicrm/js/Common.js b/civicrm/js/Common.js index 8a5306763778e4b27059c4a0e07e57a9bd870545..985e7d616ccb76c2b00e8e7ece334ce64aa42167 100644 --- a/civicrm/js/Common.js +++ b/civicrm/js/Common.js @@ -646,153 +646,12 @@ if (!CRM.vars) CRM.vars = {}; return combined; } - function copyAttributes($source, $target, attributes) { + CRM.utils.copyAttributes = function ($source, $target, attributes) { _.each(attributes, function(name) { if ($source.attr(name) !== undefined) { $target.attr(name, $source.attr(name)); } }); - } - - /** - * @see http://wiki.civicrm.org/confluence/display/CRMDOC/crmDatepicker - */ - $.fn.crmDatepicker = function(options) { - return $(this).each(function() { - if ($(this).is('.crm-form-date-wrapper .crm-hidden-date')) { - // Already initialized - destroy - $(this) - .off('.crmDatepicker') - .css('display', '') - .removeClass('crm-hidden-date') - .siblings().remove(); - $(this).unwrap(); - } - if (options === 'destroy') { - return; - } - var - $dataField = $(this).wrap('<span class="crm-form-date-wrapper" />'), - settings = _.cloneDeep(options || {}), - $dateField = $(), - $timeField = $(), - $clearLink = $(), - hasDatepicker = settings.date !== false && settings.date !== 'yy', - type = hasDatepicker ? 'text' : 'number'; - - if (settings.allowClear !== undefined ? settings.allowClear : !$dataField.is('.required, [required]')) { - $clearLink = $('<a class="crm-hover-button crm-clear-link" title="'+ _.escape(ts('Clear')) +'"><i class="crm-i fa-times"></i></a>') - .insertAfter($dataField); - } - if (settings.time !== false) { - $timeField = $('<input>').insertAfter($dataField); - copyAttributes($dataField, $timeField, ['class', 'disabled']); - $timeField - .addClass('crm-form-text crm-form-time') - .attr('placeholder', $dataField.attr('time-placeholder') === undefined ? ts('Time') : $dataField.attr('time-placeholder')) - .attr('aria-label', $dataField.attr('time-placeholder') === undefined ? ts('Time') : $dataField.attr('time-placeholder')) - .change(updateDataField) - .timeEntry({ - spinnerImage: '', - show24Hours: settings.time === true || settings.time === undefined ? CRM.config.timeIs24Hr : settings.time == '24' - }); - } - if (settings.date !== false) { - // Render "number" field for year-only format, calendar popup for all other formats - $dateField = $('<input type="' + type + '">').insertAfter($dataField); - copyAttributes($dataField, $dateField, ['placeholder', 'style', 'class', 'disabled', 'aria-label']); - $dateField.addClass('crm-form-' + type); - if (hasDatepicker) { - settings.minDate = settings.minDate ? CRM.utils.makeDate(settings.minDate) : null; - settings.maxDate = settings.maxDate ? CRM.utils.makeDate(settings.maxDate) : null; - settings.dateFormat = typeof settings.date === 'string' ? settings.date : CRM.config.dateInputFormat; - settings.changeMonth = _.includes(settings.dateFormat, 'm'); - settings.changeYear = _.includes(settings.dateFormat, 'y'); - if (!settings.yearRange && settings.minDate !== null && settings.maxDate !== null) { - settings.yearRange = '' + CRM.utils.formatDate(settings.minDate, 'yy') + ':' + CRM.utils.formatDate(settings.maxDate, 'yy'); - } - $dateField.addClass('crm-form-date').datepicker(settings); - } else { - $dateField.attr('min', settings.minDate ? CRM.utils.formatDate(settings.minDate, 'yy') : '1000'); - $dateField.attr('max', settings.maxDate ? CRM.utils.formatDate(settings.maxDate, 'yy') : '4000'); - } - $dateField.change(updateDataField); - } - // Rudimentary validation. TODO: Roll into use of jQUery validate and ui.datepicker.validation - function isValidDate() { - // FIXME: parseDate doesn't work with incomplete date formats; skip validation if no month, day or year in format - var lowerFormat = settings.dateFormat.toLowerCase(); - if (lowerFormat.indexOf('y') < 0 || lowerFormat.indexOf('m') < 0 || !dateHasDay()) { - return true; - } - try { - $.datepicker.parseDate(settings.dateFormat, $dateField.val()); - return true; - } catch (e) { - return false; - } - } - - /** - * Does the date format contain the day. - * - * @returns {boolean} - */ - function dateHasDay() { - var lowerFormat = settings.dateFormat.toLowerCase(); - if (lowerFormat.indexOf('d') < 0) { - return false; - } - return true; - } - function updateInputFields(e, context) { - var val = $dataField.val(), - time = null; - if (context !== 'userInput' && context !== 'crmClear') { - if (hasDatepicker) { - $dateField.datepicker('setDate', _.includes(val, '-') ? $.datepicker.parseDate('yy-mm-dd', val) : null); - } else if ($dateField.length) { - $dateField.val(val.slice(0, 4)); - } - if ($timeField.length) { - if (val.length === 8) { - time = val; - } else if (val.length === 19) { - time = val.split(' ')[1]; - } - $timeField.timeEntry('setTime', time); - } - } - $clearLink.css('visibility', val ? 'visible' : 'hidden'); - } - function updateDataField(e, context) { - // The crmClear event wipes all the field values anyway, so no need to respond - if (context !== 'crmClear') { - var val = ''; - if ($dateField.val()) { - if (hasDatepicker && isValidDate() && dateHasDay()) { - val = $.datepicker.formatDate('yy-mm-dd', $dateField.datepicker('getDate')); - $dateField.removeClass('crm-error'); - } else if (!hasDatepicker) { - val = $dateField.val() + '-01-01'; - } - else if (!dateHasDay()) { - // This would be a Year-month date (yyyy-mm) - // it could be argued it should not use a datepicker.... - val = $dateField.val() + '-01'; - } else { - $dateField.addClass('crm-error'); - } - } - if ($timeField.val()) { - val += (val ? ' ' : '') + $timeField.timeEntry('getTime').toTimeString().substr(0, 8); - } - $dataField.val(val).trigger('change', ['userInput']); - } - } - $dataField.hide().addClass('crm-hidden-date').on('change.crmDatepicker', updateInputFields); - updateInputFields(); - }); }; CRM.utils.formatSelect2Result = function (row) { diff --git a/civicrm/js/crm.ajax.js b/civicrm/js/crm.ajax.js index e1742da8fd9873c3bd318435de350b867686df80..5a1155c8462bd2a24a1e90d91eefc77628be87db 100644 --- a/civicrm/js/crm.ajax.js +++ b/civicrm/js/crm.ajax.js @@ -164,11 +164,11 @@ return false; } // Compare arguments - $.each(newUrl.split('?')[1].split('&'), function(k, v) { + $.each((newUrl.split('?')[1] || '').split('&'), function(k, v) { var arg = v.split('='); args[arg[0]] = arg[1]; }); - $.each(oldUrl.split('?')[1].split('&'), function(k, v) { + $.each((oldUrl.split('?')[1] || '').split('&'), function(k, v) { var arg = v.split('='); if (args[arg[0]] !== undefined && arg[1] !== args[arg[0]]) { same = false; diff --git a/civicrm/js/crm.datepicker.js b/civicrm/js/crm.datepicker.js new file mode 100644 index 0000000000000000000000000000000000000000..cfef977c04d1d8e61e3a708b0899240986d816a6 --- /dev/null +++ b/civicrm/js/crm.datepicker.js @@ -0,0 +1,144 @@ +(function($, CRM, _) { + "use strict"; + + /** + * @see http://wiki.civicrm.org/confluence/display/CRMDOC/crmDatepicker + */ + $.fn.crmDatepicker = function(options) { + return $(this).each(function() { + if ($(this).is('.crm-form-date-wrapper .crm-hidden-date')) { + // Already initialized - destroy + $(this) + .off('.crmDatepicker') + .css('display', '') + .removeClass('crm-hidden-date') + .siblings().remove(); + $(this).unwrap(); + } + if (options === 'destroy') { + return; + } + var + $dataField = $(this).wrap('<span class="crm-form-date-wrapper" />'), + settings = CRM._.cloneDeep(options || {}), + $dateField = $(), + $timeField = $(), + $clearLink = $(), + hasDatepicker = settings.date !== false && settings.date !== 'yy', + type = hasDatepicker ? 'text' : 'number'; + + if (settings.allowClear !== undefined ? settings.allowClear : !$dataField.is('.required, [required]')) { + $clearLink = $('<a class="crm-hover-button crm-clear-link" title="'+ CRM._.escape(ts('Clear')) +'"><i class="crm-i fa-times"></i></a>') + .insertAfter($dataField); + } + if (settings.time !== false) { + $timeField = $('<input>').insertAfter($dataField); + CRM.utils.copyAttributes($dataField, $timeField, ['class', 'disabled']); + $timeField + .addClass('crm-form-text crm-form-time') + .attr('placeholder', $dataField.attr('time-placeholder') === undefined ? ts('Time') : $dataField.attr('time-placeholder')) + .attr('aria-label', $dataField.attr('time-placeholder') === undefined ? ts('Time') : $dataField.attr('time-placeholder')) + .change(updateDataField) + .timeEntry({ + spinnerImage: '', + show24Hours: settings.time === true || settings.time === undefined ? CRM.config.timeIs24Hr : settings.time == '24' + }); + } + if (settings.date !== false) { + // Render "number" field for year-only format, calendar popup for all other formats + $dateField = $('<input type="' + type + '">').insertAfter($dataField); + CRM.utils.copyAttributes($dataField, $dateField, ['placeholder', 'style', 'class', 'disabled', 'aria-label']); + $dateField.addClass('crm-form-' + type); + if (hasDatepicker) { + settings.minDate = settings.minDate ? CRM.utils.makeDate(settings.minDate) : null; + settings.maxDate = settings.maxDate ? CRM.utils.makeDate(settings.maxDate) : null; + settings.dateFormat = typeof settings.date === 'string' ? settings.date : CRM.config.dateInputFormat; + settings.changeMonth = CRM._.includes(settings.dateFormat, 'm'); + settings.changeYear = CRM._.includes(settings.dateFormat, 'y'); + if (!settings.yearRange && settings.minDate !== null && settings.maxDate !== null) { + settings.yearRange = '' + CRM.utils.formatDate(settings.minDate, 'yy') + ':' + CRM.utils.formatDate(settings.maxDate, 'yy'); + } + $dateField.addClass('crm-form-date').datepicker(settings); + } else { + $dateField.attr('min', settings.minDate ? CRM.utils.formatDate(settings.minDate, 'yy') : '1000'); + $dateField.attr('max', settings.maxDate ? CRM.utils.formatDate(settings.maxDate, 'yy') : '4000'); + } + $dateField.change(updateDataField); + } + // Rudimentary validation. TODO: Roll into use of jQUery validate and ui.datepicker.validation + function isValidDate() { + // FIXME: parseDate doesn't work with incomplete date formats; skip validation if no month, day or year in format + var lowerFormat = settings.dateFormat.toLowerCase(); + if (lowerFormat.indexOf('y') < 0 || lowerFormat.indexOf('m') < 0 || !dateHasDay()) { + return true; + } + try { + $.datepicker.parseDate(settings.dateFormat, $dateField.val()); + return true; + } catch (e) { + return false; + } + } + + /** + * Does the date format contain the day. + * + * @returns {boolean} + */ + function dateHasDay() { + var lowerFormat = settings.dateFormat.toLowerCase(); + if (lowerFormat.indexOf('d') < 0) { + return false; + } + return true; + } + function updateInputFields(e, context) { + var val = $dataField.val(), + time = null; + if (context !== 'userInput' && context !== 'crmClear') { + if (hasDatepicker) { + $dateField.datepicker('setDate', CRM._.includes(val, '-') ? $.datepicker.parseDate('yy-mm-dd', val) : null); + } else if ($dateField.length) { + $dateField.val(val.slice(0, 4)); + } + if ($timeField.length) { + if (val.length === 8) { + time = val; + } else if (val.length === 19) { + time = val.split(' ')[1]; + } + $timeField.timeEntry('setTime', time); + } + } + $clearLink.css('visibility', val ? 'visible' : 'hidden'); + } + function updateDataField(e, context) { + // The crmClear event wipes all the field values anyway, so no need to respond + if (context !== 'crmClear') { + var val = ''; + if ($dateField.val()) { + if (hasDatepicker && isValidDate() && dateHasDay()) { + val = $.datepicker.formatDate('yy-mm-dd', $dateField.datepicker('getDate')); + $dateField.removeClass('crm-error'); + } else if (!hasDatepicker) { + val = $dateField.val() + '-01-01'; + } + else if (!dateHasDay()) { + // This would be a Year-month date (yyyy-mm) + // it could be argued it should not use a datepicker.... + val = $dateField.val() + '-01'; + } else { + $dateField.addClass('crm-error'); + } + } + if ($timeField.val()) { + val += (val ? ' ' : '') + $timeField.timeEntry('getTime').toTimeString().substr(0, 8); + } + $dataField.val(val).trigger('change', ['userInput']); + } + } + $dataField.hide().addClass('crm-hidden-date').on('change.crmDatepicker', updateInputFields); + updateInputFields(); + }); + }; +})(jQuery, CRM, CRM._); diff --git a/civicrm/js/crm.drupal.js b/civicrm/js/crm.drupal7.js similarity index 59% rename from civicrm/js/crm.drupal.js rename to civicrm/js/crm.drupal7.js index 7ed33666e29a834c01870d5f18cf10c59f83b13b..4be65e41065e27201a0c8fb9245bb3dec818b5a2 100644 --- a/civicrm/js/crm.drupal.js +++ b/civicrm/js/crm.drupal7.js @@ -10,13 +10,6 @@ CRM.$(function($) { // D7 hack, restore toolbar position (CRM-15341) $('#toolbar').css('z-index', ''); } - }) - // d8 Hack to hide title when it should be (CRM-19960) - .ready(function() { - var pageTitle = $('.page-title'); - var title = $('.page-title').text(); - if ('<span id="crm-remove-title" style="display:none">CiviCRM</span>' == title) { - pageTitle.hide(); - } - }); + }); + $('#civicrm-menu').css({'width': '97%'}); }); diff --git a/civicrm/js/crm.drupal8.js b/civicrm/js/crm.drupal8.js new file mode 100644 index 0000000000000000000000000000000000000000..32c06a6bb43a1a1f3715c4be38f0507c637101c3 --- /dev/null +++ b/civicrm/js/crm.drupal8.js @@ -0,0 +1,17 @@ +// http://civicrm.org/licensing +CRM.$(function($) { + // d8 Hack to hide title when it should be (CRM-19960) + var pageTitle = $('.page-title'); + if ('<span id="crm-remove-title" style="display:none">CiviCRM</span>' == pageTitle.text()) { + pageTitle.hide(); + } + + $('#toolbar-bar').hide(); + + $('.crm-hidemenu').click(function(e) { + $('#toolbar-bar').slideDown(); + }); + $('#crm-notification-container').on('click', '#crm-restore-menu', function() { + $('#toolbar-bar').slideUp(); + }); +}); diff --git a/civicrm/release-notes.md b/civicrm/release-notes.md index e09dfee0fadec98f2c69d24a7fac56689d1849da..e7ad1de86ccb6a5a510f804290f5aad48105429d 100644 --- a/civicrm/release-notes.md +++ b/civicrm/release-notes.md @@ -14,6 +14,17 @@ Other resources for identifying changes are: * https://github.com/civicrm/civicrm-joomla * https://github.com/civicrm/civicrm-wordpress +# CiviCRM 5.6.0 + +Released October 3, 2018 + +- **[Synopsis](release-notes/5.6.0.md#synopsis)** +- **[Features](release-notes/5.6.0.md#features)** +- **[Bugs resolved](release-notes/5.6.0.md#bugs)** +- **[Miscellany](release-notes/5.6.0.md#misc)** +- **[Credits](release-notes/5.6.0.md#credits)** +- **[Feedback](release-notes/5.6.0.md#feedback)** + ## CiviCRM 5.5.0 Released September 5, 2018 diff --git a/civicrm/release-notes/5.5.0.md b/civicrm/release-notes/5.5.0.md index eb9b91af7fcbebdcb1fb2702a0ba69d545525ecb..45bc0edc54c4fa66ef5bfd0c5608897b058bea0b 100644 --- a/civicrm/release-notes/5.5.0.md +++ b/civicrm/release-notes/5.5.0.md @@ -1,6 +1,6 @@ # CiviCRM 5.5.0 -Released September 11, 2018 +Released September 5, 2018 - **[Synopsis](#synopsis)** - **[Features](#features)** @@ -774,9 +774,6 @@ of Contribution Detail report - **Fix potential undefined array index ([12443](https://github.com/civicrm/civicrm-core/pull/12443))** -- **CRM_Utils_StringTest - Fix false-negative on systems with non-standard HTTP port - ([12786](https://github.com/civicrm/civicrm-core/pull/12786))** - ## <a name="credits"></a>Credits This release was developed by the following code authors: diff --git a/civicrm/release-notes/5.5.1.md b/civicrm/release-notes/5.5.1.md deleted file mode 100644 index af61298ba89aae0d0cf938ed234536dedbed615b..0000000000000000000000000000000000000000 --- a/civicrm/release-notes/5.5.1.md +++ /dev/null @@ -1,38 +0,0 @@ -# CiviCRM 5.5.1 - -Released 12 Sep 2018 - -- **[Synopsis](#synopsis)** -- **[Bugs resolved](#bugs)** -- **[Credits](#credits)** -- **[Feedback](#feedback)** - -## <a name="synopsis"></a>Synopsis - -| *Does this version...?* | | -|:--------------------------------------------------------------- |:-------:| -| Fix security vulnerabilities? | no | -| Change the database schema? | no | -| Alter the API? | no | -| Require attention to configuration options? | no | -| **Fix problems installing or upgrading from previous version?** | **yes** | -| Introduce features? | no | -| **Fix bugs?** | **yes** | - -## <a name="bugs"></a>Bugs resolved - -- **([dev/core#390](https://lab.civicrm.org/dev/core/issues/390)) - Fix regression affecting smart-groups which predate 5.5.0 ([12803](https://github.com/civicrm/civicrm-core/pull/12803))** - -## <a name="credits"></a>Credits - -This release was developed by the following authors: - -Australian Greens - Seamus Lee; CiviCRM - Tim Otten; Lemniscus - Noah Miller; Wikimedia -Foundation - Eileen McNaughton - -## <a name="feedback"></a>Feedback - -These release notes are edited by Tim Otten and Andrew 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.5.2.md b/civicrm/release-notes/5.5.2.md deleted file mode 100644 index 554383610f45a57133499a18667b7e6ca9a5c642..0000000000000000000000000000000000000000 --- a/civicrm/release-notes/5.5.2.md +++ /dev/null @@ -1,39 +0,0 @@ -# CiviCRM 5.5.2 - -Released 20 Sep 2018 - -- **[Synopsis](#synopsis)** -- **[Bugs resolved](#bugs)** -- **[Credits](#credits)** -- **[Feedback](#feedback)** - -## <a name="synopsis"></a>Synopsis - -| *Does this version...?* | | -|:--------------------------------------------------------------- |:-------:| -| Fix security vulnerabilities? | no | -| Change the database schema? | no | -| Alter the API? | no | -| Require attention to configuration options? | no | -| **Fix problems installing or upgrading from previous version?** | **yes** | -| Introduce features? | no | -| **Fix bugs?** | **yes** | - -## <a name="bugs"></a>Bugs resolved - -- **([dev/core#107](https://lab.civicrm.org/dev/core/issues/107)) - Fix regression which prevents editing CiviCase configuration on new sites ([12842](https://github.com/civicrm/civicrm-core/pull/12842))** - -## <a name="credits"></a>Credits - -This release was developed by the following authors, reviewers, investigators: - -Australian Greens - Seamus Lee; CiviCRM - Tim Otten; Compucorp - René Olivo; -Fuzion - Pete Davis, Jitendra Purhoit; Wikimedia Foundation - Eileen -McNaughton - -## <a name="feedback"></a>Feedback - -These release notes are edited by Tim Otten and Andrew 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.5.3.md b/civicrm/release-notes/5.5.3.md deleted file mode 100644 index 5d321215d5168e8597690af16ce4b5452b99665b..0000000000000000000000000000000000000000 --- a/civicrm/release-notes/5.5.3.md +++ /dev/null @@ -1,40 +0,0 @@ -# CiviCRM 5.5.3 - -Released 25 Sep 2018 - -- **[Synopsis](#synopsis)** -- **[Bugs resolved](#bugs)** -- **[Credits](#credits)** -- **[Feedback](#feedback)** - -## <a name="synopsis"></a>Synopsis - -| *Does this version...?* | | -|:--------------------------------------------------------------- |:-------:| -| Fix security vulnerabilities? | no | -| Change the database schema? | no | -| Alter the API? | no | -| Require attention to configuration options? | no | -| **Fix problems installing or upgrading from previous version?** | **yes** | -| Introduce features? | no | -| **Fix bugs?** | **yes** | - -## <a name="bugs"></a>Bugs resolved - -- **Fix regression in editing of newly created option-groups ([12862](https://github.com/civicrm/civicrm-core/pull/12862))** -- **([dev/core#391](https://lab.civicrm.org/dev/core/issues/391)) - Fix editing of tags via profile ([12870](https://github.com/civicrm/civicrm-core/pull/12870))** - -## <a name="credits"></a>Credits - -This release was developed by the following authors, reviewers, investigators: - -Wikimedia Foundation - Eileen McNaughton; MJW Consulting - Matt Wire; Gitlab -user yalh; CiviCRM - Coleman Watts, Tim Otten; Australian Greens - Seamus -Lee - -## <a name="feedback"></a>Feedback - -These release notes are edited by Tim Otten and Andrew 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.6.0.md b/civicrm/release-notes/5.6.0.md new file mode 100644 index 0000000000000000000000000000000000000000..b90d2861b4bc78f6a8bb9ee9a6d8b5347a890743 --- /dev/null +++ b/civicrm/release-notes/5.6.0.md @@ -0,0 +1,591 @@ +# CiviCRM 5.6.0 + +Released October 3, 2018 + +- **[Synopsis](#synopsis)** +- **[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? | no | +| Alter the API? | **yes** | +| Require attention to configuration options? | no | +| Fix problems installing or upgrading to a previous version? | no | +| Introduce features? | **yes** | +| Fix bugs? | **yes** | + +## <a name="features"></a>Features + +### Core CiviCRM + +- **Activity display, switch to more performance getActivities function (from + deprecatedGetActivities) + ([12559](https://github.com/civicrm/civicrm-core/pull/12559))** + + This change improves performance and alignment on the activity tab. + +- **Upgrade symfony in lockfile to be 2.8 which is supported version of 2… + ([12633](https://github.com/civicrm/civicrm-core/pull/12633))** + + This change upgrades symfony from 2.6 to 2.8.44. + +- **Improve styling of address block on summary screen + ([12723](https://github.com/civicrm/civicrm-core/pull/12723))** + + This changes the display of the address block to be more consistent with the + way that email and website are displayed on a contact. + +- **Foreign key for civicrm_custom_field.option_group_id + ([12706](https://github.com/civicrm/civicrm-core/pull/12706))** + + This change adds a foreign key for option group id to the custom field table. + +- **Added Pseudoconstant for phone and website type + ([12727](https://github.com/civicrm/civicrm-core/pull/12727))** + + This Adds a Pseudoconstant for phone and website type. + +- **Contact summary - adjust block width when editing + ([12708](https://github.com/civicrm/civicrm-core/pull/12708))** + + This makes it so that on the inline Contact edit form, when a user clicks to + edit a section that section grows to allow the edit fields to be full sized. + +- **Added Pseudoconstant tag for visibility + ([12705](https://github.com/civicrm/civicrm-core/pull/12705))** + + This change improves the API Explorer by adding a Pseudoconstant tag for + visibility. This makes it so that civicrm_option_value.visibility_id is now a + dropdown field with the visibility option group options. + +- **Use static cache for UFMatch lookups to improve performance + ([12628](https://github.com/civicrm/civicrm-core/pull/12628))** + + This is a performance improvement, specifically it cuts down on load time for + the contact summary page. + +- **Replicate fix on PR #12643 for pledge report + ([12685](https://github.com/civicrm/civicrm-core/pull/12685))** + + This change makes it so on the "Pledged not Paid" report one can filter by + smart groups. + +- **[dev/core#217](https://lab.civicrm.org/dev/core/issues/217) Allow + replacement of PrevNextCache implementation (for search screens) + ([12664](https://github.com/civicrm/civicrm-core/pull/12664) and + [12663](https://github.com/civicrm/civicrm-core/pull/12663)) (Preliminary Work)** + + This change makes it so for the purposes of search-caching CiviCRM no longer + fills or reads the columns 'entity_table' and 'entity_id2' in the + civicrm_prevnext_cache table and makes the cacheKey column simpler and more + consistent. + +- **[dev/core#302](https://lab.civicrm.org/dev/core/issues/302) End of life + plans for 5.x php versions & planning for 7.0 EOL + ([12625](https://github.com/civicrm/civicrm-core/pull/12625)) (preliminary + work)** + + This change Bumps the recommended php version to 7.1 and min recommended to + 7.0 + +- **Add SQL modes to developer tab + ([12656](https://github.com/civicrm/civicrm-core/pull/12656))** + + This change adds SQL Mode info to the developer tab on reports. + +- **don't add query to developer tab if we are downloading the data + ([12666](https://github.com/civicrm/civicrm-core/pull/12666))** + + This is a performance improvement for downloading reports for users who have + permission to view the developer tab on reports. + +- **filter current employer report by all groups + ([12643](https://github.com/civicrm/civicrm-core/pull/12643))** + + This change makes it so one can filter the Current Employer report by all + groups. Prior to this change one could onlt filter this report by static + groups. + +### CiviCase + +- **Make contact name into a link on Manage Case for single client + ([12619](https://github.com/civicrm/civicrm-core/pull/12619))** + + On the Manage Case page for a single client, this change makes the contact + name linked to that contact's summary page. + +### CiviContribute + +- **Remove net_amount from the Back office contribution form. + ([12662](https://github.com/civicrm/civicrm-core/pull/12662))** + + This change removes the net amount field from the back office contribution + form. The net amount is calculated in the BAO. + +- **API : Set current domain as a sensible default for payment processor + ([12595](https://github.com/civicrm/civicrm-core/pull/12595))** + + This change improves the PaymentProcessor.create api action by making + domain_id optional and setting it to use the current domain as the default if + a domain_id is not sent. + +### CiviMember + +- **Enable custom data display on MembershipType form + ([12738](https://github.com/civicrm/civicrm-core/pull/12738))** + + This makes it so if Membership Type custom fields are configured they are + displayed on the Membership Type form. + +### Drupal Integration + +- **[dev/core#237](https://lab.civicrm.org/dev/core/issues/237) Hide Drupal8 + Administer Menu bar on CiviCRM pages + ([12463](https://github.com/civicrm/civicrm-core/pull/12463))** + + This change hides the Drupal8 menu bar when a user is on a civi backend page. + +- **Drupal Views CiviCRM: Allow Participant record to be used from Event. + ([539](https://github.com/civicrm/civicrm-drupal/pull/539))** + + This change makes it so in Drupal Views one can configure a relationship + between CiviCRM Events and CiviCRM Participants. + +## <a name="bugs"></a>Bugs resolved + +### Core CiviCRM + +- **Handle smart groups created in previous Civis which include + relation_permission + ([12804](https://github.com/civicrm/civicrm-core/pull/12804))** + + This change fixes a bug where smart groups created in CiviCRM 5.4 based on a + search using a relationship break in CiviCRM 5.5 so that they work as + expected. + +- **[dev/core#346](https://lab.civicrm.org/dev/core/issues/346) Online Pay Now + error when used from dashboard checksum link + ([12745](https://github.com/civicrm/civicrm-core/pull/12745))** + + This change fixes a bug where when a user accessed the CiviCRM user dashboard + using a checksum and then clicked the paynow link, the paynow link would + break, so that the pay now link takes you to pay now as expected. + +- **Show ext version status even when directory not writeable + ([12757](https://github.com/civicrm/civicrm-core/pull/12757))** + + This change fixes a bug where extension updates were not showing if the + extension directory was not writable so that information about extension + updates are shown on the extensions tab regardless of whether the extension + directory is writabale. + +- **Remove mcrypt warning except for affected sites. + ([12733](https://github.com/civicrm/civicrm-core/pull/12733))** + + This change makes it so that the System Check that warns people that mcrypt is + not available only shows on sites that store smtp passwords in their database + (the only users for whom this warning is applicable). + +- **[dev/core#367](https://lab.civicrm.org/dev/core/issues/367) Fatal error / + SQL timeout in A-Z pager for advanced search by relationship with target group + for reciprocal relationship types + ([12740](https://github.com/civicrm/civicrm-core/pull/12740))** + + This change fixes a bug where advanced searches on reciprocal relationships + (ex: "spouse") and using the criteria "target contact is in group" on sites + with large numbers of relationships of that type would take a long time, + occasionally timing out entirely. + +- **[dev/core#343](https://lab.civicrm.org/dev/core/issues/343) Long lines in + contact name or address overflow mailing labels + ([12691](https://github.com/civicrm/civicrm-core/pull/12691))** + + This change fixes a bug where PDF Mailing Labels generated by civi were not + wrapping appropriately so that they wrap and do run off the label. + +- **[dev/core#351](https://lab.civicrm.org/dev/core/issues/351) ERROR: LoadForm + Pop-up w/out Params in URL + ([12735](https://github.com/civicrm/civicrm-core/pull/12735))** + + This change fixes a bug where the load form function used to open a form in a + pop up window was throwing an error if no parameters were included in the URL + so no error is thrown if no parameters are sent (and no parameters are + necessary). + +- **[dev/core#349](https://lab.civicrm.org/dev/core/issues/349) Scheduled + reminders list default sort does not work + ([12701](https://github.com/civicrm/civicrm-core/pull/12701))** + + This change fixes the default sort of the Scheduled reminders list so that it + sorts by title. + +- **[dev/translation#14](https://lab.civicrm.org/dev/translation/issues/14) + InnoDB Advanced Logging cannot be enabled on multi-lingual + ([12667](https://github.com/civicrm/civicrm-core/pull/12667))** + + This change makes it so that InnoDB Advanced Logging can be enabled on + multi-lingual sites using: + https://github.com/eileenmcnaughton/nz.co.fuzion.innodbtriggers + +- **Fix recent item deduping & call hooks + ([12704](https://github.com/civicrm/civicrm-core/pull/12704))** + + This change fixes a bug where sometimes the same item would be added twice to + the "recent items" list. + +- **Wrap long labels onto multiple lines to prevent text being cut off + ([12716](https://github.com/civicrm/civicrm-core/pull/12716))** + + This change makes it so that on front facing forms, long labels wrap on to + multiple lines. + +- **Navigation - Don't reprocess fully-formed urls + ([12702](https://github.com/civicrm/civicrm-core/pull/12702))** + + This change fixes an edge case where fully-formed urls in the menubar were + getting garbled so that relative urls, absolute urls and local urls are all + processed correctly. + +- **Fix CRM_ACL_API::whereClause to respect $contactId param + ([12576](https://github.com/civicrm/civicrm-core/pull/12576))** + + This adds support to the CMS based permission checking and ensures that + CRM_ACL_API::whereClause checks the permissions for the contact Id it is sent + (before this change it checked the permissions of the logged in user). + +- **[dev/accessibility#10](https://lab.civicrm.org/dev/accessibility/issues/10) + Make datepicker + accessible ([12631](https://github.com/civicrm/civicrm-core/pull/12631)) (Preliminary Work)** + + This change moves CiviCRM towards making the date picker accessible (one could + select a date from the calendar using control keys without using a mouse) by + moving the datepicker functionality to its own file. + +- **[dev/core#295](https://lab.civicrm.org/dev/core/issues/295) Default 'from' + mail address is not the default one showing in 'send email' + ([12603](https://github.com/civicrm/civicrm-core/pull/12603))** + + This change makes it so that when sending an email using the "send email" + action if "Allow Mail to be sent from logged in contact's email address" is + disabled in settings the default from address is loaded into the from address + field. + +- **Further removal of instance of using LOWER() rather than relying on mysql + non-case-sensitivity. + ([12612](https://github.com/civicrm/civicrm-core/pull/12612))** + + This change improves performance when searching on email_greeting, + postal_greeting, address. + +- **Fix ReportInstance BAO to call post hook after save (instead of calling pre + twice). ([12722](https://github.com/civicrm/civicrm-core/pull/12722))** + + This change improves the hook functionality in the ReportInstance BAO so that + one can call post hook after save and so that the pre hook is only called + once. + +### CiviCase + +- **[dev/core#297](https://lab.civicrm.org/dev/core/issues/297) permission + "access my cases and activities" is broken by CRM-21461 + ([12613](https://github.com/civicrm/civicrm-core/pull/12613))** + + This change fixes the permission "access my cases and activites". + +- **[dev/core#361](https://lab.civicrm.org/dev/core/issues/361) Mistake in Case + api spec description + ([12726](https://github.com/civicrm/civicrm-core/pull/12726))** + + This changes the text in the API Explorer for the entity Case for the + parameter Tags to read "Find cases with specified tags." before this change it + read "Find activities with specified tags.". + +- **[dev/core#245](https://lab.civicrm.org/dev/core/issues/245) Duplicate + activities shown on case tab + ([12444](https://github.com/civicrm/civicrm-core/pull/12444))** + + This change fixes a bug where If there were multiple assignee/target contacts on + an activity, the activities were being duplicated on the case activities tab. + Additionally this change fixes a bug where if the activity is only allowed a + single instance and the user tried to add another, the link had an invalid + activity Id. + +- **Don't duplicate activity when filing on case + ([12620](https://github.com/civicrm/civicrm-core/pull/12620))** + + This change fixes a bug where filing an activity on a case using the "File On + Case" link on the actvitytab/activity detail view would result in two + activities one related to the case and one not. + +### CiviContribute + +- **[dev/core#299](https://lab.civicrm.org/dev/core/issues/299) Decimal point + error. ([12684](https://github.com/civicrm/civicrm-core/pull/12684)) + (Continuation of work)** + + This change localizes the display of the amount on the update payment details + form. + +- **[dev/core#334](https://lab.civicrm.org/dev/core/issues/334) Public + contribution form and Checksums: billing information not loaded if using + multiple processors + ([12679](https://github.com/civicrm/civicrm-core/pull/12679))** + + This fixes a bug where when a user goes to a contribution page that is + configured to use multiple payment processors via a checksum link the billing + address section was not pre-populating so that the billing section does + pre-populate. + +- **[dev/core#119](https://lab.civicrm.org/dev/core/issues/119) Notice error + ([12626](https://github.com/civicrm/civicrm-core/pull/12626))** + + When recording a payment on a site that is configured not to use decimal + thousand separators, that configuration was not being respected for the + default amount. This change fixes the default amount to be localized + appropriately. + +- **[dev/core#322](https://lab.civicrm.org/dev/core/issues/322) Contribution + page, completing this form on behalf of someone else: JavaScript error for + checkbox field ([12652](https://github.com/civicrm/civicrm-core/pull/12652))** + + This fixes a bug on contribution pages configured to accept donations onbehalf + of someone else and to include a profile with a checkbox where checking the + checkbox in the profile would result in a javascript error, additionally it + ensures that the form is populated with the onbehalf of contact's data. + +- **Use cached version of payment processor. + ([12627](https://github.com/civicrm/civicrm-core/pull/12627))** + + This change fixes a bug where some payment processors when combined with Redis + were failing to complete transactions because Redis was caching the call to + completetransaction. + +- **[dev/core#325](https://lab.civicrm.org/dev/core/issues/325) Fatal error 'DB Error: no + such field' on Contribution detail report + ([12660](https://github.com/civicrm/civicrm-core/pull/12660))** + + This change fixes a bug where on the Contribution Detail report, selecting the + "Age" column would result in a fatal error so that the report includes Age as + expected. + +- **[dev/core#386](https://lab.civicrm.org/dev/core/issues/386) + Contribution Detail Report shows no amount if set to Soft Credit Only + ([12860](https://github.com/civicrm/civicrm-core/pull/12860))** + +- **[dev/core#341](https://lab.civicrm.org/dev/core/issues/341) "Contributions + made in Year X and not Year Y" custom search ignores date field + ([12686](https://github.com/civicrm/civicrm-core/pull/12686))** + + This fixes a bug where custom searches using the "Contributions made in Year X + and not Year Y" were not respecting the date parameters, so that date + parameters are respected. + +- **[dev/core#327](https://lab.civicrm.org/dev/core/issues/327) PHP Fatal error: + Call to undefined method - Contribution Details report + ([12661](https://github.com/civicrm/civicrm-core/pull/12661))** + + This fixes a bug where checking the Gender column field on the Contribution + Details report resulted in a fatal error so that one can include a gender + column in this report. + +### CiviEvent + +- **Fix Undefined index: params in CRM_Event_BAO_Event::buildCustomProfile() + ([12678](https://github.com/civicrm/civicrm-core/pull/12678))** + + This change suppresses an undefined index notice that was showing when one + comes to an Event from an online payment provider. + +- **[dev/core#344](https://lab.civicrm.org/dev/core/issues/344) Tell a Friend + mail does not include event title + ([12699](https://github.com/civicrm/civicrm-core/pull/12699))** + + This fixes a bug where when using the Tell-A-Friend option to send an email + the title of the event was appearing in the subject of the email, so that the + title of the event does appear in the subject of the email. + +- **Ensure users with the perm "CiviEvent: access CiviEvent " can edit events + they have created. + ([12424](https://github.com/civicrm/civicrm-core/pull/12424))** + + This change fixes a bug where users with the permission "CiviEvent: access + CiviEvent" could create but not edit their events so that they can create and + edit their events. + +- **GL-44 Admin price field options on event info page + ([11923](https://github.com/civicrm/civicrm-core/pull/11923))** + + This change ensures that on event info pages price set field options with the + visibility "admin" are only shown to admins. + +### CiviMail + +- **[dev/mail#20](https://lab.civicrm.org/dev/mail/issues/20) Preview screen + don't open until recipients list is built on mail compose screen + ([12509](https://github.com/civicrm/civicrm-core/pull/12509))** + + This change fixes a bug where when drafting a mailing one could not open the + preview mailing screen until the recipient count query had completed. + +- **[dev/core#352](https://lab.civicrm.org/dev/core/issues/352) Ensure that when + adding recipients of previous mailings that contacts who are being excluded + are removed ([12712](https://github.com/civicrm/civicrm-core/pull/12712))** + + This change makes sure when using recipients from a previous mailing as the + recipients of a mailing That any exclusions are respected. + +- **[dev/mail#21](https://lab.civicrm.org/dev/mail/issues/21) "Send test email" + may create duplicate contacts + ([12599](https://github.com/civicrm/civicrm-core/pull/12599))** + + This change fixes a bug where sending a test email to two contacts seperated + by a space and a comma would sometimes result in a duplicate contact being + created. + +- **pass mailingJobId to hook_tokenValues + ([12026](https://github.com/civicrm/civicrm-core/pull/12026))** + + This change ensures the mailingJobId is sent to hook_tokenValues. + +### CiviMember + +- **BASW-240: 'Network Error' when creating membership type from contact + membership tab ([12700](https://github.com/civicrm/civicrm-core/pull/12700))** + + This Change fixes a Network Error that was appearing when creating a membership + type from a contacts membership tab. + +### Drupal Integration + +- **[dev/core#311](https://lab.civicrm.org/dev/core/issues/311) Upgrading + multilingual site causes DB Error + ([12636](https://github.com/civicrm/civicrm-core/pull/12636))** + + This change fixes a bug where upgrading a multilingual drupal site from + CiviCRM 4.4.7 to 5.4.0 causes a DB error so that one can upgrade a + multilingual drupal site without a DB error. + +### Joomla Integration + +- **[dev/joomla#2](https://lab.civicrm.org/dev/joomla/issues/2) Joomla + cron.php/cli.php fail on Windows server + ([12692](https://github.com/civicrm/civicrm-core/pull/12692))** + + This fixes a bug where on Joomla sites on Windows cron was failing so that + cron works for Joomla stes on Windows. + +- **Make sure Joomla timezone is set for cron jobs + ([12609](https://github.com/civicrm/civicrm-core/pull/12609))** + + This change ensures that the CRON job is executed using the same timezone as + Joomla (and the same timezone that is configured for Joomla/CiviCRM/database + when running via web). Prior to this change the CRON job was being executed + with timezone set to UTC. + +## <a name="misc"></a>Miscellany + +- **Stop passing imProviders & phoneTypes - use CRM_Core_PseudoConstant:getLabel + ([12608](https://github.com/civicrm/civicrm-core/pull/12608))** + +- **Remove unused variables from process_participants job + ([12621](https://github.com/civicrm/civicrm-core/pull/12621))** + +- **Follow up on #12611 - adding in three data-integrity assertions. + ([12629](https://github.com/civicrm/civicrm-core/pull/12629))** + +- **Minor refactor, use sales tax trait to simplify sales tax functions + ([12594](https://github.com/civicrm/civicrm-core/pull/12594))** + +- **Drop custom CSS for Joomla CiviCRM menu so it works with shoreditch theme + ([12632](https://github.com/civicrm/civicrm-core/pull/12632))** + +- **Export minor refactor Move household relationship types to the processor + ([12579](https://github.com/civicrm/civicrm-core/pull/12579))** + +- **Code cleanup on Membership form when freezing fields in a recurring exists + situation ([12642](https://github.com/civicrm/civicrm-core/pull/12642))** + +- **Add test for new rounded money format functions + ([12689](https://github.com/civicrm/civicrm-core/pull/12689))** + +- **Minor comment and typo cleanup + ([12715](https://github.com/civicrm/civicrm-core/pull/12715))** + +- **Towards rationalising settings form & preferences form (partial of 12731) + ([12732](https://github.com/civicrm/civicrm-core/pull/12732))** + +- **Fix compatibility problem with CRM_Extendedreport_Form_Report_ExtendedReport + ([12749](https://github.com/civicrm/civicrm-core/pull/12749))** + +- **Fix teeny typo + ([12618](https://github.com/civicrm/civicrm-core/pull/12618))** + +- **[PHPUnit test only] Adding in assertions re: Line Item and Contribution + data-integrity. + ([12611](https://github.com/civicrm/civicrm-core/pull/12611))** + +- **[NFC] comment fixes relating to doc blocks, spelling + ([12630](https://github.com/civicrm/civicrm-core/pull/12630))** + +- **[phpunit test only] - Add one additional data integrity check to ensure that + after Edit Fin… + ([12645](https://github.com/civicrm/civicrm-core/pull/12645))** + +- **NFC Add/update two comments + ([12680](https://github.com/civicrm/civicrm-core/pull/12680))** + +- **[NFC] Minor function extraction in report class. + ([12658](https://github.com/civicrm/civicrm-core/pull/12658))** + +- **(NFC) Fix incorrect reference of doTransferCheckout() in comments + ([12720](https://github.com/civicrm/civicrm-core/pull/12720))** + +- **NFC cleanup to Membership/Renewal form classes. + ([12696](https://github.com/civicrm/civicrm-core/pull/12696))** + +- **[CRM-21677](https://issues.civicrm.org/jira/browse/CRM-21677) Report + improvements ([12703](https://github.com/civicrm/civicrm-core/pull/12703) and + [12698](https://github.com/civicrm/civicrm-core/pull/12698))** + +- **Deduplicate setting of mailSent message + ([12694](https://github.com/civicrm/civicrm-core/pull/12694))** + +- **Setting form - function extraction + ([12744](https://github.com/civicrm/civicrm-core/pull/12744))** + +## <a name="credits"></a>Credits + +This release was developed by the following code authors: + +AGH Strategies - Alice Frumin, Andrew Hunt; Andrew Thompson; Australian Greens - +Seamus Lee; Calbasi - Joan Cervan Andreu; Calibrate - Wouter Hechtermans; Chris +Burgess; Circle Interactive - Dave Jenkins; CiviCoop - Klaas Eikelboom; CiviCRM - +Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; CiviFirst - John Kirk; +CompuCorp - Vinu Varshith Sekar; Coop SymbioTIC - Mathieu Lutfy; Fuzion - +Jitendra Purohit; JMA Consulting - Monish Deb; John Kingsnorth; Joinery - Allen +Shaw; Lemniscus - Noah Miller; Lighthouse Design and Consulting - Brian +Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MillerTech - Chamil +Wijesooriya; MJW Consulting - Matthew Wire; PHD Computer Consultants - Chris +Cant; Pradeep Nayak; Progressive Technology Project - Jamie McClelland; Richard +van Oosterhout; Selwyn Tang; Semper IT - Karin Gerritsen; Third Sector Design - +Michael McAndrew; Wikimedia Foundation - Eileen McNaughton + +Most authors also reviewed code for this release; in addition, the following +reviewers contributed their comments: + +Agileware - Justin Freeman; Fuzion - Peter Davis; JMA Consulting - Joe Murray; +MillerTech - Chamil Wijesooriya; Oxfam Germany - Thomas Schüttler; sleewok; +Squiffle Consulting - Aidan Saunders + +## <a name="feedback"></a>Feedback + +These release notes are edited by Alice Frumin and Andrew 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/sql/civicrm.mysql b/civicrm/sql/civicrm.mysql index 6c12afa0f59659be7ff75a9b58a208245f4f0cca..54f2f6d2dc5a05e99d7030388d823d6e13befe93 100644 --- a/civicrm/sql/civicrm.mysql +++ b/civicrm/sql/civicrm.mysql @@ -522,7 +522,7 @@ CREATE TABLE `civicrm_prevnext_cache` ( `id` int unsigned NOT NULL AUTO_INCREMENT , `entity_table` varchar(64) COMMENT 'physical tablename for entity being joined to discount, e.g. civicrm_event', `entity_id1` int unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.', - `entity_id2` int unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.', + `entity_id2` int unsigned NULL COMMENT 'FK to entity table specified in entity_table column.', `cacheKey` varchar(255) COMMENT 'Unique path name for cache element of the searched item', `data` longtext COMMENT 'cached snapshot of the serialized data', `is_selected` tinyint DEFAULT 0 @@ -1878,7 +1878,7 @@ CREATE TABLE `civicrm_custom_field` ( , custom_group_id ) -, CONSTRAINT FK_civicrm_custom_field_custom_group_id FOREIGN KEY (`custom_group_id`) REFERENCES `civicrm_custom_group`(`id`) ON DELETE CASCADE +, CONSTRAINT FK_civicrm_custom_field_custom_group_id FOREIGN KEY (`custom_group_id`) REFERENCES `civicrm_custom_group`(`id`) ON DELETE CASCADE, CONSTRAINT FK_civicrm_custom_field_option_group_id FOREIGN KEY (`option_group_id`) REFERENCES `civicrm_option_group`(`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ; -- /******************************************************* diff --git a/civicrm/sql/civicrm_data.mysql b/civicrm/sql/civicrm_data.mysql index a63fcb75299fd03d602df38c6efa231132b47c66..6469929e499225dfc2a6d41c44625f2e49784cfb 100644 --- a/civicrm/sql/civicrm_data.mysql +++ b/civicrm/sql/civicrm_data.mysql @@ -23979,4 +23979,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.5.3'; +UPDATE civicrm_domain SET version = '5.6.0'; diff --git a/civicrm/sql/civicrm_generated.mysql b/civicrm/sql/civicrm_generated.mysql index 7204f4a47f5f9c3fea6b8ec189f65ab1859f4cbe..8f13232e55fd64823827daa077de11cec931da63 100644 --- a/civicrm/sql/civicrm_generated.mysql +++ b/civicrm/sql/civicrm_generated.mysql @@ -1,6 +1,6 @@ -- MySQL dump 10.13 Distrib 5.7.23, for osx10.12 (x86_64) -- --- Host: 127.0.0.1 Database: d55civi_patv1 +-- Host: 127.0.0.1 Database: dmasterciv_lrqox -- ------------------------------------------------------ -- Server version 5.5.58 @@ -87,7 +87,7 @@ 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,10,'Subject for Pledge Acknowledgment','2018-04-26 11:10:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:51','2018-09-19 20:23:51'),(2,NULL,9,'Subject for Tell a Friend','2018-06-20 01:48:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:51','2018-09-19 20:23:51'),(3,NULL,9,'Subject for Tell a Friend','2018-06-24 07:51:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:51','2018-09-19 20:23:51'),(4,NULL,10,'Subject for Pledge Acknowledgment','2018-01-05 23:58:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:51','2018-09-19 20:23:51'),(5,NULL,9,'Subject for Tell a Friend','2017-12-20 08:25:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:51','2018-09-19 20:23:51'),(6,NULL,10,'Subject for Pledge Acknowledgment','2018-07-09 11:54:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:51','2018-09-19 20:23:51'),(7,NULL,10,'Subject for Pledge Acknowledgment','2018-09-01 10:01:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:51','2018-09-19 20:23:51'),(8,NULL,9,'Subject for Tell a Friend','2018-08-07 22:01:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(9,NULL,9,'Subject for Tell a Friend','2018-05-03 00:53:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(10,NULL,9,'Subject for Tell a Friend','2018-01-01 03:05:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(11,NULL,10,'Subject for Pledge Acknowledgment','2017-11-12 02:42:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(12,NULL,10,'Subject for Pledge Acknowledgment','2018-09-18 14:21:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(13,NULL,9,'Subject for Tell a Friend','2018-04-13 01:26:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(14,NULL,9,'Subject for Tell a Friend','2017-12-31 01:24:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(15,NULL,9,'Subject for Tell a Friend','2018-05-21 20:08:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(16,NULL,9,'Subject for Tell a Friend','2018-05-29 08:32:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(17,NULL,9,'Subject for Tell a Friend','2017-12-13 00:07:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(18,NULL,9,'Subject for Tell a Friend','2018-07-14 08:50:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(19,NULL,10,'Subject for Pledge Acknowledgment','2018-02-28 09:14:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(20,NULL,10,'Subject for Pledge Acknowledgment','2018-09-13 05:27:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(21,NULL,10,'Subject for Pledge Acknowledgment','2017-12-21 23:21:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(22,NULL,9,'Subject for Tell a Friend','2017-10-13 06:36:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(23,NULL,9,'Subject for Tell a Friend','2018-09-13 01:51:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(24,NULL,10,'Subject for Pledge Acknowledgment','2017-12-17 08:57:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(25,NULL,10,'Subject for Pledge Acknowledgment','2017-12-28 04:43:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(26,NULL,10,'Subject for Pledge Acknowledgment','2018-04-12 02:10:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(27,NULL,9,'Subject for Tell a Friend','2018-07-15 06:56:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(28,NULL,9,'Subject for Tell a Friend','2018-03-02 17:01:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(29,NULL,9,'Subject for Tell a Friend','2018-03-06 20:33:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(30,NULL,9,'Subject for Tell a Friend','2017-10-03 16:29:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(31,NULL,10,'Subject for Pledge Acknowledgment','2018-02-26 03:03:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(32,NULL,10,'Subject for Pledge Acknowledgment','2018-08-24 12:14:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(33,NULL,10,'Subject for Pledge Acknowledgment','2017-11-04 20:04:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(34,NULL,9,'Subject for Tell a Friend','2018-02-07 19:57:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(35,NULL,9,'Subject for Tell a Friend','2018-08-04 04:42:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(36,NULL,10,'Subject for Pledge Acknowledgment','2018-03-14 17:45:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(37,NULL,10,'Subject for Pledge Acknowledgment','2017-11-19 20:06:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(38,NULL,9,'Subject for Tell a Friend','2018-07-27 10:07:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(39,NULL,9,'Subject for Tell a Friend','2017-12-30 10:25:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(40,NULL,10,'Subject for Pledge Acknowledgment','2018-01-23 17:24:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(41,NULL,9,'Subject for Tell a Friend','2018-07-08 00:00:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(42,NULL,9,'Subject for Tell a Friend','2018-01-20 23:27:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(43,NULL,10,'Subject for Pledge Acknowledgment','2018-07-27 01:32:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(44,NULL,10,'Subject for Pledge Acknowledgment','2018-04-11 01:46:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(45,NULL,9,'Subject for Tell a Friend','2017-09-22 06:48:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(46,NULL,9,'Subject for Tell a Friend','2018-06-19 19:52:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(47,NULL,10,'Subject for Pledge Acknowledgment','2018-08-14 07:59:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(48,NULL,10,'Subject for Pledge Acknowledgment','2017-09-29 18:09:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(49,NULL,9,'Subject for Tell a Friend','2018-07-19 21:24:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(50,NULL,9,'Subject for Tell a Friend','2018-06-24 06:07:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(51,NULL,10,'Subject for Pledge Acknowledgment','2018-02-10 10:07:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(52,NULL,10,'Subject for Pledge Acknowledgment','2018-03-03 23:50:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(53,NULL,9,'Subject for Tell a Friend','2018-05-14 20:05:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(54,NULL,10,'Subject for Pledge Acknowledgment','2017-10-07 07:22:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(55,NULL,9,'Subject for Tell a Friend','2018-05-13 15:39:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(56,NULL,10,'Subject for Pledge Acknowledgment','2018-09-05 20:37:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(57,NULL,9,'Subject for Tell a Friend','2018-01-29 14:05:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(58,NULL,10,'Subject for Pledge Acknowledgment','2018-09-16 18:49:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(59,NULL,9,'Subject for Tell a Friend','2018-07-07 05:05:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(60,NULL,10,'Subject for Pledge Acknowledgment','2018-01-26 00:54:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(61,NULL,10,'Subject for Pledge Acknowledgment','2018-03-08 18:55:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(62,NULL,9,'Subject for Tell a Friend','2018-02-17 12:15:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(63,NULL,9,'Subject for Tell a Friend','2018-07-18 16:52:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(64,NULL,10,'Subject for Pledge Acknowledgment','2018-04-12 15:11:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(65,NULL,10,'Subject for Pledge Acknowledgment','2017-12-03 10:29:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(66,NULL,10,'Subject for Pledge Acknowledgment','2018-01-07 07:16:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(67,NULL,10,'Subject for Pledge Acknowledgment','2018-06-09 15:54:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(68,NULL,9,'Subject for Tell a Friend','2017-12-25 21:53:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(69,NULL,10,'Subject for Pledge Acknowledgment','2018-08-04 15:41:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(70,NULL,10,'Subject for Pledge Acknowledgment','2017-10-16 04:44:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(71,NULL,10,'Subject for Pledge Acknowledgment','2017-12-28 18:08:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(72,NULL,10,'Subject for Pledge Acknowledgment','2017-10-25 12:07:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(73,NULL,9,'Subject for Tell a Friend','2018-02-18 14:13:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(74,NULL,9,'Subject for Tell a Friend','2018-03-24 18:30:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(75,NULL,9,'Subject for Tell a Friend','2018-07-25 11:02:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(76,NULL,9,'Subject for Tell a Friend','2017-11-24 08:44:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(77,NULL,9,'Subject for Tell a Friend','2017-10-04 09:29:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(78,NULL,10,'Subject for Pledge Acknowledgment','2018-01-13 02:33:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(79,NULL,10,'Subject for Pledge Acknowledgment','2017-12-23 06:56:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(80,NULL,9,'Subject for Tell a Friend','2018-04-25 10:42:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(81,NULL,9,'Subject for Tell a Friend','2017-12-31 01:27:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(82,NULL,10,'Subject for Pledge Acknowledgment','2018-07-13 19:59:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(83,NULL,10,'Subject for Pledge Acknowledgment','2018-04-23 22:28:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(84,NULL,10,'Subject for Pledge Acknowledgment','2018-03-08 12:01:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(85,NULL,9,'Subject for Tell a Friend','2018-05-25 04:07:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(86,NULL,10,'Subject for Pledge Acknowledgment','2017-11-27 20:03:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(87,NULL,10,'Subject for Pledge Acknowledgment','2017-10-15 02:38:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(88,NULL,10,'Subject for Pledge Acknowledgment','2018-01-23 20:04:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(89,NULL,10,'Subject for Pledge Acknowledgment','2018-05-27 11:11:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(90,NULL,9,'Subject for Tell a Friend','2018-08-23 23:04:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(91,NULL,10,'Subject for Pledge Acknowledgment','2018-06-28 11:58:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(92,NULL,9,'Subject for Tell a Friend','2018-05-14 20:09:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(93,NULL,10,'Subject for Pledge Acknowledgment','2017-12-22 22:09:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(94,NULL,10,'Subject for Pledge Acknowledgment','2017-11-20 05:01:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(95,NULL,10,'Subject for Pledge Acknowledgment','2018-07-17 21:55:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(96,NULL,10,'Subject for Pledge Acknowledgment','2018-08-09 04:23:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(97,NULL,10,'Subject for Pledge Acknowledgment','2018-03-03 13:57:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(98,NULL,9,'Subject for Tell a Friend','2018-07-31 00:08:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(99,NULL,9,'Subject for Tell a Friend','2018-02-18 05:58:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(100,NULL,9,'Subject for Tell a Friend','2017-11-26 22:57:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(101,NULL,10,'Subject for Pledge Acknowledgment','2018-01-09 08:48:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(102,NULL,9,'Subject for Tell a Friend','2018-01-24 13:57:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(103,NULL,10,'Subject for Pledge Acknowledgment','2017-12-06 10:51:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(104,NULL,9,'Subject for Tell a Friend','2018-03-12 08:05:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(105,NULL,9,'Subject for Tell a Friend','2018-09-13 21:17:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(106,NULL,10,'Subject for Pledge Acknowledgment','2017-12-09 22:00:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(107,NULL,9,'Subject for Tell a Friend','2018-03-16 15:02:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(108,NULL,9,'Subject for Tell a Friend','2018-02-22 14:24:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(109,NULL,10,'Subject for Pledge Acknowledgment','2018-01-27 00:04:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(110,NULL,10,'Subject for Pledge Acknowledgment','2018-03-05 20:54:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(111,NULL,10,'Subject for Pledge Acknowledgment','2018-08-28 08:36:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(112,NULL,9,'Subject for Tell a Friend','2017-10-13 16:30:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(113,NULL,9,'Subject for Tell a Friend','2018-04-15 04:08:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(114,NULL,9,'Subject for Tell a Friend','2018-06-01 15:06:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(115,NULL,10,'Subject for Pledge Acknowledgment','2017-12-24 23:55:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(116,NULL,9,'Subject for Tell a Friend','2018-06-17 06:41:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(117,NULL,10,'Subject for Pledge Acknowledgment','2018-07-07 19:17:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(118,NULL,9,'Subject for Tell a Friend','2017-12-07 07:14:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(119,NULL,10,'Subject for Pledge Acknowledgment','2018-01-08 03:29:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(120,NULL,9,'Subject for Tell a Friend','2018-03-18 22:29:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(121,NULL,9,'Subject for Tell a Friend','2018-06-17 00:32:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(122,NULL,9,'Subject for Tell a Friend','2018-07-20 14:58:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(123,NULL,10,'Subject for Pledge Acknowledgment','2018-04-17 01:54:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(124,NULL,10,'Subject for Pledge Acknowledgment','2018-06-16 12:53:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(125,NULL,9,'Subject for Tell a Friend','2018-08-12 10:24:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(126,NULL,10,'Subject for Pledge Acknowledgment','2018-07-23 15:13:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(127,NULL,10,'Subject for Pledge Acknowledgment','2018-04-16 03:15:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(128,NULL,10,'Subject for Pledge Acknowledgment','2018-09-15 06:16:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(129,NULL,9,'Subject for Tell a Friend','2018-08-25 12:50:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(130,NULL,10,'Subject for Pledge Acknowledgment','2017-10-12 17:56:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(131,NULL,9,'Subject for Tell a Friend','2018-06-27 05:45:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(132,NULL,9,'Subject for Tell a Friend','2017-12-12 05:47:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(133,NULL,9,'Subject for Tell a Friend','2018-01-30 01:19:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(134,NULL,9,'Subject for Tell a Friend','2017-11-07 12:58:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(135,NULL,10,'Subject for Pledge Acknowledgment','2017-10-14 06:12:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(136,NULL,9,'Subject for Tell a Friend','2018-01-15 20:55:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(137,NULL,9,'Subject for Tell a Friend','2018-05-27 12:09:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(138,NULL,9,'Subject for Tell a Friend','2018-05-07 05:37:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(139,NULL,9,'Subject for Tell a Friend','2018-01-16 05:39:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(140,NULL,10,'Subject for Pledge Acknowledgment','2018-07-29 14:48:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(141,NULL,10,'Subject for Pledge Acknowledgment','2018-06-27 20:59:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(142,NULL,9,'Subject for Tell a Friend','2018-06-29 13:37:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(143,NULL,10,'Subject for Pledge Acknowledgment','2017-10-18 16:14:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(144,NULL,9,'Subject for Tell a Friend','2017-11-11 11:33:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(145,NULL,9,'Subject for Tell a Friend','2017-10-25 14:42:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(146,NULL,9,'Subject for Tell a Friend','2017-12-27 03:25:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(147,NULL,9,'Subject for Tell a Friend','2017-12-11 06:44:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(148,NULL,10,'Subject for Pledge Acknowledgment','2018-05-22 04:32:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(149,NULL,10,'Subject for Pledge Acknowledgment','2018-03-01 15:11:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(150,NULL,9,'Subject for Tell a Friend','2018-02-17 03:07:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(151,NULL,9,'Subject for Tell a Friend','2018-02-08 14:22:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(152,NULL,10,'Subject for Pledge Acknowledgment','2018-05-26 07:54:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(153,NULL,9,'Subject for Tell a Friend','2017-11-09 15:47:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(154,NULL,10,'Subject for Pledge Acknowledgment','2018-01-03 13:36:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(155,NULL,9,'Subject for Tell a Friend','2018-05-20 15:36:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(156,NULL,10,'Subject for Pledge Acknowledgment','2017-11-03 17:24:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(157,NULL,9,'Subject for Tell a Friend','2017-11-12 05:09:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(158,NULL,9,'Subject for Tell a Friend','2017-10-11 10:13:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(159,NULL,10,'Subject for Pledge Acknowledgment','2017-12-12 01:23:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(160,NULL,9,'Subject for Tell a Friend','2017-10-28 04:23:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(161,NULL,10,'Subject for Pledge Acknowledgment','2018-05-02 09:43:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(162,NULL,10,'Subject for Pledge Acknowledgment','2018-07-25 04:33:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(163,NULL,9,'Subject for Tell a Friend','2018-02-23 14:20:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(164,NULL,10,'Subject for Pledge Acknowledgment','2017-10-17 20:24:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(165,NULL,10,'Subject for Pledge Acknowledgment','2018-06-27 10:39:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(166,NULL,10,'Subject for Pledge Acknowledgment','2018-05-21 13:18:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(167,NULL,9,'Subject for Tell a Friend','2018-01-19 03:18:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(168,NULL,9,'Subject for Tell a Friend','2018-08-12 14:40:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(169,NULL,9,'Subject for Tell a Friend','2018-01-07 21:33:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(170,NULL,9,'Subject for Tell a Friend','2017-11-16 20:27:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(171,NULL,10,'Subject for Pledge Acknowledgment','2018-08-10 21:21:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(172,NULL,10,'Subject for Pledge Acknowledgment','2017-12-23 14:51:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(173,NULL,10,'Subject for Pledge Acknowledgment','2018-05-07 02:31:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(174,NULL,10,'Subject for Pledge Acknowledgment','2017-12-12 07:33:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(175,NULL,9,'Subject for Tell a Friend','2018-03-30 05:55:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(176,NULL,10,'Subject for Pledge Acknowledgment','2017-09-30 02:15:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(177,NULL,9,'Subject for Tell a Friend','2018-02-13 14:30:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(178,NULL,9,'Subject for Tell a Friend','2017-12-21 16:09:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(179,NULL,9,'Subject for Tell a Friend','2018-06-29 07:45:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(180,NULL,9,'Subject for Tell a Friend','2018-09-07 22:03:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(181,NULL,9,'Subject for Tell a Friend','2017-12-12 00:44:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(182,NULL,9,'Subject for Tell a Friend','2018-08-18 04:26:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(183,NULL,10,'Subject for Pledge Acknowledgment','2018-09-12 05:00:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(184,NULL,10,'Subject for Pledge Acknowledgment','2017-11-07 02:38:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(185,NULL,10,'Subject for Pledge Acknowledgment','2018-01-27 10:47:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(186,NULL,9,'Subject for Tell a Friend','2018-02-10 12:29:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(187,NULL,10,'Subject for Pledge Acknowledgment','2018-01-28 10:21:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(188,NULL,10,'Subject for Pledge Acknowledgment','2017-12-06 15:19:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(189,NULL,10,'Subject for Pledge Acknowledgment','2017-11-10 07:52:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(190,NULL,10,'Subject for Pledge Acknowledgment','2018-02-19 13:27:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(191,NULL,10,'Subject for Pledge Acknowledgment','2018-05-03 17:18:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(192,NULL,9,'Subject for Tell a Friend','2018-08-17 03:08:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(193,NULL,10,'Subject for Pledge Acknowledgment','2018-03-25 15:06:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(194,NULL,9,'Subject for Tell a Friend','2017-12-16 07:22:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(195,NULL,10,'Subject for Pledge Acknowledgment','2018-03-07 10:50:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(196,NULL,10,'Subject for Pledge Acknowledgment','2017-11-30 09:29:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(197,NULL,9,'Subject for Tell a Friend','2018-02-06 16:26:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(198,NULL,10,'Subject for Pledge Acknowledgment','2018-04-21 06:49:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(199,NULL,10,'Subject for Pledge Acknowledgment','2018-03-19 10:00:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(200,NULL,9,'Subject for Tell a Friend','2018-02-24 04:07:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(201,NULL,9,'Subject for Tell a Friend','2017-10-16 17:02:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(202,NULL,9,'Subject for Tell a Friend','2018-07-23 11:33:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(203,NULL,10,'Subject for Pledge Acknowledgment','2018-08-18 20:53:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(204,NULL,9,'Subject for Tell a Friend','2018-04-26 01:24:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(205,NULL,10,'Subject for Pledge Acknowledgment','2018-05-26 04:34:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(206,NULL,9,'Subject for Tell a Friend','2018-01-03 16:15:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(207,NULL,9,'Subject for Tell a Friend','2017-10-16 07:50:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(208,NULL,10,'Subject for Pledge Acknowledgment','2018-03-04 11:10:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(209,NULL,10,'Subject for Pledge Acknowledgment','2017-11-04 07:19:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(210,NULL,10,'Subject for Pledge Acknowledgment','2018-05-06 02:12:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(211,NULL,10,'Subject for Pledge Acknowledgment','2017-10-29 16:31:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(212,NULL,10,'Subject for Pledge Acknowledgment','2018-09-09 04:33:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(213,NULL,9,'Subject for Tell a Friend','2017-12-23 11:56:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(214,NULL,9,'Subject for Tell a Friend','2017-11-09 04:26:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(215,NULL,9,'Subject for Tell a Friend','2018-03-20 13:45:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(216,NULL,9,'Subject for Tell a Friend','2018-04-05 13:39:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(217,NULL,10,'Subject for Pledge Acknowledgment','2018-04-21 08:09:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(218,NULL,10,'Subject for Pledge Acknowledgment','2018-03-10 15:22:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(219,NULL,9,'Subject for Tell a Friend','2018-08-21 08:30:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(220,NULL,9,'Subject for Tell a Friend','2018-08-06 05:34:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(221,NULL,9,'Subject for Tell a Friend','2018-02-11 22:53:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(222,NULL,10,'Subject for Pledge Acknowledgment','2017-10-11 15:37:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(223,NULL,10,'Subject for Pledge Acknowledgment','2017-11-22 06:33:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(224,NULL,10,'Subject for Pledge Acknowledgment','2017-11-19 11:32:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(225,NULL,10,'Subject for Pledge Acknowledgment','2018-03-21 16:47:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(226,NULL,10,'Subject for Pledge Acknowledgment','2017-12-09 00:58:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(227,NULL,9,'Subject for Tell a Friend','2017-10-02 15:21:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(228,NULL,9,'Subject for Tell a Friend','2017-12-20 11:06:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(229,NULL,10,'Subject for Pledge Acknowledgment','2018-02-24 15:21:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(230,NULL,10,'Subject for Pledge Acknowledgment','2017-12-29 18:28:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(231,NULL,9,'Subject for Tell a Friend','2017-12-25 09:14:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(232,NULL,9,'Subject for Tell a Friend','2018-09-11 03:35:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(233,NULL,9,'Subject for Tell a Friend','2017-10-16 12:15:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(234,NULL,10,'Subject for Pledge Acknowledgment','2018-05-23 22:33:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(235,NULL,9,'Subject for Tell a Friend','2018-02-10 12:32:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(236,NULL,9,'Subject for Tell a Friend','2018-08-01 20:29:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(237,NULL,9,'Subject for Tell a Friend','2018-07-31 10:34:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(238,NULL,9,'Subject for Tell a Friend','2018-02-23 05:47:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(239,NULL,10,'Subject for Pledge Acknowledgment','2017-11-26 10:14:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(240,NULL,9,'Subject for Tell a Friend','2017-10-03 23:14:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(241,NULL,9,'Subject for Tell a Friend','2018-07-25 11:43:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(242,NULL,9,'Subject for Tell a Friend','2017-10-03 19:09:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(243,NULL,9,'Subject for Tell a Friend','2017-10-04 02:15:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(244,NULL,10,'Subject for Pledge Acknowledgment','2018-06-25 12:47:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(245,NULL,10,'Subject for Pledge Acknowledgment','2018-05-06 02:33:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(246,NULL,9,'Subject for Tell a Friend','2018-08-14 17:27:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(247,NULL,10,'Subject for Pledge Acknowledgment','2018-05-18 02:37:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(248,NULL,9,'Subject for Tell a Friend','2017-12-22 01:27:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(249,NULL,9,'Subject for Tell a Friend','2018-03-06 14:26:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(250,NULL,10,'Subject for Pledge Acknowledgment','2017-11-27 18:02:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(251,NULL,9,'Subject for Tell a Friend','2018-03-02 09:33:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(252,NULL,9,'Subject for Tell a Friend','2018-06-15 07:11:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(253,NULL,9,'Subject for Tell a Friend','2018-01-18 12:58:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(254,NULL,9,'Subject for Tell a Friend','2017-10-02 11:20:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(255,NULL,10,'Subject for Pledge Acknowledgment','2018-02-14 21:46:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(256,NULL,10,'Subject for Pledge Acknowledgment','2018-07-27 08:09:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(257,NULL,9,'Subject for Tell a Friend','2017-10-15 01:13:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(258,NULL,9,'Subject for Tell a Friend','2018-01-12 15:29:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(259,NULL,10,'Subject for Pledge Acknowledgment','2017-10-05 09:41:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(260,NULL,9,'Subject for Tell a Friend','2017-11-04 11:55:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(261,NULL,9,'Subject for Tell a Friend','2018-08-21 09:14:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(262,NULL,9,'Subject for Tell a Friend','2017-11-30 02:30:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(263,NULL,9,'Subject for Tell a Friend','2018-01-30 21:47:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(264,NULL,9,'Subject for Tell a Friend','2018-01-02 08:35:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(265,NULL,9,'Subject for Tell a Friend','2018-04-27 23:59:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(266,NULL,9,'Subject for Tell a Friend','2017-11-18 09:43:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(267,NULL,9,'Subject for Tell a Friend','2018-07-10 07:04:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(268,NULL,9,'Subject for Tell a Friend','2017-12-03 03:56:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(269,NULL,9,'Subject for Tell a Friend','2018-02-02 10:33:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(270,NULL,9,'Subject for Tell a Friend','2017-10-20 15:23:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(271,NULL,10,'Subject for Pledge Acknowledgment','2018-05-17 05:17:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(272,NULL,10,'Subject for Pledge Acknowledgment','2018-01-23 06:02:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(273,NULL,10,'Subject for Pledge Acknowledgment','2018-02-25 01:00:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(274,NULL,9,'Subject for Tell a Friend','2018-01-10 03:42:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(275,NULL,10,'Subject for Pledge Acknowledgment','2018-08-24 10:24:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(276,NULL,10,'Subject for Pledge Acknowledgment','2017-10-24 05:00:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(277,NULL,10,'Subject for Pledge Acknowledgment','2018-02-16 00:59:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(278,NULL,9,'Subject for Tell a Friend','2018-02-28 13:08:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(279,NULL,9,'Subject for Tell a Friend','2018-02-23 22:49:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(280,NULL,10,'Subject for Pledge Acknowledgment','2018-04-27 16:44:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(281,NULL,9,'Subject for Tell a Friend','2018-03-08 00:48:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(282,NULL,10,'Subject for Pledge Acknowledgment','2017-11-29 10:23:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(283,NULL,9,'Subject for Tell a Friend','2017-11-14 01:30:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(284,NULL,10,'Subject for Pledge Acknowledgment','2018-08-27 19:49:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(285,NULL,9,'Subject for Tell a Friend','2018-02-02 08:12:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(286,NULL,9,'Subject for Tell a Friend','2017-10-01 18:53:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(287,NULL,9,'Subject for Tell a Friend','2018-07-14 14:51:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(288,NULL,10,'Subject for Pledge Acknowledgment','2018-05-10 17:06:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(289,NULL,9,'Subject for Tell a Friend','2018-07-22 06:51:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(290,NULL,9,'Subject for Tell a Friend','2018-07-02 15:09:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(291,NULL,10,'Subject for Pledge Acknowledgment','2018-08-17 22:25:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(292,NULL,10,'Subject for Pledge Acknowledgment','2018-05-28 11:52:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(293,NULL,10,'Subject for Pledge Acknowledgment','2018-07-04 13:10:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(294,NULL,10,'Subject for Pledge Acknowledgment','2017-12-05 22:59:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(295,NULL,9,'Subject for Tell a Friend','2017-12-27 06:36:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(296,NULL,10,'Subject for Pledge Acknowledgment','2018-06-10 21:56:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(297,NULL,10,'Subject for Pledge Acknowledgment','2018-07-19 22:01:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(298,NULL,9,'Subject for Tell a Friend','2017-12-23 01:00:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(299,NULL,10,'Subject for Pledge Acknowledgment','2018-07-01 06:18:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(300,NULL,9,'Subject for Tell a Friend','2017-11-28 08:26:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(301,NULL,9,'Subject for Tell a Friend','2018-07-03 13:02:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(302,NULL,10,'Subject for Pledge Acknowledgment','2018-02-25 05:05:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(303,NULL,10,'Subject for Pledge Acknowledgment','2018-03-16 16:54:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(304,NULL,10,'Subject for Pledge Acknowledgment','2018-02-07 17:10:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(305,NULL,10,'Subject for Pledge Acknowledgment','2017-10-27 11:58:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(306,NULL,9,'Subject for Tell a Friend','2018-03-23 07:06:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(307,NULL,10,'Subject for Pledge Acknowledgment','2018-08-05 08:59:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(308,NULL,10,'Subject for Pledge Acknowledgment','2018-03-27 14:26:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(309,NULL,9,'Subject for Tell a Friend','2017-10-19 11:26:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(310,NULL,10,'Subject for Pledge Acknowledgment','2018-02-09 10:55:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(311,NULL,10,'Subject for Pledge Acknowledgment','2017-10-27 19:46:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(312,NULL,10,'Subject for Pledge Acknowledgment','2018-05-20 18:32:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(313,NULL,10,'Subject for Pledge Acknowledgment','2017-10-28 18:00:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(314,NULL,9,'Subject for Tell a Friend','2018-09-15 04:36:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(315,NULL,10,'Subject for Pledge Acknowledgment','2018-07-02 01:48:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(316,NULL,10,'Subject for Pledge Acknowledgment','2017-10-06 15:45:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(317,NULL,10,'Subject for Pledge Acknowledgment','2018-03-12 04:45:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(318,NULL,10,'Subject for Pledge Acknowledgment','2018-03-07 18:03:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(319,NULL,9,'Subject for Tell a Friend','2018-03-06 08:51:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(320,NULL,9,'Subject for Tell a Friend','2018-01-07 03:29:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(321,NULL,10,'Subject for Pledge Acknowledgment','2017-11-23 08:45:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(322,NULL,9,'Subject for Tell a Friend','2018-01-11 18:34:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(323,NULL,9,'Subject for Tell a Friend','2018-01-29 04:47:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(324,NULL,9,'Subject for Tell a Friend','2018-02-26 23:21:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(325,NULL,9,'Subject for Tell a Friend','2018-03-13 15:36:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(326,NULL,10,'Subject for Pledge Acknowledgment','2018-07-15 02:34:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(327,NULL,10,'Subject for Pledge Acknowledgment','2018-09-13 07:40:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(328,NULL,10,'Subject for Pledge Acknowledgment','2018-07-24 03:26:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(329,NULL,9,'Subject for Tell a Friend','2018-04-30 09:28:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(330,NULL,9,'Subject for Tell a Friend','2018-07-14 13:27:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(331,NULL,9,'Subject for Tell a Friend','2018-02-07 19:35:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(332,NULL,10,'Subject for Pledge Acknowledgment','2018-01-14 15:36:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(333,NULL,10,'Subject for Pledge Acknowledgment','2018-04-07 11:12:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(334,NULL,10,'Subject for Pledge Acknowledgment','2017-12-28 18:02:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(335,NULL,10,'Subject for Pledge Acknowledgment','2018-02-05 20:33:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(336,NULL,9,'Subject for Tell a Friend','2018-08-03 20:29:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(337,NULL,9,'Subject for Tell a Friend','2017-12-28 01:58:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(338,NULL,10,'Subject for Pledge Acknowledgment','2018-06-03 04:39:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(339,NULL,10,'Subject for Pledge Acknowledgment','2017-10-25 18:41:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(340,NULL,9,'Subject for Tell a Friend','2018-07-11 17:35:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(341,NULL,9,'Subject for Tell a Friend','2018-03-10 03:24:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(342,NULL,10,'Subject for Pledge Acknowledgment','2018-08-26 01:19:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(343,NULL,10,'Subject for Pledge Acknowledgment','2018-05-14 13:32:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(344,NULL,10,'Subject for Pledge Acknowledgment','2017-10-07 05:43:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(345,NULL,10,'Subject for Pledge Acknowledgment','2018-07-30 23:08:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(346,NULL,9,'Subject for Tell a Friend','2017-10-28 03:35:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(347,NULL,9,'Subject for Tell a Friend','2018-07-24 23:36:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(348,NULL,9,'Subject for Tell a Friend','2018-09-11 08:04:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(349,NULL,9,'Subject for Tell a Friend','2018-02-25 00:00:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(350,NULL,9,'Subject for Tell a Friend','2018-09-06 00:16:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(351,NULL,10,'Subject for Pledge Acknowledgment','2018-05-04 10:33:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(352,NULL,10,'Subject for Pledge Acknowledgment','2018-06-30 15:57:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(353,NULL,10,'Subject for Pledge Acknowledgment','2018-09-15 16:00:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(354,NULL,10,'Subject for Pledge Acknowledgment','2018-06-07 19:05:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(355,NULL,10,'Subject for Pledge Acknowledgment','2018-03-18 19:42:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(356,NULL,9,'Subject for Tell a Friend','2017-09-25 23:46:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(357,NULL,9,'Subject for Tell a Friend','2018-02-28 00:20:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(358,NULL,9,'Subject for Tell a Friend','2018-01-26 05:58:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(359,NULL,10,'Subject for Pledge Acknowledgment','2018-08-04 08:20:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(360,NULL,9,'Subject for Tell a Friend','2017-10-13 01:28:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(361,NULL,9,'Subject for Tell a Friend','2018-05-05 15:02:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(362,NULL,10,'Subject for Pledge Acknowledgment','2017-11-20 05:40:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(363,NULL,10,'Subject for Pledge Acknowledgment','2018-09-08 08:34:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(364,NULL,9,'Subject for Tell a Friend','2017-11-27 01:36:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(365,NULL,10,'Subject for Pledge Acknowledgment','2018-05-01 00:58:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(366,NULL,9,'Subject for Tell a Friend','2018-04-23 10:56:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(367,NULL,9,'Subject for Tell a Friend','2017-11-05 01:10:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(368,NULL,10,'Subject for Pledge Acknowledgment','2018-07-15 21:13:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(369,NULL,10,'Subject for Pledge Acknowledgment','2018-02-26 23:56:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(370,NULL,10,'Subject for Pledge Acknowledgment','2018-01-28 05:54:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(371,NULL,10,'Subject for Pledge Acknowledgment','2018-08-16 23:23:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(372,NULL,10,'Subject for Pledge Acknowledgment','2018-04-04 23:02:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(373,NULL,10,'Subject for Pledge Acknowledgment','2018-02-22 14:02:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(374,NULL,9,'Subject for Tell a Friend','2018-01-07 07:38:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(375,NULL,10,'Subject for Pledge Acknowledgment','2017-10-16 07:55:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(376,NULL,9,'Subject for Tell a Friend','2017-10-07 00:15:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(377,NULL,10,'Subject for Pledge Acknowledgment','2018-08-21 03:44:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(378,NULL,9,'Subject for Tell a Friend','2018-07-31 01:05:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(379,NULL,9,'Subject for Tell a Friend','2018-05-06 02:53:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(380,NULL,9,'Subject for Tell a Friend','2018-03-05 08:47:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(381,NULL,9,'Subject for Tell a Friend','2017-11-03 08:20:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(382,NULL,10,'Subject for Pledge Acknowledgment','2017-12-04 05:25:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(383,NULL,10,'Subject for Pledge Acknowledgment','2018-08-11 14:24:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(384,NULL,10,'Subject for Pledge Acknowledgment','2017-10-24 04:45:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(385,NULL,9,'Subject for Tell a Friend','2017-10-08 02:52:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(386,NULL,9,'Subject for Tell a Friend','2017-11-14 09:14:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(387,NULL,10,'Subject for Pledge Acknowledgment','2017-12-27 08:46:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(388,NULL,10,'Subject for Pledge Acknowledgment','2018-05-17 19:27:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(389,NULL,9,'Subject for Tell a Friend','2017-11-30 15:32:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(390,NULL,10,'Subject for Pledge Acknowledgment','2018-01-07 23:31:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(391,NULL,9,'Subject for Tell a Friend','2017-10-28 01:28:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(392,NULL,10,'Subject for Pledge Acknowledgment','2018-05-11 14:42:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(393,NULL,10,'Subject for Pledge Acknowledgment','2018-09-12 23:42:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(394,NULL,9,'Subject for Tell a Friend','2018-01-20 19:27:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(395,NULL,10,'Subject for Pledge Acknowledgment','2017-09-24 12:04:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(396,NULL,9,'Subject for Tell a Friend','2018-09-19 01:15:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(397,NULL,9,'Subject for Tell a Friend','2018-08-05 23:05:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(398,NULL,9,'Subject for Tell a Friend','2017-10-14 11:49:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(399,NULL,9,'Subject for Tell a Friend','2018-07-21 19:43:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(400,NULL,9,'Subject for Tell a Friend','2018-04-16 04:17:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(401,NULL,9,'Subject for Tell a Friend','2017-12-20 04:50:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(402,NULL,9,'Subject for Tell a Friend','2017-12-21 17:52:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(403,NULL,10,'Subject for Pledge Acknowledgment','2018-06-29 12:05:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(404,NULL,10,'Subject for Pledge Acknowledgment','2018-08-15 18:39:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(405,NULL,10,'Subject for Pledge Acknowledgment','2017-10-03 18:51:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(406,NULL,10,'Subject for Pledge Acknowledgment','2018-02-14 12:38:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(407,NULL,9,'Subject for Tell a Friend','2018-08-10 11:02:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(408,NULL,10,'Subject for Pledge Acknowledgment','2017-10-25 01:55:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(409,NULL,10,'Subject for Pledge Acknowledgment','2018-03-18 10:46:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(410,NULL,10,'Subject for Pledge Acknowledgment','2017-10-08 13:41:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(411,NULL,9,'Subject for Tell a Friend','2018-01-14 08:38:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(412,NULL,9,'Subject for Tell a Friend','2017-09-25 17:31:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(413,NULL,9,'Subject for Tell a Friend','2017-12-14 19:18:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(414,NULL,10,'Subject for Pledge Acknowledgment','2018-01-08 23:25:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(415,NULL,10,'Subject for Pledge Acknowledgment','2018-09-17 04:32:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(416,NULL,10,'Subject for Pledge Acknowledgment','2017-11-25 11:09:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(417,NULL,9,'Subject for Tell a Friend','2018-05-25 10:41:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(418,NULL,10,'Subject for Pledge Acknowledgment','2018-08-28 20:52:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(419,NULL,9,'Subject for Tell a Friend','2018-01-20 15:44:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(420,NULL,9,'Subject for Tell a Friend','2018-08-13 12:34:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(421,NULL,9,'Subject for Tell a Friend','2018-01-07 07:40:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(422,NULL,10,'Subject for Pledge Acknowledgment','2017-11-11 18:03:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(423,NULL,10,'Subject for Pledge Acknowledgment','2018-08-04 04:15:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(424,NULL,9,'Subject for Tell a Friend','2018-01-18 09:34:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(425,NULL,10,'Subject for Pledge Acknowledgment','2017-12-04 06:41:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(426,NULL,9,'Subject for Tell a Friend','2018-08-04 17:14:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(427,NULL,10,'Subject for Pledge Acknowledgment','2018-05-01 03:16:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(428,NULL,9,'Subject for Tell a Friend','2018-04-28 14:42:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(429,NULL,9,'Subject for Tell a Friend','2018-07-21 21:56:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(430,NULL,9,'Subject for Tell a Friend','2018-01-26 06:08:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(431,NULL,9,'Subject for Tell a Friend','2018-07-18 23:46:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(432,NULL,10,'Subject for Pledge Acknowledgment','2018-01-07 12:29:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(433,NULL,10,'Subject for Pledge Acknowledgment','2018-01-25 07:33:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(434,NULL,9,'Subject for Tell a Friend','2017-10-26 00:17:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(435,NULL,10,'Subject for Pledge Acknowledgment','2017-10-31 14:09:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(436,NULL,10,'Subject for Pledge Acknowledgment','2018-09-13 10:35:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(437,NULL,9,'Subject for Tell a Friend','2018-04-14 15:49:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(438,NULL,10,'Subject for Pledge Acknowledgment','2018-04-27 02:35:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(439,NULL,9,'Subject for Tell a Friend','2018-07-17 18:51:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(440,NULL,9,'Subject for Tell a Friend','2018-03-11 13:11:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(441,NULL,9,'Subject for Tell a Friend','2018-02-28 05:43:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(442,NULL,9,'Subject for Tell a Friend','2017-12-27 05:50:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(443,NULL,10,'Subject for Pledge Acknowledgment','2018-02-15 13:09:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(444,NULL,9,'Subject for Tell a Friend','2017-12-15 10:57:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(445,NULL,9,'Subject for Tell a Friend','2018-06-17 19:57:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(446,NULL,9,'Subject for Tell a Friend','2017-12-29 06:35:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(447,NULL,10,'Subject for Pledge Acknowledgment','2018-08-14 01:01:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(448,NULL,9,'Subject for Tell a Friend','2017-10-28 00:55:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(449,NULL,9,'Subject for Tell a Friend','2017-12-31 20:13:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(450,NULL,10,'Subject for Pledge Acknowledgment','2018-03-02 14:08:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(451,1,6,'$ 125.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(452,2,6,'$ 50.00-Online: Save the Penguins','2010-03-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(453,3,6,'$ 25.00-Apr 2007 Mailer 1','2010-04-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(454,4,6,'$ 50.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(455,5,6,'$ 500.00-Apr 2007 Mailer 1','2010-04-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(456,6,6,'$ 175.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(457,7,6,'$ 50.00-Online: Save the Penguins','2010-03-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(458,8,6,'$ 10.00-Online: Save the Penguins','2010-03-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(459,9,6,'$ 250.00-Online: Save the Penguins','2010-04-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(460,10,6,NULL,'2009-07-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(461,11,6,NULL,'2009-07-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(462,12,6,NULL,'2009-10-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(463,13,6,NULL,'2009-12-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(464,1,7,'General','2018-09-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(465,2,7,'Student','2018-09-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(466,3,7,'General','2018-09-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(467,4,7,'Student','2018-09-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(468,5,7,'General','2016-08-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(469,6,7,'Student','2018-09-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(470,7,7,'General','2018-09-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(471,8,7,'Student','2018-09-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(472,9,7,'General','2018-09-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(473,10,7,'General','2016-07-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(474,11,7,'Lifetime','2018-09-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(475,12,7,'Student','2018-09-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(476,13,7,'General','2018-09-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(477,14,7,'Student','2018-09-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(478,15,7,'General','2016-05-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(479,16,7,'Student','2018-09-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(480,17,7,'General','2018-09-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(481,18,7,'Student','2018-09-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(482,19,7,'General','2018-09-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(483,20,7,'General','2016-04-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(484,21,7,'General','2018-08-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(485,22,7,'Lifetime','2018-08-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(486,23,7,'General','2018-08-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(487,24,7,'Student','2018-08-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(488,25,7,'General','2016-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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(489,26,7,'Student','2018-08-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(490,27,7,'General','2018-08-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(491,28,7,'Student','2018-08-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(492,29,7,'General','2018-08-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(493,30,7,'Student','2017-08-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(494,14,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(495,15,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(496,16,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(497,17,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(498,18,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(499,19,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(500,20,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(501,21,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(502,22,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(503,23,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(504,24,6,'$ 1200.00 - Lifetime Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(505,25,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(506,26,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(507,27,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(508,28,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(509,29,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(510,30,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(511,31,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(512,32,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(513,33,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(514,34,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(515,35,6,'$ 1200.00 - Lifetime Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(516,36,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(517,37,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(518,38,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(519,39,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(520,40,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(521,41,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(522,42,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(523,43,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(525,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(526,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(527,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(528,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(529,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(530,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(531,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(532,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(533,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(534,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(535,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(536,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(537,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(538,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(539,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(540,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(541,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(542,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(543,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(544,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(545,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(546,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(547,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(548,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(549,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(550,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(551,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(552,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(553,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(554,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(555,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(556,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(557,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(558,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(559,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(560,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(561,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(562,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(563,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(564,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(565,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(566,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(567,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(568,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(569,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(570,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(571,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(572,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(573,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(574,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,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(575,45,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(576,46,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(577,47,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(578,48,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(579,49,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(580,50,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(581,51,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(582,52,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(583,53,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(584,54,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(585,55,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(586,56,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(587,57,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(588,58,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(589,59,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(590,60,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(591,61,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(592,62,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(593,63,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(594,64,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(595,65,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(596,66,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(597,67,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(599,69,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(600,70,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(601,71,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(602,72,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(603,73,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(604,74,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(605,75,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(606,76,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(608,78,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(609,79,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(610,80,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(612,82,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(613,83,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(614,84,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(616,86,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(617,87,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(618,88,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(619,89,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(621,91,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(622,92,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(623,93,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'),(624,94,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 13:23:52',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-19 20:23:52','2018-09-19 20:23:52'); +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,10,'Subject for Pledge Acknowledgment','2017-12-03 13:14:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(2,NULL,10,'Subject for Pledge Acknowledgment','2018-04-03 18:42:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(3,NULL,9,'Subject for Tell a Friend','2017-12-27 01:07:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(4,NULL,9,'Subject for Tell a Friend','2017-11-19 21:55:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(5,NULL,9,'Subject for Tell a Friend','2018-04-04 08:22:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(6,NULL,10,'Subject for Pledge Acknowledgment','2018-01-11 10:02:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(7,NULL,10,'Subject for Pledge Acknowledgment','2018-06-23 22:56:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(8,NULL,9,'Subject for Tell a Friend','2018-04-01 23:44:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(9,NULL,9,'Subject for Tell a Friend','2017-11-09 05:35:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(10,NULL,10,'Subject for Pledge Acknowledgment','2017-11-01 11:42:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(11,NULL,9,'Subject for Tell a Friend','2017-09-20 10:59:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(12,NULL,9,'Subject for Tell a Friend','2018-08-18 09:35:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(13,NULL,9,'Subject for Tell a Friend','2018-07-20 19:59:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(14,NULL,10,'Subject for Pledge Acknowledgment','2018-01-12 17:15:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(15,NULL,10,'Subject for Pledge Acknowledgment','2018-08-19 11:17:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(16,NULL,10,'Subject for Pledge Acknowledgment','2018-04-03 20:27:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(17,NULL,9,'Subject for Tell a Friend','2017-11-27 12:37:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(18,NULL,10,'Subject for Pledge Acknowledgment','2018-02-02 18:38:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(19,NULL,9,'Subject for Tell a Friend','2017-10-04 18:15:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(20,NULL,9,'Subject for Tell a Friend','2017-10-16 11:42:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(21,NULL,9,'Subject for Tell a Friend','2018-05-03 12:49:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(22,NULL,9,'Subject for Tell a Friend','2018-07-25 03:04:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(23,NULL,10,'Subject for Pledge Acknowledgment','2018-09-17 10:33:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(24,NULL,9,'Subject for Tell a Friend','2018-08-31 21:55:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(25,NULL,10,'Subject for Pledge Acknowledgment','2018-08-22 20:45:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(26,NULL,10,'Subject for Pledge Acknowledgment','2018-09-01 02:17:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(27,NULL,10,'Subject for Pledge Acknowledgment','2018-07-04 23:24:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(28,NULL,9,'Subject for Tell a Friend','2018-04-08 21:22:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(29,NULL,10,'Subject for Pledge Acknowledgment','2018-09-19 08:39:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(30,NULL,10,'Subject for Pledge Acknowledgment','2018-03-16 10:18:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(31,NULL,9,'Subject for Tell a Friend','2018-06-11 07:42:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(32,NULL,10,'Subject for Pledge Acknowledgment','2018-04-30 01:01:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(33,NULL,10,'Subject for Pledge Acknowledgment','2018-06-26 01:46:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(34,NULL,9,'Subject for Tell a Friend','2018-07-16 04:18:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(35,NULL,10,'Subject for Pledge Acknowledgment','2017-12-09 07:11:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(36,NULL,10,'Subject for Pledge Acknowledgment','2018-06-17 04:49:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(37,NULL,10,'Subject for Pledge Acknowledgment','2017-11-05 19:01:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(38,NULL,10,'Subject for Pledge Acknowledgment','2017-12-02 19:09:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(39,NULL,10,'Subject for Pledge Acknowledgment','2018-01-10 08:44:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(40,NULL,10,'Subject for Pledge Acknowledgment','2018-06-04 18:01:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(41,NULL,10,'Subject for Pledge Acknowledgment','2018-04-19 08:06:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(42,NULL,9,'Subject for Tell a Friend','2017-12-14 05:46:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(43,NULL,9,'Subject for Tell a Friend','2017-09-24 02:32:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(44,NULL,9,'Subject for Tell a Friend','2017-09-28 13:53:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(45,NULL,9,'Subject for Tell a Friend','2017-12-10 11:22:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(46,NULL,9,'Subject for Tell a Friend','2018-01-06 13:41:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(47,NULL,9,'Subject for Tell a Friend','2018-04-13 11:03:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(48,NULL,10,'Subject for Pledge Acknowledgment','2017-11-07 18:03:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(49,NULL,9,'Subject for Tell a Friend','2018-03-14 01:15:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(50,NULL,9,'Subject for Tell a Friend','2018-04-23 23:27:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(51,NULL,9,'Subject for Tell a Friend','2017-11-05 22:00:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(52,NULL,9,'Subject for Tell a Friend','2018-05-23 06:47:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(53,NULL,10,'Subject for Pledge Acknowledgment','2018-03-01 18:17:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(54,NULL,10,'Subject for Pledge Acknowledgment','2018-02-17 11:05:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(55,NULL,9,'Subject for Tell a Friend','2018-07-25 17:18:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(56,NULL,9,'Subject for Tell a Friend','2018-05-07 13:34:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(57,NULL,9,'Subject for Tell a Friend','2018-01-22 10:26:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(58,NULL,9,'Subject for Tell a Friend','2018-04-07 22:29:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(59,NULL,9,'Subject for Tell a Friend','2017-12-29 17:58:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(60,NULL,10,'Subject for Pledge Acknowledgment','2017-12-14 21:25:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(61,NULL,9,'Subject for Tell a Friend','2018-04-07 02:14:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(62,NULL,9,'Subject for Tell a Friend','2018-01-05 05:05:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(63,NULL,9,'Subject for Tell a Friend','2018-07-08 15:05:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(64,NULL,9,'Subject for Tell a Friend','2017-09-24 04:45:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(65,NULL,10,'Subject for Pledge Acknowledgment','2018-02-15 08:35:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(66,NULL,9,'Subject for Tell a Friend','2017-11-17 17:12:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(67,NULL,9,'Subject for Tell a Friend','2017-11-28 09:03:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(68,NULL,10,'Subject for Pledge Acknowledgment','2018-04-10 11:24:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(69,NULL,10,'Subject for Pledge Acknowledgment','2018-03-11 07:51:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(70,NULL,10,'Subject for Pledge Acknowledgment','2017-12-24 22:03:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(71,NULL,10,'Subject for Pledge Acknowledgment','2018-05-26 16:51:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(72,NULL,10,'Subject for Pledge Acknowledgment','2018-03-10 05:10:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(73,NULL,9,'Subject for Tell a Friend','2018-08-25 23:34:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(74,NULL,9,'Subject for Tell a Friend','2018-02-22 14:28:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(75,NULL,10,'Subject for Pledge Acknowledgment','2018-05-27 09:11:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(76,NULL,10,'Subject for Pledge Acknowledgment','2018-09-04 22:45:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(77,NULL,10,'Subject for Pledge Acknowledgment','2018-02-14 10:34:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(78,NULL,9,'Subject for Tell a Friend','2018-04-15 02:22:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(79,NULL,10,'Subject for Pledge Acknowledgment','2018-04-22 14:19:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(80,NULL,9,'Subject for Tell a Friend','2018-07-04 16:49:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(81,NULL,10,'Subject for Pledge Acknowledgment','2018-08-02 10:55:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(82,NULL,9,'Subject for Tell a Friend','2017-09-29 08:48:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(83,NULL,9,'Subject for Tell a Friend','2018-07-09 03:07:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(84,NULL,9,'Subject for Tell a Friend','2017-11-09 09:10:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(85,NULL,10,'Subject for Pledge Acknowledgment','2018-06-24 04:00:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(86,NULL,9,'Subject for Tell a Friend','2018-05-25 19:54:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(87,NULL,9,'Subject for Tell a Friend','2018-01-17 00:17:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(88,NULL,10,'Subject for Pledge Acknowledgment','2018-08-03 22:06:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(89,NULL,10,'Subject for Pledge Acknowledgment','2018-08-15 16:00:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(90,NULL,10,'Subject for Pledge Acknowledgment','2017-12-09 17:49:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(91,NULL,9,'Subject for Tell a Friend','2017-10-19 01:10:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(92,NULL,10,'Subject for Pledge Acknowledgment','2018-04-06 02:02:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(93,NULL,9,'Subject for Tell a Friend','2018-06-21 00:04:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(94,NULL,10,'Subject for Pledge Acknowledgment','2017-11-13 00:55:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(95,NULL,10,'Subject for Pledge Acknowledgment','2018-05-12 09:11:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(96,NULL,9,'Subject for Tell a Friend','2017-10-22 00:05:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(97,NULL,10,'Subject for Pledge Acknowledgment','2018-07-01 06:42:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(98,NULL,10,'Subject for Pledge Acknowledgment','2018-02-08 17:33:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(99,NULL,9,'Subject for Tell a Friend','2017-09-23 21:22:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(100,NULL,9,'Subject for Tell a Friend','2018-07-24 10:21:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(101,NULL,9,'Subject for Tell a Friend','2018-01-18 16:50:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(102,NULL,10,'Subject for Pledge Acknowledgment','2018-03-20 12:51:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(103,NULL,9,'Subject for Tell a Friend','2018-05-01 02:04:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(104,NULL,10,'Subject for Pledge Acknowledgment','2018-07-10 23:47:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(105,NULL,10,'Subject for Pledge Acknowledgment','2018-04-15 01:37:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(106,NULL,9,'Subject for Tell a Friend','2018-01-26 16:43:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(107,NULL,9,'Subject for Tell a Friend','2018-01-30 02:07:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(108,NULL,9,'Subject for Tell a Friend','2018-09-08 08:34:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(109,NULL,10,'Subject for Pledge Acknowledgment','2017-10-24 03:30:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(110,NULL,10,'Subject for Pledge Acknowledgment','2018-06-20 01:51:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(111,NULL,10,'Subject for Pledge Acknowledgment','2018-08-31 08:46:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(112,NULL,9,'Subject for Tell a Friend','2018-01-06 16:00:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(113,NULL,9,'Subject for Tell a Friend','2017-10-12 07:17:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(114,NULL,9,'Subject for Tell a Friend','2018-09-17 07:38:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(115,NULL,10,'Subject for Pledge Acknowledgment','2018-09-16 00:55:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(116,NULL,9,'Subject for Tell a Friend','2018-03-07 16:28:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(117,NULL,9,'Subject for Tell a Friend','2018-02-28 22:27:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(118,NULL,9,'Subject for Tell a Friend','2018-05-16 12:29:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(119,NULL,10,'Subject for Pledge Acknowledgment','2018-02-11 22:38:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(120,NULL,10,'Subject for Pledge Acknowledgment','2018-05-05 02:16:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(121,NULL,10,'Subject for Pledge Acknowledgment','2018-02-20 15:52:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(122,NULL,10,'Subject for Pledge Acknowledgment','2017-10-16 10:37:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(123,NULL,10,'Subject for Pledge Acknowledgment','2018-02-11 12:30:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(124,NULL,10,'Subject for Pledge Acknowledgment','2018-03-05 18:52:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(125,NULL,9,'Subject for Tell a Friend','2017-11-11 12:58:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(126,NULL,9,'Subject for Tell a Friend','2017-12-29 23:53:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(127,NULL,9,'Subject for Tell a Friend','2017-10-08 21:00:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(128,NULL,9,'Subject for Tell a Friend','2017-09-20 17:35:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(129,NULL,10,'Subject for Pledge Acknowledgment','2017-10-21 10:57:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(130,NULL,9,'Subject for Tell a Friend','2017-12-23 10:46:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(131,NULL,9,'Subject for Tell a Friend','2018-02-25 20:17:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(132,NULL,9,'Subject for Tell a Friend','2018-06-22 02:47:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(133,NULL,9,'Subject for Tell a Friend','2018-07-10 19:57:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(134,NULL,10,'Subject for Pledge Acknowledgment','2018-01-12 06:20:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(135,NULL,9,'Subject for Tell a Friend','2018-06-06 15:05:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(136,NULL,10,'Subject for Pledge Acknowledgment','2018-02-18 05:15:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(137,NULL,9,'Subject for Tell a Friend','2018-01-10 18:00:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(138,NULL,10,'Subject for Pledge Acknowledgment','2018-05-24 03:14:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(139,NULL,10,'Subject for Pledge Acknowledgment','2018-08-19 06:25:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(140,NULL,9,'Subject for Tell a Friend','2017-11-01 17:33:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(141,NULL,9,'Subject for Tell a Friend','2018-01-10 15:31:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(142,NULL,10,'Subject for Pledge Acknowledgment','2017-12-01 13:39:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(143,NULL,9,'Subject for Tell a Friend','2018-08-03 16:22:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(144,NULL,10,'Subject for Pledge Acknowledgment','2018-08-14 19:43:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(145,NULL,9,'Subject for Tell a Friend','2018-09-17 11:12:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(146,NULL,10,'Subject for Pledge Acknowledgment','2018-03-02 07:03:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(147,NULL,10,'Subject for Pledge Acknowledgment','2018-08-23 00:08:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(148,NULL,10,'Subject for Pledge Acknowledgment','2017-12-24 07:46:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(149,NULL,9,'Subject for Tell a Friend','2018-01-03 20:41:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(150,NULL,9,'Subject for Tell a Friend','2018-08-11 01:59:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(151,NULL,10,'Subject for Pledge Acknowledgment','2018-05-27 09:44:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(152,NULL,10,'Subject for Pledge Acknowledgment','2018-07-03 14:51:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(153,NULL,10,'Subject for Pledge Acknowledgment','2018-01-07 07:03:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(154,NULL,9,'Subject for Tell a Friend','2017-12-04 12:32:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(155,NULL,9,'Subject for Tell a Friend','2018-02-25 14:22:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(156,NULL,10,'Subject for Pledge Acknowledgment','2018-03-21 11:32:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(157,NULL,9,'Subject for Tell a Friend','2017-10-29 07:38:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(158,NULL,10,'Subject for Pledge Acknowledgment','2017-09-30 12:38:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(159,NULL,9,'Subject for Tell a Friend','2018-03-27 09:53:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(160,NULL,9,'Subject for Tell a Friend','2018-04-15 12:06:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(161,NULL,9,'Subject for Tell a Friend','2018-08-17 21:11:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(162,NULL,10,'Subject for Pledge Acknowledgment','2018-01-19 16:22:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(163,NULL,9,'Subject for Tell a Friend','2018-03-08 23:59:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(164,NULL,10,'Subject for Pledge Acknowledgment','2018-08-16 11:30:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(165,NULL,9,'Subject for Tell a Friend','2018-03-01 16:08:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(166,NULL,10,'Subject for Pledge Acknowledgment','2018-05-31 15:07:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(167,NULL,9,'Subject for Tell a Friend','2018-03-05 12:33:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(168,NULL,10,'Subject for Pledge Acknowledgment','2018-09-18 02:58:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(169,NULL,9,'Subject for Tell a Friend','2018-03-05 02:12:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(170,NULL,9,'Subject for Tell a Friend','2017-10-10 22:01:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(171,NULL,9,'Subject for Tell a Friend','2018-06-06 17:08:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(172,NULL,10,'Subject for Pledge Acknowledgment','2018-01-26 23:19:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(173,NULL,10,'Subject for Pledge Acknowledgment','2018-08-31 23:37:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(174,NULL,10,'Subject for Pledge Acknowledgment','2017-10-16 21:30:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(175,NULL,9,'Subject for Tell a Friend','2017-09-21 23:15:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(176,NULL,10,'Subject for Pledge Acknowledgment','2018-02-04 20:34:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(177,NULL,9,'Subject for Tell a Friend','2017-12-10 12:50:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(178,NULL,10,'Subject for Pledge Acknowledgment','2018-03-12 12:03:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(179,NULL,10,'Subject for Pledge Acknowledgment','2017-11-25 14:16:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(180,NULL,10,'Subject for Pledge Acknowledgment','2018-04-07 22:23:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(181,NULL,9,'Subject for Tell a Friend','2018-01-28 09:37:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(182,NULL,9,'Subject for Tell a Friend','2018-06-25 21:34:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(183,NULL,9,'Subject for Tell a Friend','2018-05-01 15:00:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(184,NULL,10,'Subject for Pledge Acknowledgment','2018-09-04 20:34:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(185,NULL,9,'Subject for Tell a Friend','2018-07-06 00:04:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(186,NULL,10,'Subject for Pledge Acknowledgment','2018-05-29 15:51:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(187,NULL,9,'Subject for Tell a Friend','2018-08-11 13:33:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(188,NULL,9,'Subject for Tell a Friend','2018-06-04 01:01:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(189,NULL,10,'Subject for Pledge Acknowledgment','2018-01-01 06:16:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(190,NULL,10,'Subject for Pledge Acknowledgment','2018-03-24 10:34:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(191,NULL,9,'Subject for Tell a Friend','2018-08-18 08:51:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(192,NULL,9,'Subject for Tell a Friend','2017-11-06 09:35:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(193,NULL,10,'Subject for Pledge Acknowledgment','2018-06-04 22:01:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(194,NULL,9,'Subject for Tell a Friend','2017-12-21 15:46:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(195,NULL,9,'Subject for Tell a Friend','2018-04-28 11:38:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(196,NULL,9,'Subject for Tell a Friend','2017-10-19 21:32:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(197,NULL,10,'Subject for Pledge Acknowledgment','2017-10-13 10:20:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(198,NULL,10,'Subject for Pledge Acknowledgment','2018-03-26 21:04:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(199,NULL,10,'Subject for Pledge Acknowledgment','2018-05-05 11:44:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(200,NULL,10,'Subject for Pledge Acknowledgment','2017-09-21 00:35:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(201,NULL,9,'Subject for Tell a Friend','2018-06-15 07:12:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(202,NULL,10,'Subject for Pledge Acknowledgment','2018-08-31 22:28:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(203,NULL,10,'Subject for Pledge Acknowledgment','2018-08-07 08:21:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(204,NULL,9,'Subject for Tell a Friend','2018-06-06 05:34:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(205,NULL,10,'Subject for Pledge Acknowledgment','2018-07-10 19:33:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(206,NULL,10,'Subject for Pledge Acknowledgment','2018-01-16 10:42:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(207,NULL,10,'Subject for Pledge Acknowledgment','2017-12-11 16:43:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(208,NULL,9,'Subject for Tell a Friend','2018-08-07 07:23:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(209,NULL,9,'Subject for Tell a Friend','2018-05-02 23:56:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(210,NULL,10,'Subject for Pledge Acknowledgment','2018-09-19 19:55:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(211,NULL,9,'Subject for Tell a Friend','2018-01-09 03:29:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(212,NULL,9,'Subject for Tell a Friend','2018-03-03 17:20:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(213,NULL,10,'Subject for Pledge Acknowledgment','2017-10-27 14:51:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(214,NULL,9,'Subject for Tell a Friend','2018-07-08 15:13:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(215,NULL,9,'Subject for Tell a Friend','2017-11-15 23:13:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(216,NULL,10,'Subject for Pledge Acknowledgment','2018-04-29 03:59:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(217,NULL,9,'Subject for Tell a Friend','2018-04-01 02:15:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(218,NULL,10,'Subject for Pledge Acknowledgment','2018-08-13 01:22:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(219,NULL,9,'Subject for Tell a Friend','2018-06-01 10:09:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(220,NULL,9,'Subject for Tell a Friend','2018-01-16 13:23:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(221,NULL,10,'Subject for Pledge Acknowledgment','2018-03-04 06:18:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(222,NULL,10,'Subject for Pledge Acknowledgment','2018-01-23 11:22:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(223,NULL,9,'Subject for Tell a Friend','2018-03-12 02:17:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(224,NULL,9,'Subject for Tell a Friend','2017-10-26 02:23:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(225,NULL,9,'Subject for Tell a Friend','2017-11-26 18:02:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(226,NULL,9,'Subject for Tell a Friend','2018-09-10 23:56:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(227,NULL,9,'Subject for Tell a Friend','2018-05-03 02:45:12',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(228,NULL,10,'Subject for Pledge Acknowledgment','2018-07-13 07:33:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(229,NULL,10,'Subject for Pledge Acknowledgment','2017-12-24 09:30:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(230,NULL,9,'Subject for Tell a Friend','2018-02-28 04:07:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(231,NULL,9,'Subject for Tell a Friend','2018-01-12 12:08:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(232,NULL,10,'Subject for Pledge Acknowledgment','2018-06-16 14:23:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(233,NULL,9,'Subject for Tell a Friend','2018-02-22 01:50:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(234,NULL,9,'Subject for Tell a Friend','2018-01-30 07:49:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(235,NULL,10,'Subject for Pledge Acknowledgment','2018-01-05 23:31:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(236,NULL,10,'Subject for Pledge Acknowledgment','2018-05-04 20:19:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(237,NULL,9,'Subject for Tell a Friend','2018-01-09 18:51:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(238,NULL,10,'Subject for Pledge Acknowledgment','2017-11-27 17:30:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(239,NULL,9,'Subject for Tell a Friend','2018-02-06 14:48:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(240,NULL,9,'Subject for Tell a Friend','2018-01-30 06:09:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(241,NULL,9,'Subject for Tell a Friend','2018-03-19 08:09:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(242,NULL,9,'Subject for Tell a Friend','2018-04-14 09:17:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(243,NULL,10,'Subject for Pledge Acknowledgment','2018-04-26 01:58:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(244,NULL,9,'Subject for Tell a Friend','2018-03-03 05:52:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(245,NULL,9,'Subject for Tell a Friend','2017-12-16 08:29:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(246,NULL,9,'Subject for Tell a Friend','2018-09-19 03:58:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(247,NULL,10,'Subject for Pledge Acknowledgment','2018-01-24 03:00:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(248,NULL,10,'Subject for Pledge Acknowledgment','2018-06-16 01:15:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(249,NULL,10,'Subject for Pledge Acknowledgment','2018-01-01 02:05:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(250,NULL,9,'Subject for Tell a Friend','2017-09-22 18:59:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(251,NULL,10,'Subject for Pledge Acknowledgment','2018-05-08 21:17:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(252,NULL,9,'Subject for Tell a Friend','2018-05-16 09:39:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(253,NULL,10,'Subject for Pledge Acknowledgment','2018-01-27 20:57:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(254,NULL,10,'Subject for Pledge Acknowledgment','2018-01-10 19:51:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(255,NULL,10,'Subject for Pledge Acknowledgment','2018-01-12 07:05:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(256,NULL,10,'Subject for Pledge Acknowledgment','2017-10-19 21:51:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(257,NULL,10,'Subject for Pledge Acknowledgment','2018-02-07 07:30:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(258,NULL,9,'Subject for Tell a Friend','2018-06-20 00:39:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(259,NULL,10,'Subject for Pledge Acknowledgment','2018-01-30 13:29:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(260,NULL,9,'Subject for Tell a Friend','2017-10-07 15:05:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(261,NULL,9,'Subject for Tell a Friend','2017-11-28 13:59:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(262,NULL,10,'Subject for Pledge Acknowledgment','2017-11-05 18:28:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(263,NULL,9,'Subject for Tell a Friend','2018-08-14 12:52:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(264,NULL,9,'Subject for Tell a Friend','2017-12-01 23:09:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(265,NULL,9,'Subject for Tell a Friend','2017-12-01 07:45:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(266,NULL,10,'Subject for Pledge Acknowledgment','2018-02-26 07:41:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(267,NULL,10,'Subject for Pledge Acknowledgment','2018-06-20 20:12:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(268,NULL,10,'Subject for Pledge Acknowledgment','2017-10-29 19:45:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(269,NULL,10,'Subject for Pledge Acknowledgment','2018-04-24 00:11:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(270,NULL,10,'Subject for Pledge Acknowledgment','2017-11-06 06:40:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(271,NULL,9,'Subject for Tell a Friend','2018-06-01 23:16:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(272,NULL,10,'Subject for Pledge Acknowledgment','2017-10-05 06:58:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(273,NULL,10,'Subject for Pledge Acknowledgment','2017-09-23 02:20:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(274,NULL,10,'Subject for Pledge Acknowledgment','2018-06-10 19:04:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(275,NULL,10,'Subject for Pledge Acknowledgment','2017-10-01 05:37:53',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(276,NULL,10,'Subject for Pledge Acknowledgment','2018-09-13 18:39:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(277,NULL,9,'Subject for Tell a Friend','2017-11-27 01:26:36',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(278,NULL,10,'Subject for Pledge Acknowledgment','2018-09-06 12:44:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(279,NULL,10,'Subject for Pledge Acknowledgment','2017-10-30 08:11:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(280,NULL,10,'Subject for Pledge Acknowledgment','2018-07-30 11:04:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(281,NULL,10,'Subject for Pledge Acknowledgment','2018-02-19 23:58:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(282,NULL,10,'Subject for Pledge Acknowledgment','2018-07-17 05:33:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(283,NULL,10,'Subject for Pledge Acknowledgment','2018-02-28 17:44:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(284,NULL,10,'Subject for Pledge Acknowledgment','2017-11-04 01:56:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(285,NULL,9,'Subject for Tell a Friend','2017-12-15 23:54:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(286,NULL,10,'Subject for Pledge Acknowledgment','2018-02-12 19:48:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(287,NULL,9,'Subject for Tell a Friend','2018-06-30 03:39:19',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(288,NULL,10,'Subject for Pledge Acknowledgment','2018-03-01 20:11:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(289,NULL,10,'Subject for Pledge Acknowledgment','2018-09-19 07:52:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(290,NULL,9,'Subject for Tell a Friend','2018-06-11 11:59:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(291,NULL,9,'Subject for Tell a Friend','2018-03-14 11:44:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(292,NULL,9,'Subject for Tell a Friend','2017-12-24 09:31:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(293,NULL,10,'Subject for Pledge Acknowledgment','2018-01-25 11:53:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(294,NULL,10,'Subject for Pledge Acknowledgment','2018-09-09 23:31:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(295,NULL,9,'Subject for Tell a Friend','2018-07-05 18:48:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(296,NULL,9,'Subject for Tell a Friend','2018-01-11 17:00:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(297,NULL,9,'Subject for Tell a Friend','2017-09-29 04:23:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(298,NULL,9,'Subject for Tell a Friend','2018-03-18 05:05:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(299,NULL,10,'Subject for Pledge Acknowledgment','2018-05-20 16:47:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(300,NULL,9,'Subject for Tell a Friend','2017-10-29 23:02:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(301,NULL,9,'Subject for Tell a Friend','2018-09-11 17:16:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(302,NULL,10,'Subject for Pledge Acknowledgment','2017-10-12 07:33:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(303,NULL,9,'Subject for Tell a Friend','2018-04-15 18:39:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(304,NULL,9,'Subject for Tell a Friend','2017-11-15 17:49:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(305,NULL,10,'Subject for Pledge Acknowledgment','2018-05-10 17:48:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(306,NULL,10,'Subject for Pledge Acknowledgment','2018-04-01 02:55:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(307,NULL,9,'Subject for Tell a Friend','2018-01-10 19:04:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(308,NULL,9,'Subject for Tell a Friend','2017-11-01 12:59:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(309,NULL,10,'Subject for Pledge Acknowledgment','2018-04-22 03:40:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(310,NULL,9,'Subject for Tell a Friend','2018-07-18 13:20:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(311,NULL,9,'Subject for Tell a Friend','2017-10-02 02:17:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(312,NULL,9,'Subject for Tell a Friend','2018-05-28 13:57:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(313,NULL,10,'Subject for Pledge Acknowledgment','2018-07-26 17:27:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(314,NULL,10,'Subject for Pledge Acknowledgment','2017-12-24 13:45:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(315,NULL,9,'Subject for Tell a Friend','2018-06-29 11:59:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(316,NULL,10,'Subject for Pledge Acknowledgment','2017-09-20 02:09:46',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(317,NULL,10,'Subject for Pledge Acknowledgment','2018-05-18 02:16:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(318,NULL,9,'Subject for Tell a Friend','2018-08-11 08:20:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(319,NULL,10,'Subject for Pledge Acknowledgment','2018-07-20 15:56:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(320,NULL,10,'Subject for Pledge Acknowledgment','2018-05-04 07:17:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(321,NULL,10,'Subject for Pledge Acknowledgment','2018-09-17 11:18:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(322,NULL,9,'Subject for Tell a Friend','2018-02-25 20:39:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(323,NULL,10,'Subject for Pledge Acknowledgment','2018-09-02 20:00:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(324,NULL,9,'Subject for Tell a Friend','2018-01-17 23:22:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(325,NULL,10,'Subject for Pledge Acknowledgment','2017-10-29 13:12:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(326,NULL,9,'Subject for Tell a Friend','2018-08-08 12:13:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(327,NULL,9,'Subject for Tell a Friend','2018-06-19 19:22:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(328,NULL,9,'Subject for Tell a Friend','2018-03-13 21:49:54',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(329,NULL,10,'Subject for Pledge Acknowledgment','2017-09-23 06:09:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(330,NULL,9,'Subject for Tell a Friend','2018-06-29 01:58:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(331,NULL,9,'Subject for Tell a Friend','2018-06-06 23:22:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(332,NULL,9,'Subject for Tell a Friend','2018-04-25 18:50:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(333,NULL,9,'Subject for Tell a Friend','2017-12-07 22:02:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(334,NULL,10,'Subject for Pledge Acknowledgment','2017-10-21 10:23:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(335,NULL,10,'Subject for Pledge Acknowledgment','2017-11-02 23:53:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(336,NULL,9,'Subject for Tell a Friend','2018-01-12 08:31:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(337,NULL,9,'Subject for Tell a Friend','2018-07-22 01:01:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(338,NULL,9,'Subject for Tell a Friend','2018-02-07 04:35:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(339,NULL,9,'Subject for Tell a Friend','2017-12-13 03:40:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(340,NULL,9,'Subject for Tell a Friend','2018-06-24 18:14:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(341,NULL,9,'Subject for Tell a Friend','2018-03-17 12:55:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(342,NULL,10,'Subject for Pledge Acknowledgment','2017-12-12 12:21:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(343,NULL,9,'Subject for Tell a Friend','2018-08-22 03:09:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(344,NULL,10,'Subject for Pledge Acknowledgment','2018-01-03 18:33:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(345,NULL,10,'Subject for Pledge Acknowledgment','2018-03-14 19:27:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(346,NULL,9,'Subject for Tell a Friend','2018-02-03 18:36:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(347,NULL,10,'Subject for Pledge Acknowledgment','2018-01-19 02:59:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(348,NULL,10,'Subject for Pledge Acknowledgment','2018-03-13 10:43:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(349,NULL,10,'Subject for Pledge Acknowledgment','2017-11-02 08:47:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(350,NULL,9,'Subject for Tell a Friend','2018-01-21 11:46:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(351,NULL,10,'Subject for Pledge Acknowledgment','2018-02-13 01:49:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(352,NULL,9,'Subject for Tell a Friend','2018-01-18 07:50:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(353,NULL,10,'Subject for Pledge Acknowledgment','2018-08-29 21:06:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(354,NULL,9,'Subject for Tell a Friend','2017-10-29 16:48:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(355,NULL,10,'Subject for Pledge Acknowledgment','2017-10-19 16:23:13',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(356,NULL,9,'Subject for Tell a Friend','2017-11-20 17:08:07',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(357,NULL,10,'Subject for Pledge Acknowledgment','2017-10-27 22:00:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(358,NULL,10,'Subject for Pledge Acknowledgment','2018-08-26 12:19:02',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(359,NULL,10,'Subject for Pledge Acknowledgment','2018-04-08 23:45:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(360,NULL,10,'Subject for Pledge Acknowledgment','2017-10-10 23:57:34',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(361,NULL,9,'Subject for Tell a Friend','2017-11-30 13:45:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(362,NULL,10,'Subject for Pledge Acknowledgment','2018-03-08 18:41:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(363,NULL,10,'Subject for Pledge Acknowledgment','2018-05-14 15:07:59',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(364,NULL,10,'Subject for Pledge Acknowledgment','2018-06-08 00:28:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(365,NULL,9,'Subject for Tell a Friend','2017-12-07 14:20:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(366,NULL,9,'Subject for Tell a Friend','2018-04-22 22:27:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(367,NULL,10,'Subject for Pledge Acknowledgment','2018-04-15 20:36:22',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(368,NULL,10,'Subject for Pledge Acknowledgment','2018-05-13 11:53:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(369,NULL,10,'Subject for Pledge Acknowledgment','2018-09-07 09:29:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(370,NULL,10,'Subject for Pledge Acknowledgment','2018-05-30 21:18:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(371,NULL,9,'Subject for Tell a Friend','2018-06-11 01:02:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(372,NULL,10,'Subject for Pledge Acknowledgment','2018-08-17 19:33:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(373,NULL,10,'Subject for Pledge Acknowledgment','2018-04-13 07:47:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(374,NULL,10,'Subject for Pledge Acknowledgment','2017-11-05 02:20:44',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(375,NULL,10,'Subject for Pledge Acknowledgment','2018-04-01 23:34:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(376,NULL,10,'Subject for Pledge Acknowledgment','2018-09-13 15:24:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(377,NULL,9,'Subject for Tell a Friend','2017-11-27 11:01:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(378,NULL,9,'Subject for Tell a Friend','2018-09-09 20:32:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(379,NULL,9,'Subject for Tell a Friend','2018-08-13 17:03:17',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(380,NULL,9,'Subject for Tell a Friend','2017-10-26 18:38:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(381,NULL,9,'Subject for Tell a Friend','2017-12-16 13:36:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(382,NULL,9,'Subject for Tell a Friend','2017-12-08 10:47:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(383,NULL,10,'Subject for Pledge Acknowledgment','2018-02-04 07:05:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(384,NULL,10,'Subject for Pledge Acknowledgment','2017-10-02 05:15:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(385,NULL,9,'Subject for Tell a Friend','2018-08-23 03:28:30',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(386,NULL,9,'Subject for Tell a Friend','2018-06-11 18:44:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(387,NULL,9,'Subject for Tell a Friend','2018-09-06 15:00:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(388,NULL,9,'Subject for Tell a Friend','2018-01-19 15:33:04',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(389,NULL,9,'Subject for Tell a Friend','2017-12-12 19:16:16',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(390,NULL,10,'Subject for Pledge Acknowledgment','2017-10-09 20:43:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(391,NULL,10,'Subject for Pledge Acknowledgment','2018-09-14 02:42:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(392,NULL,9,'Subject for Tell a Friend','2017-10-07 16:38:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(393,NULL,10,'Subject for Pledge Acknowledgment','2017-09-30 08:28:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(394,NULL,9,'Subject for Tell a Friend','2017-10-25 01:01:37',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(395,NULL,10,'Subject for Pledge Acknowledgment','2018-03-21 23:24:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(396,NULL,9,'Subject for Tell a Friend','2018-01-22 17:56:47',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(397,NULL,10,'Subject for Pledge Acknowledgment','2018-08-28 06:51:45',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(398,NULL,9,'Subject for Tell a Friend','2018-08-31 06:37:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(399,NULL,9,'Subject for Tell a Friend','2017-09-28 09:24:11',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(400,NULL,9,'Subject for Tell a Friend','2018-09-16 18:22:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(401,NULL,9,'Subject for Tell a Friend','2018-08-10 20:36:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(402,NULL,10,'Subject for Pledge Acknowledgment','2018-06-15 17:19:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(403,NULL,10,'Subject for Pledge Acknowledgment','2017-11-22 22:30:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(404,NULL,9,'Subject for Tell a Friend','2018-04-26 02:22:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(405,NULL,9,'Subject for Tell a Friend','2018-04-28 10:21:05',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(406,NULL,9,'Subject for Tell a Friend','2018-08-29 18:41:10',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(407,NULL,9,'Subject for Tell a Friend','2018-03-27 19:03:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(408,NULL,10,'Subject for Pledge Acknowledgment','2018-07-30 13:31:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(409,NULL,10,'Subject for Pledge Acknowledgment','2018-08-12 08:30:06',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(410,NULL,9,'Subject for Tell a Friend','2017-10-06 22:38:35',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(411,NULL,10,'Subject for Pledge Acknowledgment','2018-09-10 03:57:09',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(412,NULL,9,'Subject for Tell a Friend','2018-01-14 20:44:23',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(413,NULL,10,'Subject for Pledge Acknowledgment','2018-05-22 17:07:27',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(414,NULL,9,'Subject for Tell a Friend','2017-12-16 19:02:52',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(415,NULL,10,'Subject for Pledge Acknowledgment','2017-11-05 18:56:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(416,NULL,10,'Subject for Pledge Acknowledgment','2018-08-24 17:07:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(417,NULL,10,'Subject for Pledge Acknowledgment','2018-03-21 23:43:01',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(418,NULL,10,'Subject for Pledge Acknowledgment','2018-02-04 07:40:58',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(419,NULL,9,'Subject for Tell a Friend','2018-09-17 23:54:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(420,NULL,9,'Subject for Tell a Friend','2017-10-25 20:33:51',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(421,NULL,9,'Subject for Tell a Friend','2018-04-25 06:35:08',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(422,NULL,10,'Subject for Pledge Acknowledgment','2018-08-26 00:08:28',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(423,NULL,10,'Subject for Pledge Acknowledgment','2018-09-13 02:05:14',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(424,NULL,9,'Subject for Tell a Friend','2018-08-22 09:01:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(425,NULL,10,'Subject for Pledge Acknowledgment','2018-06-01 15:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(426,NULL,10,'Subject for Pledge Acknowledgment','2017-10-03 23:58:57',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(427,NULL,9,'Subject for Tell a Friend','2018-07-29 15:01:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(428,NULL,10,'Subject for Pledge Acknowledgment','2018-03-10 07:49:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(429,NULL,9,'Subject for Tell a Friend','2017-12-22 09:34:15',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(430,NULL,9,'Subject for Tell a Friend','2018-07-03 07:49:39',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(431,NULL,10,'Subject for Pledge Acknowledgment','2018-04-20 14:34:26',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(432,NULL,10,'Subject for Pledge Acknowledgment','2017-12-22 14:24:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(433,NULL,10,'Subject for Pledge Acknowledgment','2018-02-08 08:14:56',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(434,NULL,9,'Subject for Tell a Friend','2018-08-18 21:18:24',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(435,NULL,9,'Subject for Tell a Friend','2018-09-16 12:16:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(436,NULL,9,'Subject for Tell a Friend','2018-08-26 05:43:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(437,NULL,9,'Subject for Tell a Friend','2018-05-23 09:12:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(438,NULL,9,'Subject for Tell a Friend','2017-12-23 03:05:31',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(439,NULL,10,'Subject for Pledge Acknowledgment','2018-06-04 23:18:25',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(440,NULL,10,'Subject for Pledge Acknowledgment','2018-02-17 00:12:55',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(441,NULL,10,'Subject for Pledge Acknowledgment','2018-08-17 16:04:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(442,NULL,10,'Subject for Pledge Acknowledgment','2017-11-10 19:46:40',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(443,NULL,9,'Subject for Tell a Friend','2018-01-27 06:35:18',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(444,NULL,10,'Subject for Pledge Acknowledgment','2018-07-22 15:19:49',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(445,NULL,9,'Subject for Tell a Friend','2017-10-09 22:45:43',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(446,NULL,9,'Subject for Tell a Friend','2018-07-04 11:59:48',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(447,NULL,9,'Subject for Tell a Friend','2017-11-03 13:29:38',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(448,NULL,10,'Subject for Pledge Acknowledgment','2018-02-14 13:35:32',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(449,NULL,9,'Subject for Tell a Friend','2018-06-13 16:27:29',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(450,NULL,10,'Subject for Pledge Acknowledgment','2017-10-22 19:00:33',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(451,1,6,'$ 125.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(452,2,6,'$ 50.00-Online: Save the Penguins','2010-03-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(453,3,6,'$ 25.00-Apr 2007 Mailer 1','2010-04-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(454,4,6,'$ 50.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(455,5,6,'$ 500.00-Apr 2007 Mailer 1','2010-04-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(456,6,6,'$ 175.00-Apr 2007 Mailer 1','2010-04-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(457,7,6,'$ 50.00-Online: Save the Penguins','2010-03-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(458,8,6,'$ 10.00-Online: Save the Penguins','2010-03-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(459,9,6,'$ 250.00-Online: Save the Penguins','2010-04-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(460,10,6,NULL,'2009-07-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(461,11,6,NULL,'2009-07-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(462,12,6,NULL,'2009-10-01 11:53:50',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(463,13,6,NULL,'2009-12-01 12:55:41',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(464,1,7,'General','2018-09-19 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(465,2,7,'Student','2018-09-18 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(466,3,7,'General','2018-09-17 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(467,4,7,'Student','2018-09-16 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(468,5,7,'Student','2017-09-15 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(469,6,7,'Student','2018-09-14 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(470,7,7,'General','2018-09-13 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(471,8,7,'Student','2018-09-12 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(472,9,7,'General','2018-09-11 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(473,10,7,'Student','2017-09-10 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(474,11,7,'Lifetime','2018-09-09 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(475,12,7,'Student','2018-09-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(476,13,7,'General','2018-09-07 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(477,14,7,'Student','2018-09-06 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(478,15,7,'Student','2017-09-05 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(479,16,7,'Student','2018-09-04 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(480,17,7,'General','2018-09-03 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(481,18,7,'Student','2018-09-02 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(482,19,7,'General','2018-09-01 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(483,20,7,'General','2016-04-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(484,21,7,'General','2018-08-30 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(485,22,7,'Lifetime','2018-08-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(486,23,7,'General','2018-08-28 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(487,24,7,'Student','2018-08-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(488,25,7,'Student','2017-08-26 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(489,26,7,'Student','2018-08-25 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(490,27,7,'General','2018-08-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(491,28,7,'Student','2018-08-23 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(492,29,7,'General','2018-08-22 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(493,30,7,'Student','2017-08-21 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(494,14,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(495,15,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(496,16,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(497,17,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(498,18,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(499,19,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(500,20,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(501,21,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(502,22,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(503,23,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(504,24,6,'$ 1200.00 - Lifetime Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(505,25,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(506,26,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(507,27,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(508,28,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(509,29,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(510,30,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(511,31,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(512,32,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(513,33,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(514,34,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(515,35,6,'$ 1200.00 - Lifetime Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(516,36,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(517,37,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(518,38,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(519,39,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(520,40,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(521,41,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(522,42,6,'$ 100.00 - General Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(523,43,6,'$ 50.00 - Student Membership: Offline signup','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(525,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(526,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(527,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(528,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(529,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(530,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(531,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(532,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(533,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(534,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(535,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(536,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(537,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(538,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(539,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(540,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(541,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(542,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(543,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(544,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(545,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(546,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(547,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(548,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(549,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(550,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(551,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(552,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(553,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(554,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(555,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(556,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(557,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(558,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(559,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(560,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(561,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(562,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(563,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(564,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(565,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(566,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(567,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(568,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(569,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(570,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(571,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(572,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(573,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(574,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,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(575,45,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(576,46,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(577,47,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(578,48,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(579,49,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(580,50,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(581,51,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(582,52,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(583,53,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(584,54,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(585,55,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(586,56,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(587,57,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(588,58,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(589,59,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(590,60,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(591,61,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(592,62,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(593,63,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(594,64,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(595,65,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(596,66,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(597,67,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(598,68,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(599,69,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(600,70,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(601,71,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(602,72,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(603,73,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(604,74,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(605,75,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(606,76,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(607,77,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(608,78,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(610,80,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(611,81,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(612,82,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(614,84,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(615,85,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(616,86,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(617,87,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(618,88,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(620,90,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(621,91,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(623,93,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'),(624,94,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2018-09-19 20:19:30',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2018-09-20 03:19:30','2018-09-20 03:19:30'); /*!40000 ALTER TABLE `civicrm_activity` ENABLE KEYS */; UNLOCK TABLES; @@ -97,7 +97,7 @@ 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 (458,300,1,3),(208,138,2,3),(275,181,2,3),(350,233,2,3),(682,451,2,2),(796,565,2,2),(498,329,3,3),(109,73,4,3),(210,139,4,3),(683,452,4,2),(3,2,5,3),(170,114,5,3),(445,290,5,3),(593,394,5,3),(651,431,6,3),(684,453,6,2),(91,59,7,3),(254,168,7,3),(680,449,8,3),(685,454,8,2),(440,287,9,3),(451,295,10,3),(571,379,10,3),(639,424,10,3),(722,491,10,2),(752,521,10,2),(146,99,11,3),(161,108,11,3),(773,542,11,2),(282,186,12,3),(364,241,12,3),(375,248,12,3),(392,258,12,3),(476,314,12,3),(619,411,12,3),(798,567,12,2),(42,27,13,3),(340,227,13,3),(553,366,13,3),(362,240,14,3),(103,68,15,3),(794,563,15,2),(382,252,16,3),(516,341,16,3),(662,439,16,3),(686,455,16,2),(219,145,17,3),(673,445,18,3),(787,556,18,2),(72,46,19,3),(85,55,19,3),(555,367,19,3),(687,456,19,2),(166,112,20,3),(342,228,20,3),(600,398,20,3),(647,429,20,3),(289,192,21,3),(649,430,21,3),(470,309,22,3),(482,319,22,3),(580,385,22,3),(642,426,22,3),(805,574,22,2),(26,16,23,3),(144,98,23,3),(204,136,23,3),(614,407,23,3),(768,537,23,2),(88,57,24,3),(514,340,24,3),(782,551,24,2),(37,23,25,3),(331,220,25,3),(5,3,26,3),(214,142,26,3),(582,386,26,3),(635,421,26,3),(277,182,27,3),(321,214,28,3),(395,260,28,3),(596,396,28,3),(719,488,28,2),(749,518,28,2),(717,486,29,2),(747,516,29,2),(16,10,31,3),(430,281,31,3),(53,34,32,3),(269,178,32,3),(500,330,32,3),(693,462,32,2),(694,463,32,2),(425,278,33,3),(484,320,33,3),(550,364,33,3),(44,28,34,3),(586,389,34,3),(690,459,34,2),(797,566,34,2),(78,50,35,3),(179,120,35,3),(420,274,35,3),(443,289,35,3),(460,301,35,3),(491,324,35,3),(121,80,36,3),(137,92,36,3),(181,121,36,3),(403,264,36,3),(455,298,36,3),(537,356,36,3),(235,155,37,3),(325,216,37,3),(409,267,37,3),(487,322,37,3),(783,552,37,2),(240,158,38,3),(348,232,38,3),(411,268,38,3),(696,465,38,2),(726,495,38,2),(353,235,39,3),(368,243,39,3),(522,346,39,3),(46,29,40,3),(82,53,40,3),(666,441,40,3),(678,448,40,3),(390,257,41,3),(399,262,41,3),(459,301,41,2),(461,302,41,2),(462,303,41,2),(463,304,41,2),(464,305,41,2),(465,306,41,2),(467,307,41,2),(468,308,41,2),(469,309,41,2),(471,310,41,2),(472,311,41,2),(473,312,41,2),(474,313,41,2),(475,314,41,2),(477,315,41,2),(478,316,41,2),(479,317,41,2),(480,318,41,2),(481,319,41,2),(483,320,41,2),(485,321,41,2),(486,322,41,2),(488,323,41,2),(490,324,41,2),(492,325,41,2),(494,326,41,2),(495,327,41,2),(496,328,41,2),(497,329,41,2),(499,330,41,2),(501,331,41,2),(503,332,41,2),(504,333,41,2),(505,334,41,2),(506,335,41,2),(507,336,41,2),(509,337,41,2),(511,338,41,2),(512,339,41,2),(513,340,41,2),(515,341,41,2),(517,342,41,2),(518,343,41,2),(519,344,41,2),(520,345,41,2),(521,346,41,2),(523,347,41,2),(525,348,41,2),(527,349,41,2),(529,350,41,2),(531,351,41,2),(532,352,41,2),(533,353,41,2),(534,354,41,2),(535,355,41,2),(536,356,41,2),(538,357,41,2),(540,358,41,2),(542,359,41,2),(543,360,41,2),(545,361,41,2),(547,362,41,2),(548,363,41,2),(549,364,41,2),(551,365,41,2),(552,366,41,2),(554,367,41,2),(556,368,41,2),(557,369,41,2),(558,370,41,2),(559,371,41,2),(560,372,41,2),(561,373,41,2),(562,374,41,2),(564,375,41,2),(565,376,41,2),(567,377,41,2),(568,378,41,2),(570,379,41,2),(572,380,41,2),(574,381,41,2),(576,382,41,2),(577,383,41,2),(578,384,41,2),(579,385,41,2),(581,386,41,2),(583,387,41,2),(584,388,41,2),(585,389,41,2),(587,390,41,2),(588,391,41,2),(590,392,41,2),(591,393,41,2),(592,394,41,2),(594,395,41,2),(595,396,41,2),(597,397,41,2),(599,398,41,2),(601,399,41,2),(603,400,41,2),(605,401,41,2),(607,402,41,2),(609,403,41,2),(610,404,41,2),(611,405,41,2),(612,406,41,2),(613,407,41,2),(615,408,41,2),(616,409,41,2),(617,410,41,2),(618,411,41,2),(620,412,41,2),(622,413,41,2),(624,414,41,2),(625,415,41,2),(626,416,41,2),(627,417,41,2),(629,418,41,2),(630,419,41,2),(632,420,41,2),(634,421,41,2),(636,422,41,2),(637,423,41,2),(638,424,41,2),(640,425,41,2),(641,426,41,2),(643,427,41,2),(644,428,41,2),(646,429,41,2),(648,430,41,2),(650,431,41,2),(652,432,41,2),(653,433,41,2),(654,434,41,2),(656,435,41,2),(657,436,41,2),(658,437,41,2),(660,438,41,2),(661,439,41,2),(663,440,41,2),(665,441,41,2),(667,442,41,2),(669,443,41,2),(670,444,41,2),(672,445,41,2),(674,446,41,2),(676,447,41,2),(677,448,41,2),(679,449,41,2),(681,450,41,2),(762,531,41,2),(493,325,42,3),(608,402,42,3),(151,102,43,3),(267,177,43,3),(271,179,43,3),(377,249,43,3),(692,461,43,2),(770,539,43,2),(312,207,44,3),(631,419,44,3),(386,254,45,3),(502,331,45,3),(569,378,45,3),(606,401,45,3),(698,467,45,2),(728,497,45,2),(59,38,46,3),(413,269,46,3),(757,526,46,2),(195,131,47,3),(510,337,47,3),(530,350,47,3),(778,547,47,2),(723,492,48,2),(753,522,48,2),(323,215,49,3),(526,348,49,3),(708,477,49,2),(738,507,49,2),(792,561,50,2),(134,90,51,3),(148,100,51,3),(252,167,51,3),(436,285,51,3),(310,206,52,3),(575,381,52,3),(117,77,53,3),(154,104,53,3),(296,197,53,3),(759,528,53,2),(66,42,54,3),(384,253,54,3),(764,533,54,2),(97,63,55,3),(201,134,55,3),(329,219,55,3),(718,487,55,2),(748,517,55,2),(489,323,56,3),(713,482,56,2),(743,512,56,2),(111,74,57,3),(159,107,57,3),(199,133,57,3),(781,550,57,2),(22,14,58,3),(70,45,58,3),(264,175,58,3),(598,397,58,3),(675,446,58,3),(243,160,59,3),(247,163,59,3),(602,399,59,3),(664,440,59,3),(720,489,59,2),(750,519,59,2),(772,541,59,2),(256,169,60,3),(258,170,60,3),(357,237,60,3),(573,380,60,3),(623,413,60,3),(123,81,61,3),(795,564,61,2),(355,236,62,3),(628,417,62,3),(304,202,63,3),(589,391,63,3),(563,374,64,3),(64,41,65,3),(168,113,65,3),(187,125,65,3),(300,200,65,3),(776,545,65,2),(524,347,66,3),(20,13,67,3),(645,428,67,3),(14,9,68,3),(206,137,68,3),(704,473,68,2),(734,503,68,2),(539,357,69,3),(785,554,69,2),(30,18,70,3),(380,251,70,3),(508,336,70,3),(668,442,70,3),(8,5,71,3),(76,49,71,3),(544,360,71,3),(691,460,71,2),(724,493,71,2),(754,523,71,2),(405,265,72,3),(528,349,72,3),(702,471,74,2),(732,501,74,2),(24,15,75,3),(546,361,75,3),(789,558,76,2),(415,270,77,3),(48,30,78,3),(407,266,78,3),(438,286,78,3),(804,573,78,2),(28,17,79,3),(115,76,79,3),(302,201,79,3),(333,221,79,3),(113,75,80,3),(192,129,80,3),(217,144,80,3),(273,180,80,3),(701,470,80,2),(731,500,80,2),(61,39,81,3),(156,105,81,3),(227,150,81,3),(307,204,81,3),(655,434,82,3),(688,457,82,2),(223,147,83,3),(173,116,84,3),(466,306,84,3),(541,358,84,3),(621,412,85,3),(232,153,86,3),(292,194,86,3),(346,231,86,3),(671,444,86,3),(714,483,86,2),(744,513,86,2),(359,238,87,3),(433,283,88,3),(711,480,88,2),(741,510,88,2),(55,35,89,3),(95,62,89,3),(35,22,90,3),(238,157,90,3),(372,246,90,3),(659,437,91,3),(197,132,92,3),(689,458,92,2),(221,146,93,3),(183,122,94,3),(633,420,94,3),(712,481,94,2),(742,511,94,2),(176,118,95,3),(427,279,95,3),(366,242,96,3),(319,213,97,3),(397,261,97,3),(700,469,97,2),(730,499,97,2),(128,85,99,3),(401,263,99,3),(229,151,100,3),(566,376,100,3),(12,8,101,3),(604,400,101,3),(780,549,102,2),(790,559,107,2),(715,484,109,2),(745,514,109,2),(791,560,112,2),(777,546,115,2),(771,540,117,2),(1,1,118,2),(2,2,118,2),(4,3,118,2),(6,4,118,2),(7,5,118,2),(9,6,118,2),(10,7,118,2),(11,8,118,2),(13,9,118,2),(15,10,118,2),(17,11,118,2),(18,12,118,2),(19,13,118,2),(21,14,118,2),(23,15,118,2),(25,16,118,2),(27,17,118,2),(29,18,118,2),(31,19,118,2),(32,20,118,2),(33,21,118,2),(34,22,118,2),(36,23,118,2),(38,24,118,2),(39,25,118,2),(40,26,118,2),(41,27,118,2),(43,28,118,2),(45,29,118,2),(47,30,118,2),(49,31,118,2),(50,32,118,2),(51,33,118,2),(52,34,118,2),(54,35,118,2),(56,36,118,2),(57,37,118,2),(58,38,118,2),(60,39,118,2),(62,40,118,2),(63,41,118,2),(65,42,118,2),(67,43,118,2),(68,44,118,2),(69,45,118,2),(71,46,118,2),(73,47,118,2),(74,48,118,2),(75,49,118,2),(77,50,118,2),(79,51,118,2),(80,52,118,2),(81,53,118,2),(83,54,118,2),(84,55,118,2),(86,56,118,2),(87,57,118,2),(89,58,118,2),(90,59,118,2),(92,60,118,2),(93,61,118,2),(94,62,118,2),(96,63,118,2),(98,64,118,2),(99,65,118,2),(100,66,118,2),(101,67,118,2),(102,68,118,2),(104,69,118,2),(105,70,118,2),(106,71,118,2),(107,72,118,2),(108,73,118,2),(110,74,118,2),(112,75,118,2),(114,76,118,2),(116,77,118,2),(118,78,118,2),(119,79,118,2),(120,80,118,2),(122,81,118,2),(124,82,118,2),(125,83,118,2),(126,84,118,2),(127,85,118,2),(129,86,118,2),(130,87,118,2),(131,88,118,2),(132,89,118,2),(133,90,118,2),(135,91,118,2),(136,92,118,2),(138,93,118,2),(139,94,118,2),(140,95,118,2),(141,96,118,2),(142,97,118,2),(143,98,118,2),(145,99,118,2),(147,100,118,2),(149,101,118,2),(150,102,118,2),(152,103,118,2),(153,104,118,2),(155,105,118,2),(157,106,118,2),(158,107,118,2),(160,108,118,2),(162,109,118,2),(163,110,118,2),(164,111,118,2),(165,112,118,2),(167,113,118,2),(169,114,118,2),(171,115,118,2),(172,116,118,2),(174,117,118,2),(175,118,118,2),(177,119,118,2),(178,120,118,2),(180,121,118,2),(182,122,118,2),(184,123,118,2),(185,124,118,2),(186,125,118,2),(188,126,118,2),(189,127,118,2),(190,128,118,2),(191,129,118,2),(193,130,118,2),(194,131,118,2),(196,132,118,2),(198,133,118,2),(200,134,118,2),(202,135,118,2),(203,136,118,2),(205,137,118,2),(207,138,118,2),(209,139,118,2),(211,140,118,2),(212,141,118,2),(213,142,118,2),(215,143,118,2),(216,144,118,2),(218,145,118,2),(220,146,118,2),(222,147,118,2),(224,148,118,2),(225,149,118,2),(226,150,118,2),(710,479,119,2),(740,509,119,2),(756,525,119,2),(769,538,123,2),(761,530,124,2),(709,478,126,2),(739,508,126,2),(767,536,134,2),(793,562,135,2),(786,555,136,2),(716,485,138,2),(746,515,138,2),(765,534,138,2),(784,553,145,2),(703,472,150,2),(733,502,150,2),(774,543,151,2),(799,568,152,2),(779,548,156,2),(699,468,157,2),(729,498,157,2),(803,572,161,2),(766,535,165,2),(695,464,168,2),(725,494,168,2),(760,529,168,2),(763,532,169,2),(802,571,170,2),(801,570,171,2),(788,557,173,2),(707,476,175,2),(737,506,175,2),(705,474,179,2),(735,504,179,2),(758,527,187,2),(697,466,188,2),(727,496,188,2),(228,151,195,2),(230,152,195,2),(231,153,195,2),(233,154,195,2),(234,155,195,2),(236,156,195,2),(237,157,195,2),(239,158,195,2),(241,159,195,2),(242,160,195,2),(244,161,195,2),(245,162,195,2),(246,163,195,2),(248,164,195,2),(249,165,195,2),(250,166,195,2),(251,167,195,2),(253,168,195,2),(255,169,195,2),(257,170,195,2),(259,171,195,2),(260,172,195,2),(261,173,195,2),(262,174,195,2),(263,175,195,2),(265,176,195,2),(266,177,195,2),(268,178,195,2),(270,179,195,2),(272,180,195,2),(274,181,195,2),(276,182,195,2),(278,183,195,2),(279,184,195,2),(280,185,195,2),(281,186,195,2),(283,187,195,2),(284,188,195,2),(285,189,195,2),(286,190,195,2),(287,191,195,2),(288,192,195,2),(290,193,195,2),(291,194,195,2),(293,195,195,2),(294,196,195,2),(295,197,195,2),(297,198,195,2),(298,199,195,2),(299,200,195,2),(301,201,195,2),(303,202,195,2),(305,203,195,2),(306,204,195,2),(308,205,195,2),(309,206,195,2),(311,207,195,2),(313,208,195,2),(314,209,195,2),(315,210,195,2),(316,211,195,2),(317,212,195,2),(318,213,195,2),(320,214,195,2),(322,215,195,2),(324,216,195,2),(326,217,195,2),(327,218,195,2),(328,219,195,2),(330,220,195,2),(332,221,195,2),(334,222,195,2),(335,223,195,2),(336,224,195,2),(337,225,195,2),(338,226,195,2),(339,227,195,2),(341,228,195,2),(343,229,195,2),(344,230,195,2),(345,231,195,2),(347,232,195,2),(349,233,195,2),(351,234,195,2),(352,235,195,2),(354,236,195,2),(356,237,195,2),(358,238,195,2),(360,239,195,2),(361,240,195,2),(363,241,195,2),(365,242,195,2),(367,243,195,2),(369,244,195,2),(370,245,195,2),(371,246,195,2),(373,247,195,2),(374,248,195,2),(376,249,195,2),(378,250,195,2),(379,251,195,2),(381,252,195,2),(383,253,195,2),(385,254,195,2),(387,255,195,2),(388,256,195,2),(389,257,195,2),(391,258,195,2),(393,259,195,2),(394,260,195,2),(396,261,195,2),(398,262,195,2),(400,263,195,2),(402,264,195,2),(404,265,195,2),(406,266,195,2),(408,267,195,2),(410,268,195,2),(412,269,195,2),(414,270,195,2),(416,271,195,2),(417,272,195,2),(418,273,195,2),(419,274,195,2),(421,275,195,2),(422,276,195,2),(423,277,195,2),(424,278,195,2),(426,279,195,2),(428,280,195,2),(429,281,195,2),(431,282,195,2),(432,283,195,2),(434,284,195,2),(435,285,195,2),(437,286,195,2),(439,287,195,2),(441,288,195,2),(442,289,195,2),(444,290,195,2),(446,291,195,2),(447,292,195,2),(448,293,195,2),(449,294,195,2),(450,295,195,2),(452,296,195,2),(453,297,195,2),(454,298,195,2),(456,299,195,2),(457,300,195,2),(721,490,195,2),(751,520,195,2),(775,544,196,2),(706,475,197,2),(736,505,197,2),(800,569,199,2); +INSERT INTO `civicrm_activity_contact` (`id`, `activity_id`, `contact_id`, `record_type_id`) VALUES (66,45,2,3),(73,49,2,3),(75,50,2,3),(87,57,2,3),(680,451,2,2),(675,447,4,3),(681,452,4,2),(293,192,5,3),(552,366,5,3),(620,410,5,3),(758,529,5,2),(533,352,6,3),(682,453,6,2),(717,488,6,2),(747,518,6,2),(21,13,7,3),(83,55,8,3),(683,454,8,2),(134,87,9,3),(170,112,9,3),(500,331,9,3),(597,396,9,3),(698,469,9,2),(728,499,9,2),(202,132,10,3),(495,328,10,3),(668,443,10,3),(711,482,10,2),(741,512,10,2),(35,22,11,3),(252,165,11,3),(341,224,11,3),(781,552,11,2),(536,354,12,3),(644,427,12,3),(165,108,13,3),(229,150,13,3),(626,414,13,3),(47,31,14,3),(64,44,14,3),(260,170,14,3),(327,215,14,3),(428,285,14,3),(445,296,14,3),(694,465,14,2),(724,495,14,2),(179,117,15,3),(581,386,15,3),(127,83,16,3),(163,107,16,3),(684,455,16,2),(696,467,16,2),(726,497,16,2),(463,307,17,3),(91,59,19,3),(296,194,19,3),(685,456,19,2),(700,471,19,2),(730,501,19,2),(200,131,20,3),(616,407,20,3),(704,475,20,2),(734,505,20,2),(374,244,21,3),(647,429,21,3),(150,99,22,3),(378,246,23,3),(502,332,23,3),(277,182,24,3),(405,265,24,3),(516,340,24,3),(573,381,24,3),(760,531,24,2),(383,250,25,3),(480,318,25,3),(146,96,26,3),(12,8,28,3),(96,62,28,3),(485,322,28,3),(583,387,28,3),(154,101,29,3),(452,300,30,3),(565,377,30,3),(794,565,30,2),(79,52,31,3),(521,343,32,3),(612,405,32,3),(691,462,32,2),(692,463,32,2),(122,80,33,3),(649,430,34,3),(688,459,34,2),(796,567,34,2),(98,63,35,3),(325,214,36,3),(330,217,36,3),(472,312,36,3),(17,11,37,3),(204,133,37,3),(673,446,37,3),(709,480,37,2),(739,510,37,2),(119,78,38,3),(558,371,38,3),(604,400,39,3),(780,551,40,2),(244,160,41,3),(371,242,41,3),(476,315,41,3),(567,378,41,3),(623,412,42,3),(282,185,43,3),(351,230,43,3),(530,350,43,3),(690,461,43,2),(376,245,44,3),(419,277,44,3),(701,472,44,2),(731,502,44,2),(43,28,45,3),(291,191,45,3),(640,424,45,3),(369,241,46,3),(189,125,47,3),(214,140,47,3),(285,187,47,3),(437,291,47,3),(488,324,47,3),(778,549,47,2),(210,137,48,3),(242,159,48,3),(396,260,48,3),(493,327,48,3),(33,21,49,3),(157,103,49,3),(246,161,49,3),(300,196,49,3),(310,204,49,3),(539,356,49,3),(125,82,50,3),(800,571,50,2),(339,223,51,3),(353,231,51,3),(468,310,51,3),(239,157,52,3),(315,208,52,3),(504,333,52,3),(216,141,53,3),(249,163,53,3),(258,169,53,3),(398,261,53,3),(193,127,54,3),(575,382,54,3),(707,478,54,2),(737,508,54,2),(174,114,55,3),(491,326,55,3),(569,379,55,3),(591,392,56,3),(4,3,57,3),(62,43,57,3),(85,56,57,3),(230,151,57,2),(231,152,57,2),(232,153,57,2),(233,154,57,2),(235,155,57,2),(237,156,57,2),(238,157,57,2),(240,158,57,2),(241,159,57,2),(243,160,57,2),(245,161,57,2),(247,162,57,2),(248,163,57,2),(250,164,57,2),(251,165,57,2),(253,166,57,2),(254,167,57,2),(256,168,57,2),(257,169,57,2),(259,170,57,2),(261,171,57,2),(263,172,57,2),(264,173,57,2),(265,174,57,2),(266,175,57,2),(268,176,57,2),(269,177,57,2),(271,178,57,2),(272,179,57,2),(273,180,57,2),(274,181,57,2),(276,182,57,2),(278,183,57,2),(280,184,57,2),(281,185,57,2),(283,186,57,2),(284,187,57,2),(286,188,57,2),(288,189,57,2),(289,190,57,2),(290,191,57,2),(292,192,57,2),(294,193,57,2),(295,194,57,2),(297,195,57,2),(299,196,57,2),(301,197,57,2),(302,198,57,2),(303,199,57,2),(304,200,57,2),(305,201,57,2),(307,202,57,2),(308,203,57,2),(309,204,57,2),(311,205,57,2),(312,206,57,2),(313,207,57,2),(314,208,57,2),(316,209,57,2),(318,210,57,2),(319,211,57,2),(321,212,57,2),(323,213,57,2),(324,214,57,2),(326,215,57,2),(328,216,57,2),(329,217,57,2),(331,218,57,2),(332,219,57,2),(334,220,57,2),(336,221,57,2),(337,222,57,2),(338,223,57,2),(340,224,57,2),(342,225,57,2),(344,226,57,2),(346,227,57,2),(348,228,57,2),(349,229,57,2),(350,230,57,2),(352,231,57,2),(354,232,57,2),(355,233,57,2),(357,234,57,2),(359,235,57,2),(360,236,57,2),(361,237,57,2),(363,238,57,2),(364,239,57,2),(366,240,57,2),(368,241,57,2),(370,242,57,2),(372,243,57,2),(373,244,57,2),(375,245,57,2),(377,246,57,2),(379,247,57,2),(380,248,57,2),(381,249,57,2),(382,250,57,2),(384,251,57,2),(385,252,57,2),(387,253,57,2),(388,254,57,2),(389,255,57,2),(390,256,57,2),(391,257,57,2),(392,258,57,2),(394,259,57,2),(395,260,57,2),(397,261,57,2),(399,262,57,2),(400,263,57,2),(402,264,57,2),(404,265,57,2),(406,266,57,2),(407,267,57,2),(408,268,57,2),(409,269,57,2),(410,270,57,2),(411,271,57,2),(413,272,57,2),(414,273,57,2),(415,274,57,2),(416,275,57,2),(417,276,57,2),(418,277,57,2),(420,278,57,2),(421,279,57,2),(422,280,57,2),(423,281,57,2),(424,282,57,2),(425,283,57,2),(426,284,57,2),(427,285,57,2),(429,286,57,2),(430,287,57,2),(432,288,57,2),(433,289,57,2),(434,290,57,2),(435,290,57,3),(436,291,57,2),(438,292,57,2),(440,293,57,2),(441,294,57,2),(442,295,57,2),(444,296,57,2),(446,297,57,2),(448,298,57,2),(450,299,57,2),(451,300,57,2),(457,303,58,3),(510,337,58,3),(720,491,58,2),(750,521,58,2),(773,544,58,2),(514,339,59,3),(31,20,60,3),(51,34,60,3),(298,195,60,3),(345,226,60,3),(356,233,60,3),(367,240,60,3),(545,361,60,3),(708,479,60,2),(738,509,60,2),(14,9,61,3),(306,201,61,3),(797,568,61,2),(103,66,62,3),(172,113,62,3),(198,130,62,3),(227,149,62,3),(470,311,62,3),(600,398,62,3),(706,477,62,2),(736,507,62,2),(757,528,62,2),(177,116,63,3),(660,437,63,3),(634,420,64,3),(756,527,64,2),(38,24,65,3),(219,143,65,3),(525,346,65,3),(656,435,65,3),(719,490,65,2),(749,520,65,2),(132,86,66,3),(191,126,66,3),(335,220,66,3),(439,292,66,3),(447,297,66,3),(60,42,67,3),(94,61,67,3),(764,535,67,2),(26,17,68,3),(105,67,68,3),(393,258,68,3),(403,264,68,3),(449,298,69,3),(654,434,69,3),(262,171,70,3),(279,183,70,3),(320,211,70,3),(362,237,70,3),(614,406,70,3),(689,460,71,2),(722,493,71,2),(752,523,71,2),(70,47,72,3),(129,84,72,3),(333,219,72,3),(365,239,72,3),(759,530,72,2),(721,492,73,2),(751,522,73,2),(777,548,73,2),(68,46,74,3),(77,51,74,3),(498,330,74,3),(139,91,75,3),(287,188,76,3),(322,212,76,3),(207,135,77,3),(222,145,77,3),(347,227,77,3),(716,487,77,2),(746,517,77,2),(401,263,78,3),(771,542,78,2),(236,155,79,3),(267,175,79,3),(459,304,79,3),(587,389,79,3),(100,64,80,3),(270,177,80,3),(594,394,80,3),(755,526,80,2),(678,449,82,3),(686,457,82,2),(8,5,83,3),(512,338,84,3),(602,399,84,3),(662,438,85,3),(6,4,87,3),(343,225,87,3),(443,295,87,3),(112,73,88,3),(518,341,88,3),(571,380,88,3),(636,421,88,3),(671,445,88,3),(766,537,88,2),(89,58,89,3),(712,483,89,2),(742,513,89,2),(114,74,90,3),(181,118,90,3),(606,401,90,3),(792,563,90,2),(161,106,91,3),(454,301,91,3),(195,128,92,3),(687,458,92,2),(19,12,93,3),(234,154,93,3),(579,385,93,3),(632,419,93,3),(705,476,93,2),(735,506,93,2),(798,569,93,2),(790,561,94,2),(29,19,95,3),(255,167,95,3),(317,209,95,3),(386,252,95,3),(465,308,95,3),(585,388,95,3),(658,436,95,3),(789,560,95,2),(358,234,96,3),(412,271,96,3),(508,336,97,3),(152,100,98,3),(610,404,99,3),(431,287,100,3),(550,365,100,3),(784,555,100,2),(142,93,101,3),(275,181,101,3),(697,468,103,2),(727,498,103,2),(714,485,105,2),(744,515,105,2),(782,553,106,2),(453,301,107,2),(455,302,107,2),(456,303,107,2),(458,304,107,2),(460,305,107,2),(461,306,107,2),(462,307,107,2),(464,308,107,2),(466,309,107,2),(467,310,107,2),(469,311,107,2),(471,312,107,2),(473,313,107,2),(474,314,107,2),(475,315,107,2),(477,316,107,2),(478,317,107,2),(479,318,107,2),(481,319,107,2),(482,320,107,2),(483,321,107,2),(484,322,107,2),(486,323,107,2),(487,324,107,2),(489,325,107,2),(490,326,107,2),(492,327,107,2),(494,328,107,2),(496,329,107,2),(497,330,107,2),(499,331,107,2),(501,332,107,2),(503,333,107,2),(505,334,107,2),(506,335,107,2),(507,336,107,2),(509,337,107,2),(511,338,107,2),(513,339,107,2),(515,340,107,2),(517,341,107,2),(519,342,107,2),(520,343,107,2),(522,344,107,2),(523,345,107,2),(524,346,107,2),(526,347,107,2),(527,348,107,2),(528,349,107,2),(529,350,107,2),(531,351,107,2),(532,352,107,2),(534,353,107,2),(535,354,107,2),(537,355,107,2),(538,356,107,2),(540,357,107,2),(541,358,107,2),(542,359,107,2),(543,360,107,2),(544,361,107,2),(546,362,107,2),(547,363,107,2),(548,364,107,2),(549,365,107,2),(551,366,107,2),(553,367,107,2),(554,368,107,2),(555,369,107,2),(556,370,107,2),(557,371,107,2),(559,372,107,2),(560,373,107,2),(561,374,107,2),(562,375,107,2),(563,376,107,2),(564,377,107,2),(566,378,107,2),(568,379,107,2),(570,380,107,2),(572,381,107,2),(574,382,107,2),(576,383,107,2),(577,384,107,2),(578,385,107,2),(580,386,107,2),(582,387,107,2),(584,388,107,2),(586,389,107,2),(588,390,107,2),(589,391,107,2),(590,392,107,2),(592,393,107,2),(593,394,107,2),(595,395,107,2),(596,396,107,2),(598,397,107,2),(599,398,107,2),(601,399,107,2),(603,400,107,2),(605,401,107,2),(607,402,107,2),(608,403,107,2),(609,404,107,2),(611,405,107,2),(613,406,107,2),(615,407,107,2),(617,408,107,2),(618,409,107,2),(619,410,107,2),(621,411,107,2),(622,412,107,2),(624,413,107,2),(625,414,107,2),(627,415,107,2),(628,416,107,2),(629,417,107,2),(630,418,107,2),(631,419,107,2),(633,420,107,2),(635,421,107,2),(637,422,107,2),(638,423,107,2),(639,424,107,2),(641,425,107,2),(642,426,107,2),(643,427,107,2),(645,428,107,2),(646,429,107,2),(648,430,107,2),(650,431,107,2),(651,432,107,2),(652,433,107,2),(653,434,107,2),(655,435,107,2),(657,436,107,2),(659,437,107,2),(661,438,107,2),(663,439,107,2),(664,440,107,2),(665,441,107,2),(666,442,107,2),(667,443,107,2),(669,444,107,2),(670,445,107,2),(672,446,107,2),(674,447,107,2),(676,448,107,2),(677,449,107,2),(679,450,107,2),(765,536,107,2),(1,1,109,2),(2,2,109,2),(3,3,109,2),(5,4,109,2),(7,5,109,2),(9,6,109,2),(10,7,109,2),(11,8,109,2),(13,9,109,2),(15,10,109,2),(16,11,109,2),(18,12,109,2),(20,13,109,2),(22,14,109,2),(23,15,109,2),(24,16,109,2),(25,17,109,2),(27,18,109,2),(28,19,109,2),(30,20,109,2),(32,21,109,2),(34,22,109,2),(36,23,109,2),(37,24,109,2),(39,25,109,2),(40,26,109,2),(41,27,109,2),(42,28,109,2),(44,29,109,2),(45,30,109,2),(46,31,109,2),(48,32,109,2),(49,33,109,2),(50,34,109,2),(52,35,109,2),(53,36,109,2),(54,37,109,2),(55,38,109,2),(56,39,109,2),(57,40,109,2),(58,41,109,2),(59,42,109,2),(61,43,109,2),(63,44,109,2),(65,45,109,2),(67,46,109,2),(69,47,109,2),(71,48,109,2),(72,49,109,2),(74,50,109,2),(76,51,109,2),(78,52,109,2),(80,53,109,2),(81,54,109,2),(82,55,109,2),(84,56,109,2),(86,57,109,2),(88,58,109,2),(90,59,109,2),(92,60,109,2),(93,61,109,2),(95,62,109,2),(97,63,109,2),(99,64,109,2),(101,65,109,2),(102,66,109,2),(104,67,109,2),(106,68,109,2),(107,69,109,2),(108,70,109,2),(109,71,109,2),(110,72,109,2),(111,73,109,2),(113,74,109,2),(115,75,109,2),(116,76,109,2),(117,77,109,2),(118,78,109,2),(120,79,109,2),(121,80,109,2),(123,81,109,2),(124,82,109,2),(126,83,109,2),(128,84,109,2),(130,85,109,2),(131,86,109,2),(133,87,109,2),(135,88,109,2),(136,89,109,2),(137,90,109,2),(138,91,109,2),(140,92,109,2),(141,93,109,2),(143,94,109,2),(144,95,109,2),(145,96,109,2),(147,97,109,2),(148,98,109,2),(149,99,109,2),(151,100,109,2),(153,101,109,2),(155,102,109,2),(156,103,109,2),(158,104,109,2),(159,105,109,2),(160,106,109,2),(162,107,109,2),(164,108,109,2),(166,109,109,2),(167,110,109,2),(168,111,109,2),(169,112,109,2),(171,113,109,2),(173,114,109,2),(175,115,109,2),(176,116,109,2),(178,117,109,2),(180,118,109,2),(182,119,109,2),(183,120,109,2),(184,121,109,2),(185,122,109,2),(186,123,109,2),(187,124,109,2),(188,125,109,2),(190,126,109,2),(192,127,109,2),(194,128,109,2),(196,129,109,2),(197,130,109,2),(199,131,109,2),(201,132,109,2),(203,133,109,2),(205,134,109,2),(206,135,109,2),(208,136,109,2),(209,137,109,2),(211,138,109,2),(212,139,109,2),(213,140,109,2),(215,141,109,2),(217,142,109,2),(218,143,109,2),(220,144,109,2),(221,145,109,2),(223,146,109,2),(224,147,109,2),(225,148,109,2),(226,149,109,2),(228,150,109,2),(767,538,111,2),(713,484,113,2),(743,514,113,2),(702,473,115,2),(732,503,115,2),(763,534,115,2),(776,547,116,2),(693,464,119,2),(723,494,119,2),(774,545,119,2),(769,540,121,2),(793,564,122,2),(703,474,124,2),(733,504,124,2),(803,574,125,2),(786,557,126,2),(795,566,131,2),(783,554,132,2),(772,543,135,2),(802,573,143,2),(799,570,145,2),(695,466,146,2),(725,496,146,2),(787,558,149,2),(754,525,150,2),(779,550,151,2),(699,470,157,2),(729,500,157,2),(785,556,160,2),(710,481,170,2),(740,511,170,2),(801,572,171,2),(715,486,173,2),(745,516,173,2),(788,559,174,2),(770,541,182,2),(718,489,184,2),(748,519,184,2),(791,562,184,2),(768,539,189,2),(761,532,193,2),(775,546,198,2),(762,533,201,2); /*!40000 ALTER TABLE `civicrm_activity_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -107,7 +107,7 @@ 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,74,1,1,0,'298D Northpoint Dr SE',298,'D',NULL,'Northpoint','Dr','SE',NULL,NULL,NULL,NULL,'Sunbury',1,1034,NULL,'43074',NULL,1228,40.270926,-82.84501,0,NULL,NULL,NULL),(2,59,1,1,0,'824R Van Ness Dr E',824,'R',NULL,'Van Ness','Dr','E',NULL,NULL,NULL,NULL,'Delray Beach',1,1008,NULL,'33448',NULL,1228,26.645895,-80.430269,0,NULL,NULL,NULL),(3,176,1,1,0,'317H Northpoint Way SW',317,'H',NULL,'Northpoint','Way','SW',NULL,NULL,NULL,NULL,'Springfield',1,1012,NULL,'62777',NULL,1228,39.749457,-89.606017,0,NULL,NULL,NULL),(4,97,1,1,0,'152P El Camino Path SW',152,'P',NULL,'El Camino','Path','SW',NULL,NULL,NULL,NULL,'Tampa',1,1008,NULL,'33603',NULL,1228,27.984198,-82.4627,0,NULL,NULL,NULL),(5,113,1,1,0,'628W Green Ln E',628,'W',NULL,'Green','Ln','E',NULL,NULL,NULL,NULL,'Greenville',1,1023,NULL,'38703',NULL,1228,33.442801,-91.02984,0,NULL,NULL,NULL),(6,164,1,1,0,'586R Maple Way NE',586,'R',NULL,'Maple','Way','NE',NULL,NULL,NULL,NULL,'Memphis',1,1041,NULL,'38133',NULL,1228,35.208709,-89.80518,0,NULL,NULL,NULL),(7,56,1,1,0,'81P Jackson Dr N',81,'P',NULL,'Jackson','Dr','N',NULL,NULL,NULL,NULL,'Artemus',1,1016,NULL,'40903',NULL,1228,36.825088,-83.8385,0,NULL,NULL,NULL),(8,35,1,1,0,'285E Northpoint Ln W',285,'E',NULL,'Northpoint','Ln','W',NULL,NULL,NULL,NULL,'Kansas',1,1000,NULL,'35573',NULL,1228,33.92169,-87.524264,0,NULL,NULL,NULL),(9,15,1,1,0,'842F Bay Ave NW',842,'F',NULL,'Bay','Ave','NW',NULL,NULL,NULL,NULL,'March Air Force Base',1,1004,NULL,'92518',NULL,1228,33.891084,-117.2726,0,NULL,NULL,NULL),(10,143,1,1,0,'442C Van Ness Rd SE',442,'C',NULL,'Van Ness','Rd','SE',NULL,NULL,NULL,NULL,'Raleigh',1,1032,NULL,'27698',NULL,1228,35.797692,-78.625265,0,NULL,NULL,NULL),(11,116,1,1,0,'141S Bay Pl S',141,'S',NULL,'Bay','Pl','S',NULL,NULL,NULL,NULL,'Danville',1,1028,NULL,'03891',NULL,1228,42.906495,-71.140537,0,NULL,NULL,NULL),(12,16,1,1,0,'685S Green Ave S',685,'S',NULL,'Green','Ave','S',NULL,NULL,NULL,NULL,'Woodbury',1,1006,NULL,'06798',NULL,1228,41.554112,-73.20539,0,NULL,NULL,NULL),(13,166,1,1,0,'322A Northpoint St SW',322,'A',NULL,'Northpoint','St','SW',NULL,NULL,NULL,NULL,'Bentley',1,1021,NULL,'48613',NULL,1228,43.93724,-84.12889,0,NULL,NULL,NULL),(14,161,1,1,0,'896P Pine Ln W',896,'P',NULL,'Pine','Ln','W',NULL,NULL,NULL,NULL,'Gans',1,1037,NULL,'15439',NULL,1228,39.771324,-79.635842,0,NULL,NULL,NULL),(15,145,1,1,0,'864J Lincoln Rd N',864,'J',NULL,'Lincoln','Rd','N',NULL,NULL,NULL,NULL,'Bagley',1,1048,NULL,'53801',NULL,1228,42.922835,-91.09378,0,NULL,NULL,NULL),(16,167,1,1,0,'56X Second Pl SE',56,'X',NULL,'Second','Pl','SE',NULL,NULL,NULL,NULL,'New Braunfels',1,1042,NULL,'78134',NULL,1228,29.687579,-98.120104,0,NULL,NULL,NULL),(17,184,1,1,0,'923P Lincoln Blvd NW',923,'P',NULL,'Lincoln','Blvd','NW',NULL,NULL,NULL,NULL,'Eden',1,1048,NULL,'53019',NULL,1228,43.699527,-88.32233,0,NULL,NULL,NULL),(18,65,1,1,0,'675Y Lincoln Path SE',675,'Y',NULL,'Lincoln','Path','SE',NULL,NULL,NULL,NULL,'Mattawana',1,1037,NULL,'17054',NULL,1228,40.495979,-77.723716,0,NULL,NULL,NULL),(19,138,1,1,0,'474N Caulder St NE',474,'N',NULL,'Caulder','St','NE',NULL,NULL,NULL,NULL,'Greensboro',1,1032,NULL,'27416',NULL,1228,36.080707,-80.0244,0,NULL,NULL,NULL),(20,121,1,1,0,'865R Pine Path NE',865,'R',NULL,'Pine','Path','NE',NULL,NULL,NULL,NULL,'French Lick',1,1013,NULL,'47432',NULL,1228,38.507726,-86.62922,0,NULL,NULL,NULL),(21,11,1,1,0,'401A Van Ness Ln W',401,'A',NULL,'Van Ness','Ln','W',NULL,NULL,NULL,NULL,'Tylersport',1,1037,NULL,'18971',NULL,1228,40.34698,-75.376985,0,NULL,NULL,NULL),(22,7,1,1,0,'704H Second Pl E',704,'H',NULL,'Second','Pl','E',NULL,NULL,NULL,NULL,'Cylinder',1,1014,NULL,'50528',NULL,1228,43.117331,-94.54767,0,NULL,NULL,NULL),(23,198,1,1,0,'358E College Rd SE',358,'E',NULL,'College','Rd','SE',NULL,NULL,NULL,NULL,'Bayou Goula',1,1017,NULL,'70716',NULL,1228,30.261384,-91.36026,0,NULL,NULL,NULL),(24,50,1,1,0,'367L Cadell Ave S',367,'L',NULL,'Cadell','Ave','S',NULL,NULL,NULL,NULL,'Farmers',1,1016,NULL,'40319',NULL,1228,38.140258,-83.533691,0,NULL,NULL,NULL),(25,149,1,1,0,'567T Van Ness Blvd E',567,'T',NULL,'Van Ness','Blvd','E',NULL,NULL,NULL,NULL,'Lufkin',1,1042,NULL,'75903',NULL,1228,31.276647,-94.56759,0,NULL,NULL,NULL),(26,172,1,1,0,'604S Green Rd W',604,'S',NULL,'Green','Rd','W',NULL,NULL,NULL,NULL,'Johnson City',1,1041,NULL,'37601',NULL,1228,36.331006,-82.3386,0,NULL,NULL,NULL),(27,57,1,1,0,'553I Bay Dr SE',553,'I',NULL,'Bay','Dr','SE',NULL,NULL,NULL,NULL,'Jewett',1,1042,NULL,'75846',NULL,1228,31.346581,-96.17433,0,NULL,NULL,NULL),(28,119,1,1,0,'735S States Rd W',735,'S',NULL,'States','Rd','W',NULL,NULL,NULL,NULL,'Sabinal',1,1042,NULL,'78881',NULL,1228,29.361493,-99.50497,0,NULL,NULL,NULL),(29,84,1,1,0,'223S Green Ln SW',223,'S',NULL,'Green','Ln','SW',NULL,NULL,NULL,NULL,'Crockett',1,1045,NULL,'24323',NULL,1228,36.88091,-81.1992,0,NULL,NULL,NULL),(30,162,1,1,0,'961B Maple Ln N',961,'B',NULL,'Maple','Ln','N',NULL,NULL,NULL,NULL,'Hokah',1,1022,NULL,'55941',NULL,1228,43.756567,-91.36126,0,NULL,NULL,NULL),(31,29,1,1,0,'413Y Van Ness Path E',413,'Y',NULL,'Van Ness','Path','E',NULL,NULL,NULL,NULL,'Whatley',1,1000,NULL,'36482',NULL,1228,31.614138,-87.63373,0,NULL,NULL,NULL),(32,155,1,1,0,'438B El Camino Way E',438,'B',NULL,'El Camino','Way','E',NULL,NULL,NULL,NULL,'Napavine',1,1046,NULL,'98565',NULL,1228,46.580105,-122.90699,0,NULL,NULL,NULL),(33,174,1,1,0,'54D Second Path NE',54,'D',NULL,'Second','Path','NE',NULL,NULL,NULL,NULL,'Alexandria',1,1045,NULL,'22310',NULL,1228,38.782013,-77.12125,0,NULL,NULL,NULL),(34,141,1,1,0,'884J El Camino Path E',884,'J',NULL,'El Camino','Path','E',NULL,NULL,NULL,NULL,'Atlanta',1,1009,NULL,'30332',NULL,1228,33.776305,-84.397976,0,NULL,NULL,NULL),(35,114,1,1,0,'746I Bay Rd NE',746,'I',NULL,'Bay','Rd','NE',NULL,NULL,NULL,NULL,'Remington',1,1013,NULL,'47977',NULL,1228,40.763755,-87.15306,0,NULL,NULL,NULL),(36,163,1,1,0,'595J Martin Luther King Pl S',595,'J',NULL,'Martin Luther King','Pl','S',NULL,NULL,NULL,NULL,'Roosevelt',1,1046,NULL,'99356',NULL,1228,45.816528,-120.28372,0,NULL,NULL,NULL),(37,124,1,1,0,'921Q Green St N',921,'Q',NULL,'Green','St','N',NULL,NULL,NULL,NULL,'Glen Daniel',1,1047,NULL,'25844',NULL,1228,37.802995,-81.36495,0,NULL,NULL,NULL),(38,19,1,1,0,'393I Second Ave E',393,'I',NULL,'Second','Ave','E',NULL,NULL,NULL,NULL,'W Hartford',1,1006,NULL,'06133',NULL,1228,41.791776,-72.718832,0,NULL,NULL,NULL),(39,37,1,1,0,'797O Jackson St NW',797,'O',NULL,'Jackson','St','NW',NULL,NULL,NULL,NULL,'Diamond',1,1024,NULL,'64840',NULL,1228,37.002574,-94.32419,0,NULL,NULL,NULL),(40,154,1,1,0,'277L Dowlen Ln NW',277,'L',NULL,'Dowlen','Ln','NW',NULL,NULL,NULL,NULL,'Grass Creek',1,1013,NULL,'46935',NULL,1228,41.040988,-86.206925,0,NULL,NULL,NULL),(41,76,1,1,0,'21V Cadell Ave S',21,'V',NULL,'Cadell','Ave','S',NULL,NULL,NULL,NULL,'Eastland',1,1042,NULL,'76448',NULL,1228,32.398681,-98.7959,0,NULL,NULL,NULL),(42,54,1,1,0,'319C Second Rd SW',319,'C',NULL,'Second','Rd','SW',NULL,NULL,NULL,NULL,'Knox City',1,1024,NULL,'63446',NULL,1228,40.14036,-92.01104,0,NULL,NULL,NULL),(43,130,1,1,0,'222C El Camino Pl NW',222,'C',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Seattle',1,1046,NULL,'98124',NULL,1228,47.432251,-121.803388,0,NULL,NULL,NULL),(44,148,1,1,0,'492K Lincoln Blvd NE',492,'K',NULL,'Lincoln','Blvd','NE',NULL,NULL,NULL,NULL,'Floral City',1,1008,NULL,'34436',NULL,1228,28.751024,-82.28449,0,NULL,NULL,NULL),(45,67,1,1,0,'86X Caulder Way N',86,'X',NULL,'Caulder','Way','N',NULL,NULL,NULL,NULL,'Papaaloa',1,1010,NULL,'96780',NULL,1228,19.946758,-155.2086,0,NULL,NULL,NULL),(46,52,1,1,0,'611G College Ave W',611,'G',NULL,'College','Ave','W',NULL,NULL,NULL,NULL,'Washington',1,1018,NULL,'04574',NULL,1228,44.274007,-69.38896,0,NULL,NULL,NULL),(47,117,1,1,0,'430I Second St NW',430,'I',NULL,'Second','St','NW',NULL,NULL,NULL,NULL,'Jewett',1,1012,NULL,'62436',NULL,1228,39.190088,-88.2601,0,NULL,NULL,NULL),(48,129,1,1,0,'255N Maple Rd S',255,'N',NULL,'Maple','Rd','S',NULL,NULL,NULL,NULL,'East Marion',1,1031,NULL,'11939',NULL,1228,41.128923,-72.34189,0,NULL,NULL,NULL),(49,159,1,1,0,'540W Main Way NE',540,'W',NULL,'Main','Way','NE',NULL,NULL,NULL,NULL,'Hunt',1,1031,NULL,'14846',NULL,1228,42.542056,-77.99501,0,NULL,NULL,NULL),(50,22,1,1,0,'784V Bay Ln SW',784,'V',NULL,'Bay','Ln','SW',NULL,NULL,NULL,NULL,'Brookdale',1,1004,NULL,'95007',NULL,1228,37.10548,-122.1047,0,NULL,NULL,NULL),(51,13,1,1,0,'507J Maple Ln SW',507,'J',NULL,'Maple','Ln','SW',NULL,NULL,NULL,NULL,'Adams Run',1,1039,NULL,'29426',NULL,1228,32.790622,-80.38489,0,NULL,NULL,NULL),(52,73,1,1,0,'145D Maple Rd N',145,'D',NULL,'Maple','Rd','N',NULL,NULL,NULL,NULL,'La Crosse',1,1045,NULL,'23950',NULL,1228,36.678507,-78.08098,0,NULL,NULL,NULL),(53,196,1,1,0,'412G Second Pl W',412,'G',NULL,'Second','Pl','W',NULL,NULL,NULL,NULL,'Atlanta',1,1009,NULL,'30385',NULL,1228,33.844371,-84.47405,0,NULL,NULL,NULL),(54,125,1,1,0,'451R Beech Rd S',451,'R',NULL,'Beech','Rd','S',NULL,NULL,NULL,NULL,'Kihei',1,1010,NULL,'96753',NULL,1228,20.771418,-156.45769,0,NULL,NULL,NULL),(55,158,1,1,0,'817A Lincoln Ave N',817,'A',NULL,'Lincoln','Ave','N',NULL,NULL,NULL,NULL,'Flagler',1,1005,NULL,'80815',NULL,1228,39.348989,-103.07103,0,NULL,NULL,NULL),(56,18,1,1,0,'280X El Camino Pl SE',280,'X',NULL,'El Camino','Pl','SE',NULL,NULL,NULL,NULL,'Mayer',1,1002,NULL,'86333',NULL,1228,34.339938,-112.13612,0,NULL,NULL,NULL),(57,51,1,1,0,'557M Caulder Ave SW',557,'M',NULL,'Caulder','Ave','SW',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10138',NULL,1228,40.780751,-73.977182,0,NULL,NULL,NULL),(58,62,1,1,0,'974Q Dowlen Ave S',974,'Q',NULL,'Dowlen','Ave','S',NULL,NULL,NULL,NULL,'Mooers',1,1031,NULL,'12958',NULL,1228,44.958106,-73.58022,0,NULL,NULL,NULL),(59,85,1,1,0,'256Q Van Ness Dr SE',256,'Q',NULL,'Van Ness','Dr','SE',NULL,NULL,NULL,NULL,'Cardwell',1,1025,NULL,'59721',NULL,1228,45.849728,-111.86233,0,NULL,NULL,NULL),(60,43,1,1,0,'452F College Blvd SE',452,'F',NULL,'College','Blvd','SE',NULL,NULL,NULL,NULL,'Comstock',1,1048,NULL,'54826',NULL,1228,45.505963,-92.17646,0,NULL,NULL,NULL),(61,192,1,1,0,'783X Lincoln St E',783,'X',NULL,'Lincoln','St','E',NULL,NULL,NULL,NULL,'Waitsfield',1,1044,NULL,'05673',NULL,1228,44.184704,-72.8367,0,NULL,NULL,NULL),(62,170,1,1,0,'540X Jackson Blvd SE',540,'X',NULL,'Jackson','Blvd','SE',NULL,NULL,NULL,NULL,'Jefferson',1,1005,NULL,'80456',NULL,1228,39.310793,-105.74027,0,NULL,NULL,NULL),(63,44,1,1,0,'334U Second Ln S',334,'U',NULL,'Second','Ln','S',NULL,NULL,NULL,NULL,'Dumont',1,1005,NULL,'80436',NULL,1228,39.766277,-105.61523,0,NULL,NULL,NULL),(64,58,1,1,0,'65H El Camino Ave SW',65,'H',NULL,'El Camino','Ave','SW',NULL,NULL,NULL,NULL,'Charleston',1,1047,NULL,'25364',NULL,1228,38.296818,-81.554655,0,NULL,NULL,NULL),(65,46,1,1,0,'548I Northpoint St NW',548,'I',NULL,'Northpoint','St','NW',NULL,NULL,NULL,NULL,'Martinez',1,1004,NULL,'94553',NULL,1228,37.998912,-122.11501,0,NULL,NULL,NULL),(66,34,3,1,0,'69U Dowlen Dr N',69,'U',NULL,'Dowlen','Dr','N',NULL,'Attn: Accounting',NULL,NULL,'Goldfield',1,1014,NULL,'50542',NULL,1228,42.764886,-93.94113,0,NULL,NULL,NULL),(67,157,2,1,0,'69U Dowlen Dr N',69,'U',NULL,'Dowlen','Dr','N',NULL,'Attn: Accounting',NULL,NULL,'Goldfield',1,1014,NULL,'50542',NULL,1228,42.764886,-93.94113,0,NULL,NULL,66),(68,181,3,1,0,'713Y Bay Way SE',713,'Y',NULL,'Bay','Way','SE',NULL,'Donor Relations',NULL,NULL,'Sugar Valley',1,1009,NULL,'30746',NULL,1228,34.574804,-85.02482,0,NULL,NULL,NULL),(69,42,2,1,0,'713Y Bay Way SE',713,'Y',NULL,'Bay','Way','SE',NULL,'Donor Relations',NULL,NULL,'Sugar Valley',1,1009,NULL,'30746',NULL,1228,34.574804,-85.02482,0,NULL,NULL,68),(70,142,3,1,0,'995W Jackson St N',995,'W',NULL,'Jackson','St','N',NULL,'Editorial Dept',NULL,NULL,'Troy',1,1045,NULL,'22974',NULL,1228,37.959376,-78.26353,0,NULL,NULL,NULL),(71,41,2,1,0,'995W Jackson St N',995,'W',NULL,'Jackson','St','N',NULL,'Editorial Dept',NULL,NULL,'Troy',1,1045,NULL,'22974',NULL,1228,37.959376,-78.26353,0,NULL,NULL,70),(72,144,3,1,0,'942T Green Way E',942,'T',NULL,'Green','Way','E',NULL,'Churchgate',NULL,NULL,'Scotts Valley',1,1004,NULL,'95066',NULL,1228,37.057575,-122.01507,0,NULL,NULL,NULL),(73,89,3,1,0,'551I Martin Luther King Pl NE',551,'I',NULL,'Martin Luther King','Pl','NE',NULL,'c/o PO Plus',NULL,NULL,'Hollywood',1,1008,NULL,'33019',NULL,1228,26.018967,-80.12231,0,NULL,NULL,NULL),(74,111,2,1,0,'551I Martin Luther King Pl NE',551,'I',NULL,'Martin Luther King','Pl','NE',NULL,'c/o PO Plus',NULL,NULL,'Hollywood',1,1008,NULL,'33019',NULL,1228,26.018967,-80.12231,0,NULL,NULL,73),(75,189,3,1,0,'116H Northpoint Blvd NE',116,'H',NULL,'Northpoint','Blvd','NE',NULL,'Churchgate',NULL,NULL,'Westminster',1,1004,NULL,'92684',NULL,1228,33.640302,-117.769442,0,NULL,NULL,NULL),(76,26,3,1,0,'230R Northpoint Ave NW',230,'R',NULL,'Northpoint','Ave','NW',NULL,'Donor Relations',NULL,NULL,'Troy',1,1031,NULL,'12180',NULL,1228,42.731628,-73.66465,0,NULL,NULL,NULL),(77,154,2,0,0,'230R Northpoint Ave NW',230,'R',NULL,'Northpoint','Ave','NW',NULL,'Donor Relations',NULL,NULL,'Troy',1,1031,NULL,'12180',NULL,1228,42.731628,-73.66465,0,NULL,NULL,76),(78,123,3,1,0,'536S Second Dr SW',536,'S',NULL,'Second','Dr','SW',NULL,'Mailstop 101',NULL,NULL,'Ameagle',1,1047,NULL,'25004',NULL,1228,37.784459,-81.118491,0,NULL,NULL,NULL),(79,137,2,1,0,'536S Second Dr SW',536,'S',NULL,'Second','Dr','SW',NULL,'Mailstop 101',NULL,NULL,'Ameagle',1,1047,NULL,'25004',NULL,1228,37.784459,-81.118491,0,NULL,NULL,78),(80,103,3,1,0,'680F Second Path SE',680,'F',NULL,'Second','Path','SE',NULL,'Cuffe Parade',NULL,NULL,'Booth',1,1000,NULL,'36008',NULL,1228,32.501649,-86.572711,0,NULL,NULL,NULL),(81,127,3,1,0,'327U Bay Blvd SE',327,'U',NULL,'Bay','Blvd','SE',NULL,'Receiving',NULL,NULL,'Avinger',1,1042,NULL,'75630',NULL,1228,32.854406,-94.55859,0,NULL,NULL,NULL),(82,75,3,1,0,'736T Woodbridge Rd S',736,'T',NULL,'Woodbridge','Rd','S',NULL,'Mailstop 101',NULL,NULL,'Opal',1,1049,NULL,'83124',NULL,1228,41.767699,-110.27732,0,NULL,NULL,NULL),(83,77,2,1,0,'736T Woodbridge Rd S',736,'T',NULL,'Woodbridge','Rd','S',NULL,'Mailstop 101',NULL,NULL,'Opal',1,1049,NULL,'83124',NULL,1228,41.767699,-110.27732,0,NULL,NULL,82),(84,70,3,1,0,'674M Maple Pl S',674,'M',NULL,'Maple','Pl','S',NULL,'Mailstop 101',NULL,NULL,'Downey',1,1004,NULL,'90242',NULL,1228,33.92018,-118.14291,0,NULL,NULL,NULL),(85,91,2,1,0,'674M Maple Pl S',674,'M',NULL,'Maple','Pl','S',NULL,'Mailstop 101',NULL,NULL,'Downey',1,1004,NULL,'90242',NULL,1228,33.92018,-118.14291,0,NULL,NULL,84),(86,115,3,1,0,'798F States Path SW',798,'F',NULL,'States','Path','SW',NULL,'c/o PO Plus',NULL,NULL,'Nora Springs',1,1014,NULL,'50458',NULL,1228,43.147661,-93.00519,0,NULL,NULL,NULL),(87,139,3,1,0,'924C Woodbridge Ln S',924,'C',NULL,'Woodbridge','Ln','S',NULL,'Editorial Dept',NULL,NULL,'Smithfield',1,1016,NULL,'40068',NULL,1228,38.400619,-85.27741,0,NULL,NULL,NULL),(88,114,2,0,0,'924C Woodbridge Ln S',924,'C',NULL,'Woodbridge','Ln','S',NULL,'Editorial Dept',NULL,NULL,'Smithfield',1,1016,NULL,'40068',NULL,1228,38.400619,-85.27741,0,NULL,NULL,87),(89,200,3,1,0,'253V Bay Pl SW',253,'V',NULL,'Bay','Pl','SW',NULL,'Attn: Development',NULL,NULL,'Pine River',1,1048,NULL,'54965',NULL,1228,44.167646,-89.04218,0,NULL,NULL,NULL),(90,101,3,1,0,'435O Second Rd N',435,'O',NULL,'Second','Rd','N',NULL,'Receiving',NULL,NULL,'Brantley',1,1000,NULL,'36009',NULL,1228,31.579451,-86.3188,0,NULL,NULL,NULL),(91,162,2,0,0,'435O Second Rd N',435,'O',NULL,'Second','Rd','N',NULL,'Receiving',NULL,NULL,'Brantley',1,1000,NULL,'36009',NULL,1228,31.579451,-86.3188,0,NULL,NULL,90),(92,69,3,1,0,'767K Beech Ave NW',767,'K',NULL,'Beech','Ave','NW',NULL,'Community Relations',NULL,NULL,'Burtrum',1,1022,NULL,'56318',NULL,1228,45.85303,-94.67459,0,NULL,NULL,NULL),(93,161,2,0,0,'767K Beech Ave NW',767,'K',NULL,'Beech','Ave','NW',NULL,'Community Relations',NULL,NULL,'Burtrum',1,1022,NULL,'56318',NULL,1228,45.85303,-94.67459,0,NULL,NULL,92),(94,102,3,1,0,'963U States Dr E',963,'U',NULL,'States','Dr','E',NULL,'Churchgate',NULL,NULL,'Brownsville',1,1042,NULL,'78523',NULL,1228,25.981006,-97.520941,0,NULL,NULL,NULL),(95,9,2,1,0,'963U States Dr E',963,'U',NULL,'States','Dr','E',NULL,'Churchgate',NULL,NULL,'Brownsville',1,1042,NULL,'78523',NULL,1228,25.981006,-97.520941,0,NULL,NULL,94),(96,105,3,1,0,'29O Pine Rd W',29,'O',NULL,'Pine','Rd','W',NULL,'Disbursements',NULL,NULL,'West Stockbridge',1,1020,NULL,'01266',NULL,1228,42.328535,-73.36407,0,NULL,NULL,NULL),(97,59,2,0,0,'29O Pine Rd W',29,'O',NULL,'Pine','Rd','W',NULL,'Disbursements',NULL,NULL,'West Stockbridge',1,1020,NULL,'01266',NULL,1228,42.328535,-73.36407,0,NULL,NULL,96),(98,90,3,1,0,'775F Second Dr W',775,'F',NULL,'Second','Dr','W',NULL,'Churchgate',NULL,NULL,'Saint Louis',1,1024,NULL,'63155',NULL,1228,38.6531,-90.243462,0,NULL,NULL,NULL),(99,66,2,1,0,'775F Second Dr W',775,'F',NULL,'Second','Dr','W',NULL,'Churchgate',NULL,NULL,'Saint Louis',1,1024,NULL,'63155',NULL,1228,38.6531,-90.243462,0,NULL,NULL,98),(100,6,1,1,0,'611G College Ave W',611,'G',NULL,'College','Ave','W',NULL,NULL,NULL,NULL,'Washington',1,1018,NULL,'04574',NULL,1228,44.274007,-69.38896,0,NULL,NULL,46),(101,60,1,1,0,'611G College Ave W',611,'G',NULL,'College','Ave','W',NULL,NULL,NULL,NULL,'Washington',1,1018,NULL,'04574',NULL,1228,44.274007,-69.38896,0,NULL,NULL,46),(102,131,1,1,0,'611G College Ave W',611,'G',NULL,'College','Ave','W',NULL,NULL,NULL,NULL,'Washington',1,1018,NULL,'04574',NULL,1228,44.274007,-69.38896,0,NULL,NULL,46),(103,67,1,0,0,'727C Woodbridge Pl N',727,'C',NULL,'Woodbridge','Pl','N',NULL,NULL,NULL,NULL,'Tryon',1,1032,NULL,'28782',NULL,1228,35.221428,-82.21712,0,NULL,NULL,NULL),(104,147,1,1,0,'430I Second St NW',430,'I',NULL,'Second','St','NW',NULL,NULL,NULL,NULL,'Jewett',1,1012,NULL,'62436',NULL,1228,39.190088,-88.2601,0,NULL,NULL,47),(105,63,1,1,0,'430I Second St NW',430,'I',NULL,'Second','St','NW',NULL,NULL,NULL,NULL,'Jewett',1,1012,NULL,'62436',NULL,1228,39.190088,-88.2601,0,NULL,NULL,47),(106,183,1,1,0,'430I Second St NW',430,'I',NULL,'Second','St','NW',NULL,NULL,NULL,NULL,'Jewett',1,1012,NULL,'62436',NULL,1228,39.190088,-88.2601,0,NULL,NULL,47),(107,28,1,1,0,'349G Van Ness Ln N',349,'G',NULL,'Van Ness','Ln','N',NULL,NULL,NULL,NULL,'Higden',1,1003,NULL,'72067',NULL,1228,35.564065,-92.1649,0,NULL,NULL,NULL),(108,55,1,1,0,'255N Maple Rd S',255,'N',NULL,'Maple','Rd','S',NULL,NULL,NULL,NULL,'East Marion',1,1031,NULL,'11939',NULL,1228,41.128923,-72.34189,0,NULL,NULL,48),(109,98,1,1,0,'255N Maple Rd S',255,'N',NULL,'Maple','Rd','S',NULL,NULL,NULL,NULL,'East Marion',1,1031,NULL,'11939',NULL,1228,41.128923,-72.34189,0,NULL,NULL,48),(110,197,1,1,0,'255N Maple Rd S',255,'N',NULL,'Maple','Rd','S',NULL,NULL,NULL,NULL,'East Marion',1,1031,NULL,'11939',NULL,1228,41.128923,-72.34189,0,NULL,NULL,48),(111,187,1,1,0,'611N Bay Blvd N',611,'N',NULL,'Bay','Blvd','N',NULL,NULL,NULL,NULL,'Guion',1,1003,NULL,'72540',NULL,1228,35.929689,-91.92632,0,NULL,NULL,NULL),(112,72,1,1,0,'540W Main Way NE',540,'W',NULL,'Main','Way','NE',NULL,NULL,NULL,NULL,'Hunt',1,1031,NULL,'14846',NULL,1228,42.542056,-77.99501,0,NULL,NULL,49),(113,49,1,1,0,'540W Main Way NE',540,'W',NULL,'Main','Way','NE',NULL,NULL,NULL,NULL,'Hunt',1,1031,NULL,'14846',NULL,1228,42.542056,-77.99501,0,NULL,NULL,49),(114,132,1,1,0,'540W Main Way NE',540,'W',NULL,'Main','Way','NE',NULL,NULL,NULL,NULL,'Hunt',1,1031,NULL,'14846',NULL,1228,42.542056,-77.99501,0,NULL,NULL,49),(115,2,1,1,0,'656Z Lincoln Ave W',656,'Z',NULL,'Lincoln','Ave','W',NULL,NULL,NULL,NULL,'Belton',1,1042,NULL,'76513',NULL,1228,31.073329,-97.48642,0,NULL,NULL,NULL),(116,122,1,1,0,'784V Bay Ln SW',784,'V',NULL,'Bay','Ln','SW',NULL,NULL,NULL,NULL,'Brookdale',1,1004,NULL,'95007',NULL,1228,37.10548,-122.1047,0,NULL,NULL,50),(117,86,1,1,0,'784V Bay Ln SW',784,'V',NULL,'Bay','Ln','SW',NULL,NULL,NULL,NULL,'Brookdale',1,1004,NULL,'95007',NULL,1228,37.10548,-122.1047,0,NULL,NULL,50),(118,53,1,1,0,'784V Bay Ln SW',784,'V',NULL,'Bay','Ln','SW',NULL,NULL,NULL,NULL,'Brookdale',1,1004,NULL,'95007',NULL,1228,37.10548,-122.1047,0,NULL,NULL,50),(119,38,1,1,0,'65R Maple Dr E',65,'R',NULL,'Maple','Dr','E',NULL,NULL,NULL,NULL,'Hartford',1,1006,NULL,'06120',NULL,1228,41.784794,-72.67378,0,NULL,NULL,NULL),(120,91,1,0,0,'507J Maple Ln SW',507,'J',NULL,'Maple','Ln','SW',NULL,NULL,NULL,NULL,'Adams Run',1,1039,NULL,'29426',NULL,1228,32.790622,-80.38489,0,NULL,NULL,51),(121,3,1,1,0,'507J Maple Ln SW',507,'J',NULL,'Maple','Ln','SW',NULL,NULL,NULL,NULL,'Adams Run',1,1039,NULL,'29426',NULL,1228,32.790622,-80.38489,0,NULL,NULL,51),(122,111,1,0,0,'507J Maple Ln SW',507,'J',NULL,'Maple','Ln','SW',NULL,NULL,NULL,NULL,'Adams Run',1,1039,NULL,'29426',NULL,1228,32.790622,-80.38489,0,NULL,NULL,51),(123,150,1,1,0,'474I Lincoln Rd W',474,'I',NULL,'Lincoln','Rd','W',NULL,NULL,NULL,NULL,'Kenton',1,1041,NULL,'38233',NULL,1228,36.201487,-89.03087,0,NULL,NULL,NULL),(124,188,1,1,0,'145D Maple Rd N',145,'D',NULL,'Maple','Rd','N',NULL,NULL,NULL,NULL,'La Crosse',1,1045,NULL,'23950',NULL,1228,36.678507,-78.08098,0,NULL,NULL,52),(125,100,1,1,0,'145D Maple Rd N',145,'D',NULL,'Maple','Rd','N',NULL,NULL,NULL,NULL,'La Crosse',1,1045,NULL,'23950',NULL,1228,36.678507,-78.08098,0,NULL,NULL,52),(126,180,1,1,0,'145D Maple Rd N',145,'D',NULL,'Maple','Rd','N',NULL,NULL,NULL,NULL,'La Crosse',1,1045,NULL,'23950',NULL,1228,36.678507,-78.08098,0,NULL,NULL,52),(127,25,1,1,0,'577J Maple Path SW',577,'J',NULL,'Maple','Path','SW',NULL,NULL,NULL,NULL,'Bailey',1,1032,NULL,'27807',NULL,1228,35.797988,-78.10641,0,NULL,NULL,NULL),(128,118,1,1,0,'412G Second Pl W',412,'G',NULL,'Second','Pl','W',NULL,NULL,NULL,NULL,'Atlanta',1,1009,NULL,'30385',NULL,1228,33.844371,-84.47405,0,NULL,NULL,53),(129,30,1,1,0,'412G Second Pl W',412,'G',NULL,'Second','Pl','W',NULL,NULL,NULL,NULL,'Atlanta',1,1009,NULL,'30385',NULL,1228,33.844371,-84.47405,0,NULL,NULL,53),(130,160,1,1,0,'412G Second Pl W',412,'G',NULL,'Second','Pl','W',NULL,NULL,NULL,NULL,'Atlanta',1,1009,NULL,'30385',NULL,1228,33.844371,-84.47405,0,NULL,NULL,53),(131,64,1,1,0,'412G Second Pl W',412,'G',NULL,'Second','Pl','W',NULL,NULL,NULL,NULL,'Atlanta',1,1009,NULL,'30385',NULL,1228,33.844371,-84.47405,0,NULL,NULL,53),(132,169,1,1,0,'451R Beech Rd S',451,'R',NULL,'Beech','Rd','S',NULL,NULL,NULL,NULL,'Kihei',1,1010,NULL,'96753',NULL,1228,20.771418,-156.45769,0,NULL,NULL,54),(133,68,1,1,0,'451R Beech Rd S',451,'R',NULL,'Beech','Rd','S',NULL,NULL,NULL,NULL,'Kihei',1,1010,NULL,'96753',NULL,1228,20.771418,-156.45769,0,NULL,NULL,54),(134,95,1,1,0,'451R Beech Rd S',451,'R',NULL,'Beech','Rd','S',NULL,NULL,NULL,NULL,'Kihei',1,1010,NULL,'96753',NULL,1228,20.771418,-156.45769,0,NULL,NULL,54),(135,175,1,1,0,'11Q Lincoln Ln N',11,'Q',NULL,'Lincoln','Ln','N',NULL,NULL,NULL,NULL,'Hammond',1,1013,NULL,'46323',NULL,1228,41.587718,-87.45528,0,NULL,NULL,NULL),(136,120,1,1,0,'817A Lincoln Ave N',817,'A',NULL,'Lincoln','Ave','N',NULL,NULL,NULL,NULL,'Flagler',1,1005,NULL,'80815',NULL,1228,39.348989,-103.07103,0,NULL,NULL,55),(137,14,1,1,0,'817A Lincoln Ave N',817,'A',NULL,'Lincoln','Ave','N',NULL,NULL,NULL,NULL,'Flagler',1,1005,NULL,'80815',NULL,1228,39.348989,-103.07103,0,NULL,NULL,55),(138,41,1,0,0,'817A Lincoln Ave N',817,'A',NULL,'Lincoln','Ave','N',NULL,NULL,NULL,NULL,'Flagler',1,1005,NULL,'80815',NULL,1228,39.348989,-103.07103,0,NULL,NULL,55),(139,195,1,1,0,'817A Lincoln Ave N',817,'A',NULL,'Lincoln','Ave','N',NULL,NULL,NULL,NULL,'Flagler',1,1005,NULL,'80815',NULL,1228,39.348989,-103.07103,0,NULL,NULL,55),(140,81,1,1,0,'280X El Camino Pl SE',280,'X',NULL,'El Camino','Pl','SE',NULL,NULL,NULL,NULL,'Mayer',1,1002,NULL,'86333',NULL,1228,34.339938,-112.13612,0,NULL,NULL,56),(141,9,1,0,0,'280X El Camino Pl SE',280,'X',NULL,'El Camino','Pl','SE',NULL,NULL,NULL,NULL,'Mayer',1,1002,NULL,'86333',NULL,1228,34.339938,-112.13612,0,NULL,NULL,56),(142,152,1,1,0,'280X El Camino Pl SE',280,'X',NULL,'El Camino','Pl','SE',NULL,NULL,NULL,NULL,'Mayer',1,1002,NULL,'86333',NULL,1228,34.339938,-112.13612,0,NULL,NULL,56),(143,168,1,1,0,'879Y College Pl NW',879,'Y',NULL,'College','Pl','NW',NULL,NULL,NULL,NULL,'Somerset',1,1020,NULL,'02725',NULL,1228,41.721652,-71.17482,0,NULL,NULL,NULL),(144,99,1,1,0,'557M Caulder Ave SW',557,'M',NULL,'Caulder','Ave','SW',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10138',NULL,1228,40.780751,-73.977182,0,NULL,NULL,57),(145,135,1,1,0,'557M Caulder Ave SW',557,'M',NULL,'Caulder','Ave','SW',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10138',NULL,1228,40.780751,-73.977182,0,NULL,NULL,57),(146,112,1,1,0,'557M Caulder Ave SW',557,'M',NULL,'Caulder','Ave','SW',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10138',NULL,1228,40.780751,-73.977182,0,NULL,NULL,57),(147,48,1,1,0,'986I Beech St NE',986,'I',NULL,'Beech','St','NE',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77290',NULL,1228,29.83399,-95.434241,0,NULL,NULL,NULL),(148,171,1,1,0,'974Q Dowlen Ave S',974,'Q',NULL,'Dowlen','Ave','S',NULL,NULL,NULL,NULL,'Mooers',1,1031,NULL,'12958',NULL,1228,44.958106,-73.58022,0,NULL,NULL,58),(149,66,1,0,0,'974Q Dowlen Ave S',974,'Q',NULL,'Dowlen','Ave','S',NULL,NULL,NULL,NULL,'Mooers',1,1031,NULL,'12958',NULL,1228,44.958106,-73.58022,0,NULL,NULL,58),(150,108,1,1,0,'974Q Dowlen Ave S',974,'Q',NULL,'Dowlen','Ave','S',NULL,NULL,NULL,NULL,'Mooers',1,1031,NULL,'12958',NULL,1228,44.958106,-73.58022,0,NULL,NULL,58),(151,126,1,1,0,'573R Beech Pl N',573,'R',NULL,'Beech','Pl','N',NULL,NULL,NULL,NULL,'Goleta',1,1004,NULL,'93118',NULL,1228,34.262834,-119.848555,0,NULL,NULL,NULL),(152,106,1,1,0,'256Q Van Ness Dr SE',256,'Q',NULL,'Van Ness','Dr','SE',NULL,NULL,NULL,NULL,'Cardwell',1,1025,NULL,'59721',NULL,1228,45.849728,-111.86233,0,NULL,NULL,59),(153,5,1,1,0,'256Q Van Ness Dr SE',256,'Q',NULL,'Van Ness','Dr','SE',NULL,NULL,NULL,NULL,'Cardwell',1,1025,NULL,'59721',NULL,1228,45.849728,-111.86233,0,NULL,NULL,59),(154,96,1,1,0,'256Q Van Ness Dr SE',256,'Q',NULL,'Van Ness','Dr','SE',NULL,NULL,NULL,NULL,'Cardwell',1,1025,NULL,'59721',NULL,1228,45.849728,-111.86233,0,NULL,NULL,59),(155,186,1,1,0,'256Q Van Ness Dr SE',256,'Q',NULL,'Van Ness','Dr','SE',NULL,NULL,NULL,NULL,'Cardwell',1,1025,NULL,'59721',NULL,1228,45.849728,-111.86233,0,NULL,NULL,59),(156,133,1,1,0,'452F College Blvd SE',452,'F',NULL,'College','Blvd','SE',NULL,NULL,NULL,NULL,'Comstock',1,1048,NULL,'54826',NULL,1228,45.505963,-92.17646,0,NULL,NULL,60),(157,39,1,1,0,'452F College Blvd SE',452,'F',NULL,'College','Blvd','SE',NULL,NULL,NULL,NULL,'Comstock',1,1048,NULL,'54826',NULL,1228,45.505963,-92.17646,0,NULL,NULL,60),(158,8,1,1,0,'452F College Blvd SE',452,'F',NULL,'College','Blvd','SE',NULL,NULL,NULL,NULL,'Comstock',1,1048,NULL,'54826',NULL,1228,45.505963,-92.17646,0,NULL,NULL,60),(159,92,1,1,0,'452F College Blvd SE',452,'F',NULL,'College','Blvd','SE',NULL,NULL,NULL,NULL,'Comstock',1,1048,NULL,'54826',NULL,1228,45.505963,-92.17646,0,NULL,NULL,60),(160,173,1,1,0,'783X Lincoln St E',783,'X',NULL,'Lincoln','St','E',NULL,NULL,NULL,NULL,'Waitsfield',1,1044,NULL,'05673',NULL,1228,44.184704,-72.8367,0,NULL,NULL,61),(161,137,1,0,0,'783X Lincoln St E',783,'X',NULL,'Lincoln','St','E',NULL,NULL,NULL,NULL,'Waitsfield',1,1044,NULL,'05673',NULL,1228,44.184704,-72.8367,0,NULL,NULL,61),(162,165,1,1,0,'783X Lincoln St E',783,'X',NULL,'Lincoln','St','E',NULL,NULL,NULL,NULL,'Waitsfield',1,1044,NULL,'05673',NULL,1228,44.184704,-72.8367,0,NULL,NULL,61),(163,33,1,1,0,'783X Lincoln St E',783,'X',NULL,'Lincoln','St','E',NULL,NULL,NULL,NULL,'Waitsfield',1,1044,NULL,'05673',NULL,1228,44.184704,-72.8367,0,NULL,NULL,61),(164,151,1,1,0,'540X Jackson Blvd SE',540,'X',NULL,'Jackson','Blvd','SE',NULL,NULL,NULL,NULL,'Jefferson',1,1005,NULL,'80456',NULL,1228,39.310793,-105.74027,0,NULL,NULL,62),(165,104,1,1,0,'540X Jackson Blvd SE',540,'X',NULL,'Jackson','Blvd','SE',NULL,NULL,NULL,NULL,'Jefferson',1,1005,NULL,'80456',NULL,1228,39.310793,-105.74027,0,NULL,NULL,62),(166,88,1,1,0,'540X Jackson Blvd SE',540,'X',NULL,'Jackson','Blvd','SE',NULL,NULL,NULL,NULL,'Jefferson',1,1005,NULL,'80456',NULL,1228,39.310793,-105.74027,0,NULL,NULL,62),(167,146,1,1,0,'540X Jackson Blvd SE',540,'X',NULL,'Jackson','Blvd','SE',NULL,NULL,NULL,NULL,'Jefferson',1,1005,NULL,'80456',NULL,1228,39.310793,-105.74027,0,NULL,NULL,62),(168,193,1,1,0,'334U Second Ln S',334,'U',NULL,'Second','Ln','S',NULL,NULL,NULL,NULL,'Dumont',1,1005,NULL,'80436',NULL,1228,39.766277,-105.61523,0,NULL,NULL,63),(169,153,1,1,0,'334U Second Ln S',334,'U',NULL,'Second','Ln','S',NULL,NULL,NULL,NULL,'Dumont',1,1005,NULL,'80436',NULL,1228,39.766277,-105.61523,0,NULL,NULL,63),(170,42,1,0,0,'334U Second Ln S',334,'U',NULL,'Second','Ln','S',NULL,NULL,NULL,NULL,'Dumont',1,1005,NULL,'80436',NULL,1228,39.766277,-105.61523,0,NULL,NULL,63),(171,78,1,1,0,'134S States Path SW',134,'S',NULL,'States','Path','SW',NULL,NULL,NULL,NULL,'Menasha',1,1048,NULL,'54952',NULL,1228,44.212448,-88.40959,0,NULL,NULL,NULL),(172,45,1,1,0,'65H El Camino Ave SW',65,'H',NULL,'El Camino','Ave','SW',NULL,NULL,NULL,NULL,'Charleston',1,1047,NULL,'25364',NULL,1228,38.296818,-81.554655,0,NULL,NULL,64),(173,79,1,1,0,'65H El Camino Ave SW',65,'H',NULL,'El Camino','Ave','SW',NULL,NULL,NULL,NULL,'Charleston',1,1047,NULL,'25364',NULL,1228,38.296818,-81.554655,0,NULL,NULL,64),(174,80,1,1,0,'65H El Camino Ave SW',65,'H',NULL,'El Camino','Ave','SW',NULL,NULL,NULL,NULL,'Charleston',1,1047,NULL,'25364',NULL,1228,38.296818,-81.554655,0,NULL,NULL,64),(175,179,1,1,0,'65H El Camino Ave SW',65,'H',NULL,'El Camino','Ave','SW',NULL,NULL,NULL,NULL,'Charleston',1,1047,NULL,'25364',NULL,1228,38.296818,-81.554655,0,NULL,NULL,64),(176,136,1,1,0,'548I Northpoint St NW',548,'I',NULL,'Northpoint','St','NW',NULL,NULL,NULL,NULL,'Martinez',1,1004,NULL,'94553',NULL,1228,37.998912,-122.11501,0,NULL,NULL,65),(177,61,1,1,0,'548I Northpoint St NW',548,'I',NULL,'Northpoint','St','NW',NULL,NULL,NULL,NULL,'Martinez',1,1004,NULL,'94553',NULL,1228,37.998912,-122.11501,0,NULL,NULL,65),(178,27,1,1,0,'548I Northpoint St NW',548,'I',NULL,'Northpoint','St','NW',NULL,NULL,NULL,NULL,'Martinez',1,1004,NULL,'94553',NULL,1228,37.998912,-122.11501,0,NULL,NULL,65),(179,128,1,1,0,'548I Northpoint St NW',548,'I',NULL,'Northpoint','St','NW',NULL,NULL,NULL,NULL,'Martinez',1,1004,NULL,'94553',NULL,1228,37.998912,-122.11501,0,NULL,NULL,65),(180,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),(181,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),(182,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); +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,186,1,1,0,'34F Jackson Path SW',34,'F',NULL,'Jackson','Path','SW',NULL,NULL,NULL,NULL,'Rancho Mirage',1,1004,NULL,'92270',NULL,1228,33.762944,-116.42249,0,NULL,NULL,NULL),(2,159,1,1,0,'487A Woodbridge Way SE',487,'A',NULL,'Woodbridge','Way','SE',NULL,NULL,NULL,NULL,'Gerrardstown',1,1047,NULL,'25420',NULL,1228,39.379281,-78.12229,0,NULL,NULL,NULL),(3,23,1,1,0,'771U Beech Ave NW',771,'U',NULL,'Beech','Ave','NW',NULL,NULL,NULL,NULL,'Bellamy',1,1000,NULL,'36901',NULL,1228,32.451618,-88.131,0,NULL,NULL,NULL),(4,118,1,1,0,'618Q Main Ln W',618,'Q',NULL,'Main','Ln','W',NULL,NULL,NULL,NULL,'Washington',1,1050,NULL,'20599',NULL,1228,38.893311,-77.014647,0,NULL,NULL,NULL),(5,173,1,1,0,'457Z Green St NE',457,'Z',NULL,'Green','St','NE',NULL,NULL,NULL,NULL,'Liberty',1,1039,NULL,'29657',NULL,1228,34.779483,-82.68861,0,NULL,NULL,NULL),(6,196,1,1,0,'186H States Way SE',186,'H',NULL,'States','Way','SE',NULL,NULL,NULL,NULL,'Britt',1,1014,NULL,'50423',NULL,1228,43.104076,-93.8041,0,NULL,NULL,NULL),(7,48,1,1,0,'839F Van Ness Ave W',839,'F',NULL,'Van Ness','Ave','W',NULL,NULL,NULL,NULL,'Charm',1,1034,NULL,'44617',NULL,1228,40.507088,-81.782872,0,NULL,NULL,NULL),(8,155,1,1,0,'135K Beech Rd S',135,'K',NULL,'Beech','Rd','S',NULL,NULL,NULL,NULL,'Montour Falls',1,1031,NULL,'14865',NULL,1228,42.352725,-76.84258,0,NULL,NULL,NULL),(9,107,1,1,0,'555W Woodbridge Blvd SW',555,'W',NULL,'Woodbridge','Blvd','SW',NULL,NULL,NULL,NULL,'Stratton',1,1018,NULL,'04982',NULL,1228,45.137607,-70.44606,0,NULL,NULL,NULL),(10,84,1,1,0,'949Z Main Ave NW',949,'Z',NULL,'Main','Ave','NW',NULL,NULL,NULL,NULL,'Brooklyn',1,1031,NULL,'11210',NULL,1228,40.627946,-73.94552,0,NULL,NULL,NULL),(11,193,1,1,0,'356K Northpoint Ave W',356,'K',NULL,'Northpoint','Ave','W',NULL,NULL,NULL,NULL,'Ortonville',1,1021,NULL,'48462',NULL,1228,42.84391,-83.43109,0,NULL,NULL,NULL),(12,57,1,1,0,'275B Woodbridge Rd W',275,'B',NULL,'Woodbridge','Rd','W',NULL,NULL,NULL,NULL,'Fort Harrison',1,1025,NULL,'59636',NULL,1228,46.620549,-112.10446,0,NULL,NULL,NULL),(13,165,1,1,0,'140C States Dr N',140,'C',NULL,'States','Dr','N',NULL,NULL,NULL,NULL,'Lebanon',1,1041,NULL,'37090',NULL,1228,36.147433,-86.31061,0,NULL,NULL,NULL),(14,19,1,1,0,'251K Maple St SW',251,'K',NULL,'Maple','St','SW',NULL,NULL,NULL,NULL,'Cecilia',1,1016,NULL,'42724',NULL,1228,37.668721,-86.02527,0,NULL,NULL,NULL),(15,88,1,1,0,'633G Caulder Rd SW',633,'G',NULL,'Caulder','Rd','SW',NULL,NULL,NULL,NULL,'Collinsville',1,1006,NULL,'06022',NULL,1228,41.832842,-72.92526,0,NULL,NULL,NULL),(16,125,1,1,0,'830B Dowlen Way NE',830,'B',NULL,'Dowlen','Way','NE',NULL,NULL,NULL,NULL,'Zephyrhills',1,1008,NULL,'33540',NULL,1228,28.235313,-82.16868,0,NULL,NULL,NULL),(17,60,1,1,0,'994Z Beech Path N',994,'Z',NULL,'Beech','Path','N',NULL,NULL,NULL,NULL,'Morrisville',1,1037,NULL,'19067',NULL,1228,40.214661,-74.81812,0,NULL,NULL,NULL),(18,32,1,1,0,'58N Martin Luther King Rd NE',58,'N',NULL,'Martin Luther King','Rd','NE',NULL,NULL,NULL,NULL,'Wolcott',1,1005,NULL,'81655',NULL,1228,39.731182,-106.62705,0,NULL,NULL,NULL),(19,40,1,1,0,'836T Cadell Dr E',836,'T',NULL,'Cadell','Dr','E',NULL,NULL,NULL,NULL,'Loachapoka',1,1000,NULL,'36865',NULL,1228,32.578185,-85.349003,0,NULL,NULL,NULL),(20,61,1,1,0,'560D El Camino Rd NW',560,'D',NULL,'El Camino','Rd','NW',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10123',NULL,1228,40.751489,-73.990537,0,NULL,NULL,NULL),(21,6,1,1,0,'445O Second Rd NW',445,'O',NULL,'Second','Rd','NW',NULL,NULL,NULL,NULL,'Rule',1,1042,NULL,'79547',NULL,1228,33.196822,-99.90554,0,NULL,NULL,NULL),(22,54,1,1,0,'865V Lincoln Blvd S',865,'V',NULL,'Lincoln','Blvd','S',NULL,NULL,NULL,NULL,'Holy Cross',1,1014,NULL,'52053',NULL,1228,42.631604,-90.96492,0,NULL,NULL,NULL),(23,158,1,1,0,'797Z Main Ave N',797,'Z',NULL,'Main','Ave','N',NULL,NULL,NULL,NULL,'Santa Fe Springs',1,1004,NULL,'90671',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL),(24,71,1,1,0,'761P Cadell Path SE',761,'P',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'San Diego',1,1004,NULL,'92137',NULL,1228,32.85377,-117.119744,0,NULL,NULL,NULL),(25,185,1,1,0,'56N Green Path NW',56,'N',NULL,'Green','Path','NW',NULL,NULL,NULL,NULL,'Binghamton',1,1031,NULL,'13904',NULL,1228,42.110927,-75.85223,0,NULL,NULL,NULL),(26,172,1,1,0,'415Z Cadell Blvd SE',415,'Z',NULL,'Cadell','Blvd','SE',NULL,NULL,NULL,NULL,'Zurich',1,1025,NULL,'59547',NULL,1228,48.607955,-109.01285,0,NULL,NULL,NULL),(27,112,1,1,0,'45T Northpoint Way W',45,'T',NULL,'Northpoint','Way','W',NULL,NULL,NULL,NULL,'Sparrow Bush',1,1031,NULL,'12780',NULL,1228,41.429425,-74.72244,0,NULL,NULL,NULL),(28,163,1,1,0,'33M Woodbridge Dr E',33,'M',NULL,'Woodbridge','Dr','E',NULL,NULL,NULL,NULL,'Lynchburg',1,1045,NULL,'24501',NULL,1228,37.390209,-79.16132,0,NULL,NULL,NULL),(29,122,1,1,0,'460E Northpoint Ave NE',460,'E',NULL,'Northpoint','Ave','NE',NULL,NULL,NULL,NULL,'Erie',1,1037,NULL,'16501',NULL,1228,42.122957,-80.08437,0,NULL,NULL,NULL),(30,142,1,1,0,'588W Lincoln Ln E',588,'W',NULL,'Lincoln','Ln','E',NULL,NULL,NULL,NULL,'Mabank',1,1042,NULL,'75147',NULL,1228,32.314256,-96.11068,0,NULL,NULL,NULL),(31,126,1,1,0,'282X Woodbridge Ave SW',282,'X',NULL,'Woodbridge','Ave','SW',NULL,NULL,NULL,NULL,'Leitchfield',1,1016,NULL,'42755',NULL,1228,37.471943,-86.343941,0,NULL,NULL,NULL),(32,76,1,1,0,'519L Dowlen Path SW',519,'L',NULL,'Dowlen','Path','SW',NULL,NULL,NULL,NULL,'Homosassa',1,1008,NULL,'34487',NULL,1228,28.859286,-82.508694,0,NULL,NULL,NULL),(33,154,1,1,0,'84J Pine Pl NE',84,'J',NULL,'Pine','Pl','NE',NULL,NULL,NULL,NULL,'Pitcairn',1,1037,NULL,'15140',NULL,1228,40.405768,-79.77643,0,NULL,NULL,NULL),(34,117,1,1,0,'269F Woodbridge Rd NW',269,'F',NULL,'Woodbridge','Rd','NW',NULL,NULL,NULL,NULL,'Parthenon',1,1003,NULL,'72666',NULL,1228,35.955198,-93.25985,0,NULL,NULL,NULL),(35,67,1,1,0,'338A Beech Path NE',338,'A',NULL,'Beech','Path','NE',NULL,NULL,NULL,NULL,'Russell',1,1015,NULL,'67665',NULL,1228,38.866551,-98.8672,0,NULL,NULL,NULL),(36,93,1,1,0,'606C Martin Luther King Ln SE',606,'C',NULL,'Martin Luther King','Ln','SE',NULL,NULL,NULL,NULL,'Conley',1,1009,NULL,'30288',NULL,1228,33.647275,-84.32753,0,NULL,NULL,NULL),(37,74,1,1,0,'15Y Northpoint Rd SW',15,'Y',NULL,'Northpoint','Rd','SW',NULL,NULL,NULL,NULL,'Huron',1,1004,NULL,'93234',NULL,1228,36.209815,-120.0847,0,NULL,NULL,NULL),(38,115,1,1,0,'630K Dowlen Dr NE',630,'K',NULL,'Dowlen','Dr','NE',NULL,NULL,NULL,NULL,'Oneill',1,1026,NULL,'68763',NULL,1228,42.516792,-98.60341,0,NULL,NULL,NULL),(39,25,1,1,0,'863V Jackson Pl E',863,'V',NULL,'Jackson','Pl','E',NULL,NULL,NULL,NULL,'Portland',1,1036,NULL,'97230',NULL,1228,45.539473,-122.50488,0,NULL,NULL,NULL),(40,131,1,1,0,'760T El Camino St SW',760,'T',NULL,'El Camino','St','SW',NULL,NULL,NULL,NULL,'Pardeesville',1,1037,NULL,'18243',NULL,1228,41.001683,-75.966146,0,NULL,NULL,NULL),(41,64,1,1,0,'424Z Dowlen Dr SE',424,'Z',NULL,'Dowlen','Dr','SE',NULL,NULL,NULL,NULL,'Frenchtown',1,1025,NULL,'59834',NULL,1228,47.049623,-114.25074,0,NULL,NULL,NULL),(42,30,1,1,0,'571I Lincoln St NW',571,'I',NULL,'Lincoln','St','NW',NULL,NULL,NULL,NULL,'Seven Mile Ford',1,1045,NULL,'24373',NULL,1228,36.826371,-81.549231,0,NULL,NULL,NULL),(43,97,1,1,0,'734D Cadell Path SE',734,'D',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'Athens',1,1009,NULL,'30609',NULL,1228,33.946364,-83.37743,0,NULL,NULL,NULL),(44,171,1,1,0,'948H Woodbridge Blvd N',948,'H',NULL,'Woodbridge','Blvd','N',NULL,NULL,NULL,NULL,'Louisburg',1,1015,NULL,'66053',NULL,1228,38.602219,-94.68121,0,NULL,NULL,NULL),(45,8,1,1,0,'828U College St S',828,'U',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Forestgrove',1,1025,NULL,'59441',NULL,1228,46.906403,-109.09551,0,NULL,NULL,NULL),(46,191,1,1,0,'493I States Dr W',493,'I',NULL,'States','Dr','W',NULL,NULL,NULL,NULL,'Four States',1,1047,NULL,'26572',NULL,1228,39.48057,-80.30851,0,NULL,NULL,NULL),(47,98,1,1,0,'448P Lincoln Ln W',448,'P',NULL,'Lincoln','Ln','W',NULL,NULL,NULL,NULL,'Milwaukee',1,1048,NULL,'53270',NULL,1228,43.038763,-87.903634,0,NULL,NULL,NULL),(48,34,1,1,0,'911Y Pine Dr NW',911,'Y',NULL,'Pine','Dr','NW',NULL,NULL,NULL,NULL,'Rimrock',1,1002,NULL,'86335',NULL,1228,34.653475,-111.75103,0,NULL,NULL,NULL),(49,135,1,1,0,'993G Dowlen Rd SE',993,'G',NULL,'Dowlen','Rd','SE',NULL,NULL,NULL,NULL,'Santa Ana',1,1004,NULL,'92703',NULL,1228,33.747067,-117.90433,0,NULL,NULL,NULL),(50,192,1,1,0,'167G Lincoln Pl N',167,'G',NULL,'Lincoln','Pl','N',NULL,NULL,NULL,NULL,'Richardson',1,1042,NULL,'75082',NULL,1228,32.993405,-96.65901,0,NULL,NULL,NULL),(51,45,1,1,0,'714G Green Path NW',714,'G',NULL,'Green','Path','NW',NULL,NULL,NULL,NULL,'Higganum',1,1006,NULL,'06441',NULL,1228,41.468654,-72.57956,0,NULL,NULL,NULL),(52,4,1,1,0,'5Y Jackson Ave NW',5,'Y',NULL,'Jackson','Ave','NW',NULL,NULL,NULL,NULL,'Hualapai',1,1002,NULL,'86412',NULL,1228,35.397172,-113.843241,0,NULL,NULL,NULL),(53,132,1,1,0,'516Q Van Ness Ln NE',516,'Q',NULL,'Van Ness','Ln','NE',NULL,NULL,NULL,NULL,'Laredo',1,1042,NULL,'78093',NULL,1228,27.492996,-99.463668,0,NULL,NULL,NULL),(54,79,1,1,0,'103T Main Dr E',103,'T',NULL,'Main','Dr','E',NULL,NULL,NULL,NULL,'Byrnedale',1,1037,NULL,'15827',NULL,1228,41.293237,-78.50472,0,NULL,NULL,NULL),(55,51,1,1,0,'228A Martin Luther King Way W',228,'A',NULL,'Martin Luther King','Way','W',NULL,NULL,NULL,NULL,'Jackhorn',1,1016,NULL,'41825',NULL,1228,37.215305,-82.70468,0,NULL,NULL,NULL),(56,12,1,1,0,'212H Lincoln Path SE',212,'H',NULL,'Lincoln','Path','SE',NULL,NULL,NULL,NULL,'Hubbell',1,1026,NULL,'68375',NULL,1228,40.025484,-97.47265,0,NULL,NULL,NULL),(57,138,1,1,0,'922H College St S',922,'H',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Ragley',1,1017,NULL,'70657',NULL,1228,30.472103,-93.13957,0,NULL,NULL,NULL),(58,31,1,1,0,'824I Jackson Ln SW',824,'I',NULL,'Jackson','Ln','SW',NULL,NULL,NULL,NULL,'Bearcreek',1,1025,NULL,'59007',NULL,1228,45.159808,-109.14649,0,NULL,NULL,NULL),(59,181,1,1,0,'362H Main Way S',362,'H',NULL,'Main','Way','S',NULL,NULL,NULL,NULL,'Dudley',1,1009,NULL,'31022',NULL,1228,32.516865,-83.09905,0,NULL,NULL,NULL),(60,194,1,1,0,'859L Woodbridge Dr N',859,'L',NULL,'Woodbridge','Dr','N',NULL,NULL,NULL,NULL,'Marydell',1,1016,NULL,'40751',NULL,1228,37.137615,-84.115617,0,NULL,NULL,NULL),(61,189,3,1,0,'427L Dowlen Ave S',427,'L',NULL,'Dowlen','Ave','S',NULL,'Churchgate',NULL,NULL,'New York',1,1031,NULL,'10172',NULL,1228,40.755494,-73.97447,0,NULL,NULL,NULL),(62,41,3,1,0,'930F Lincoln Rd E',930,'F',NULL,'Lincoln','Rd','E',NULL,'Community Relations',NULL,NULL,'Buffalo',1,1031,NULL,'14206',NULL,1228,42.880105,-78.81049,0,NULL,NULL,NULL),(63,116,3,1,0,'93P Martin Luther King Blvd E',93,'P',NULL,'Martin Luther King','Blvd','E',NULL,'Disbursements',NULL,NULL,'Minneapolis',1,1022,NULL,'55487',NULL,1228,45.015914,-93.47188,0,NULL,NULL,NULL),(64,66,2,1,0,'93P Martin Luther King Blvd E',93,'P',NULL,'Martin Luther King','Blvd','E',NULL,'Disbursements',NULL,NULL,'Minneapolis',1,1022,NULL,'55487',NULL,1228,45.015914,-93.47188,0,NULL,NULL,63),(65,90,3,1,0,'320C Martin Luther King Ave SW',320,'C',NULL,'Martin Luther King','Ave','SW',NULL,'Cuffe Parade',NULL,NULL,'Stollings',1,1047,NULL,'25646',NULL,1228,37.837136,-81.95921,0,NULL,NULL,NULL),(66,47,3,1,0,'343B Beech Rd SW',343,'B',NULL,'Beech','Rd','SW',NULL,'Attn: Accounting',NULL,NULL,'Tunica',1,1023,NULL,'38676',NULL,1228,34.687733,-90.36723,0,NULL,NULL,NULL),(67,176,3,1,0,'178V Martin Luther King Dr N',178,'V',NULL,'Martin Luther King','Dr','N',NULL,'Mailstop 101',NULL,NULL,'Felch',1,1021,NULL,'49831',NULL,1228,45.994849,-87.81615,0,NULL,NULL,NULL),(68,126,2,0,0,'178V Martin Luther King Dr N',178,'V',NULL,'Martin Luther King','Dr','N',NULL,'Mailstop 101',NULL,NULL,'Felch',1,1021,NULL,'49831',NULL,1228,45.994849,-87.81615,0,NULL,NULL,67),(69,69,3,1,0,'403Z Van Ness Blvd N',403,'Z',NULL,'Van Ness','Blvd','N',NULL,'Urgent',NULL,NULL,'Cary',1,1018,NULL,'04465',NULL,1228,45.961338,-67.824005,0,NULL,NULL,NULL),(70,139,2,1,0,'403Z Van Ness Blvd N',403,'Z',NULL,'Van Ness','Blvd','N',NULL,'Urgent',NULL,NULL,'Cary',1,1018,NULL,'04465',NULL,1228,45.961338,-67.824005,0,NULL,NULL,69),(71,195,3,1,0,'781R Green Path S',781,'R',NULL,'Green','Path','S',NULL,'c/o OPDC',NULL,NULL,'Finchville',1,1016,NULL,'40022',NULL,1228,38.147801,-85.33158,0,NULL,NULL,NULL),(72,160,2,1,0,'781R Green Path S',781,'R',NULL,'Green','Path','S',NULL,'c/o OPDC',NULL,NULL,'Finchville',1,1016,NULL,'40022',NULL,1228,38.147801,-85.33158,0,NULL,NULL,71),(73,190,3,1,0,'276X Jackson Path N',276,'X',NULL,'Jackson','Path','N',NULL,'Donor Relations',NULL,NULL,'Peoria',1,1012,NULL,'61601',NULL,1228,40.693137,-89.589847,0,NULL,NULL,NULL),(74,26,3,1,0,'9Z Van Ness Rd NW',9,'Z',NULL,'Van Ness','Rd','NW',NULL,'c/o OPDC',NULL,NULL,'Mcadoo',1,1042,NULL,'79243',NULL,1228,33.787306,-100.98464,0,NULL,NULL,NULL),(75,114,3,1,0,'189D College Blvd NW',189,'D',NULL,'College','Blvd','NW',NULL,'c/o OPDC',NULL,NULL,'Santa Cruz',1,1004,NULL,'95064',NULL,1228,37.000199,-122.06026,0,NULL,NULL,NULL),(76,111,2,1,0,'189D College Blvd NW',189,'D',NULL,'College','Blvd','NW',NULL,'c/o OPDC',NULL,NULL,'Santa Cruz',1,1004,NULL,'95064',NULL,1228,37.000199,-122.06026,0,NULL,NULL,75),(77,136,3,1,0,'605W Bay Dr NE',605,'W',NULL,'Bay','Dr','NE',NULL,'c/o OPDC',NULL,NULL,'Stratford',1,1029,NULL,'08084',NULL,1228,39.829014,-75.01371,0,NULL,NULL,NULL),(78,77,2,1,0,'605W Bay Dr NE',605,'W',NULL,'Bay','Dr','NE',NULL,'c/o OPDC',NULL,NULL,'Stratford',1,1029,NULL,'08084',NULL,1228,39.829014,-75.01371,0,NULL,NULL,77),(79,28,3,1,0,'731Q Maple St NE',731,'Q',NULL,'Maple','St','NE',NULL,'Attn: Development',NULL,NULL,'Warsaw',1,1034,NULL,'43844',NULL,1228,40.33503,-82.04314,0,NULL,NULL,NULL),(80,60,2,0,0,'731Q Maple St NE',731,'Q',NULL,'Maple','St','NE',NULL,'Attn: Development',NULL,NULL,'Warsaw',1,1034,NULL,'43844',NULL,1228,40.33503,-82.04314,0,NULL,NULL,79),(81,86,3,1,0,'37E Jackson Ln S',37,'E',NULL,'Jackson','Ln','S',NULL,'Churchgate',NULL,NULL,'Wrightsville Beach',1,1032,NULL,'28480',NULL,1228,34.21222,-77.7981,0,NULL,NULL,NULL),(82,35,2,1,0,'37E Jackson Ln S',37,'E',NULL,'Jackson','Ln','S',NULL,'Churchgate',NULL,NULL,'Wrightsville Beach',1,1032,NULL,'28480',NULL,1228,34.21222,-77.7981,0,NULL,NULL,81),(83,22,3,1,0,'689J Bay St N',689,'J',NULL,'Bay','St','N',NULL,'Donor Relations',NULL,NULL,'Buford',1,1049,NULL,'82052',NULL,1228,41.105595,-105.3549,0,NULL,NULL,NULL),(84,96,2,1,0,'689J Bay St N',689,'J',NULL,'Bay','St','N',NULL,'Donor Relations',NULL,NULL,'Buford',1,1049,NULL,'82052',NULL,1228,41.105595,-105.3549,0,NULL,NULL,83),(85,168,3,1,0,'401H College Dr SE',401,'H',NULL,'College','Dr','SE',NULL,'Attn: Accounting',NULL,NULL,'Otter Creek',1,1008,NULL,'32683',NULL,1228,29.319173,-82.77965,0,NULL,NULL,NULL),(86,127,2,1,0,'401H College Dr SE',401,'H',NULL,'College','Dr','SE',NULL,'Attn: Accounting',NULL,NULL,'Otter Creek',1,1008,NULL,'32683',NULL,1228,29.319173,-82.77965,0,NULL,NULL,85),(87,72,3,1,0,'851U Second Way SW',851,'U',NULL,'Second','Way','SW',NULL,'Subscriptions Dept',NULL,NULL,'New Carlisle',1,1034,NULL,'45344',NULL,1228,39.939925,-84.01992,0,NULL,NULL,NULL),(88,183,3,1,0,'684V Northpoint Path W',684,'V',NULL,'Northpoint','Path','W',NULL,'Community Relations',NULL,NULL,'Ryan',1,1035,NULL,'73565',NULL,1228,34.008894,-97.93581,0,NULL,NULL,NULL),(89,188,3,1,0,'300W Second St N',300,'W',NULL,'Second','St','N',NULL,'Receiving',NULL,NULL,'Plainview',1,1022,NULL,'55964',NULL,1228,44.164431,-92.17048,0,NULL,NULL,NULL),(90,84,2,0,0,'300W Second St N',300,'W',NULL,'Second','St','N',NULL,'Receiving',NULL,NULL,'Plainview',1,1022,NULL,'55964',NULL,1228,44.164431,-92.17048,0,NULL,NULL,89),(91,156,3,1,0,'148B Main Ave SE',148,'B',NULL,'Main','Ave','SE',NULL,'Churchgate',NULL,NULL,'Lebanon',1,1016,NULL,'40033',NULL,1228,37.565894,-85.25148,0,NULL,NULL,NULL),(92,39,2,1,0,'148B Main Ave SE',148,'B',NULL,'Main','Ave','SE',NULL,'Churchgate',NULL,NULL,'Lebanon',1,1016,NULL,'40033',NULL,1228,37.565894,-85.25148,0,NULL,NULL,91),(93,153,1,1,0,'424Z Dowlen Dr SE',424,'Z',NULL,'Dowlen','Dr','SE',NULL,NULL,NULL,NULL,'Frenchtown',1,1025,NULL,'59834',NULL,1228,47.049623,-114.25074,0,NULL,NULL,41),(94,100,1,1,0,'424Z Dowlen Dr SE',424,'Z',NULL,'Dowlen','Dr','SE',NULL,NULL,NULL,NULL,'Frenchtown',1,1025,NULL,'59834',NULL,1228,47.049623,-114.25074,0,NULL,NULL,41),(95,167,1,1,0,'424Z Dowlen Dr SE',424,'Z',NULL,'Dowlen','Dr','SE',NULL,NULL,NULL,NULL,'Frenchtown',1,1025,NULL,'59834',NULL,1228,47.049623,-114.25074,0,NULL,NULL,41),(96,131,1,0,0,'142L Martin Luther King St W',142,'L',NULL,'Martin Luther King','St','W',NULL,NULL,NULL,NULL,'Oklahoma City',1,1035,NULL,'73148',NULL,1228,35.551409,-97.407537,0,NULL,NULL,NULL),(97,139,1,0,0,'571I Lincoln St NW',571,'I',NULL,'Lincoln','St','NW',NULL,NULL,NULL,NULL,'Seven Mile Ford',1,1045,NULL,'24373',NULL,1228,36.826371,-81.549231,0,NULL,NULL,42),(98,27,1,1,0,'571I Lincoln St NW',571,'I',NULL,'Lincoln','St','NW',NULL,NULL,NULL,NULL,'Seven Mile Ford',1,1045,NULL,'24373',NULL,1228,36.826371,-81.549231,0,NULL,NULL,42),(99,178,1,1,0,'571I Lincoln St NW',571,'I',NULL,'Lincoln','St','NW',NULL,NULL,NULL,NULL,'Seven Mile Ford',1,1045,NULL,'24373',NULL,1228,36.826371,-81.549231,0,NULL,NULL,42),(100,83,1,1,0,'122Q Second Dr S',122,'Q',NULL,'Second','Dr','S',NULL,NULL,NULL,NULL,'Dayton',1,1034,NULL,'45437',NULL,1228,39.750471,-84.268593,0,NULL,NULL,NULL),(101,17,1,1,0,'734D Cadell Path SE',734,'D',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'Athens',1,1009,NULL,'30609',NULL,1228,33.946364,-83.37743,0,NULL,NULL,43),(102,147,1,1,0,'734D Cadell Path SE',734,'D',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'Athens',1,1009,NULL,'30609',NULL,1228,33.946364,-83.37743,0,NULL,NULL,43),(103,201,1,1,0,'734D Cadell Path SE',734,'D',NULL,'Cadell','Path','SE',NULL,NULL,NULL,NULL,'Athens',1,1009,NULL,'30609',NULL,1228,33.946364,-83.37743,0,NULL,NULL,43),(104,141,1,1,0,'103U Beech Blvd S',103,'U',NULL,'Beech','Blvd','S',NULL,NULL,NULL,NULL,'Phoenix',1,1002,NULL,'85080',NULL,1228,33.276539,-112.18717,0,NULL,NULL,NULL),(105,62,1,1,0,'948H Woodbridge Blvd N',948,'H',NULL,'Woodbridge','Blvd','N',NULL,NULL,NULL,NULL,'Louisburg',1,1015,NULL,'66053',NULL,1228,38.602219,-94.68121,0,NULL,NULL,44),(106,161,1,1,0,'948H Woodbridge Blvd N',948,'H',NULL,'Woodbridge','Blvd','N',NULL,NULL,NULL,NULL,'Louisburg',1,1015,NULL,'66053',NULL,1228,38.602219,-94.68121,0,NULL,NULL,44),(107,7,1,1,0,'948H Woodbridge Blvd N',948,'H',NULL,'Woodbridge','Blvd','N',NULL,NULL,NULL,NULL,'Louisburg',1,1015,NULL,'66053',NULL,1228,38.602219,-94.68121,0,NULL,NULL,44),(108,152,1,1,0,'391F Second Ave S',391,'F',NULL,'Second','Ave','S',NULL,NULL,NULL,NULL,'Perry',1,1035,NULL,'73077',NULL,1228,36.308588,-97.28809,0,NULL,NULL,NULL),(109,89,1,1,0,'828U College St S',828,'U',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Forestgrove',1,1025,NULL,'59441',NULL,1228,46.906403,-109.09551,0,NULL,NULL,45),(110,179,1,1,0,'828U College St S',828,'U',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Forestgrove',1,1025,NULL,'59441',NULL,1228,46.906403,-109.09551,0,NULL,NULL,45),(111,137,1,1,0,'828U College St S',828,'U',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Forestgrove',1,1025,NULL,'59441',NULL,1228,46.906403,-109.09551,0,NULL,NULL,45),(112,200,1,1,0,'828U College St S',828,'U',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Forestgrove',1,1025,NULL,'59441',NULL,1228,46.906403,-109.09551,0,NULL,NULL,45),(113,110,1,1,0,'493I States Dr W',493,'I',NULL,'States','Dr','W',NULL,NULL,NULL,NULL,'Four States',1,1047,NULL,'26572',NULL,1228,39.48057,-80.30851,0,NULL,NULL,46),(114,144,1,1,0,'493I States Dr W',493,'I',NULL,'States','Dr','W',NULL,NULL,NULL,NULL,'Four States',1,1047,NULL,'26572',NULL,1228,39.48057,-80.30851,0,NULL,NULL,46),(115,108,1,1,0,'493I States Dr W',493,'I',NULL,'States','Dr','W',NULL,NULL,NULL,NULL,'Four States',1,1047,NULL,'26572',NULL,1228,39.48057,-80.30851,0,NULL,NULL,46),(116,123,1,1,0,'682L College Pl SW',682,'L',NULL,'College','Pl','SW',NULL,NULL,NULL,NULL,'Sacramento',1,1004,NULL,'94209',NULL,1228,38.377411,-121.444429,0,NULL,NULL,NULL),(117,68,1,1,0,'448P Lincoln Ln W',448,'P',NULL,'Lincoln','Ln','W',NULL,NULL,NULL,NULL,'Milwaukee',1,1048,NULL,'53270',NULL,1228,43.038763,-87.903634,0,NULL,NULL,47),(118,56,1,1,0,'448P Lincoln Ln W',448,'P',NULL,'Lincoln','Ln','W',NULL,NULL,NULL,NULL,'Milwaukee',1,1048,NULL,'53270',NULL,1228,43.038763,-87.903634,0,NULL,NULL,47),(119,111,1,0,0,'448P Lincoln Ln W',448,'P',NULL,'Lincoln','Ln','W',NULL,NULL,NULL,NULL,'Milwaukee',1,1048,NULL,'53270',NULL,1228,43.038763,-87.903634,0,NULL,NULL,47),(120,130,1,1,0,'448P Lincoln Ln W',448,'P',NULL,'Lincoln','Ln','W',NULL,NULL,NULL,NULL,'Milwaukee',1,1048,NULL,'53270',NULL,1228,43.038763,-87.903634,0,NULL,NULL,47),(121,198,1,1,0,'911Y Pine Dr NW',911,'Y',NULL,'Pine','Dr','NW',NULL,NULL,NULL,NULL,'Rimrock',1,1002,NULL,'86335',NULL,1228,34.653475,-111.75103,0,NULL,NULL,48),(122,105,1,1,0,'911Y Pine Dr NW',911,'Y',NULL,'Pine','Dr','NW',NULL,NULL,NULL,NULL,'Rimrock',1,1002,NULL,'86335',NULL,1228,34.653475,-111.75103,0,NULL,NULL,48),(123,149,1,1,0,'911Y Pine Dr NW',911,'Y',NULL,'Pine','Dr','NW',NULL,NULL,NULL,NULL,'Rimrock',1,1002,NULL,'86335',NULL,1228,34.653475,-111.75103,0,NULL,NULL,48),(124,96,1,0,0,'911Y Pine Dr NW',911,'Y',NULL,'Pine','Dr','NW',NULL,NULL,NULL,NULL,'Rimrock',1,1002,NULL,'86335',NULL,1228,34.653475,-111.75103,0,NULL,NULL,48),(125,102,1,1,0,'993G Dowlen Rd SE',993,'G',NULL,'Dowlen','Rd','SE',NULL,NULL,NULL,NULL,'Santa Ana',1,1004,NULL,'92703',NULL,1228,33.747067,-117.90433,0,NULL,NULL,49),(126,148,1,1,0,'993G Dowlen Rd SE',993,'G',NULL,'Dowlen','Rd','SE',NULL,NULL,NULL,NULL,'Santa Ana',1,1004,NULL,'92703',NULL,1228,33.747067,-117.90433,0,NULL,NULL,49),(127,59,1,1,0,'993G Dowlen Rd SE',993,'G',NULL,'Dowlen','Rd','SE',NULL,NULL,NULL,NULL,'Santa Ana',1,1004,NULL,'92703',NULL,1228,33.747067,-117.90433,0,NULL,NULL,49),(128,65,1,1,0,'836Y Dowlen Ave S',836,'Y',NULL,'Dowlen','Ave','S',NULL,NULL,NULL,NULL,'High Point',1,1032,NULL,'27263',NULL,1228,35.914548,-79.96062,0,NULL,NULL,NULL),(129,150,1,1,0,'167G Lincoln Pl N',167,'G',NULL,'Lincoln','Pl','N',NULL,NULL,NULL,NULL,'Richardson',1,1042,NULL,'75082',NULL,1228,32.993405,-96.65901,0,NULL,NULL,50),(130,87,1,1,0,'167G Lincoln Pl N',167,'G',NULL,'Lincoln','Pl','N',NULL,NULL,NULL,NULL,'Richardson',1,1042,NULL,'75082',NULL,1228,32.993405,-96.65901,0,NULL,NULL,50),(131,43,1,1,0,'167G Lincoln Pl N',167,'G',NULL,'Lincoln','Pl','N',NULL,NULL,NULL,NULL,'Richardson',1,1042,NULL,'75082',NULL,1228,32.993405,-96.65901,0,NULL,NULL,50),(132,70,1,1,0,'560J Bay Ave W',560,'J',NULL,'Bay','Ave','W',NULL,NULL,NULL,NULL,'Destin',1,1008,NULL,'32541',NULL,1228,30.391795,-86.4338,0,NULL,NULL,NULL),(133,14,1,1,0,'714G Green Path NW',714,'G',NULL,'Green','Path','NW',NULL,NULL,NULL,NULL,'Higganum',1,1006,NULL,'06441',NULL,1228,41.468654,-72.57956,0,NULL,NULL,51),(134,169,1,1,0,'714G Green Path NW',714,'G',NULL,'Green','Path','NW',NULL,NULL,NULL,NULL,'Higganum',1,1006,NULL,'06441',NULL,1228,41.468654,-72.57956,0,NULL,NULL,51),(135,177,1,1,0,'714G Green Path NW',714,'G',NULL,'Green','Path','NW',NULL,NULL,NULL,NULL,'Higganum',1,1006,NULL,'06441',NULL,1228,41.468654,-72.57956,0,NULL,NULL,51),(136,5,1,1,0,'714G Green Path NW',714,'G',NULL,'Green','Path','NW',NULL,NULL,NULL,NULL,'Higganum',1,1006,NULL,'06441',NULL,1228,41.468654,-72.57956,0,NULL,NULL,51),(137,160,1,0,0,'5Y Jackson Ave NW',5,'Y',NULL,'Jackson','Ave','NW',NULL,NULL,NULL,NULL,'Hualapai',1,1002,NULL,'86412',NULL,1228,35.397172,-113.843241,0,NULL,NULL,52),(138,197,1,1,0,'5Y Jackson Ave NW',5,'Y',NULL,'Jackson','Ave','NW',NULL,NULL,NULL,NULL,'Hualapai',1,1002,NULL,'86412',NULL,1228,35.397172,-113.843241,0,NULL,NULL,52),(139,38,1,1,0,'5Y Jackson Ave NW',5,'Y',NULL,'Jackson','Ave','NW',NULL,NULL,NULL,NULL,'Hualapai',1,1002,NULL,'86412',NULL,1228,35.397172,-113.843241,0,NULL,NULL,52),(140,120,1,1,0,'690N Cadell Blvd N',690,'N',NULL,'Cadell','Blvd','N',NULL,NULL,NULL,NULL,'Brownstown',1,1037,NULL,'17508',NULL,1228,40.125278,-76.21665,0,NULL,NULL,NULL),(141,50,1,1,0,'516Q Van Ness Ln NE',516,'Q',NULL,'Van Ness','Ln','NE',NULL,NULL,NULL,NULL,'Laredo',1,1042,NULL,'78093',NULL,1228,27.492996,-99.463668,0,NULL,NULL,53),(142,129,1,1,0,'516Q Van Ness Ln NE',516,'Q',NULL,'Van Ness','Ln','NE',NULL,NULL,NULL,NULL,'Laredo',1,1042,NULL,'78093',NULL,1228,27.492996,-99.463668,0,NULL,NULL,53),(143,80,1,1,0,'516Q Van Ness Ln NE',516,'Q',NULL,'Van Ness','Ln','NE',NULL,NULL,NULL,NULL,'Laredo',1,1042,NULL,'78093',NULL,1228,27.492996,-99.463668,0,NULL,NULL,53),(144,140,1,1,0,'743J Maple Ln NE',743,'J',NULL,'Maple','Ln','NE',NULL,NULL,NULL,NULL,'Coventry',1,1006,NULL,'06238',NULL,1228,41.778651,-72.33137,0,NULL,NULL,NULL),(145,109,1,1,0,'103T Main Dr E',103,'T',NULL,'Main','Dr','E',NULL,NULL,NULL,NULL,'Byrnedale',1,1037,NULL,'15827',NULL,1228,41.293237,-78.50472,0,NULL,NULL,54),(146,3,1,1,0,'103T Main Dr E',103,'T',NULL,'Main','Dr','E',NULL,NULL,NULL,NULL,'Byrnedale',1,1037,NULL,'15827',NULL,1228,41.293237,-78.50472,0,NULL,NULL,54),(147,42,1,1,0,'103T Main Dr E',103,'T',NULL,'Main','Dr','E',NULL,NULL,NULL,NULL,'Byrnedale',1,1037,NULL,'15827',NULL,1228,41.293237,-78.50472,0,NULL,NULL,54),(148,174,1,1,0,'103T Main Dr E',103,'T',NULL,'Main','Dr','E',NULL,NULL,NULL,NULL,'Byrnedale',1,1037,NULL,'15827',NULL,1228,41.293237,-78.50472,0,NULL,NULL,54),(149,121,1,1,0,'228A Martin Luther King Way W',228,'A',NULL,'Martin Luther King','Way','W',NULL,NULL,NULL,NULL,'Jackhorn',1,1016,NULL,'41825',NULL,1228,37.215305,-82.70468,0,NULL,NULL,55),(150,101,1,1,0,'228A Martin Luther King Way W',228,'A',NULL,'Martin Luther King','Way','W',NULL,NULL,NULL,NULL,'Jackhorn',1,1016,NULL,'41825',NULL,1228,37.215305,-82.70468,0,NULL,NULL,55),(151,81,1,1,0,'228A Martin Luther King Way W',228,'A',NULL,'Martin Luther King','Way','W',NULL,NULL,NULL,NULL,'Jackhorn',1,1016,NULL,'41825',NULL,1228,37.215305,-82.70468,0,NULL,NULL,55),(152,157,1,1,0,'815B Cadell Way N',815,'B',NULL,'Cadell','Way','N',NULL,NULL,NULL,NULL,'De Queen',1,1003,NULL,'71832',NULL,1228,34.038226,-94.33597,0,NULL,NULL,NULL),(153,9,1,1,0,'212H Lincoln Path SE',212,'H',NULL,'Lincoln','Path','SE',NULL,NULL,NULL,NULL,'Hubbell',1,1026,NULL,'68375',NULL,1228,40.025484,-97.47265,0,NULL,NULL,56),(154,46,1,1,0,'212H Lincoln Path SE',212,'H',NULL,'Lincoln','Path','SE',NULL,NULL,NULL,NULL,'Hubbell',1,1026,NULL,'68375',NULL,1228,40.025484,-97.47265,0,NULL,NULL,56),(155,11,1,1,0,'212H Lincoln Path SE',212,'H',NULL,'Lincoln','Path','SE',NULL,NULL,NULL,NULL,'Hubbell',1,1026,NULL,'68375',NULL,1228,40.025484,-97.47265,0,NULL,NULL,56),(156,13,1,1,0,'403A El Camino Ave S',403,'A',NULL,'El Camino','Ave','S',NULL,NULL,NULL,NULL,'Columbus',1,1034,NULL,'43266',NULL,1228,39.969036,-83.011389,0,NULL,NULL,NULL),(157,128,1,1,0,'922H College St S',922,'H',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Ragley',1,1017,NULL,'70657',NULL,1228,30.472103,-93.13957,0,NULL,NULL,57),(158,184,1,1,0,'922H College St S',922,'H',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Ragley',1,1017,NULL,'70657',NULL,1228,30.472103,-93.13957,0,NULL,NULL,57),(159,36,1,1,0,'922H College St S',922,'H',NULL,'College','St','S',NULL,NULL,NULL,NULL,'Ragley',1,1017,NULL,'70657',NULL,1228,30.472103,-93.13957,0,NULL,NULL,57),(160,44,1,1,0,'70B Beech Path E',70,'B',NULL,'Beech','Path','E',NULL,NULL,NULL,NULL,'Etna Green',1,1013,NULL,'46524',NULL,1228,41.291767,-86.03216,0,NULL,NULL,NULL),(161,94,1,1,0,'824I Jackson Ln SW',824,'I',NULL,'Jackson','Ln','SW',NULL,NULL,NULL,NULL,'Bearcreek',1,1025,NULL,'59007',NULL,1228,45.159808,-109.14649,0,NULL,NULL,58),(162,15,1,1,0,'824I Jackson Ln SW',824,'I',NULL,'Jackson','Ln','SW',NULL,NULL,NULL,NULL,'Bearcreek',1,1025,NULL,'59007',NULL,1228,45.159808,-109.14649,0,NULL,NULL,58),(163,146,1,1,0,'824I Jackson Ln SW',824,'I',NULL,'Jackson','Ln','SW',NULL,NULL,NULL,NULL,'Bearcreek',1,1025,NULL,'59007',NULL,1228,45.159808,-109.14649,0,NULL,NULL,58),(164,16,1,1,0,'317U College Path W',317,'U',NULL,'College','Path','W',NULL,NULL,NULL,NULL,'Hammonton',1,1029,NULL,'08037',NULL,1228,39.625291,-74.77705,0,NULL,NULL,NULL),(165,170,1,1,0,'362H Main Way S',362,'H',NULL,'Main','Way','S',NULL,NULL,NULL,NULL,'Dudley',1,1009,NULL,'31022',NULL,1228,32.516865,-83.09905,0,NULL,NULL,59),(166,52,1,1,0,'362H Main Way S',362,'H',NULL,'Main','Way','S',NULL,NULL,NULL,NULL,'Dudley',1,1009,NULL,'31022',NULL,1228,32.516865,-83.09905,0,NULL,NULL,59),(167,106,1,1,0,'362H Main Way S',362,'H',NULL,'Main','Way','S',NULL,NULL,NULL,NULL,'Dudley',1,1009,NULL,'31022',NULL,1228,32.516865,-83.09905,0,NULL,NULL,59),(168,24,1,1,0,'362H Main Way S',362,'H',NULL,'Main','Way','S',NULL,NULL,NULL,NULL,'Dudley',1,1009,NULL,'31022',NULL,1228,32.516865,-83.09905,0,NULL,NULL,59),(169,63,1,1,0,'859L Woodbridge Dr N',859,'L',NULL,'Woodbridge','Dr','N',NULL,NULL,NULL,NULL,'Marydell',1,1016,NULL,'40751',NULL,1228,37.137615,-84.115617,0,NULL,NULL,60),(170,187,1,1,0,'859L Woodbridge Dr N',859,'L',NULL,'Woodbridge','Dr','N',NULL,NULL,NULL,NULL,'Marydell',1,1016,NULL,'40751',NULL,1228,37.137615,-84.115617,0,NULL,NULL,60),(171,29,1,1,0,'859L Woodbridge Dr N',859,'L',NULL,'Woodbridge','Dr','N',NULL,NULL,NULL,NULL,'Marydell',1,1016,NULL,'40751',NULL,1228,37.137615,-84.115617,0,NULL,NULL,60),(172,99,1,1,0,'558P Green Path NE',558,'P',NULL,'Green','Path','NE',NULL,NULL,NULL,NULL,'Iola',1,1015,NULL,'66749',NULL,1228,37.926666,-95.39695,0,NULL,NULL,NULL),(173,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),(174,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),(175,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; @@ -208,7 +208,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_contact` WRITE; /*!40000 ALTER TABLE `civicrm_contact` DISABLE KEYS */; -INSERT INTO `civicrm_contact` (`id`, `contact_type`, `contact_sub_type`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `external_identifier`, `sort_name`, `display_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `preferred_mail_format`, `hash`, `api_key`, `source`, `first_name`, `middle_name`, `last_name`, `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`, `organization_name`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`) VALUES (1,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Default Organization','Default Organization',NULL,'Default Organization',NULL,NULL,NULL,'Both',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,'Default Organization',NULL,NULL,NULL,0,NULL,'2018-09-19 20:23:41'),(2,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Bachman, Miguel','Miguel Bachman',NULL,NULL,NULL,'3',NULL,'Both','3860492526',NULL,'Sample Data','Miguel','','Bachman',NULL,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel Bachman',NULL,2,'1953-04-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(3,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Yadav, Brittney','Ms. Brittney Yadav',NULL,NULL,NULL,NULL,NULL,'Both','653356179',NULL,'Sample Data','Brittney','','Yadav',2,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Ms. Brittney Yadav',NULL,1,'1972-07-17',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(4,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Bachman, Maxwell','Mr. Maxwell Bachman Sr.',NULL,NULL,NULL,NULL,NULL,'Both','1975016772',NULL,'Sample Data','Maxwell','','Bachman',3,2,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Mr. Maxwell Bachman Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(5,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'rj.jameson-ivanov@notmail.biz','rj.jameson-ivanov@notmail.biz',NULL,NULL,NULL,'2',NULL,'Both','4233394365',NULL,'Sample Data',NULL,NULL,NULL,NULL,3,NULL,NULL,1,NULL,'Dear rj.jameson-ivanov@notmail.biz',1,NULL,'Dear rj.jameson-ivanov@notmail.biz',1,NULL,'rj.jameson-ivanov@notmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(6,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terrell, Merrie','Dr. Merrie Terrell',NULL,NULL,NULL,NULL,NULL,'Both','88745848',NULL,'Sample Data','Merrie','','Terrell',4,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Dr. Merrie Terrell',NULL,NULL,'1957-08-20',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(7,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Bernadette','Dr. Bernadette Prentice',NULL,NULL,NULL,'4',NULL,'Both','2674595740',NULL,'Sample Data','Bernadette','Z','Prentice',4,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Dr. Bernadette Prentice',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(8,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Dimitrov, Scarlet','Scarlet Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','2143443543',NULL,'Sample Data','Scarlet','','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Dimitrov',NULL,NULL,'1986-07-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(9,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Megan','Megan Terry',NULL,NULL,NULL,NULL,NULL,'Both','3263409952',NULL,'Sample Data','Megan','','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,'Texas Culture Trust',NULL,NULL,102,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(10,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Alexia','Alexia Patel',NULL,NULL,NULL,'1',NULL,'Both','1465483160',NULL,'Sample Data','Alexia','','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Patel',NULL,NULL,'1940-07-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(11,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jameson, Jackson','Jackson Jameson II',NULL,NULL,NULL,'4',NULL,'Both','680754950',NULL,'Sample Data','Jackson','K','Jameson',NULL,3,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Jameson II',NULL,NULL,'1953-08-03',1,'2017-11-17',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(12,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'DÃaz, Ashley','Ashley DÃaz',NULL,NULL,NULL,'4',NULL,'Both','2703610004',NULL,'Sample Data','Ashley','','DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley DÃaz',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(13,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Yadav family','Yadav family',NULL,NULL,NULL,'4',NULL,'Both','1777336212',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(14,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Adams, Ray','Ray Adams',NULL,NULL,NULL,NULL,NULL,'Both','1995383476',NULL,'Sample Data','Ray','N','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Adams',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(15,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Billy','Billy Bachman III',NULL,NULL,NULL,'1',NULL,'Both','2000818786',NULL,'Sample Data','Billy','W','Bachman',NULL,4,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Billy Bachman III',NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(16,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Roberts, Toby','Dr. Toby Roberts',NULL,NULL,NULL,NULL,NULL,'Both','3766769567',NULL,'Sample Data','Toby','E','Roberts',4,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Dr. Toby Roberts',NULL,NULL,'1933-11-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(17,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'dimitrovj@fishmail.org','dimitrovj@fishmail.org',NULL,NULL,NULL,NULL,NULL,'Both','2407287932',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear dimitrovj@fishmail.org',1,NULL,'Dear dimitrovj@fishmail.org',1,NULL,'dimitrovj@fishmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(18,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Terry family','Terry family',NULL,NULL,NULL,'5',NULL,'Both','558108751',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(19,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Barkley, Rodrigo','Dr. Rodrigo Barkley II',NULL,NULL,NULL,'3',NULL,'Both','2540977951',NULL,'Sample Data','Rodrigo','M','Barkley',4,3,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Dr. Rodrigo Barkley II',NULL,2,'1956-12-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(20,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'jensen.y.justina@testing.co.in','jensen.y.justina@testing.co.in',NULL,NULL,NULL,'1',NULL,'Both','1861803458',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear jensen.y.justina@testing.co.in',1,NULL,'Dear jensen.y.justina@testing.co.in',1,NULL,'jensen.y.justina@testing.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(21,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jensen, Erik','Erik Jensen',NULL,NULL,NULL,'4',NULL,'Both','3788466038',NULL,'Sample Data','Erik','','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Jensen',NULL,2,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(22,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen family','Jensen family',NULL,NULL,NULL,'4',NULL,'Both','797435572',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jensen family',5,NULL,'Dear Jensen family',2,NULL,'Jensen family',NULL,NULL,NULL,0,NULL,'Jensen family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(23,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Damaris','Dr. Damaris Smith',NULL,NULL,NULL,NULL,NULL,'Both','3693080437',NULL,'Sample Data','Damaris','Y','Smith',4,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Dr. Damaris Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(24,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Bernadette','Bernadette Zope',NULL,NULL,NULL,NULL,NULL,'Both','2602904844',NULL,'Sample Data','Bernadette','P','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Zope',NULL,1,'1974-12-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(25,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Lou','Dr. Lou McReynolds Jr.',NULL,NULL,NULL,'3',NULL,'Both','1805936303',NULL,'Sample Data','Lou','L','McReynolds',4,1,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou McReynolds Jr.',NULL,2,'1984-09-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(26,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Urban Family Center','Urban Family Center',NULL,NULL,NULL,'2',NULL,'Both','216761887',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Family Center',NULL,NULL,NULL,0,NULL,NULL,154,'Urban Family Center',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(27,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'smith-chowski.l.sanford29@airmail.com','smith-chowski.l.sanford29@airmail.com',NULL,NULL,NULL,NULL,NULL,'Both','3208830387',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear smith-chowski.l.sanford29@airmail.com',1,NULL,'Dear smith-chowski.l.sanford29@airmail.com',1,NULL,'smith-chowski.l.sanford29@airmail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(28,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terry, Jerome','Jerome Terry III',NULL,NULL,NULL,NULL,NULL,'Both','2399613153',NULL,'Sample Data','Jerome','S','Terry',NULL,4,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Jerome Terry III',NULL,2,'1976-09-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(29,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Ivey','Ivey Zope',NULL,NULL,NULL,'2',NULL,'Both','2367978806',NULL,'Sample Data','Ivey','C','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ivey Zope',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(30,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Truman','Truman Smith III',NULL,NULL,NULL,'3',NULL,'Both','2166519703',NULL,'Sample Data','Truman','','Smith',NULL,4,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Smith III',NULL,2,'1986-06-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(31,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Dimitrov, BrzÄ™czysÅ‚aw','BrzÄ™czysÅ‚aw Dimitrov III',NULL,NULL,NULL,NULL,NULL,'Both','1759214817',NULL,'Sample Data','BrzÄ™czysÅ‚aw','','Dimitrov',NULL,4,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'BrzÄ™czysÅ‚aw Dimitrov III',NULL,2,'1974-01-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(32,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Margaret','Margaret Jameson',NULL,NULL,NULL,NULL,NULL,'Both','1719938872',NULL,'Sample Data','Margaret','','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Jameson',NULL,1,'1998-11-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(33,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Jackson','Jackson Cruz',NULL,NULL,NULL,NULL,NULL,'Both','995179236',NULL,'Sample Data','Jackson','','Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Cruz',NULL,2,'1989-12-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(34,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Dowlen Peace Services','Dowlen Peace Services',NULL,NULL,NULL,'3',NULL,'Both','1061620389',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dowlen Peace Services',NULL,NULL,NULL,0,NULL,NULL,157,'Dowlen Peace Services',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(35,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Kiara','Kiara Jameson',NULL,NULL,NULL,NULL,NULL,'Both','1442754095',NULL,'Sample Data','Kiara','K','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Jameson',NULL,NULL,'2008-04-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(36,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'jacobs.toby56@fishmail.co.uk','jacobs.toby56@fishmail.co.uk',NULL,NULL,NULL,NULL,NULL,'Both','3074945541',NULL,'Sample Data',NULL,NULL,NULL,3,3,NULL,NULL,1,NULL,'Dear jacobs.toby56@fishmail.co.uk',1,NULL,'Dear jacobs.toby56@fishmail.co.uk',1,NULL,'jacobs.toby56@fishmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(37,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terrell, Beula','Mrs. Beula Terrell',NULL,NULL,NULL,NULL,NULL,'Both','413084989',NULL,'Sample Data','Beula','','Terrell',1,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Mrs. Beula Terrell',NULL,1,'1967-12-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(38,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Craig','Craig Jensen',NULL,NULL,NULL,NULL,NULL,'Both','188139138',NULL,'Sample Data','Craig','','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Jensen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(39,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Dimitrov, Errol','Errol Dimitrov',NULL,NULL,NULL,'5',NULL,'Both','3017354314',NULL,'Sample Data','Errol','M','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Dimitrov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(40,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'robertson.errol@testing.co.pl','robertson.errol@testing.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','2221431757',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear robertson.errol@testing.co.pl',1,NULL,'Dear robertson.errol@testing.co.pl',1,NULL,'robertson.errol@testing.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(41,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Herminia','Herminia Adams',NULL,NULL,NULL,'3',NULL,'Both','1782178525',NULL,'Sample Data','Herminia','A','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Adams',NULL,1,'2002-07-30',0,NULL,NULL,NULL,'Community Development Network',NULL,NULL,142,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(42,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen-Lee, Billy','Billy Nielsen-Lee Sr.',NULL,NULL,NULL,NULL,NULL,'Both','1527511015',NULL,'Sample Data','Billy','S','Nielsen-Lee',NULL,2,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Billy Nielsen-Lee Sr.',NULL,2,'2016-12-16',0,NULL,NULL,NULL,'United Action Systems',NULL,NULL,181,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(43,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Dimitrov family','Dimitrov family',NULL,NULL,NULL,NULL,NULL,'Both','3351288571',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(44,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen-Lee family','Nielsen-Lee family',NULL,NULL,NULL,'3',NULL,'Both','1247966346',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Nielsen-Lee family',5,NULL,'Dear Nielsen-Lee family',2,NULL,'Nielsen-Lee family',NULL,NULL,NULL,0,NULL,'Nielsen-Lee family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(45,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'herminiaz26@infomail.net','herminiaz26@infomail.net',NULL,NULL,NULL,NULL,NULL,'Both','3922579854',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear herminiaz26@infomail.net',1,NULL,'Dear herminiaz26@infomail.net',1,NULL,'herminiaz26@infomail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(46,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Smith-ÅÄ…chowski family','Smith-ÅÄ…chowski family',NULL,NULL,NULL,'1',NULL,'Both','2739760317',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Smith-ÅÄ…chowski family',5,NULL,'Dear Smith-ÅÄ…chowski family',2,NULL,'Smith-ÅÄ…chowski family',NULL,NULL,NULL,0,NULL,'Smith-ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(47,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Roberts, Megan','Megan Roberts',NULL,NULL,NULL,'5',NULL,'Both','2663769717',NULL,'Sample Data','Megan','','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Roberts',NULL,NULL,'2000-03-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(48,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Kenny','Dr. Kenny Robertson II',NULL,NULL,NULL,NULL,NULL,'Both','2857414580',NULL,'Sample Data','Kenny','','Robertson',4,3,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Dr. Kenny Robertson II',NULL,2,'1974-09-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(49,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Bachman, Shad','Dr. Shad Bachman III',NULL,NULL,NULL,NULL,NULL,'Both','408561900',NULL,'Sample Data','Shad','J','Bachman',4,4,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad Bachman III',NULL,NULL,'1988-12-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(50,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant, Kiara','Kiara Grant',NULL,NULL,NULL,'3',NULL,'Both','334214546',NULL,'Sample Data','Kiara','','Grant',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Grant',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(51,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson family','Robertson family',NULL,NULL,NULL,NULL,NULL,'Both','3444393980',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Robertson family',5,NULL,'Dear Robertson family',2,NULL,'Robertson family',NULL,NULL,NULL,0,NULL,'Robertson family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(52,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Terrell family','Terrell family',NULL,NULL,NULL,'3',NULL,'Both','1136333121',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(53,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Rosario','Mr. Rosario Jensen',NULL,NULL,NULL,NULL,NULL,'Both','3904971531',NULL,'Sample Data','Rosario','K','Jensen',3,NULL,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Mr. Rosario Jensen',NULL,2,'1987-05-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(54,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'González, Alexia','Alexia González',NULL,NULL,NULL,'4',NULL,'Both','4265879179',NULL,'Sample Data','Alexia','','González',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia González',NULL,1,'1993-09-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(55,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'González, Ashley','Ashley González',NULL,NULL,NULL,NULL,NULL,'Both','1248338675',NULL,'Sample Data','Ashley','','González',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley González',NULL,1,'1965-10-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(56,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Bernadette','Bernadette Patel',NULL,NULL,NULL,NULL,NULL,'Both','2696373355',NULL,'Sample Data','Bernadette','','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Patel',NULL,1,'1972-05-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(57,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jensen, Kacey','Kacey Jensen',NULL,NULL,NULL,'1',NULL,'Both','752145203',NULL,'Sample Data','Kacey','','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Jensen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(58,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Zope family','Zope family',NULL,NULL,NULL,NULL,NULL,'Both','1649131487',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(59,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Wilson, Jay','Jay Wilson',NULL,NULL,NULL,NULL,NULL,'Both','1279858247',NULL,'Sample Data','Jay','X','Wilson',NULL,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Jay Wilson',NULL,2,'1932-12-25',1,NULL,NULL,NULL,'Local Music Initiative',NULL,NULL,105,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(60,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terrell, Kathleen','Kathleen Terrell',NULL,NULL,NULL,'1',NULL,'Both','1212297989',NULL,'Sample Data','Kathleen','','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Terrell',NULL,1,'2010-08-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(61,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Smith-ÅÄ…chowski, Valene','Ms. Valene Smith-ÅÄ…chowski',NULL,NULL,NULL,'1',NULL,'Both','3420338228',NULL,'Sample Data','Valene','','Smith-ÅÄ…chowski',2,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Ms. Valene Smith-ÅÄ…chowski',NULL,1,'1989-10-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(62,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Patel family','Patel family',NULL,NULL,NULL,'4',NULL,'Both','1669281794',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Patel family',5,NULL,'Dear Patel family',2,NULL,'Patel family',NULL,NULL,NULL,0,NULL,'Patel family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(63,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Heidi','Mrs. Heidi Terry',NULL,NULL,NULL,NULL,NULL,'Both','3824053436',NULL,'Sample Data','Heidi','W','Terry',1,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Mrs. Heidi Terry',NULL,NULL,'1994-03-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(64,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'smith.jed83@fakemail.biz','smith.jed83@fakemail.biz',NULL,NULL,NULL,'5',NULL,'Both','2471437949',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear smith.jed83@fakemail.biz',1,NULL,'Dear smith.jed83@fakemail.biz',1,NULL,'smith.jed83@fakemail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(65,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Lee, Mei','Dr. Mei Lee',NULL,NULL,NULL,'4',NULL,'Both','1778565334',NULL,'Sample Data','Mei','G','Lee',4,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Dr. Mei Lee',NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(66,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Nicole','Ms. Nicole Patel',NULL,NULL,NULL,NULL,NULL,'Both','687315016',NULL,'Sample Data','Nicole','','Patel',2,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Ms. Nicole Patel',NULL,1,'1980-09-11',0,NULL,NULL,NULL,'Saint Louis Agriculture Center',NULL,NULL,90,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(67,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Magan','Magan Wagner',NULL,NULL,NULL,NULL,NULL,'Both','822485998',NULL,'Sample Data','Magan','','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Wagner',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(68,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'prentice.ashley@spamalot.com','prentice.ashley@spamalot.com',NULL,NULL,NULL,NULL,NULL,'Both','266395485',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear prentice.ashley@spamalot.com',1,NULL,'Dear prentice.ashley@spamalot.com',1,NULL,'prentice.ashley@spamalot.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(69,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Friends Family Initiative','Friends Family Initiative',NULL,NULL,NULL,'3',NULL,'Both','2451259362',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Friends Family Initiative',NULL,NULL,NULL,0,NULL,NULL,161,'Friends Family Initiative',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(70,'Organization',NULL,1,0,0,0,1,0,NULL,NULL,'California Action Collective','California Action Collective',NULL,NULL,NULL,NULL,NULL,'Both','633865096',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'California Action Collective',NULL,NULL,NULL,0,NULL,NULL,91,'California Action Collective',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(71,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Grant, Nicole','Nicole Grant',NULL,NULL,NULL,'3',NULL,'Both','2858185937',NULL,'Sample Data','Nicole','V','Grant',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Grant',NULL,1,'1929-03-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(72,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Delana','Mrs. Delana Bachman',NULL,NULL,NULL,NULL,NULL,'Both','1435428348',NULL,'Sample Data','Delana','G','Bachman',1,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Mrs. Delana Bachman',NULL,1,'1973-10-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(73,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds family','McReynolds family',NULL,NULL,NULL,'4',NULL,'Both','3032680972',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(74,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz, Jed','Jed DÃaz II',NULL,NULL,NULL,'3',NULL,'Both','3371840516',NULL,'Sample Data','Jed','','DÃaz',NULL,3,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed DÃaz II',NULL,2,'1940-04-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(75,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Friends Agriculture Academy','Friends Agriculture Academy',NULL,NULL,NULL,NULL,NULL,'Both','3772668327',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Friends Agriculture Academy',NULL,NULL,NULL,0,NULL,NULL,77,'Friends Agriculture Academy',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(76,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Yadav, Jed','Dr. Jed Yadav',NULL,NULL,NULL,'4',NULL,'Both','3268610129',NULL,'Sample Data','Jed','H','Yadav',4,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Dr. Jed Yadav',NULL,2,NULL,1,'2017-11-18',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(77,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Deforest, Sherman','Dr. Sherman Deforest Sr.',NULL,NULL,NULL,'4',NULL,'Both','2166438146',NULL,'Sample Data','Sherman','M','Deforest',4,2,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Dr. Sherman Deforest Sr.',NULL,2,'1977-10-07',0,NULL,NULL,NULL,'Friends Agriculture Academy',NULL,NULL,75,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(78,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Jacob','Dr. Jacob Nielsen',NULL,NULL,NULL,'1',NULL,'Both','1661720619',NULL,'Sample Data','Jacob','Z','Nielsen',4,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Dr. Jacob Nielsen',NULL,NULL,'1955-08-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(79,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Zope, Sherman','Sherman Zope III',NULL,NULL,NULL,NULL,NULL,'Both','3265645175',NULL,'Sample Data','Sherman','S','Zope',NULL,4,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Zope III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(80,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Zope, Kiara','Mrs. Kiara Zope',NULL,NULL,NULL,'2',NULL,'Both','2982636057',NULL,'Sample Data','Kiara','','Zope',1,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Mrs. Kiara Zope',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(81,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Terry, Brittney','Brittney Terry',NULL,NULL,NULL,'5',NULL,'Both','1070539593',NULL,'Sample Data','Brittney','D','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Terry',NULL,NULL,'1989-05-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(82,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Craig','Craig Lee',NULL,NULL,NULL,NULL,NULL,'Both','383482942',NULL,'Sample Data','Craig','','Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Lee',NULL,2,'1998-09-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(83,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Damaris','Damaris Zope',NULL,NULL,NULL,NULL,NULL,'Both','2309654739',NULL,'Sample Data','Damaris','X','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris Zope',NULL,1,'1961-03-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(84,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wilson, Elbert','Mr. Elbert Wilson Sr.',NULL,NULL,NULL,NULL,NULL,'Both','330239896',NULL,'Sample Data','Elbert','','Wilson',3,2,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Mr. Elbert Wilson Sr.',NULL,NULL,NULL,1,'2018-05-12',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(85,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Jameson-Ivanov family','Jameson-Ivanov family',NULL,NULL,NULL,NULL,NULL,'Both','2836885419',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jameson-Ivanov family',5,NULL,'Dear Jameson-Ivanov family',2,NULL,'Jameson-Ivanov family',NULL,NULL,NULL,0,NULL,'Jameson-Ivanov family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(86,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Jed','Jed Jensen',NULL,NULL,NULL,NULL,NULL,'Both','3204161808',NULL,'Sample Data','Jed','','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Jensen',NULL,NULL,'1985-01-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(87,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'ct.roberts@lol.info','ct.roberts@lol.info',NULL,NULL,NULL,NULL,NULL,'Both','3680261220',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,NULL,1,NULL,'Dear ct.roberts@lol.info',1,NULL,'Dear ct.roberts@lol.info',1,NULL,'ct.roberts@lol.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(88,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Esta','Esta Prentice',NULL,NULL,NULL,'1',NULL,'Both','754414279',NULL,'Sample Data','Esta','T','Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Prentice',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(89,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Hollywood Family Collective','Hollywood Family Collective',NULL,NULL,NULL,'5',NULL,'Both','3052999642',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Hollywood Family Collective',NULL,NULL,NULL,0,NULL,NULL,111,'Hollywood Family Collective',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(90,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Saint Louis Agriculture Center','Saint Louis Agriculture Center',NULL,NULL,NULL,NULL,NULL,'Both','1093718101',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Saint Louis Agriculture Center',NULL,NULL,NULL,0,NULL,NULL,66,'Saint Louis Agriculture Center',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(91,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Yadav, Scarlet','Ms. Scarlet Yadav',NULL,NULL,NULL,NULL,NULL,'Both','2692683463',NULL,'Sample Data','Scarlet','Z','Yadav',2,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Ms. Scarlet Yadav',NULL,NULL,NULL,0,NULL,NULL,NULL,'California Action Collective',NULL,NULL,70,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(92,'Individual',NULL,1,1,0,0,1,0,NULL,NULL,'Dimitrov, Jacob','Jacob Dimitrov Sr.',NULL,NULL,NULL,'1',NULL,'Both','2306451370',NULL,'Sample Data','Jacob','Z','Dimitrov',NULL,2,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Dimitrov Sr.',NULL,2,'1969-03-16',0,NULL,NULL,NULL,'Rural Family Fellowship',NULL,NULL,144,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(93,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Elizabeth','Elizabeth Smith',NULL,NULL,NULL,'4',NULL,'Both','3537144682',NULL,'Sample Data','Elizabeth','','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Smith',NULL,NULL,'1965-11-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(94,'Individual',NULL,1,1,0,0,1,0,NULL,NULL,'Smith, Troy','Dr. Troy Smith',NULL,NULL,NULL,NULL,NULL,'Both','2806538092',NULL,'Sample Data','Troy','','Smith',4,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Dr. Troy Smith',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(95,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Roland','Mr. Roland Prentice',NULL,NULL,NULL,NULL,NULL,'Both','3836132137',NULL,'Sample Data','Roland','','Prentice',3,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Mr. Roland Prentice',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(96,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'jameson-ivanov.jerome@testing.co.nz','jameson-ivanov.jerome@testing.co.nz',NULL,NULL,NULL,NULL,NULL,'Both','2162653083',NULL,'Sample Data',NULL,NULL,NULL,NULL,4,NULL,NULL,1,NULL,'Dear jameson-ivanov.jerome@testing.co.nz',1,NULL,'Dear jameson-ivanov.jerome@testing.co.nz',1,NULL,'jameson-ivanov.jerome@testing.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(97,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Jed','Jed Bachman III',NULL,NULL,NULL,NULL,NULL,'Both','876018088',NULL,'Sample Data','Jed','','Bachman',NULL,4,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Bachman III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(98,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'González, Ray','Ray González II',NULL,NULL,NULL,NULL,NULL,'Both','193085819',NULL,'Sample Data','Ray','','González',NULL,3,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray González II',NULL,2,'2014-03-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(99,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson-Robertson, Santina','Santina Wattson-Robertson',NULL,NULL,NULL,'3',NULL,'Both','1754510873',NULL,'Sample Data','Santina','T','Wattson-Robertson',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Wattson-Robertson',NULL,NULL,'1961-01-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(100,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'McReynolds, Sonny','Sonny McReynolds II',NULL,NULL,NULL,'4',NULL,'Both','3975405155',NULL,'Sample Data','Sonny','I','McReynolds',NULL,3,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny McReynolds II',NULL,NULL,'2012-10-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(101,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Alabama Family Systems','Alabama Family Systems',NULL,NULL,NULL,NULL,NULL,'Both','2830359297',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Alabama Family Systems',NULL,NULL,NULL,0,NULL,NULL,162,'Alabama Family Systems',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(102,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Texas Culture Trust','Texas Culture Trust',NULL,NULL,NULL,NULL,NULL,'Both','1066895302',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Texas Culture Trust',NULL,NULL,NULL,0,NULL,NULL,9,'Texas Culture Trust',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(103,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Alabama Advocacy Initiative','Alabama Advocacy Initiative',NULL,NULL,NULL,NULL,NULL,'Both','111260071',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Alabama Advocacy Initiative',NULL,NULL,NULL,0,NULL,NULL,195,'Alabama Advocacy Initiative',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(104,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Prentice, Tanya','Tanya Prentice',NULL,NULL,NULL,NULL,NULL,'Both','3651240443',NULL,'Sample Data','Tanya','','Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Prentice',NULL,1,NULL,1,'2017-12-14',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(105,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Local Music Initiative','Local Music Initiative',NULL,NULL,NULL,'5',NULL,'Both','3640588008',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Music Initiative',NULL,NULL,NULL,0,NULL,NULL,59,'Local Music Initiative',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(106,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Megan','Megan Ivanov',NULL,NULL,NULL,'1',NULL,'Both','1909740679',NULL,'Sample Data','Megan','F','Ivanov',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Ivanov',NULL,NULL,'1967-01-22',1,'2018-02-12',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(107,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terrell, Kenny','Kenny Terrell',NULL,NULL,NULL,NULL,NULL,'Both','614922505',NULL,'Sample Data','Kenny','W','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Terrell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(108,'Individual',NULL,1,1,0,0,1,0,NULL,NULL,'Patel, Lawerence','Lawerence Patel III',NULL,NULL,NULL,NULL,NULL,'Both','973187101',NULL,'Sample Data','Lawerence','','Patel',NULL,4,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Patel III',NULL,2,'1982-11-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(109,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'González, Alida','Alida González',NULL,NULL,NULL,'5',NULL,'Both','2128716244',NULL,'Sample Data','Alida','','González',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida González',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(110,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'scottjameson36@fishmail.co.pl','scottjameson36@fishmail.co.pl',NULL,NULL,NULL,'1',NULL,'Both','1757661406',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear scottjameson36@fishmail.co.pl',1,NULL,'Dear scottjameson36@fishmail.co.pl',1,NULL,'scottjameson36@fishmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(111,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav, Justina','Ms. Justina Yadav',NULL,NULL,NULL,NULL,NULL,'Both','807357097',NULL,'Sample Data','Justina','','Yadav',2,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Ms. Justina Yadav',NULL,1,NULL,0,NULL,NULL,NULL,'Hollywood Family Collective',NULL,NULL,89,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(112,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Robertson, Sanford','Sanford Robertson II',NULL,NULL,NULL,'2',NULL,'Both','3262166221',NULL,'Sample Data','Sanford','','Robertson',NULL,3,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Robertson II',NULL,2,NULL,0,NULL,NULL,NULL,'Community Software Academy',NULL,NULL,189,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(113,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Roland','Roland Samson III',NULL,NULL,NULL,'3',NULL,'Both','2394998180',NULL,'Sample Data','Roland','O','Samson',NULL,4,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Samson III',NULL,2,'1953-04-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(114,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Kiara','Mrs. Kiara Lee',NULL,NULL,NULL,'3',NULL,'Both','3789982158',NULL,'Sample Data','Kiara','Z','Lee',1,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Mrs. Kiara Lee',NULL,NULL,NULL,0,NULL,NULL,NULL,'Kentucky Sports Academy',NULL,NULL,139,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(115,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'States Sustainability Alliance','States Sustainability Alliance',NULL,NULL,NULL,'5',NULL,'Both','3785729846',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'States Sustainability Alliance',NULL,NULL,NULL,0,NULL,NULL,NULL,'States Sustainability Alliance',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(116,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terrell, Santina','Santina Terrell',NULL,NULL,NULL,NULL,NULL,'Both','2039698555',NULL,'Sample Data','Santina','','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Terrell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(117,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Terry family','Terry family',NULL,NULL,NULL,'5',NULL,'Both','558108751',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(118,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'aa.smith@fakemail.co.nz','aa.smith@fakemail.co.nz',NULL,NULL,NULL,NULL,NULL,'Both','2174083744',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear aa.smith@fakemail.co.nz',1,NULL,'Dear aa.smith@fakemail.co.nz',1,NULL,'aa.smith@fakemail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(119,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'cjones@infomail.co.pl','cjones@infomail.co.pl',NULL,NULL,NULL,'1',NULL,'Both','2872988939',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear cjones@infomail.co.pl',1,NULL,'Dear cjones@infomail.co.pl',1,NULL,'cjones@infomail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(120,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant-Adams, Eleonor','Ms. Eleonor Grant-Adams',NULL,NULL,NULL,'1',NULL,'Both','1843667778',NULL,'Sample Data','Eleonor','V','Grant-Adams',2,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Ms. Eleonor Grant-Adams',NULL,NULL,'1995-09-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(121,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Brigette','Mrs. Brigette Müller',NULL,NULL,NULL,NULL,NULL,'Both','3572143002',NULL,'Sample Data','Brigette','','Müller',1,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Mrs. Brigette Müller',NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(122,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Valene','Ms. Valene Jensen',NULL,NULL,NULL,NULL,NULL,'Both','2995669530',NULL,'Sample Data','Valene','','Jensen',2,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Ms. Valene Jensen',NULL,NULL,'1965-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(123,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Local Development Partners','Local Development Partners',NULL,NULL,NULL,NULL,NULL,'Both','687233248',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Development Partners',NULL,NULL,NULL,0,NULL,NULL,137,'Local Development Partners',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(124,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'sjameson2@example.co.nz','sjameson2@example.co.nz',NULL,NULL,NULL,NULL,NULL,'Both','2652118407',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear sjameson2@example.co.nz',1,NULL,'Dear sjameson2@example.co.nz',1,NULL,'sjameson2@example.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(125,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice family','Prentice family',NULL,NULL,NULL,NULL,NULL,'Both','3313623671',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(126,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel, Maria','Maria Patel',NULL,NULL,NULL,'3',NULL,'Both','1297212984',NULL,'Sample Data','Maria','','Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria Patel',NULL,2,'1988-07-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(127,'Organization',NULL,0,1,0,0,1,0,NULL,NULL,'Avinger Literacy Academy','Avinger Literacy Academy',NULL,NULL,NULL,NULL,NULL,'Both','2595527668',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Avinger Literacy Academy',NULL,NULL,NULL,0,NULL,NULL,140,'Avinger Literacy Academy',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(128,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Santina','Mrs. Santina Smith',NULL,NULL,NULL,'5',NULL,'Both','4069145430',NULL,'Sample Data','Santina','','Smith',1,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Mrs. Santina Smith',NULL,1,'1968-10-23',1,'2018-02-12',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(129,'Household',NULL,1,1,0,0,0,0,NULL,NULL,'González family','González family',NULL,NULL,NULL,NULL,NULL,'Both','3263723758',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear González family',5,NULL,'Dear González family',2,NULL,'González family',NULL,NULL,NULL,0,NULL,'González family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(130,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Roland','Mr. Roland McReynolds II',NULL,NULL,NULL,'5',NULL,'Both','587223413',NULL,'Sample Data','Roland','','McReynolds',3,3,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Mr. Roland McReynolds II',NULL,NULL,'1955-04-07',1,'2017-10-10',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(131,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terrell, Nicole','Nicole Terrell',NULL,NULL,NULL,'5',NULL,'Both','3338816587',NULL,'Sample Data','Nicole','C','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Terrell',NULL,1,'2000-05-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(132,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Bachman, Jerome','Jerome Bachman',NULL,NULL,NULL,NULL,NULL,'Both','4187758320',NULL,'Sample Data','Jerome','F','Bachman',NULL,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Jerome Bachman',NULL,2,'1977-07-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(133,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Dimitrov, Ivey','Ivey Dimitrov',NULL,NULL,NULL,NULL,NULL,'Both','213135889',NULL,'Sample Data','Ivey','I','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ivey Dimitrov',NULL,1,'1987-09-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(134,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Parker, Rebekah','Rebekah Parker',NULL,NULL,NULL,NULL,NULL,'Both','4245169755',NULL,'Sample Data','Rebekah','L','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Parker',NULL,1,'2002-07-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(135,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Robertson, Carlos','Carlos Robertson',NULL,NULL,NULL,NULL,NULL,'Both','3416802562',NULL,'Sample Data','Carlos','','Robertson',NULL,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Robertson',NULL,NULL,'1992-05-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(136,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Heidi','Dr. Heidi ÅÄ…chowski',NULL,NULL,NULL,NULL,NULL,'Both','1305700724',NULL,'Sample Data','Heidi','E','ÅÄ…chowski',4,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Dr. Heidi ÅÄ…chowski',NULL,1,'1964-10-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(137,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Cruz, Scarlet','Scarlet Cruz',NULL,NULL,NULL,'5',NULL,'Both','3287940154',NULL,'Sample Data','Scarlet','T','Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Cruz',NULL,1,'2003-11-05',0,NULL,NULL,NULL,'Local Development Partners',NULL,NULL,123,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(138,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Parker, Esta','Mrs. Esta Parker',NULL,NULL,NULL,'5',NULL,'Both','599165417',NULL,'Sample Data','Esta','','Parker',1,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Mrs. Esta Parker',NULL,1,'1961-01-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(139,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Kentucky Sports Academy','Kentucky Sports Academy',NULL,NULL,NULL,NULL,NULL,'Both','661255844',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Kentucky Sports Academy',NULL,NULL,NULL,0,NULL,NULL,114,'Kentucky Sports Academy',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(140,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Prentice, Elizabeth','Ms. Elizabeth Prentice',NULL,NULL,NULL,NULL,NULL,'Both','1816376525',NULL,'Sample Data','Elizabeth','F','Prentice',2,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Ms. Elizabeth Prentice',NULL,1,'1964-09-16',0,NULL,NULL,NULL,'Avinger Literacy Academy',NULL,NULL,127,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(141,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Delana','Mrs. Delana Jacobs',NULL,NULL,NULL,'5',NULL,'Both','1289592996',NULL,'Sample Data','Delana','','Jacobs',1,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Mrs. Delana Jacobs',NULL,1,'1967-02-26',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(142,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Community Development Network','Community Development Network',NULL,NULL,NULL,NULL,NULL,'Both','3770806387',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Community Development Network',NULL,NULL,NULL,0,NULL,NULL,41,'Community Development Network',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(143,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Allen','Allen Robertson',NULL,NULL,NULL,NULL,NULL,'Both','4266356989',NULL,'Sample Data','Allen','','Robertson',NULL,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Robertson',NULL,2,'1970-11-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(144,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Rural Family Fellowship','Rural Family Fellowship',NULL,NULL,NULL,'3',NULL,'Both','381201830',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Family Fellowship',NULL,NULL,NULL,0,NULL,NULL,92,'Rural Family Fellowship',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(145,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'McReynolds, Arlyne','Ms. Arlyne McReynolds',NULL,NULL,NULL,'3',NULL,'Both','1526771757',NULL,'Sample Data','Arlyne','E','McReynolds',2,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Ms. Arlyne McReynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(146,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Prentice, Brent','Brent Prentice',NULL,NULL,NULL,NULL,NULL,'Both','279352372',NULL,'Sample Data','Brent','X','Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Prentice',NULL,NULL,'1965-11-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(147,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Terry, Scarlet','Scarlet Terry',NULL,NULL,NULL,NULL,NULL,'Both','4060527953',NULL,'Sample Data','Scarlet','J','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Terry',NULL,1,'1984-06-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(148,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'troyr28@fishmail.biz','troyr28@fishmail.biz',NULL,NULL,NULL,'2',NULL,'Both','2208768694',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear troyr28@fishmail.biz',1,NULL,'Dear troyr28@fishmail.biz',1,NULL,'troyr28@fishmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(149,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jacobs, Roland','Roland Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','2743643404',NULL,'Sample Data','Roland','E','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Jacobs',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(150,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Yadav, Russell','Mr. Russell Yadav',NULL,NULL,NULL,'5',NULL,'Both','3160688610',NULL,'Sample Data','Russell','','Yadav',3,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Mr. Russell Yadav',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(151,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant-Prentice, Juliann','Mrs. Juliann Grant-Prentice',NULL,NULL,NULL,'1',NULL,'Both','2819177',NULL,'Sample Data','Juliann','','Grant-Prentice',1,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Mrs. Juliann Grant-Prentice',NULL,1,'1970-04-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(152,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Bernadette','Mrs. Bernadette Terry',NULL,NULL,NULL,NULL,NULL,'Both','2401458356',NULL,'Sample Data','Bernadette','J','Terry',1,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Mrs. Bernadette Terry',NULL,NULL,'1991-07-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(153,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Nielsen-Lee, Shauna','Shauna Nielsen-Lee',NULL,NULL,NULL,NULL,NULL,'Both','3346464341',NULL,'Sample Data','Shauna','','Nielsen-Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Nielsen-Lee',NULL,1,'1999-11-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(154,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jensen, Jackson','Dr. Jackson Jensen',NULL,NULL,NULL,NULL,NULL,'Both','2839026195',NULL,'Sample Data','Jackson','C','Jensen',4,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Dr. Jackson Jensen',NULL,2,'1975-07-18',0,NULL,NULL,NULL,'Urban Family Center',NULL,NULL,26,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(155,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'McReynolds, Elina','Elina McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','130391420',NULL,'Sample Data','Elina','X','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina McReynolds',NULL,1,'1980-03-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(156,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Cruz, Lashawnda','Lashawnda Cruz',NULL,NULL,NULL,'3',NULL,'Both','2604537313',NULL,'Sample Data','Lashawnda','','Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Cruz',NULL,1,'1930-06-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(157,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Brigette','Brigette ÅÄ…chowski',NULL,NULL,NULL,'4',NULL,'Both','484497434',NULL,'Sample Data','Brigette','','ÅÄ…chowski',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette ÅÄ…chowski',NULL,1,'1963-05-09',0,NULL,NULL,NULL,'Dowlen Peace Services',NULL,NULL,34,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(158,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Adams family','Adams family',NULL,NULL,NULL,NULL,NULL,'Both','1515323104',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Adams family',5,NULL,'Dear Adams family',2,NULL,'Adams family',NULL,NULL,NULL,0,NULL,'Adams family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(159,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman family','Bachman family',NULL,NULL,NULL,'2',NULL,'Both','1714131215',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(160,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Smith, Jed','Jed Smith',NULL,NULL,NULL,NULL,NULL,'Both','2767892191',NULL,'Sample Data','Jed','','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Smith',NULL,NULL,'1989-07-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(161,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Elina','Dr. Elina Müller',NULL,NULL,NULL,NULL,NULL,'Both','4147818089',NULL,'Sample Data','Elina','D','Müller',4,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Dr. Elina Müller',NULL,1,'1940-10-28',1,'2018-02-23',NULL,NULL,'Friends Family Initiative',NULL,NULL,69,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(162,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Kacey','Ms. Kacey Wagner',NULL,NULL,NULL,NULL,NULL,'Both','1592802897',NULL,'Sample Data','Kacey','U','Wagner',2,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Ms. Kacey Wagner',NULL,1,NULL,1,NULL,NULL,NULL,'Alabama Family Systems',NULL,NULL,101,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(163,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Jones, Toby','Toby Jones',NULL,NULL,NULL,NULL,NULL,'Both','1728032569',NULL,'Sample Data','Toby','','Jones',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Jones',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(164,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Lou','Lou Jones Sr.',NULL,NULL,NULL,'3',NULL,'Both','1729688714',NULL,'Sample Data','Lou','F','Jones',NULL,2,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Jones Sr.',NULL,2,'1992-07-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(165,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Cruz, Esta','Dr. Esta Cruz',NULL,NULL,NULL,NULL,NULL,'Both','3738064484',NULL,'Sample Data','Esta','E','Cruz',4,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Dr. Esta Cruz',NULL,1,'1982-04-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(166,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Deforest, Toby','Toby Deforest',NULL,NULL,NULL,NULL,NULL,'Both','2295860847',NULL,'Sample Data','Toby','Z','Deforest',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Deforest',NULL,2,'1986-01-15',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(167,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Merrie','Ms. Merrie Müller',NULL,NULL,NULL,'5',NULL,'Both','1627224470',NULL,'Sample Data','Merrie','','Müller',2,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Ms. Merrie Müller',NULL,1,'1934-04-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(168,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Brent','Dr. Brent Terry',NULL,NULL,NULL,'3',NULL,'Both','4100154892',NULL,'Sample Data','Brent','','Terry',4,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Dr. Brent Terry',NULL,NULL,'1971-06-07',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(169,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Patel-Prentice, Nicole','Ms. Nicole Patel-Prentice',NULL,NULL,NULL,NULL,NULL,'Both','3235912944',NULL,'Sample Data','Nicole','P','Patel-Prentice',2,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Ms. Nicole Patel-Prentice',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(170,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice family','Prentice family',NULL,NULL,NULL,'1',NULL,'Both','3313623671',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(171,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Deforest-Patel, Alida','Alida Deforest-Patel',NULL,NULL,NULL,NULL,NULL,'Both','60153766',NULL,'Sample Data','Alida','','Deforest-Patel',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida Deforest-Patel',NULL,NULL,'1983-08-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(172,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wattson, Junko','Junko Wattson',NULL,NULL,NULL,NULL,NULL,'Both','708062411',NULL,'Sample Data','Junko','U','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Junko Wattson',NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(173,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Margaret','Ms. Margaret Cruz',NULL,NULL,NULL,NULL,NULL,'Both','680750633',NULL,'Sample Data','Margaret','','Cruz',2,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Ms. Margaret Cruz',NULL,NULL,'1956-05-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(174,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Allan','Allan Roberts',NULL,NULL,NULL,NULL,NULL,'Both','711502623',NULL,'Sample Data','Allan','P','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Roberts',NULL,NULL,'1950-01-12',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(175,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Bob','Dr. Bob Prentice Sr.',NULL,NULL,NULL,NULL,NULL,'Both','912966256',NULL,'Sample Data','Bob','V','Prentice',4,2,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Dr. Bob Prentice Sr.',NULL,NULL,'1982-02-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(176,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Sanford','Sanford Zope',NULL,NULL,NULL,'5',NULL,'Both','3485406852',NULL,'Sample Data','Sanford','','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Zope',NULL,2,'1999-08-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(177,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Prentice, Kathlyn','Kathlyn Prentice',NULL,NULL,NULL,'2',NULL,'Both','593628883',NULL,'Sample Data','Kathlyn','','Prentice',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Kathlyn Prentice',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(178,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Tanya','Tanya Müller',NULL,NULL,NULL,NULL,NULL,'Both','1478253205',NULL,'Sample Data','Tanya','','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Müller',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(179,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Andrew','Andrew Zope II',NULL,NULL,NULL,'3',NULL,'Both','951103224',NULL,'Sample Data','Andrew','K','Zope',NULL,3,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew Zope II',NULL,2,'1969-11-02',1,'2018-06-02',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(180,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Elbert','Elbert McReynolds',NULL,NULL,NULL,'5',NULL,'Both','1717930832',NULL,'Sample Data','Elbert','','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert McReynolds',NULL,2,'1983-02-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(181,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'United Action Systems','United Action Systems',NULL,NULL,NULL,NULL,NULL,'Both','3442625942',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Action Systems',NULL,NULL,NULL,0,NULL,NULL,42,'United Action Systems',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(182,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Sharyn','Sharyn McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','1394669244',NULL,'Sample Data','Sharyn','H','McReynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn McReynolds',NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(183,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Terry, Teddy','Teddy Terry III',NULL,NULL,NULL,'4',NULL,'Both','1402049800',NULL,'Sample Data','Teddy','M','Terry',NULL,4,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Teddy Terry III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(184,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Wilson, Brittney','Dr. Brittney Wilson',NULL,NULL,NULL,NULL,NULL,'Both','1729401768',NULL,'Sample Data','Brittney','','Wilson',4,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Dr. Brittney Wilson',NULL,1,'1945-04-04',1,'2018-06-07',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(185,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Iris','Iris Roberts',NULL,NULL,NULL,NULL,NULL,'Both','1428740139',NULL,'Sample Data','Iris','','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Roberts',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(186,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'jameson.ashley@mymail.co.in','jameson.ashley@mymail.co.in',NULL,NULL,NULL,'3',NULL,'Both','3423858061',NULL,'Sample Data',NULL,NULL,NULL,NULL,2,NULL,NULL,1,NULL,'Dear jameson.ashley@mymail.co.in',1,NULL,'Dear jameson.ashley@mymail.co.in',1,NULL,'jameson.ashley@mymail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(187,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'González, Sherman','Mr. Sherman González Sr.',NULL,NULL,NULL,NULL,NULL,'Both','33045013',NULL,'Sample Data','Sherman','','González',3,2,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Mr. Sherman González Sr.',NULL,2,'1962-12-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(188,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds, Felisha','Mrs. Felisha McReynolds',NULL,NULL,NULL,NULL,NULL,'Both','2265905114',NULL,'Sample Data','Felisha','H','McReynolds',1,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Mrs. Felisha McReynolds',NULL,1,'1953-01-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(189,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Community Software Academy','Community Software Academy',NULL,NULL,NULL,'5',NULL,'Both','2841912762',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Community Software Academy',NULL,NULL,NULL,0,NULL,NULL,112,'Community Software Academy',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(190,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Deforest, Delana','Ms. Delana Deforest',NULL,NULL,NULL,'4',NULL,'Both','1044596846',NULL,'Sample Data','Delana','','Deforest',2,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Ms. Delana Deforest',NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(191,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Müller, Jacob','Jacob Müller',NULL,NULL,NULL,'4',NULL,'Both','176489544',NULL,'Sample Data','Jacob','','Müller',NULL,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Müller',NULL,2,'1961-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(192,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz family','Cruz family',NULL,NULL,NULL,NULL,NULL,'Both','2326538497',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz family',5,NULL,'Dear Cruz family',2,NULL,'Cruz family',NULL,NULL,NULL,0,NULL,'Cruz family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(193,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Lee, Scarlet','Mrs. Scarlet Lee',NULL,NULL,NULL,'1',NULL,'Both','844397062',NULL,'Sample Data','Scarlet','','Lee',1,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Mrs. Scarlet Lee',NULL,1,'1956-04-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(194,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Grant, Sanford','Sanford Grant',NULL,NULL,NULL,NULL,NULL,'Both','27540077',NULL,'Sample Data','Sanford','','Grant',NULL,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Grant',NULL,NULL,'1964-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(195,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Adams, Erik','Erik Adams Jr.',NULL,NULL,NULL,NULL,NULL,'Both','1567928244',NULL,'Sample Data','Erik','','Adams',NULL,1,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Adams Jr.',NULL,2,NULL,1,NULL,NULL,NULL,'Alabama Advocacy Initiative',NULL,NULL,103,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(196,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Smith family','Smith family',NULL,NULL,NULL,'5',NULL,'Both','4082772645',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Smith family',5,NULL,'Dear Smith family',2,NULL,'Smith family',NULL,NULL,NULL,0,NULL,'Smith family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(197,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'González, Lincoln','Mr. Lincoln González Sr.',NULL,NULL,NULL,'5',NULL,'Both','1919790687',NULL,'Sample Data','Lincoln','','González',3,2,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Mr. Lincoln González Sr.',NULL,NULL,'1984-09-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(198,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'coopere@fishmail.org','coopere@fishmail.org',NULL,NULL,NULL,NULL,NULL,'Both','1153839784',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear coopere@fishmail.org',1,NULL,'Dear coopere@fishmail.org',1,NULL,'coopere@fishmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(199,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Heidi','Dr. Heidi Terry',NULL,NULL,NULL,'3',NULL,'Both','3824053436',NULL,'Sample Data','Heidi','','Terry',4,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Dr. Heidi Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'),(200,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Bay Advocacy Fund','Bay Advocacy Fund',NULL,NULL,NULL,NULL,NULL,'Both','1681589140',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Bay Advocacy Fund',NULL,NULL,NULL,0,NULL,NULL,NULL,'Bay Advocacy Fund',NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:51'),(201,'Individual',NULL,1,1,0,0,1,0,NULL,NULL,'brzczysawjones@fakemail.com','brzczysawjones@fakemail.com',NULL,NULL,NULL,NULL,NULL,'Both','1664594934',NULL,'Sample Data',NULL,NULL,NULL,3,2,NULL,NULL,1,NULL,'Dear brzczysawjones@fakemail.com',1,NULL,'Dear brzczysawjones@fakemail.com',1,NULL,'brzczysawjones@fakemail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-19 20:23:50','2018-09-19 20:23:50'); +INSERT INTO `civicrm_contact` (`id`, `contact_type`, `contact_sub_type`, `do_not_email`, `do_not_phone`, `do_not_mail`, `do_not_sms`, `do_not_trade`, `is_opt_out`, `legal_identifier`, `external_identifier`, `sort_name`, `display_name`, `nick_name`, `legal_name`, `image_URL`, `preferred_communication_method`, `preferred_language`, `preferred_mail_format`, `hash`, `api_key`, `source`, `first_name`, `middle_name`, `last_name`, `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`, `organization_name`, `sic_code`, `user_unique_id`, `employer_id`, `is_deleted`, `created_date`, `modified_date`) VALUES (1,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Default Organization','Default Organization',NULL,'Default Organization',NULL,NULL,NULL,'Both',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,'Default Organization',NULL,NULL,NULL,0,NULL,'2018-09-20 03:19:19'),(2,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Jacobs, Tanya','Tanya Jacobs',NULL,NULL,NULL,NULL,NULL,'Both','1165548309',NULL,'Sample Data','Tanya','','Jacobs',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Jacobs',NULL,1,'1971-02-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(3,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Adams, Maria','Maria Adams',NULL,NULL,NULL,'4',NULL,'Both','1954488538',NULL,'Sample Data','Maria','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria Adams',NULL,2,'2009-09-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(4,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper family','Cooper family',NULL,NULL,NULL,NULL,NULL,'Both','1133003930',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(5,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Samson, Lawerence','Dr. Lawerence Samson III',NULL,NULL,NULL,NULL,NULL,'Both','2952043031',NULL,'Sample Data','Lawerence','L','Samson',4,4,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Dr. Lawerence Samson III',NULL,2,'1981-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(6,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Nielsen, Jackson','Jackson Nielsen Jr.',NULL,NULL,NULL,'1',NULL,'Both','1699263324',NULL,'Sample Data','Jackson','','Nielsen',NULL,1,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Nielsen Jr.',NULL,2,'1980-01-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(7,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Alexia','Alexia Samson',NULL,NULL,NULL,NULL,NULL,'Both','502692476',NULL,'Sample Data','Alexia','','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Samson',NULL,1,'1986-08-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(8,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper family','Cooper family',NULL,NULL,NULL,NULL,NULL,'Both','1133003930',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(9,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Herminia','Dr. Herminia Adams',NULL,NULL,NULL,'1',NULL,'Both','1782178525',NULL,'Sample Data','Herminia','','Adams',4,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Dr. Herminia Adams',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(10,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Yadav, Merrie','Merrie Yadav',NULL,NULL,NULL,NULL,NULL,'Both','4091106765',NULL,'Sample Data','Merrie','T','Yadav',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Yadav',NULL,1,'1946-08-01',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(11,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Santina','Ms. Santina Adams',NULL,NULL,NULL,NULL,NULL,'Both','4265230288',NULL,'Sample Data','Santina','','Adams',2,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Ms. Santina Adams',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(12,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Adams family','Adams family',NULL,NULL,NULL,'1',NULL,'Both','1515323104',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Adams family',5,NULL,'Dear Adams family',2,NULL,'Adams family',NULL,NULL,NULL,0,NULL,'Adams family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(13,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Rosario','Mr. Rosario Adams',NULL,NULL,NULL,'5',NULL,'Both','628774619',NULL,'Sample Data','Rosario','B','Adams',3,NULL,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Mr. Rosario Adams',NULL,NULL,'1985-05-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(14,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov-Samson, Ashlie','Ashlie Ivanov-Samson',NULL,NULL,NULL,'5',NULL,'Both','2334843638',NULL,'Sample Data','Ashlie','X','Ivanov-Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Ivanov-Samson',NULL,NULL,'1971-11-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(15,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Grant-Reynolds, Ivey','Mrs. Ivey Grant-Reynolds',NULL,NULL,NULL,'4',NULL,'Both','3643395600',NULL,'Sample Data','Ivey','','Grant-Reynolds',1,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Mrs. Ivey Grant-Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(16,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant, Bob','Dr. Bob Grant',NULL,NULL,NULL,'2',NULL,'Both','2147877951',NULL,'Sample Data','Bob','','Grant',4,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Dr. Bob Grant',NULL,2,'1962-01-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(17,'Individual',NULL,1,1,0,0,1,0,NULL,NULL,'Prentice-Lee, Teresa','Dr. Teresa Prentice-Lee',NULL,NULL,NULL,NULL,NULL,'Both','1456005988',NULL,'Sample Data','Teresa','','Prentice-Lee',4,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Dr. Teresa Prentice-Lee',NULL,1,'1987-12-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(18,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Jay','Dr. Jay Bachman',NULL,NULL,NULL,'5',NULL,'Both','861687925',NULL,'Sample Data','Jay','V','Bachman',4,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Dr. Jay Bachman',NULL,2,'1990-05-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(19,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Zope, Esta','Esta Zope',NULL,NULL,NULL,'2',NULL,'Both','2173483811',NULL,'Sample Data','Esta','','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Zope',NULL,1,'1940-06-05',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(20,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Lincoln','Lincoln ÅÄ…chowski II',NULL,NULL,NULL,'4',NULL,'Both','4115738277',NULL,'Sample Data','Lincoln','','ÅÄ…chowski',NULL,3,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln ÅÄ…chowski II',NULL,NULL,'2008-02-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(21,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Ivanov, Andrew','Mr. Andrew Ivanov',NULL,NULL,NULL,'2',NULL,'Both','2164085667',NULL,'Sample Data','Andrew','J','Ivanov',3,NULL,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Mr. Andrew Ivanov',NULL,NULL,'1954-05-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(22,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Bay Environmental Solutions','Bay Environmental Solutions',NULL,NULL,NULL,'2',NULL,'Both','1759876833',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Bay Environmental Solutions',NULL,NULL,NULL,0,NULL,NULL,96,'Bay Environmental Solutions',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(23,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds, Lou','Lou Reynolds III',NULL,NULL,NULL,'1',NULL,'Both','1967816777',NULL,'Sample Data','Lou','','Reynolds',NULL,4,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Reynolds III',NULL,2,'1979-10-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(24,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jones, Sherman','Sherman Jones Sr.',NULL,NULL,NULL,'1',NULL,'Both','4211495725',NULL,'Sample Data','Sherman','','Jones',NULL,2,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Jones Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(25,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen, Lawerence','Lawerence Olsen',NULL,NULL,NULL,NULL,NULL,'Both','657766378',NULL,'Sample Data','Lawerence','V','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Olsen',NULL,NULL,'1937-08-26',1,'2017-11-02',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(26,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Global Family Solutions','Global Family Solutions',NULL,NULL,NULL,'1',NULL,'Both','3095418881',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Family Solutions',NULL,NULL,NULL,0,NULL,NULL,NULL,'Global Family Solutions',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(27,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Kandace','Kandace Jensen',NULL,NULL,NULL,NULL,NULL,'Both','2339972314',NULL,'Sample Data','Kandace','D','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Jensen',NULL,NULL,'1999-06-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(28,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Ohio Wellness Partners','Ohio Wellness Partners',NULL,NULL,NULL,'2',NULL,'Both','497142052',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Ohio Wellness Partners',NULL,NULL,NULL,0,NULL,NULL,60,'Ohio Wellness Partners',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(29,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Alida','Alida Wagner',NULL,NULL,NULL,NULL,NULL,'Both','3788165868',NULL,'Sample Data','Alida','Y','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida Wagner',NULL,NULL,'2006-12-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(30,'Household',NULL,1,1,0,0,0,0,NULL,NULL,'Jensen family','Jensen family',NULL,NULL,NULL,'1',NULL,'Both','797435572',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jensen family',5,NULL,'Dear Jensen family',2,NULL,'Jensen family',NULL,NULL,NULL,0,NULL,'Jensen family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(31,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Grant-Reynolds family','Grant-Reynolds family',NULL,NULL,NULL,'2',NULL,'Both','2953983889',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Grant-Reynolds family',5,NULL,'Dear Grant-Reynolds family',2,NULL,'Grant-Reynolds family',NULL,NULL,NULL,0,NULL,'Grant-Reynolds family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(32,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Deforest, Alida','Mrs. Alida Deforest',NULL,NULL,NULL,'4',NULL,'Both','2092838501',NULL,'Sample Data','Alida','','Deforest',1,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Mrs. Alida Deforest',NULL,NULL,'1992-04-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(33,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Cooper, Jay','Mr. Jay Cooper Sr.',NULL,NULL,NULL,NULL,NULL,'Both','941520833',NULL,'Sample Data','Jay','','Cooper',3,2,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Mr. Jay Cooper Sr.',NULL,2,'1972-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(34,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen-Cruz family','Olsen-Cruz family',NULL,NULL,NULL,NULL,NULL,'Both','1085750359',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen-Cruz family',5,NULL,'Dear Olsen-Cruz family',2,NULL,'Olsen-Cruz family',NULL,NULL,NULL,0,NULL,'Olsen-Cruz family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(35,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'prentice.jina@testing.info','prentice.jina@testing.info',NULL,NULL,NULL,'4',NULL,'Both','756023002',NULL,'Sample Data',NULL,NULL,NULL,2,NULL,NULL,NULL,1,NULL,'Dear prentice.jina@testing.info',1,NULL,'Dear prentice.jina@testing.info',1,NULL,'prentice.jina@testing.info',NULL,NULL,NULL,0,NULL,NULL,NULL,'Wrightsville Beach Food Initiative',NULL,NULL,86,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(36,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wattson, Elina','Elina Wattson',NULL,NULL,NULL,'1',NULL,'Both','452291784',NULL,'Sample Data','Elina','','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Wattson',NULL,1,'1991-05-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(37,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Adams, Clint','Clint Adams II',NULL,NULL,NULL,'4',NULL,'Both','197818587',NULL,'Sample Data','Clint','','Adams',NULL,3,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Adams II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(38,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Brittney','Brittney Cooper',NULL,NULL,NULL,'5',NULL,'Both','4169712187',NULL,'Sample Data','Brittney','','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Cooper',NULL,1,'1991-04-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(39,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Smith, Kandace','Ms. Kandace Smith',NULL,NULL,NULL,'5',NULL,'Both','1249006988',NULL,'Sample Data','Kandace','P','Smith',2,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Ms. Kandace Smith',NULL,1,NULL,0,NULL,NULL,NULL,'Main Action Alliance',NULL,NULL,156,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(40,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'louw@notmail.org','louw@notmail.org',NULL,NULL,NULL,'4',NULL,'Both','2867363328',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear louw@notmail.org',1,NULL,'Dear louw@notmail.org',1,NULL,'louw@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(41,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Sierra Action Systems','Sierra Action Systems',NULL,NULL,NULL,'5',NULL,'Both','2036627969',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sierra Action Systems',NULL,NULL,NULL,0,NULL,NULL,NULL,'Sierra Action Systems',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(42,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Adams, Esta','Esta Adams',NULL,NULL,NULL,'4',NULL,'Both','1125073025',NULL,'Sample Data','Esta','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Adams',NULL,1,'2015-03-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(43,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Terry, Santina','Santina Terry',NULL,NULL,NULL,NULL,NULL,'Both','2417437596',NULL,'Sample Data','Santina','M','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Terry',NULL,1,'2012-04-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(44,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'wattsons@example.info','wattsons@example.info',NULL,NULL,NULL,'3',NULL,'Both','1446694891',NULL,'Sample Data',NULL,NULL,NULL,4,4,NULL,NULL,1,NULL,'Dear wattsons@example.info',1,NULL,'Dear wattsons@example.info',1,NULL,'wattsons@example.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(45,'Household',NULL,0,1,0,0,0,0,NULL,NULL,'Samson family','Samson family',NULL,NULL,NULL,'3',NULL,'Both','333421926',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samson family',5,NULL,'Dear Samson family',2,NULL,'Samson family',NULL,NULL,NULL,0,NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(46,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Lou','Dr. Lou Adams',NULL,NULL,NULL,NULL,NULL,'Both','4150447467',NULL,'Sample Data','Lou','','Adams',4,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou Adams',NULL,NULL,'1990-10-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(47,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Beech Peace Systems','Beech Peace Systems',NULL,NULL,NULL,'4',NULL,'Both','4187732805',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Beech Peace Systems',NULL,NULL,NULL,0,NULL,NULL,NULL,'Beech Peace Systems',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(48,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Laree','Laree Jameson',NULL,NULL,NULL,'5',NULL,'Both','1055131510',NULL,'Sample Data','Laree','V','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Laree Jameson',NULL,1,'1997-10-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(49,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Reynolds, Lawerence','Mr. Lawerence Reynolds III',NULL,NULL,NULL,'2',NULL,'Both','3932633730',NULL,'Sample Data','Lawerence','','Reynolds',3,4,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence Reynolds III',NULL,2,'1975-12-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(50,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Grant, Angelika','Mrs. Angelika Grant',NULL,NULL,NULL,'3',NULL,'Both','4136801675',NULL,'Sample Data','Angelika','H','Grant',1,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Mrs. Angelika Grant',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(51,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Terry family','Terry family',NULL,NULL,NULL,NULL,NULL,'Both','558108751',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(52,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Jones-Adams, Iris','Mrs. Iris Jones-Adams',NULL,NULL,NULL,NULL,NULL,'Both','1492446869',NULL,'Sample Data','Iris','I','Jones-Adams',1,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Mrs. Iris Jones-Adams',NULL,1,'1997-02-24',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(53,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jameson, Eleonor','Eleonor Jameson',NULL,NULL,NULL,'5',NULL,'Both','1654133418',NULL,'Sample Data','Eleonor','','Jameson',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Jameson',NULL,1,'1933-12-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(54,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Reynolds, Kiara','Kiara Reynolds',NULL,NULL,NULL,'2',NULL,'Both','637719043',NULL,'Sample Data','Kiara','A','Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Reynolds',NULL,1,'1995-02-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(55,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Zope, Shauna','Shauna Zope',NULL,NULL,NULL,NULL,NULL,'Both','3697242853',NULL,'Sample Data','Shauna','C','Zope',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Zope',NULL,NULL,'1964-10-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(56,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'scottblackwell@sample.co.pl','scottblackwell@sample.co.pl',NULL,NULL,NULL,'1',NULL,'Both','1535622975',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear scottblackwell@sample.co.pl',1,NULL,'Dear scottblackwell@sample.co.pl',1,NULL,'scottblackwell@sample.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(57,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Ashley','Dr. Ashley Adams',NULL,NULL,NULL,NULL,NULL,'Both','2907231858',NULL,'Sample Data','Ashley','C','Adams',4,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Dr. Ashley Adams',NULL,2,'1931-06-23',1,'2018-06-20',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(58,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Parker, BrzÄ™czysÅ‚aw','BrzÄ™czysÅ‚aw Parker III',NULL,NULL,NULL,NULL,NULL,'Both','4128531876',NULL,'Sample Data','BrzÄ™czysÅ‚aw','R','Parker',NULL,4,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'BrzÄ™czysÅ‚aw Parker III',NULL,2,'1986-01-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(59,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Ivey','Dr. Ivey Roberts',NULL,NULL,NULL,NULL,NULL,'Both','507631333',NULL,'Sample Data','Ivey','','Roberts',4,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Dr. Ivey Roberts',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(60,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Betty','Ms. Betty Wagner',NULL,NULL,NULL,'5',NULL,'Both','2519883154',NULL,'Sample Data','Betty','C','Wagner',2,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Ms. Betty Wagner',NULL,1,NULL,0,NULL,NULL,NULL,'Ohio Wellness Partners',NULL,NULL,28,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(61,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Bachman, Landon','Mr. Landon Bachman',NULL,NULL,NULL,NULL,NULL,'Both','1765533665',NULL,'Sample Data','Landon','','Bachman',3,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Mr. Landon Bachman',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(62,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Patel-Samson, Carylon','Ms. Carylon Patel-Samson',NULL,NULL,NULL,'2',NULL,'Both','4047370472',NULL,'Sample Data','Carylon','','Patel-Samson',2,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Ms. Carylon Patel-Samson',NULL,1,'1979-08-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(63,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, Ivey','Ivey Wagner',NULL,NULL,NULL,NULL,NULL,'Both','3499534736',NULL,'Sample Data','Ivey','','Wagner',NULL,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ivey Wagner',NULL,NULL,'1988-06-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(64,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Roberts family','Roberts family',NULL,NULL,NULL,NULL,NULL,'Both','2097305882',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(65,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Josefa','Mrs. Josefa Roberts',NULL,NULL,NULL,'2',NULL,'Both','2404922387',NULL,'Sample Data','Josefa','','Roberts',1,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Mrs. Josefa Roberts',NULL,NULL,'1982-11-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(66,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Bachman, Carlos','Carlos Bachman',NULL,NULL,NULL,NULL,NULL,'Both','4021780594',NULL,'Sample Data','Carlos','Z','Bachman',NULL,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Bachman',NULL,2,'1984-03-09',0,NULL,NULL,NULL,'Martin Luther King Poetry Fund',NULL,NULL,116,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(67,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Terrell, Damaris','Dr. Damaris Terrell',NULL,NULL,NULL,'1',NULL,'Both','1460043864',NULL,'Sample Data','Damaris','','Terrell',4,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Dr. Damaris Terrell',NULL,1,'1980-03-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(68,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Blackwell, Sanford','Sanford Blackwell',NULL,NULL,NULL,'2',NULL,'Both','3211231891',NULL,'Sample Data','Sanford','','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Blackwell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(69,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Creative Culture Academy','Creative Culture Academy',NULL,NULL,NULL,NULL,NULL,'Both','4286307315',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Culture Academy',NULL,NULL,NULL,0,NULL,NULL,139,'Creative Culture Academy',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(70,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Terry, Allen','Dr. Allen Terry Jr.',NULL,NULL,NULL,NULL,NULL,'Both','306325326',NULL,'Sample Data','Allen','','Terry',4,1,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Dr. Allen Terry Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(71,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Adams, Lawerence','Lawerence Adams',NULL,NULL,NULL,NULL,NULL,'Both','2270644856',NULL,'Sample Data','Lawerence','Y','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Adams',NULL,NULL,'1986-10-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(72,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Ohio Sports Alliance','Ohio Sports Alliance',NULL,NULL,NULL,NULL,NULL,'Both','753686111',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Ohio Sports Alliance',NULL,NULL,NULL,0,NULL,NULL,NULL,'Ohio Sports Alliance',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(73,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Cruz, Errol','Mr. Errol Cruz II',NULL,NULL,NULL,'2',NULL,'Both','4273315760',NULL,'Sample Data','Errol','','Cruz',3,3,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Mr. Errol Cruz II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(74,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Junko','Junko Lee',NULL,NULL,NULL,NULL,NULL,'Both','2980940667',NULL,'Sample Data','Junko','','Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Junko Lee',NULL,1,'1997-01-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(75,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terry, Ashley','Ashley Terry',NULL,NULL,NULL,NULL,NULL,'Both','3948576229',NULL,'Sample Data','Ashley','G','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Terry',NULL,NULL,'1970-12-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(76,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Parker, Alida','Alida Parker',NULL,NULL,NULL,'4',NULL,'Both','2771482489',NULL,'Sample Data','Alida','','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida Parker',NULL,NULL,'1978-07-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(77,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Parker, Irvin','Irvin Parker',NULL,NULL,NULL,NULL,NULL,'Both','401382277',NULL,'Sample Data','Irvin','','Parker',NULL,NULL,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Parker',NULL,2,'1991-10-03',0,NULL,NULL,NULL,'New Jersey Agriculture Fellowship',NULL,NULL,136,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(78,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'DÃaz, Esta','Esta DÃaz',NULL,NULL,NULL,'1',NULL,'Both','3843579307',NULL,'Sample Data','Esta','','DÃaz',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta DÃaz',NULL,1,'2000-10-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(79,'Household',NULL,0,1,0,0,1,0,NULL,NULL,'Adams family','Adams family',NULL,NULL,NULL,'5',NULL,'Both','1515323104',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Adams family',5,NULL,'Dear Adams family',2,NULL,'Adams family',NULL,NULL,NULL,0,NULL,'Adams family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(80,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant, Sherman','Dr. Sherman Grant',NULL,NULL,NULL,NULL,NULL,'Both','213837470',NULL,'Sample Data','Sherman','','Grant',4,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Dr. Sherman Grant',NULL,2,'1971-12-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(81,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'oterry@sample.com','oterry@sample.com',NULL,NULL,NULL,NULL,NULL,'Both','3162158053',NULL,'Sample Data',NULL,NULL,NULL,NULL,3,NULL,NULL,1,NULL,'Dear oterry@sample.com',1,NULL,'Dear oterry@sample.com',1,NULL,'oterry@sample.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(82,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'ÅÄ…chowski, Shauna','Ms. Shauna ÅÄ…chowski',NULL,NULL,NULL,NULL,NULL,'Both','3103955337',NULL,'Sample Data','Shauna','T','ÅÄ…chowski',2,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Ms. Shauna ÅÄ…chowski',NULL,1,'1985-02-04',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(83,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Roland','Roland Jensen III',NULL,NULL,NULL,NULL,NULL,'Both','3860934183',NULL,'Sample Data','Roland','F','Jensen',NULL,4,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Jensen III',NULL,2,'1969-08-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(84,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'tzope@lol.org','tzope@lol.org',NULL,NULL,NULL,'4',NULL,'Both','2508677800',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear tzope@lol.org',1,NULL,'Dear tzope@lol.org',1,NULL,'tzope@lol.org',NULL,NULL,NULL,0,NULL,NULL,NULL,'Second Legal Fund',NULL,NULL,188,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(85,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'tn.lee@fakemail.com','tn.lee@fakemail.com',NULL,NULL,NULL,NULL,NULL,'Both','657255078',NULL,'Sample Data',NULL,NULL,NULL,NULL,4,NULL,NULL,1,NULL,'Dear tn.lee@fakemail.com',1,NULL,'Dear tn.lee@fakemail.com',1,NULL,'tn.lee@fakemail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(86,'Organization',NULL,0,1,0,0,0,0,NULL,NULL,'Wrightsville Beach Food Initiative','Wrightsville Beach Food Initiative',NULL,NULL,NULL,NULL,NULL,'Both','4253074618',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Wrightsville Beach Food Initiative',NULL,NULL,NULL,0,NULL,NULL,35,'Wrightsville Beach Food Initiative',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(87,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Terry, Brittney','Brittney Terry',NULL,NULL,NULL,NULL,NULL,'Both','1070539593',NULL,'Sample Data','Brittney','G','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Terry',NULL,1,'2005-08-24',0,NULL,NULL,NULL,'Illinois Food Academy',NULL,NULL,190,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(88,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Ivanov, Roland','Roland Ivanov Jr.',NULL,NULL,NULL,NULL,NULL,'Both','2218895349',NULL,'Sample Data','Roland','U','Ivanov',NULL,1,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Ivanov Jr.',NULL,2,'1960-04-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(89,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Robertson-Cooper, Scarlet','Scarlet Robertson-Cooper',NULL,NULL,NULL,NULL,NULL,'Both','1548711369',NULL,'Sample Data','Scarlet','','Robertson-Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Robertson-Cooper',NULL,1,NULL,0,NULL,NULL,NULL,'Progressive Music Initiative',NULL,NULL,183,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(90,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'West Virginia Sports Network','West Virginia Sports Network',NULL,NULL,NULL,NULL,NULL,'Both','117830829',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'West Virginia Sports Network',NULL,NULL,NULL,0,NULL,NULL,146,'West Virginia Sports Network',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(91,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Wagner, Brittney','Dr. Brittney Wagner',NULL,NULL,NULL,NULL,NULL,'Both','1515527179',NULL,'Sample Data','Brittney','','Wagner',4,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Dr. Brittney Wagner',NULL,1,'1994-02-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(92,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Jones, Kandace','Ms. Kandace Jones',NULL,NULL,NULL,'4',NULL,'Both','644131696',NULL,'Sample Data','Kandace','U','Jones',2,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Ms. Kandace Jones',NULL,1,'1957-10-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(93,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Arlyne','Arlyne Smith',NULL,NULL,NULL,NULL,NULL,'Both','4098699841',NULL,'Sample Data','Arlyne','X','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne Smith',NULL,1,'1987-05-17',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(94,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'reynoldsa@notmail.co.in','reynoldsa@notmail.co.in',NULL,NULL,NULL,NULL,NULL,'Both','188231863',NULL,'Sample Data',NULL,NULL,NULL,4,NULL,NULL,NULL,1,NULL,'Dear reynoldsa@notmail.co.in',1,NULL,'Dear reynoldsa@notmail.co.in',1,NULL,'reynoldsa@notmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(95,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'González, Omar','Omar González',NULL,NULL,NULL,NULL,NULL,'Both','2191997719',NULL,'Sample Data','Omar','J','González',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar González',NULL,NULL,NULL,1,'2018-06-19',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(96,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Olsen, Billy','Mr. Billy Olsen',NULL,NULL,NULL,'4',NULL,'Both','1744279777',NULL,'Sample Data','Billy','C','Olsen',3,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Mr. Billy Olsen',NULL,2,'1950-09-08',1,'2018-01-13',NULL,NULL,'Bay Environmental Solutions',NULL,NULL,22,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(97,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Lee family','Lee family',NULL,NULL,NULL,NULL,NULL,'Both','845831176',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(98,'Household',NULL,0,1,0,0,1,0,NULL,NULL,'Blackwell family','Blackwell family',NULL,NULL,NULL,NULL,NULL,'Both','3218641510',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(99,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jacobs-Wagner, Delana','Ms. Delana Jacobs-Wagner',NULL,NULL,NULL,'4',NULL,'Both','3110324710',NULL,'Sample Data','Delana','','Jacobs-Wagner',2,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Ms. Delana Jacobs-Wagner',NULL,1,'1959-05-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(100,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Roberts, Juliann','Dr. Juliann Roberts',NULL,NULL,NULL,NULL,NULL,'Both','1959079524',NULL,'Sample Data','Juliann','','Roberts',4,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Dr. Juliann Roberts',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(101,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Terry, Junko','Dr. Junko Terry',NULL,NULL,NULL,NULL,NULL,'Both','2726545212',NULL,'Sample Data','Junko','','Terry',4,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Dr. Junko Terry',NULL,1,'1993-07-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(102,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Roberts, Margaret','Margaret Roberts',NULL,NULL,NULL,'4',NULL,'Both','649188694',NULL,'Sample Data','Margaret','','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Roberts',NULL,1,'1961-12-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(103,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Jensen, Billy','Mr. Billy Jensen Sr.',NULL,NULL,NULL,'3',NULL,'Both','1055811033',NULL,'Sample Data','Billy','I','Jensen',3,2,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Mr. Billy Jensen Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(104,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'wilsonm@fishmail.biz','wilsonm@fishmail.biz',NULL,NULL,NULL,NULL,NULL,'Both','3401079168',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear wilsonm@fishmail.biz',1,NULL,'Dear wilsonm@fishmail.biz',1,NULL,'wilsonm@fishmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(105,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Olsen-Cruz, Troy','Troy Olsen-Cruz',NULL,NULL,NULL,NULL,NULL,'Both','740590484',NULL,'Sample Data','Troy','','Olsen-Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Olsen-Cruz',NULL,2,'1987-01-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(106,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Jones-Adams, Errol','Mr. Errol Jones-Adams Jr.',NULL,NULL,NULL,NULL,NULL,'Both','634367254',NULL,'Sample Data','Errol','K','Jones-Adams',3,1,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Mr. Errol Jones-Adams Jr.',NULL,NULL,'1987-10-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(107,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Billy','Billy Adams',NULL,NULL,NULL,NULL,NULL,'Both','1261993357',NULL,'Sample Data','Billy','T','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Billy Adams',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(108,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz-Prentice, Betty','Dr. Betty Cruz-Prentice',NULL,NULL,NULL,NULL,NULL,'Both','625130467',NULL,'Sample Data','Betty','','Cruz-Prentice',4,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Dr. Betty Cruz-Prentice',NULL,1,'1986-05-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(109,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Adams, Alexia','Alexia Adams',NULL,NULL,NULL,NULL,NULL,'Both','426037770',NULL,'Sample Data','Alexia','','Adams',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Adams',NULL,1,'1972-05-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(110,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Prentice, Sharyn','Mrs. Sharyn Prentice',NULL,NULL,NULL,'3',NULL,'Both','2491817184',NULL,'Sample Data','Sharyn','P','Prentice',1,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Mrs. Sharyn Prentice',NULL,NULL,'1954-11-22',1,'2018-04-13',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(111,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Lawerence','Lawerence Blackwell',NULL,NULL,NULL,'4',NULL,'Both','881435694',NULL,'Sample Data','Lawerence','','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Blackwell',NULL,NULL,'1990-05-06',0,NULL,NULL,NULL,'Santa Cruz Agriculture Services',NULL,NULL,114,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(112,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Cooper, Carylon','Mrs. Carylon Cooper',NULL,NULL,NULL,'1',NULL,'Both','3214228812',NULL,'Sample Data','Carylon','','Cooper',1,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Mrs. Carylon Cooper',NULL,1,'1934-11-19',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(113,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Lashawnda','Mrs. Lashawnda Lee',NULL,NULL,NULL,NULL,NULL,'Both','3960912806',NULL,'Sample Data','Lashawnda','','Lee',1,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Mrs. Lashawnda Lee',NULL,1,'1947-09-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(114,'Organization',NULL,1,0,0,0,1,0,NULL,NULL,'Santa Cruz Agriculture Services','Santa Cruz Agriculture Services',NULL,NULL,NULL,'4',NULL,'Both','3902235005',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Santa Cruz Agriculture Services',NULL,NULL,NULL,0,NULL,NULL,111,'Santa Cruz Agriculture Services',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(115,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Esta','Esta Smith',NULL,NULL,NULL,NULL,NULL,'Both','4101330541',NULL,'Sample Data','Esta','','Smith',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(116,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Martin Luther King Poetry Fund','Martin Luther King Poetry Fund',NULL,NULL,NULL,NULL,NULL,'Both','1553742496',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Martin Luther King Poetry Fund',NULL,NULL,NULL,0,NULL,NULL,66,'Martin Luther King Poetry Fund',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(117,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'bettym@lol.net','bettym@lol.net',NULL,NULL,NULL,'4',NULL,'Both','3971931914',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear bettym@lol.net',1,NULL,'Dear bettym@lol.net',1,NULL,'bettym@lol.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(118,'Individual',NULL,0,1,0,0,1,0,NULL,NULL,'Adams, Kenny','Mr. Kenny Adams Sr.',NULL,NULL,NULL,'2',NULL,'Both','1028396712',NULL,'Sample Data','Kenny','','Adams',3,2,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Mr. Kenny Adams Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(119,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Smith, Truman','Mr. Truman Smith',NULL,NULL,NULL,'2',NULL,'Both','2166519703',NULL,'Sample Data','Truman','P','Smith',3,NULL,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Mr. Truman Smith',NULL,2,'1983-08-26',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(120,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'cooper.lincoln32@spamalot.co.uk','cooper.lincoln32@spamalot.co.uk',NULL,NULL,NULL,'2',NULL,'Both','2635609274',NULL,'Sample Data',NULL,NULL,NULL,NULL,2,NULL,NULL,1,NULL,'Dear cooper.lincoln32@spamalot.co.uk',1,NULL,'Dear cooper.lincoln32@spamalot.co.uk',1,NULL,'cooper.lincoln32@spamalot.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(121,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Reynolds-Terry, Mei','Ms. Mei Reynolds-Terry',NULL,NULL,NULL,'5',NULL,'Both','1611654502',NULL,'Sample Data','Mei','P','Reynolds-Terry',2,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Ms. Mei Reynolds-Terry',NULL,1,'1991-03-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(122,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Robertson, Magan','Dr. Magan Robertson',NULL,NULL,NULL,NULL,NULL,'Both','2716364740',NULL,'Sample Data','Magan','N','Robertson',4,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Dr. Magan Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(123,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Kenny','Kenny Cruz',NULL,NULL,NULL,NULL,NULL,'Both','3987849545',NULL,'Sample Data','Kenny','F','Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Cruz',NULL,2,'1966-12-24',1,'2017-12-10',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(124,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Müller, Lawerence','Dr. Lawerence Müller',NULL,NULL,NULL,'5',NULL,'Both','3263544089',NULL,'Sample Data','Lawerence','L','Müller',4,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Dr. Lawerence Müller',NULL,2,'1990-11-21',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(125,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Deforest, Bernadette','Mrs. Bernadette Deforest',NULL,NULL,NULL,NULL,NULL,'Both','475755187',NULL,'Sample Data','Bernadette','','Deforest',1,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Mrs. Bernadette Deforest',NULL,NULL,'1934-10-07',1,'2018-03-28',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(126,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Olsen, Teddy','Teddy Olsen',NULL,NULL,NULL,'1',NULL,'Both','72064715',NULL,'Sample Data','Teddy','','Olsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Teddy Olsen',NULL,NULL,'1949-07-12',0,NULL,NULL,NULL,'Local Literacy Solutions',NULL,NULL,176,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(127,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Magan','Magan Blackwell',NULL,NULL,NULL,NULL,NULL,'Both','3548232286',NULL,'Sample Data','Magan','','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Blackwell',NULL,1,'1973-12-12',1,NULL,NULL,NULL,'Creative Education Center',NULL,NULL,168,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(128,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'wattson.josefa54@sample.co.in','wattson.josefa54@sample.co.in',NULL,NULL,NULL,NULL,NULL,'Both','3851743807',NULL,'Sample Data',NULL,NULL,NULL,1,NULL,NULL,NULL,1,NULL,'Dear wattson.josefa54@sample.co.in',1,NULL,'Dear wattson.josefa54@sample.co.in',1,NULL,'wattson.josefa54@sample.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(129,'Individual',NULL,1,1,0,0,0,0,NULL,NULL,'Grant, Lou','Dr. Lou Grant',NULL,NULL,NULL,'1',NULL,'Both','155954418',NULL,'Sample Data','Lou','','Grant',4,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou Grant',NULL,NULL,'1976-09-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(130,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Blackwell, Herminia','Herminia Blackwell',NULL,NULL,NULL,'3',NULL,'Both','3534592549',NULL,'Sample Data','Herminia','K','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Blackwell',NULL,1,'1981-09-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(131,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Patel, Norris','Dr. Norris Patel II',NULL,NULL,NULL,'4',NULL,'Both','3528404005',NULL,'Sample Data','Norris','F','Patel',4,3,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Dr. Norris Patel II',NULL,NULL,'1960-11-12',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(132,'Household',NULL,0,0,0,0,1,0,NULL,NULL,'Grant family','Grant family',NULL,NULL,NULL,NULL,NULL,'Both','3228000340',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(133,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Grant, Beula','Beula Grant',NULL,NULL,NULL,'4',NULL,'Both','2604882984',NULL,'Sample Data','Beula','J','Grant',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula Grant',NULL,1,'1980-07-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(134,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'justinarobertson@airmail.co.in','justinarobertson@airmail.co.in',NULL,NULL,NULL,NULL,NULL,'Both','4068455776',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear justinarobertson@airmail.co.in',1,NULL,'Dear justinarobertson@airmail.co.in',1,NULL,'justinarobertson@airmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(135,'Household',NULL,1,1,0,0,0,0,NULL,NULL,'Roberts family','Roberts family',NULL,NULL,NULL,NULL,NULL,'Both','2097305882',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(136,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'New Jersey Agriculture Fellowship','New Jersey Agriculture Fellowship',NULL,NULL,NULL,NULL,NULL,'Both','3009359336',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'New Jersey Agriculture Fellowship',NULL,NULL,NULL,0,NULL,NULL,77,'New Jersey Agriculture Fellowship',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(137,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Roland','Roland Cooper III',NULL,NULL,NULL,NULL,NULL,'Both','983247946',NULL,'Sample Data','Roland','N','Cooper',NULL,4,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Cooper III',NULL,2,'1996-05-11',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(138,'Household',NULL,1,0,0,0,0,0,NULL,NULL,'Wattson family','Wattson family',NULL,NULL,NULL,NULL,NULL,'Both','2851339192',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(139,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels-Jensen, Esta','Esta Samuels-Jensen',NULL,NULL,NULL,'2',NULL,'Both','4021857787',NULL,'Sample Data','Esta','','Samuels-Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Samuels-Jensen',NULL,NULL,'1963-12-18',0,NULL,NULL,NULL,'Creative Culture Academy',NULL,NULL,69,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(140,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Grant, Eleonor','Mrs. Eleonor Grant',NULL,NULL,NULL,'1',NULL,'Both','3113635238',NULL,'Sample Data','Eleonor','I','Grant',1,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Mrs. Eleonor Grant',NULL,NULL,'1967-08-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(141,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Lawerence','Dr. Lawerence Lee Jr.',NULL,NULL,NULL,'4',NULL,'Both','834383091',NULL,'Sample Data','Lawerence','','Lee',4,1,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Dr. Lawerence Lee Jr.',NULL,2,'1975-07-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(142,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'mariasamuels@sample.co.pl','mariasamuels@sample.co.pl',NULL,NULL,NULL,'1',NULL,'Both','2484340913',NULL,'Sample Data',NULL,NULL,NULL,3,NULL,NULL,NULL,1,NULL,'Dear mariasamuels@sample.co.pl',1,NULL,'Dear mariasamuels@sample.co.pl',1,NULL,'mariasamuels@sample.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(143,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Valene','Valene Samuels',NULL,NULL,NULL,'4',NULL,'Both','1762584511',NULL,'Sample Data','Valene','','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Samuels',NULL,1,'1996-02-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(144,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cruz-Prentice, Heidi','Mrs. Heidi Cruz-Prentice',NULL,NULL,NULL,NULL,NULL,'Both','746164564',NULL,'Sample Data','Heidi','','Cruz-Prentice',1,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Mrs. Heidi Cruz-Prentice',NULL,NULL,'1991-11-09',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(145,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'claudiot17@testing.org','claudiot17@testing.org',NULL,NULL,NULL,NULL,NULL,'Both','1626650308',NULL,'Sample Data',NULL,NULL,NULL,NULL,2,NULL,NULL,1,NULL,'Dear claudiot17@testing.org',1,NULL,'Dear claudiot17@testing.org',1,NULL,'claudiot17@testing.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(146,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Grant-Reynolds, Eleonor','Eleonor Grant-Reynolds',NULL,NULL,NULL,'5',NULL,'Both','4195670671',NULL,'Sample Data','Eleonor','C','Grant-Reynolds',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Grant-Reynolds',NULL,NULL,'2009-08-27',0,NULL,NULL,NULL,'West Virginia Sports Network',NULL,NULL,90,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(147,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Lee, Kandace','Kandace Lee',NULL,NULL,NULL,'5',NULL,'Both','3904733713',NULL,'Sample Data','Kandace','X','Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Lee',NULL,1,'2006-08-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(148,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Roberts, Kathleen','Ms. Kathleen Roberts',NULL,NULL,NULL,'5',NULL,'Both','2729851983',NULL,'Sample Data','Kathleen','','Roberts',2,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Ms. Kathleen Roberts',NULL,1,'1982-11-22',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(149,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Olsen-Cruz, Nicole','Ms. Nicole Olsen-Cruz',NULL,NULL,NULL,NULL,NULL,'Both','869659959',NULL,'Sample Data','Nicole','H','Olsen-Cruz',2,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Ms. Nicole Olsen-Cruz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(150,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'McReynolds-Terry, Santina','Santina McReynolds-Terry',NULL,NULL,NULL,'1',NULL,'Both','4104250526',NULL,'Sample Data','Santina','I','McReynolds-Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina McReynolds-Terry',NULL,1,'1984-11-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(151,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Jacob','Dr. Jacob Blackwell III',NULL,NULL,NULL,NULL,NULL,'Both','4049710903',NULL,'Sample Data','Jacob','I','Blackwell',4,4,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Dr. Jacob Blackwell III',NULL,NULL,NULL,1,'2018-09-05',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(152,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Samson, Jacob','Dr. Jacob Samson Sr.',NULL,NULL,NULL,NULL,NULL,'Both','1567006775',NULL,'Sample Data','Jacob','H','Samson',4,2,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Dr. Jacob Samson Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(153,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Roberts, Princess','Princess Roberts',NULL,NULL,NULL,NULL,NULL,'Both','3265575644',NULL,'Sample Data','Princess','N','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Roberts',NULL,1,NULL,1,'2017-10-11',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(154,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'Roberts, Norris','Mr. Norris Roberts Jr.',NULL,NULL,NULL,NULL,NULL,'Both','3242051858',NULL,'Sample Data','Norris','S','Roberts',3,1,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Mr. Norris Roberts Jr.',NULL,NULL,'1933-05-16',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(155,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Terrell, Angelika','Angelika Terrell',NULL,NULL,NULL,'5',NULL,'Both','1430135515',NULL,'Sample Data','Angelika','K','Terrell',NULL,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Angelika Terrell',NULL,NULL,'2000-03-01',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(156,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Main Action Alliance','Main Action Alliance',NULL,NULL,NULL,'1',NULL,'Both','942889080',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Main Action Alliance',NULL,NULL,NULL,0,NULL,NULL,39,'Main Action Alliance',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(157,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Terry, Sharyn','Sharyn Terry',NULL,NULL,NULL,'2',NULL,'Both','3160433036',NULL,'Sample Data','Sharyn','','Terry',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Terry',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(158,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Blackwell, Elizabeth','Mrs. Elizabeth Blackwell',NULL,NULL,NULL,'2',NULL,'Both','197038680',NULL,'Sample Data','Elizabeth','A','Blackwell',1,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Mrs. Elizabeth Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(159,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Dimitrov, Alexia','Alexia Dimitrov',NULL,NULL,NULL,'5',NULL,'Both','2476509826',NULL,'Sample Data','Alexia','','Dimitrov',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Dimitrov',NULL,1,'2007-12-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(160,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cooper, Claudio','Claudio Cooper II',NULL,NULL,NULL,'2',NULL,'Both','1104394960',NULL,'Sample Data','Claudio','A','Cooper',NULL,3,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Cooper II',NULL,NULL,'1979-09-15',0,NULL,NULL,NULL,'Rural Poetry Fund',NULL,NULL,195,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(161,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Valene','Valene Samson',NULL,NULL,NULL,'5',NULL,'Both','3664748953',NULL,'Sample Data','Valene','','Samson',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Samson',NULL,1,'1984-11-29',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(162,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Wattson, Brent','Brent Wattson Jr.',NULL,NULL,NULL,NULL,NULL,'Both','2094304763',NULL,'Sample Data','Brent','M','Wattson',NULL,1,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Wattson Jr.',NULL,2,'2000-12-20',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(163,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'jaywattson@testmail.co.in','jaywattson@testmail.co.in',NULL,NULL,NULL,NULL,NULL,'Both','3797900',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear jaywattson@testmail.co.in',1,NULL,'Dear jaywattson@testmail.co.in',1,NULL,'jaywattson@testmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(164,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Roberts, Ivey','Ivey Roberts',NULL,NULL,NULL,'5',NULL,'Both','507631333',NULL,'Sample Data','Ivey','M','Roberts',NULL,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ivey Roberts',NULL,NULL,'2003-08-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(165,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Blackwell, Carlos','Carlos Blackwell',NULL,NULL,NULL,NULL,NULL,'Both','3674253965',NULL,'Sample Data','Carlos','L','Blackwell',NULL,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Blackwell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(166,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Blackwell, Iris','Dr. Iris Blackwell',NULL,NULL,NULL,'5',NULL,'Both','1478230935',NULL,'Sample Data','Iris','B','Blackwell',4,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Dr. Iris Blackwell',NULL,1,'1986-09-08',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(167,'Individual',NULL,0,0,0,0,1,0,NULL,NULL,'robertsl@sample.info','robertsl@sample.info',NULL,NULL,NULL,'2',NULL,'Both','2044109421',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear robertsl@sample.info',1,NULL,'Dear robertsl@sample.info',1,NULL,'robertsl@sample.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(168,'Organization',NULL,1,0,0,0,1,0,NULL,NULL,'Creative Education Center','Creative Education Center',NULL,NULL,NULL,NULL,NULL,'Both','458656165',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Education Center',NULL,NULL,NULL,0,NULL,NULL,127,'Creative Education Center',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(169,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samson, Errol','Errol Samson II',NULL,NULL,NULL,NULL,NULL,'Both','1741040599',NULL,'Sample Data','Errol','U','Samson',NULL,3,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Samson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(170,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Adams, Megan','Dr. Megan Adams',NULL,NULL,NULL,NULL,NULL,'Both','3113632143',NULL,'Sample Data','Megan','B','Adams',4,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Dr. Megan Adams',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(171,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Samson family','Samson family',NULL,NULL,NULL,NULL,NULL,'Both','333421926',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Samson family',5,NULL,'Dear Samson family',2,NULL,'Samson family',NULL,NULL,NULL,0,NULL,'Samson family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(172,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Alexia','Alexia Cruz',NULL,NULL,NULL,NULL,NULL,'Both','3468295475',NULL,'Sample Data','Alexia','O','Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Cruz',NULL,1,NULL,1,'2018-03-08',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(173,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Deforest, Jina','Ms. Jina Deforest',NULL,NULL,NULL,'4',NULL,'Both','2202699051',NULL,'Sample Data','Jina','','Deforest',2,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Ms. Jina Deforest',NULL,NULL,'1970-05-18',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(174,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Eleonor','Dr. Eleonor Adams',NULL,NULL,NULL,'5',NULL,'Both','780665455',NULL,'Sample Data','Eleonor','','Adams',4,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Dr. Eleonor Adams',NULL,NULL,'1960-01-01',1,'2018-06-03',NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(175,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Adams, Princess','Ms. Princess Adams',NULL,NULL,NULL,NULL,NULL,'Both','1775462045',NULL,'Sample Data','Princess','','Adams',2,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Ms. Princess Adams',NULL,1,'1934-11-30',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(176,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Local Literacy Solutions','Local Literacy Solutions',NULL,NULL,NULL,'3',NULL,'Both','4293790228',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Literacy Solutions',NULL,NULL,NULL,0,NULL,NULL,126,'Local Literacy Solutions',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(177,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'sonnys@lol.co.pl','sonnys@lol.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','3648657767',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear sonnys@lol.co.pl',1,NULL,'Dear sonnys@lol.co.pl',1,NULL,'sonnys@lol.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(178,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Jensen, Lincoln','Lincoln Jensen',NULL,NULL,NULL,NULL,NULL,'Both','630081741',NULL,'Sample Data','Lincoln','','Jensen',NULL,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Jensen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(179,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Cooper, Omar','Mr. Omar Cooper III',NULL,NULL,NULL,NULL,NULL,'Both','1015907011',NULL,'Sample Data','Omar','J','Cooper',3,4,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Mr. Omar Cooper III',NULL,2,'1977-05-02',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(180,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Samuels, Junko','Junko Samuels',NULL,NULL,NULL,'1',NULL,'Both','2535736045',NULL,'Sample Data','Junko','W','Samuels',NULL,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Junko Samuels',NULL,1,'1983-07-06',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(181,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Jones-Adams family','Jones-Adams family',NULL,NULL,NULL,'2',NULL,'Both','1372986279',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Jones-Adams family',5,NULL,'Dear Jones-Adams family',2,NULL,'Jones-Adams family',NULL,NULL,NULL,0,NULL,'Jones-Adams family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(182,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Reynolds, Carylon','Dr. Carylon Reynolds',NULL,NULL,NULL,NULL,NULL,'Both','1835260667',NULL,'Sample Data','Carylon','A','Reynolds',4,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Dr. Carylon Reynolds',NULL,1,'1942-05-14',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(183,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Progressive Music Initiative','Progressive Music Initiative',NULL,NULL,NULL,NULL,NULL,'Both','2369409279',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Music Initiative',NULL,NULL,NULL,0,NULL,NULL,89,'Progressive Music Initiative',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(184,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wattson, Shauna','Shauna Wattson',NULL,NULL,NULL,'1',NULL,'Both','255999578',NULL,'Sample Data','Shauna','U','Wattson',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Wattson',NULL,NULL,'2012-08-31',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(185,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Nielsen, Clint','Clint Nielsen',NULL,NULL,NULL,NULL,NULL,'Both','2083087169',NULL,'Sample Data','Clint','D','Nielsen',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Nielsen',NULL,2,'1999-12-28',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(186,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Smith, Rebekah','Dr. Rebekah Smith',NULL,NULL,NULL,NULL,NULL,'Both','536469258',NULL,'Sample Data','Rebekah','I','Smith',4,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Dr. Rebekah Smith',NULL,1,'1969-07-24',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(187,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner, BrzÄ™czysÅ‚aw','Mr. BrzÄ™czysÅ‚aw Wagner II',NULL,NULL,NULL,NULL,NULL,'Both','1455502507',NULL,'Sample Data','BrzÄ™czysÅ‚aw','G','Wagner',3,3,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Mr. BrzÄ™czysÅ‚aw Wagner II',NULL,2,'1991-07-27',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(188,'Organization',NULL,1,0,0,0,0,0,NULL,NULL,'Second Legal Fund','Second Legal Fund',NULL,NULL,NULL,'1',NULL,'Both','3307437835',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Second Legal Fund',NULL,NULL,NULL,0,NULL,NULL,84,'Second Legal Fund',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(189,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Rural Arts Partnership','Rural Arts Partnership',NULL,NULL,NULL,NULL,NULL,'Both','2246003545',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Arts Partnership',NULL,NULL,NULL,0,NULL,NULL,NULL,'Rural Arts Partnership',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(190,'Organization',NULL,0,0,0,0,0,0,NULL,NULL,'Illinois Food Academy','Illinois Food Academy',NULL,NULL,NULL,NULL,NULL,'Both','4242483844',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Illinois Food Academy',NULL,NULL,NULL,0,NULL,NULL,87,'Illinois Food Academy',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(191,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz-Prentice family','Cruz-Prentice family',NULL,NULL,NULL,'3',NULL,'Both','4006866343',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz-Prentice family',5,NULL,'Dear Cruz-Prentice family',2,NULL,'Cruz-Prentice family',NULL,NULL,NULL,0,NULL,'Cruz-Prentice family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(192,'Household',NULL,1,0,0,0,1,0,NULL,NULL,'Terry family','Terry family',NULL,NULL,NULL,NULL,NULL,'Both','558108751',NULL,'Sample Data',NULL,NULL,NULL,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,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(193,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Cooper, Winford','Dr. Winford Cooper III',NULL,NULL,NULL,'1',NULL,'Both','1891762669',NULL,'Sample Data','Winford','O','Cooper',4,4,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Dr. Winford Cooper III',NULL,2,'1985-08-03',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(194,'Household',NULL,0,0,0,0,0,0,NULL,NULL,'Wagner family','Wagner family',NULL,NULL,NULL,NULL,NULL,'Both','1570966486',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,5,NULL,'Dear Wagner family',5,NULL,'Dear Wagner family',2,NULL,'Wagner family',NULL,NULL,NULL,0,NULL,'Wagner family',NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(195,'Organization',NULL,0,0,0,0,1,0,NULL,NULL,'Rural Poetry Fund','Rural Poetry Fund',NULL,NULL,NULL,NULL,NULL,'Both','1825074086',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Poetry Fund',NULL,NULL,NULL,0,NULL,NULL,160,'Rural Poetry Fund',NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(196,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Beula','Ms. Beula Cruz',NULL,NULL,NULL,NULL,NULL,'Both','3515356541',NULL,'Sample Data','Beula','D','Cruz',2,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Ms. Beula Cruz',NULL,NULL,'1993-08-13',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(197,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'Cooper, Clint','Clint Cooper Jr.',NULL,NULL,NULL,'1',NULL,'Both','303284897',NULL,'Sample Data','Clint','','Cooper',NULL,1,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Cooper Jr.',NULL,2,'1990-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(198,'Individual',NULL,0,0,0,0,0,0,NULL,NULL,'Cruz, Mei','Mei Cruz',NULL,NULL,NULL,NULL,NULL,'Both','187652380',NULL,'Sample Data','Mei','','Cruz',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Cruz',NULL,1,'1982-11-10',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(199,'Individual',NULL,1,0,0,0,0,0,NULL,NULL,'daz.allen@airmail.co.pl','daz.allen@airmail.co.pl',NULL,NULL,NULL,NULL,NULL,'Both','862112313',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'Dear daz.allen@airmail.co.pl',1,NULL,'Dear daz.allen@airmail.co.pl',1,NULL,'daz.allen@airmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:28'),(200,'Individual',NULL,1,0,0,0,1,0,NULL,NULL,'Cooper, Errol','Errol Cooper',NULL,NULL,NULL,'3',NULL,'Both','932311595',NULL,'Sample Data','Errol','F','Cooper',NULL,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Cooper',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'),(201,'Individual',NULL,0,1,0,0,0,0,NULL,NULL,'Lee, Felisha','Felisha Lee',NULL,NULL,NULL,NULL,NULL,'Both','1634353334',NULL,'Sample Data','Felisha','V','Lee',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Lee',NULL,NULL,'1985-03-23',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'2018-09-20 03:19:28','2018-09-20 03:19:29'); /*!40000 ALTER TABLE `civicrm_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -228,7 +228,7 @@ 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`) VALUES (1,2,1,NULL,4,'2010-04-11 00:00:00',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,NULL,NULL),(2,4,1,NULL,1,'2010-03-21 00:00:00',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,NULL,NULL),(3,6,1,NULL,4,'2010-04-29 00:00:00',0.00,25.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,NULL,NULL),(4,8,1,NULL,4,'2010-04-11 00:00:00',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,NULL,NULL),(5,16,1,NULL,4,'2010-04-15 00:00:00',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,NULL,NULL),(6,19,1,NULL,4,'2010-04-11 00:00:00',0.00,175.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,NULL,NULL),(7,82,1,NULL,1,'2010-03-27 00:00:00',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,NULL,NULL),(8,92,1,NULL,1,'2010-03-08 00:00:00',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,NULL,NULL),(9,34,1,NULL,1,'2010-04-22 00:00:00',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,NULL,NULL),(10,71,1,NULL,1,'2009-07-01 11:53:50',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(11,43,1,NULL,1,'2009-07-01 12:55:41',0.00,200.00,NULL,NULL,'PL43II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(12,32,1,NULL,1,'2009-10-01 11:53:50',0.00,200.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(13,32,1,NULL,1,'2009-12-01 12:55:41',0.00,200.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(14,168,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(15,38,2,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(16,188,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(17,45,2,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(18,157,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(19,97,2,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(20,80,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(21,74,2,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(22,150,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(23,68,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(24,179,2,NULL,1,'2018-09-19 13:23:52',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(25,197,2,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(26,175,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(27,49,2,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(28,126,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(29,119,2,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(30,88,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(31,94,2,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(32,56,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(33,86,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(34,109,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(35,138,2,NULL,1,'2018-09-19 13:23:52',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(36,29,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(37,55,2,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(38,28,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(39,59,2,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(40,195,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(41,10,2,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(42,48,2,NULL,1,'2018-09-19 13:23:52',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(43,71,2,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(45,2,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(46,11,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(47,12,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(48,15,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(49,18,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(50,22,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(51,23,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(52,24,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(53,34,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(54,37,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(55,41,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(56,43,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(57,46,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(58,47,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(59,50,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(60,53,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(61,54,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(62,57,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(63,59,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(64,61,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(65,65,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(66,69,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(67,76,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(68,78,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(69,102,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(70,107,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(71,112,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(72,115,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(73,117,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(74,119,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(75,123,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(76,124,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(77,134,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(78,135,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(79,136,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(80,138,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(81,145,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(82,151,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(83,152,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(84,156,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(85,161,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(86,165,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(87,168,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(88,169,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(89,170,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(90,171,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(91,173,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(92,187,4,NULL,1,'2018-09-19 13:23:52',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(93,196,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(94,199,4,NULL,1,'2018-09-19 13:23:52',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 13:23:52',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL); +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`) VALUES (1,2,1,NULL,4,'2010-04-11 00:00:00',0.00,125.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'1041',NULL,NULL,NULL,NULL),(2,4,1,NULL,1,'2010-03-21 00:00:00',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,NULL,NULL),(3,6,1,NULL,4,'2010-04-29 00:00:00',0.00,25.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'2095',NULL,NULL,NULL,NULL),(4,8,1,NULL,4,'2010-04-11 00:00:00',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'10552',NULL,NULL,NULL,NULL),(5,16,1,NULL,4,'2010-04-15 00:00:00',0.00,500.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'509',NULL,NULL,NULL,NULL),(6,19,1,NULL,4,'2010-04-11 00:00:00',0.00,175.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Apr 2007 Mailer 1',NULL,NULL,0,0,1,NULL,'102',NULL,NULL,NULL,NULL),(7,82,1,NULL,1,'2010-03-27 00:00:00',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,NULL,NULL),(8,92,1,NULL,1,'2010-03-08 00:00:00',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,NULL,NULL),(9,34,1,NULL,1,'2010-04-22 00:00:00',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,NULL,NULL),(10,71,1,NULL,1,'2009-07-01 11:53:50',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(11,43,1,NULL,1,'2009-07-01 12:55:41',0.00,200.00,NULL,NULL,'PL43II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(12,32,1,NULL,1,'2009-10-01 11:53:50',0.00,200.00,NULL,NULL,'PL32I',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(13,32,1,NULL,1,'2009-12-01 12:55:41',0.00,200.00,NULL,NULL,'PL32II',NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(14,119,2,NULL,1,'2018-09-19 20:19:30',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(15,14,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(16,146,2,NULL,1,'2018-09-19 20:19:30',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(17,16,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(18,103,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(19,9,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(20,157,2,NULL,1,'2018-09-19 20:19:30',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(21,19,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(22,44,2,NULL,1,'2018-09-19 20:19:30',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(23,115,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(24,124,2,NULL,1,'2018-09-19 20:19:30',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(25,20,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(26,93,2,NULL,1,'2018-09-19 20:19:30',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(27,62,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(28,54,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(29,60,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(30,37,2,NULL,1,'2018-09-19 20:19:30',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(31,170,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(32,10,2,NULL,1,'2018-09-19 20:19:30',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(33,89,2,NULL,1,'2018-09-19 20:19:30',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(34,113,2,NULL,1,'2018-09-19 20:19:30',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(35,105,2,NULL,1,'2018-09-19 20:19:30',0.00,1200.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(36,173,2,NULL,1,'2018-09-19 20:19:30',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(37,77,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(38,6,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(39,184,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(40,65,2,NULL,1,'2018-09-19 20:19:30',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(41,58,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(42,73,2,NULL,1,'2018-09-19 20:19:30',0.00,100.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(43,71,2,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(45,5,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(46,11,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(47,24,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(48,30,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(49,34,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(50,40,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(51,47,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(52,50,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(53,58,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(54,61,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(55,62,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(56,64,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(57,67,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(58,72,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(59,73,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(60,78,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(61,80,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(62,88,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(63,90,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(64,93,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(65,94,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(66,95,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(67,100,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(68,106,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(69,107,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(70,111,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(71,115,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(72,116,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(73,119,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(74,121,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(75,122,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(76,125,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(77,126,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(78,131,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(79,132,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(80,135,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(81,143,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(82,145,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(83,149,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(84,150,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(85,151,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(86,160,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(87,171,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(88,174,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(89,182,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(90,184,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(91,189,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(92,193,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(93,198,4,NULL,1,'2018-09-19 20:19:30',0.00,50.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL),(94,201,4,NULL,1,'2018-09-19 20:19:30',0.00,800.00,NULL,NULL,NULL,NULL,NULL,'USD',NULL,NULL,'2018-09-19 20:19:30',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_contribution` ENABLE KEYS */; UNLOCK TABLES; @@ -266,7 +266,7 @@ 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,8,59,10.00,'USD',1,1,'Jones Family','Helping Hands',10),(2,9,59,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); +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,8,73,10.00,'USD',1,1,'Jones Family','Helping Hands',10),(2,9,73,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); /*!40000 ALTER TABLE `civicrm_contribution_soft` ENABLE KEYS */; UNLOCK TABLES; @@ -399,7 +399,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_domain` WRITE; /*!40000 ALTER TABLE `civicrm_domain` DISABLE KEYS */; -INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `config_backend`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES (1,'Default Domain Name',NULL,NULL,'5.5.3',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); +INSERT INTO `civicrm_domain` (`id`, `name`, `description`, `config_backend`, `version`, `contact_id`, `locales`, `locale_custom_strings`) VALUES (1,'Default Domain Name',NULL,NULL,'5.6.0',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); /*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */; UNLOCK TABLES; @@ -409,7 +409,7 @@ UNLOCK TABLES; 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',0,0,0,0,NULL,NULL,NULL,NULL),(2,23,1,'smith.damaris@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(3,23,1,'damariss@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(4,31,1,'brzczysawd@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),(5,31,1,'dimitrovb@notmail.net',0,0,0,0,NULL,NULL,NULL,NULL),(6,113,1,'rolandsamson82@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(7,113,1,'samsonr31@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(8,164,1,'jonesl51@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(9,164,1,'louj21@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(10,4,1,'bachman.maxwell65@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(11,35,1,'kiarajameson@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(12,110,1,'scottjameson36@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(13,36,1,'jacobs.v.toby31@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL),(14,36,1,'jacobs.toby56@fishmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(15,116,1,'santinat11@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(16,16,1,'tobyr@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(17,16,1,'tobyroberts@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(18,145,1,'mcreynolds.e.arlyne2@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(19,167,1,'merriem14@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(20,185,1,'robertsi@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(21,138,1,'estaparker@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),(22,138,1,'parker.esta24@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL),(23,134,1,'rl.parker@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(24,182,1,'mcreynolds.sharyn@example.org',1,0,0,0,NULL,NULL,NULL,NULL),(25,182,1,'sharynmcreynolds@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(26,7,1,'prentice.z.bernadette@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(27,7,1,'prenticeb@notmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(28,198,1,'cooper.eleonor70@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(29,198,1,'coopere@fishmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(30,17,1,'dimitrovj@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),(31,17,1,'dimitrovj@fishmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(32,50,1,'kiarag87@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),(33,50,1,'kiarag25@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(34,157,1,'chowskib78@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(35,93,1,'smith.elizabeth@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),(36,57,1,'kjensen@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(37,119,1,'jones.carylon90@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL),(38,119,1,'cjones@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(39,40,1,'robertson.errol@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(40,190,1,'ddeforest@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),(41,190,1,'ddeforest76@mymail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(42,201,1,'brzczysawjones@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(43,174,1,'allanroberts42@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),(44,114,1,'kiaral@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(45,114,1,'lee.z.kiara59@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(46,87,1,'clintroberts@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),(47,87,1,'ct.roberts@lol.info',0,0,0,0,NULL,NULL,NULL,NULL),(48,20,1,'jensenj91@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(49,20,1,'jensen.y.justina@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(50,163,1,'tobyj@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),(51,163,1,'tjones15@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(52,124,1,'sjameson2@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(53,19,1,'barkleyr@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(54,109,1,'gonzleza66@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(55,10,1,'alexiap@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),(56,10,1,'patel.alexia84@infomail.com',0,0,0,0,NULL,NULL,NULL,NULL),(57,107,1,'terrell.kenny@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(58,107,1,'kennyterrell@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),(59,12,1,'adaz79@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(60,12,1,'ashleydaz55@example.net',0,0,0,0,NULL,NULL,NULL,NULL),(61,47,1,'mroberts@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),(62,154,1,'jacksonj21@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),(63,54,1,'gonzlez.alexia@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(64,54,1,'gonzlez.alexia@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(65,130,1,'rmcreynolds46@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(66,140,1,'prentice.f.elizabeth@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(67,32,1,'jameson.margaret@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL),(68,148,1,'robertst5@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(69,148,1,'troyr28@fishmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(70,199,1,'hterry85@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL),(71,199,1,'terryh@sample.org',0,0,0,0,NULL,NULL,NULL,NULL),(72,67,1,'maganw@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),(73,67,1,'maganw79@testing.com',0,0,0,0,NULL,NULL,NULL,NULL),(74,60,1,'kathleent@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(75,131,1,'nc.terrell@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL),(76,131,1,'terrell.nicole@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(77,28,1,'terry.jerome24@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(78,28,1,'terry.s.jerome@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(79,147,1,'scarletterry64@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL),(80,147,1,'scarlett@spamalot.net',0,0,0,0,NULL,NULL,NULL,NULL),(81,63,1,'terry.w.heidi@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(82,98,1,'gonzlezr35@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL),(83,98,1,'gonzlez.ray@notmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(84,197,1,'gonzlez.lincoln25@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(85,2,1,'miguelb@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(86,72,1,'bachman.delana@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(87,38,1,'jensenc14@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(88,53,1,'jensen.rosario@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(89,53,1,'rosariojensen21@testing.org',0,0,0,0,NULL,NULL,NULL,NULL),(90,3,1,'yadav.brittney74@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(91,100,1,'mcreynolds.sonny@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(92,100,1,'sonnymcreynolds@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(93,180,1,'mcreynolds.elbert@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(94,180,1,'elbertmcreynolds16@lol.com',0,0,0,0,NULL,NULL,NULL,NULL),(95,64,1,'smith.jed83@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(96,118,1,'aa.smith22@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(97,118,1,'aa.smith@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(98,30,1,'smitht20@sample.com',1,0,0,0,NULL,NULL,NULL,NULL),(99,160,1,'smithj68@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(100,160,1,'smithj30@notmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(101,175,1,'prentice.bob@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),(102,169,1,'nicolep@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(103,169,1,'patel-prentice.p.nicole21@testing.com',0,0,0,0,NULL,NULL,NULL,NULL),(104,68,1,'prentice.ashley@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),(105,95,1,'rprentice@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(106,95,1,'rolandprentice@lol.com',0,0,0,0,NULL,NULL,NULL,NULL),(107,195,1,'erikadams2@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(108,120,1,'ev.grant-adams@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(109,120,1,'grant-adamse@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(110,14,1,'adams.n.ray@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(111,14,1,'rn.adams21@sample.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(112,41,1,'herminiaa39@mymail.info',1,0,0,0,NULL,NULL,NULL,NULL),(113,41,1,'ha.adams@testmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(114,168,1,'brentterry@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(115,81,1,'brittneyterry@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),(116,9,1,'mterry@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),(117,152,1,'terry.bernadette86@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(118,99,1,'wattson-robertson.santina11@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(119,99,1,'wattson-robertson.t.santina@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(120,135,1,'robertsonc62@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(121,112,1,'robertson.sanford53@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(122,112,1,'sanfordrobertson@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(123,126,1,'mariapatel@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),(124,126,1,'mariap@notmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(125,171,1,'alidadeforest-patel78@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(126,186,1,'jameson.ashley@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(127,186,1,'jameson.ashley@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(128,106,1,'ivanov.megan81@testing.net',1,0,0,0,NULL,NULL,NULL,NULL),(129,106,1,'meganivanov95@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(130,5,1,'jameson-ivanov.rosario@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(131,5,1,'rj.jameson-ivanov@notmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(132,96,1,'jameson-ivanov.jerome@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(133,92,1,'dimitrov.z.jacob71@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(134,92,1,'dimitrov.z.jacob82@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(135,133,1,'ii.dimitrov30@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(136,133,1,'dimitrov.i.ivey8@spamalot.org',0,0,0,0,NULL,NULL,NULL,NULL),(137,39,1,'em.dimitrov89@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(138,39,1,'dimitrov.m.errol@testing.org',0,0,0,0,NULL,NULL,NULL,NULL),(139,173,1,'cruzm@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(140,165,1,'estac4@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL),(141,165,1,'estacruz28@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(142,146,1,'brentp@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(143,151,1,'grant-prentice.juliann@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL),(144,151,1,'julianngrant-prentice52@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(145,104,1,'tanyaprentice@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(146,104,1,'tprentice35@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(147,78,1,'nielsenj38@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(148,153,1,'shaunan28@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),(149,42,1,'billynielsen-lee@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),(150,42,1,'billyn@notmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(151,179,1,'zope.andrew@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),(152,179,1,'andrewzope50@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(153,45,1,'zopeh@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),(154,45,1,'herminiaz26@infomail.net',0,0,0,0,NULL,NULL,NULL,NULL),(155,80,1,'zopek57@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(156,80,1,'zopek@fishmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(157,128,1,'santinasmith21@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(158,136,1,'heidichowski@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(159,136,1,'heidi@infomail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(160,27,1,'smith-chowski.sanford@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),(161,27,1,'smith-chowski.l.sanford29@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(162,181,3,'feedback@unitedaction.org',1,0,0,0,NULL,NULL,NULL,NULL),(163,42,2,'nielsen-lee.s.billy@unitedaction.org',0,0,0,0,NULL,NULL,NULL,NULL),(164,142,3,'service@communitydevelopment.org',1,0,0,0,NULL,NULL,NULL,NULL),(165,41,2,'ha.adams81@communitydevelopment.org',0,0,0,0,NULL,NULL,NULL,NULL),(166,144,3,'info@ruralfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),(167,92,2,'dimitrov.z.jacob68@ruralfellowship.org',0,0,0,0,NULL,NULL,NULL,NULL),(168,89,3,'info@hollywoodcollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(169,111,2,'yadav.justina66@hollywoodcollective.org',1,0,0,0,NULL,NULL,NULL,NULL),(170,189,3,'feedback@communitysoftwareacademy.org',1,0,0,0,NULL,NULL,NULL,NULL),(171,112,2,'sanfordr@communitysoftwareacademy.org',0,0,0,0,NULL,NULL,NULL,NULL),(172,26,3,'sales@urbanfamilycenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(173,154,2,'jacksonjensen@urbanfamilycenter.org',0,0,0,0,NULL,NULL,NULL,NULL),(174,123,3,'service@localpartners.org',1,0,0,0,NULL,NULL,NULL,NULL),(175,137,2,'cruzs87@localpartners.org',1,0,0,0,NULL,NULL,NULL,NULL),(176,103,3,'contact@alabamaadvocacyinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),(177,195,2,'adamse64@alabamaadvocacyinitiative.org',0,0,0,0,NULL,NULL,NULL,NULL),(178,75,3,'feedback@friendsagriculture.org',1,0,0,0,NULL,NULL,NULL,NULL),(179,77,2,'deforests@friendsagriculture.org',1,0,0,0,NULL,NULL,NULL,NULL),(180,70,3,'feedback@californiaaction.org',1,0,0,0,NULL,NULL,NULL,NULL),(181,91,2,'yadav.z.scarlet73@californiaaction.org',1,0,0,0,NULL,NULL,NULL,NULL),(182,115,3,'service@statesalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(183,139,3,'sales@kentuckyacademy.org',1,0,0,0,NULL,NULL,NULL,NULL),(184,114,2,'kz.lee24@kentuckyacademy.org',0,0,0,0,NULL,NULL,NULL,NULL),(185,200,3,'contact@bayfund.org',1,0,0,0,NULL,NULL,NULL,NULL),(186,101,3,'info@alabamafamilysystems.org',1,0,0,0,NULL,NULL,NULL,NULL),(187,162,2,'kaceywagner@alabamafamilysystems.org',1,0,0,0,NULL,NULL,NULL,NULL),(188,69,3,'info@friendsfamily.org',1,0,0,0,NULL,NULL,NULL,NULL),(189,161,2,'mller.d.elina@friendsfamily.org',1,0,0,0,NULL,NULL,NULL,NULL),(190,102,3,'service@texasculturetrust.org',1,0,0,0,NULL,NULL,NULL,NULL),(191,9,2,'mterry@texasculturetrust.org',0,0,0,0,NULL,NULL,NULL,NULL),(192,90,3,'contact@slagriculturecenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(193,66,2,'nicolep23@slagriculturecenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(194,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(195,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(196,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); +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',0,0,0,0,NULL,NULL,NULL,NULL),(2,91,1,'wagner.brittney@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(3,91,1,'brittneyw@fakemail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(4,133,1,'beulag65@testing.com',1,0,0,0,NULL,NULL,NULL,NULL),(5,73,1,'ecruz@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(6,73,1,'cruze77@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(7,85,1,'tn.lee@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(8,186,1,'smithr@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(9,186,1,'smith.rebekah@fishmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(10,159,1,'alexiadimitrov@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),(11,23,1,'reynolds.lou@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(12,118,1,'adams.kenny30@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(13,118,1,'kennya49@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(14,173,1,'deforestj9@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(15,173,1,'deforest.jina@example.biz',0,0,0,0,NULL,NULL,NULL,NULL),(16,199,1,'daz.allen@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(17,199,1,'daz.allen@airmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(18,82,1,'chowski.t.shauna@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(19,82,1,'st.chowski@airmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(20,10,1,'yadav.t.merrie@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL),(21,10,1,'merriey@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(22,48,1,'lv.jameson@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(23,48,1,'lareejameson@testing.info',0,0,0,0,NULL,NULL,NULL,NULL),(24,92,1,'kandacejones@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(25,151,1,'jacobblackwell@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(26,151,1,'jacobb25@notmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(27,155,1,'angelikaterrell13@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(28,155,1,'angelikaterrell@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(29,104,1,'mariaw14@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(30,104,1,'wilsonm@fishmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(31,107,1,'billyadams@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(32,107,1,'adamsb@spamalot.info',0,0,0,0,NULL,NULL,NULL,NULL),(33,84,1,'tzope@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),(34,55,1,'shaunazope2@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(35,55,1,'sc.zope@fishmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(36,162,1,'brentw63@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL),(37,162,1,'bm.wattson@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(38,193,1,'winfordc47@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(39,57,1,'adamsa@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(40,57,1,'adamsa@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(41,20,1,'lincoln16@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(42,127,1,'blackwellm@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),(43,127,1,'maganb@mymail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(44,182,1,'carylonreynolds67@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL),(45,19,1,'zope.esta@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(46,19,1,'estazope94@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(47,75,1,'terry.ashley19@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(48,88,1,'rolandivanov@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(49,60,1,'bettyw@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(50,32,1,'alidad79@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(51,32,1,'adeforest31@spamalot.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(52,53,1,'jameson.eleonor@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(53,53,1,'jameson.eleonor5@infomail.info',0,0,0,0,NULL,NULL,NULL,NULL),(54,40,1,'lwattson49@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(55,40,1,'louw@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL),(56,145,1,'claudiot17@testing.org',1,0,0,0,NULL,NULL,NULL,NULL),(57,61,1,'bachman.landon@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(58,164,1,'robertsi@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL),(59,164,1,'iveyr@fishmail.net',0,0,0,0,NULL,NULL,NULL,NULL),(60,6,1,'nielsen.jackson51@example.org',1,0,0,0,NULL,NULL,NULL,NULL),(61,6,1,'nielsenj69@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(62,35,1,'prentice.jina@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(63,35,1,'prentice.jina@testing.info',0,0,0,0,NULL,NULL,NULL,NULL),(64,49,1,'lreynolds75@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL),(65,49,1,'reynolds.lawerence@lol.info',0,0,0,0,NULL,NULL,NULL,NULL),(66,158,1,'blackwell.elizabeth@lol.info',1,0,0,0,NULL,NULL,NULL,NULL),(67,158,1,'blackwell.a.elizabeth@sample.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(68,95,1,'gonzlez.omar@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL),(69,95,1,'oj.gonzlez@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(70,71,1,'adams.lawerence10@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(71,185,1,'nielsen.d.clint49@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(72,185,1,'cd.nielsen@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL),(73,163,1,'jaywattson@testing.info',1,0,0,0,NULL,NULL,NULL,NULL),(74,163,1,'jaywattson@testmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(75,2,1,'jacobs.tanya@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(76,2,1,'jacobs.tanya@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(77,18,1,'jv.bachman@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),(78,18,1,'jaybachman25@testmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(79,124,1,'mller.l.lawerence@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(80,142,1,'mariasamuels@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL),(81,142,1,'mariasamuels@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(82,126,1,'olsen.teddy26@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(83,126,1,'olsen.teddy@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(84,76,1,'parker.alida@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(85,117,1,'bettym@lol.net',1,0,0,0,NULL,NULL,NULL,NULL),(86,67,1,'terrelld66@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(87,67,1,'terrell.damaris@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL),(88,143,1,'valenesamuels56@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(89,74,1,'lee.junko@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(90,134,1,'justinarobertson@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(91,115,1,'smithe@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL),(92,25,1,'lawerenceo@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(93,25,1,'lv.olsen@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(94,153,1,'robertsp24@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(95,100,1,'juliannr18@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(96,167,1,'roberts.laree14@sample.com',1,0,0,0,NULL,NULL,NULL,NULL),(97,167,1,'robertsl@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),(98,83,1,'rolandj@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(99,83,1,'jensenr71@spamalot.net',0,0,0,0,NULL,NULL,NULL,NULL),(100,139,1,'samuels-jensen.esta@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(101,27,1,'jensen.d.kandace@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL),(102,27,1,'kandacejensen58@example.net',0,0,0,0,NULL,NULL,NULL,NULL),(103,178,1,'jensen.lincoln31@sample.net',1,0,0,0,NULL,NULL,NULL,NULL),(104,152,1,'samson.h.jacob@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL),(105,200,1,'cooper.errol@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(106,200,1,'errolc@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL),(107,137,1,'cooper.n.roland22@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),(108,137,1,'cooperr91@lol.com',0,0,0,0,NULL,NULL,NULL,NULL),(109,123,1,'kennycruz37@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(110,123,1,'cruz.kenny@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(111,110,1,'sharynp98@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(112,144,1,'heidic@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(113,130,1,'blackwell.k.herminia@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(114,68,1,'sanfordb9@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL),(115,68,1,'blackwells@lol.biz',0,0,0,0,NULL,NULL,NULL,NULL),(116,56,1,'scottblackwell@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(117,111,1,'lblackwell@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(118,111,1,'lawerenceb@infomail.net',0,0,0,0,NULL,NULL,NULL,NULL),(119,96,1,'billyo@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(120,198,1,'cruzm@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(121,105,1,'troyolsen-cruz@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),(122,105,1,'tolsen-cruz@fakemail.net',0,0,0,0,NULL,NULL,NULL,NULL),(123,149,1,'olsen-cruzn@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),(124,149,1,'nicoleolsen-cruz@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL),(125,102,1,'mroberts54@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(126,102,1,'mroberts@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(127,59,1,'robertsi69@sample.info',1,0,0,0,NULL,NULL,NULL,NULL),(128,150,1,'mcreynolds-terrys@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(129,150,1,'mcreynolds-terry.santina@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(130,14,1,'ivanov-samsona87@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(131,169,1,'samsone@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(132,177,1,'sonnys@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(133,120,1,'cooper.lincoln32@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(134,160,1,'ca.cooper56@lol.org',1,0,0,0,NULL,NULL,NULL,NULL),(135,197,1,'ccooper63@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL),(136,197,1,'cooper.clint@testmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(137,140,1,'grante@sample.org',1,0,0,0,NULL,NULL,NULL,NULL),(138,140,1,'grant.eleonor@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL),(139,50,1,'angelikag@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(140,129,1,'grantl@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL),(141,129,1,'grant.lou@fishmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL),(142,80,1,'grant.sherman@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(143,80,1,'grant.sherman@sample.net',0,0,0,0,NULL,NULL,NULL,NULL),(144,109,1,'alexiaa@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(145,3,1,'adamsm32@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(146,42,1,'adamse@spamalot.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(147,157,1,'sterry78@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(148,157,1,'sterry@example.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(149,121,1,'reynolds-terry.p.mei@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(150,121,1,'reynolds-terry.p.mei@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(151,101,1,'jterry22@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(152,101,1,'jterry39@sample.org',0,0,0,0,NULL,NULL,NULL,NULL),(153,81,1,'omarterry9@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL),(154,81,1,'oterry@sample.com',0,0,0,0,NULL,NULL,NULL,NULL),(155,13,1,'rosarioadams33@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(156,13,1,'adams.b.rosario@example.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(157,46,1,'ladams93@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL),(158,46,1,'adams.lou@spamalot.info',0,0,0,0,NULL,NULL,NULL,NULL),(159,11,1,'santinaa@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(160,11,1,'adams.santina@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(161,44,1,'wattson.shad@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL),(162,44,1,'wattsons@example.info',0,0,0,0,NULL,NULL,NULL,NULL),(163,128,1,'josefawattson53@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(164,128,1,'wattson.josefa54@sample.co.in',0,0,0,0,NULL,NULL,NULL,NULL),(165,184,1,'shaunawattson82@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL),(166,16,1,'bobgrant@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(167,16,1,'bgrant@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL),(168,94,1,'reynoldsa@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(169,15,1,'igrant-reynolds@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL),(170,15,1,'igrant-reynolds@infomail.org',0,0,0,0,NULL,NULL,NULL,NULL),(171,52,1,'jones-adams.i.iris5@example.net',1,0,0,0,NULL,NULL,NULL,NULL),(172,52,1,'jones-adams.iris92@sample.org',0,0,0,0,NULL,NULL,NULL,NULL),(173,106,1,'jones-adams.k.errol61@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL),(174,63,1,'wagneri72@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL),(175,187,1,'bg.wagner@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL),(176,187,1,'wagner.brzczysaw@sample.info',0,0,0,0,NULL,NULL,NULL,NULL),(177,29,1,'wagnera@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL),(178,29,1,'wagner.y.alida38@testing.info',0,0,0,0,NULL,NULL,NULL,NULL),(179,189,3,'contact@ruralarts.org',1,0,0,0,NULL,NULL,NULL,NULL),(180,41,3,'contact@sierraactionsystems.org',1,0,0,0,NULL,NULL,NULL,NULL),(181,116,3,'feedback@mlkingpoetry.org',1,0,0,0,NULL,NULL,NULL,NULL),(182,66,2,'carlosbachman@mlkingpoetry.org',1,0,0,0,NULL,NULL,NULL,NULL),(183,90,3,'info@wvsportsnetwork.org',1,0,0,0,NULL,NULL,NULL,NULL),(184,146,2,'eleonorg63@wvsportsnetwork.org',1,0,0,0,NULL,NULL,NULL,NULL),(185,47,3,'service@beechsystems.org',1,0,0,0,NULL,NULL,NULL,NULL),(186,176,3,'sales@localliteracysolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(187,126,2,'olsent@localliteracysolutions.org',0,0,0,0,NULL,NULL,NULL,NULL),(188,26,3,'sales@globalsolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(189,114,3,'info@scagricultureservices.org',1,0,0,0,NULL,NULL,NULL,NULL),(190,111,2,'blackwelll36@scagricultureservices.org',0,0,0,0,NULL,NULL,NULL,NULL),(191,136,3,'contact@njagriculturefellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),(192,77,2,'iparker@njagriculturefellowship.org',1,0,0,0,NULL,NULL,NULL,NULL),(193,28,3,'sales@ohiopartners.org',1,0,0,0,NULL,NULL,NULL,NULL),(194,60,2,'wagnerb@ohiopartners.org',0,0,0,0,NULL,NULL,NULL,NULL),(195,86,3,'sales@wbfoodinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL),(196,35,2,'56@wbfoodinitiative.org',0,0,0,0,NULL,NULL,NULL,NULL),(197,22,3,'feedback@bayenvironmentalsolutions.org',1,0,0,0,NULL,NULL,NULL,NULL),(198,96,2,'olsenb50@bayenvironmentalsolutions.org',0,0,0,0,NULL,NULL,NULL,NULL),(199,168,3,'sales@creativecenter.org',1,0,0,0,NULL,NULL,NULL,NULL),(200,127,2,'blackwell.magan29@creativecenter.org',0,0,0,0,NULL,NULL,NULL,NULL),(201,72,3,'feedback@ohiosports.org',1,0,0,0,NULL,NULL,NULL,NULL),(202,188,3,'info@secondlegal.org',1,0,0,0,NULL,NULL,NULL,NULL),(203,84,2,'.@secondlegal.org',0,0,0,0,NULL,NULL,NULL,NULL),(204,156,3,'feedback@mainalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(205,39,2,'smithk@mainalliance.org',1,0,0,0,NULL,NULL,NULL,NULL),(206,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(207,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL),(208,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_email` ENABLE KEYS */; UNLOCK TABLES; @@ -447,7 +447,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_entity_financial_trxn` WRITE; /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` DISABLE KEYS */; -INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, `financial_trxn_id`, `amount`) VALUES (1,'civicrm_contribution',1,1,125.00),(2,'civicrm_financial_item',1,1,125.00),(3,'civicrm_contribution',2,2,50.00),(4,'civicrm_financial_item',2,2,50.00),(5,'civicrm_contribution',3,3,25.00),(6,'civicrm_financial_item',3,3,25.00),(7,'civicrm_contribution',4,4,50.00),(8,'civicrm_financial_item',4,4,50.00),(9,'civicrm_contribution',5,5,500.00),(10,'civicrm_financial_item',5,5,500.00),(11,'civicrm_contribution',6,6,175.00),(12,'civicrm_financial_item',6,6,175.00),(13,'civicrm_contribution',7,7,50.00),(14,'civicrm_financial_item',7,7,50.00),(15,'civicrm_contribution',8,8,10.00),(16,'civicrm_financial_item',8,8,10.00),(17,'civicrm_contribution',9,9,250.00),(18,'civicrm_financial_item',9,9,250.00),(19,'civicrm_contribution',10,10,500.00),(20,'civicrm_financial_item',10,10,500.00),(21,'civicrm_contribution',11,11,200.00),(22,'civicrm_financial_item',11,11,200.00),(23,'civicrm_contribution',12,12,200.00),(24,'civicrm_financial_item',12,12,200.00),(25,'civicrm_contribution',13,13,200.00),(26,'civicrm_financial_item',13,13,200.00),(27,'civicrm_contribution',14,14,100.00),(28,'civicrm_financial_item',14,14,100.00),(29,'civicrm_contribution',16,15,100.00),(30,'civicrm_financial_item',15,15,100.00),(31,'civicrm_contribution',18,16,100.00),(32,'civicrm_financial_item',16,16,100.00),(33,'civicrm_contribution',20,17,100.00),(34,'civicrm_financial_item',17,17,100.00),(35,'civicrm_contribution',22,18,100.00),(36,'civicrm_financial_item',18,18,100.00),(37,'civicrm_contribution',23,19,100.00),(38,'civicrm_financial_item',19,19,100.00),(39,'civicrm_contribution',26,20,100.00),(40,'civicrm_financial_item',20,20,100.00),(41,'civicrm_contribution',28,21,100.00),(42,'civicrm_financial_item',21,21,100.00),(43,'civicrm_contribution',30,22,100.00),(44,'civicrm_financial_item',22,22,100.00),(45,'civicrm_contribution',32,23,100.00),(46,'civicrm_financial_item',23,23,100.00),(47,'civicrm_contribution',33,24,100.00),(48,'civicrm_financial_item',24,24,100.00),(49,'civicrm_contribution',34,25,100.00),(50,'civicrm_financial_item',25,25,100.00),(51,'civicrm_contribution',36,26,100.00),(52,'civicrm_financial_item',26,26,100.00),(53,'civicrm_contribution',38,27,100.00),(54,'civicrm_financial_item',27,27,100.00),(55,'civicrm_contribution',40,28,100.00),(56,'civicrm_financial_item',28,28,100.00),(57,'civicrm_contribution',42,29,100.00),(58,'civicrm_financial_item',29,29,100.00),(59,'civicrm_contribution',15,30,50.00),(60,'civicrm_financial_item',30,30,50.00),(61,'civicrm_contribution',17,31,50.00),(62,'civicrm_financial_item',31,31,50.00),(63,'civicrm_contribution',19,32,50.00),(64,'civicrm_financial_item',32,32,50.00),(65,'civicrm_contribution',21,33,50.00),(66,'civicrm_financial_item',33,33,50.00),(67,'civicrm_contribution',25,34,50.00),(68,'civicrm_financial_item',34,34,50.00),(69,'civicrm_contribution',27,35,50.00),(70,'civicrm_financial_item',35,35,50.00),(71,'civicrm_contribution',29,36,50.00),(72,'civicrm_financial_item',36,36,50.00),(73,'civicrm_contribution',31,37,50.00),(74,'civicrm_financial_item',37,37,50.00),(75,'civicrm_contribution',37,38,50.00),(76,'civicrm_financial_item',38,38,50.00),(77,'civicrm_contribution',39,39,50.00),(78,'civicrm_financial_item',39,39,50.00),(79,'civicrm_contribution',41,40,50.00),(80,'civicrm_financial_item',40,40,50.00),(81,'civicrm_contribution',43,41,50.00),(82,'civicrm_financial_item',41,41,50.00),(83,'civicrm_contribution',24,42,1200.00),(84,'civicrm_financial_item',42,42,1200.00),(85,'civicrm_contribution',35,43,1200.00),(86,'civicrm_financial_item',43,43,1200.00),(87,'civicrm_contribution',57,44,50.00),(88,'civicrm_financial_item',44,44,50.00),(89,'civicrm_contribution',87,45,50.00),(90,'civicrm_financial_item',45,45,50.00),(91,'civicrm_contribution',88,46,50.00),(92,'civicrm_financial_item',46,46,50.00),(93,'civicrm_contribution',86,47,50.00),(94,'civicrm_financial_item',47,47,50.00),(95,'civicrm_contribution',75,48,50.00),(96,'civicrm_financial_item',48,48,50.00),(97,'civicrm_contribution',63,49,50.00),(98,'civicrm_financial_item',49,49,50.00),(99,'civicrm_contribution',93,50,50.00),(100,'civicrm_financial_item',50,50,50.00),(101,'civicrm_contribution',58,51,50.00),(102,'civicrm_financial_item',51,51,50.00),(103,'civicrm_contribution',52,52,50.00),(104,'civicrm_financial_item',52,52,50.00),(105,'civicrm_contribution',66,53,50.00),(106,'civicrm_financial_item',53,53,50.00),(107,'civicrm_contribution',91,54,50.00),(108,'civicrm_financial_item',54,54,50.00),(109,'civicrm_contribution',71,55,50.00),(110,'civicrm_financial_item',55,55,50.00),(111,'civicrm_contribution',48,56,50.00),(112,'civicrm_financial_item',56,56,50.00),(113,'civicrm_contribution',53,57,50.00),(114,'civicrm_financial_item',57,57,50.00),(115,'civicrm_contribution',94,58,50.00),(116,'civicrm_financial_item',58,58,50.00),(117,'civicrm_contribution',85,59,50.00),(118,'civicrm_financial_item',59,59,50.00),(119,'civicrm_contribution',92,60,800.00),(120,'civicrm_financial_item',60,60,800.00),(121,'civicrm_contribution',76,61,800.00),(122,'civicrm_financial_item',61,61,800.00),(123,'civicrm_contribution',61,62,800.00),(124,'civicrm_financial_item',62,62,800.00),(125,'civicrm_contribution',77,63,800.00),(126,'civicrm_financial_item',63,63,800.00),(127,'civicrm_contribution',56,64,800.00),(128,'civicrm_financial_item',64,64,800.00),(129,'civicrm_contribution',46,65,800.00),(130,'civicrm_financial_item',65,65,800.00),(131,'civicrm_contribution',65,66,800.00),(132,'civicrm_financial_item',66,66,800.00),(133,'civicrm_contribution',84,67,800.00),(134,'civicrm_financial_item',67,67,800.00),(135,'civicrm_contribution',69,68,800.00),(136,'civicrm_financial_item',68,68,800.00),(137,'civicrm_contribution',54,69,800.00),(138,'civicrm_financial_item',69,69,800.00),(139,'civicrm_contribution',79,70,800.00),(140,'civicrm_financial_item',70,70,800.00),(141,'civicrm_contribution',67,71,800.00),(142,'civicrm_financial_item',71,71,800.00),(143,'civicrm_contribution',59,72,800.00),(144,'civicrm_financial_item',72,72,800.00),(145,'civicrm_contribution',64,73,800.00),(146,'civicrm_financial_item',73,73,800.00),(147,'civicrm_contribution',47,74,800.00),(148,'civicrm_financial_item',74,74,800.00),(149,'civicrm_contribution',90,75,800.00),(150,'civicrm_financial_item',75,75,800.00),(151,'civicrm_contribution',68,76,800.00),(152,'civicrm_financial_item',76,76,800.00),(153,'civicrm_contribution',50,77,800.00),(154,'civicrm_financial_item',77,77,800.00),(155,'civicrm_contribution',74,78,50.00),(156,'civicrm_financial_item',78,78,50.00),(157,'civicrm_contribution',60,79,50.00),(158,'civicrm_financial_item',79,79,50.00),(159,'civicrm_contribution',55,80,50.00),(160,'civicrm_financial_item',80,80,50.00),(161,'civicrm_contribution',80,81,50.00),(162,'civicrm_financial_item',81,81,50.00),(163,'civicrm_contribution',51,82,50.00),(164,'civicrm_financial_item',82,82,50.00),(165,'civicrm_contribution',73,83,50.00),(166,'civicrm_financial_item',83,83,50.00),(167,'civicrm_contribution',82,84,50.00),(168,'civicrm_financial_item',84,84,50.00),(169,'civicrm_contribution',72,85,50.00),(170,'civicrm_financial_item',85,85,50.00),(171,'civicrm_contribution',62,86,50.00),(172,'civicrm_financial_item',86,86,50.00),(173,'civicrm_contribution',81,87,50.00),(174,'civicrm_financial_item',87,87,50.00),(175,'civicrm_contribution',49,88,50.00),(176,'civicrm_financial_item',88,88,50.00),(177,'civicrm_contribution',70,89,50.00),(178,'civicrm_financial_item',89,89,50.00),(179,'civicrm_contribution',78,90,50.00),(180,'civicrm_financial_item',90,90,50.00),(181,'civicrm_contribution',45,91,50.00),(182,'civicrm_financial_item',91,91,50.00),(183,'civicrm_contribution',83,92,50.00),(184,'civicrm_financial_item',92,92,50.00),(185,'civicrm_contribution',89,93,50.00),(186,'civicrm_financial_item',93,93,50.00); +INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, `financial_trxn_id`, `amount`) VALUES (1,'civicrm_contribution',1,1,125.00),(2,'civicrm_financial_item',1,1,125.00),(3,'civicrm_contribution',2,2,50.00),(4,'civicrm_financial_item',2,2,50.00),(5,'civicrm_contribution',3,3,25.00),(6,'civicrm_financial_item',3,3,25.00),(7,'civicrm_contribution',4,4,50.00),(8,'civicrm_financial_item',4,4,50.00),(9,'civicrm_contribution',5,5,500.00),(10,'civicrm_financial_item',5,5,500.00),(11,'civicrm_contribution',6,6,175.00),(12,'civicrm_financial_item',6,6,175.00),(13,'civicrm_contribution',7,7,50.00),(14,'civicrm_financial_item',7,7,50.00),(15,'civicrm_contribution',8,8,10.00),(16,'civicrm_financial_item',8,8,10.00),(17,'civicrm_contribution',9,9,250.00),(18,'civicrm_financial_item',9,9,250.00),(19,'civicrm_contribution',10,10,500.00),(20,'civicrm_financial_item',10,10,500.00),(21,'civicrm_contribution',11,11,200.00),(22,'civicrm_financial_item',11,11,200.00),(23,'civicrm_contribution',12,12,200.00),(24,'civicrm_financial_item',12,12,200.00),(25,'civicrm_contribution',13,13,200.00),(26,'civicrm_financial_item',13,13,200.00),(27,'civicrm_contribution',14,14,100.00),(28,'civicrm_financial_item',14,14,100.00),(29,'civicrm_contribution',16,15,100.00),(30,'civicrm_financial_item',15,15,100.00),(31,'civicrm_contribution',20,16,100.00),(32,'civicrm_financial_item',16,16,100.00),(33,'civicrm_contribution',22,17,100.00),(34,'civicrm_financial_item',17,17,100.00),(35,'civicrm_contribution',26,18,100.00),(36,'civicrm_financial_item',18,18,100.00),(37,'civicrm_contribution',30,19,100.00),(38,'civicrm_financial_item',19,19,100.00),(39,'civicrm_contribution',32,20,100.00),(40,'civicrm_financial_item',20,20,100.00),(41,'civicrm_contribution',33,21,100.00),(42,'civicrm_financial_item',21,21,100.00),(43,'civicrm_contribution',34,22,100.00),(44,'civicrm_financial_item',22,22,100.00),(45,'civicrm_contribution',36,23,100.00),(46,'civicrm_financial_item',23,23,100.00),(47,'civicrm_contribution',40,24,100.00),(48,'civicrm_financial_item',24,24,100.00),(49,'civicrm_contribution',42,25,100.00),(50,'civicrm_financial_item',25,25,100.00),(51,'civicrm_contribution',15,26,50.00),(52,'civicrm_financial_item',26,26,50.00),(53,'civicrm_contribution',17,27,50.00),(54,'civicrm_financial_item',27,27,50.00),(55,'civicrm_contribution',18,28,50.00),(56,'civicrm_financial_item',28,28,50.00),(57,'civicrm_contribution',19,29,50.00),(58,'civicrm_financial_item',29,29,50.00),(59,'civicrm_contribution',21,30,50.00),(60,'civicrm_financial_item',30,30,50.00),(61,'civicrm_contribution',23,31,50.00),(62,'civicrm_financial_item',31,31,50.00),(63,'civicrm_contribution',25,32,50.00),(64,'civicrm_financial_item',32,32,50.00),(65,'civicrm_contribution',27,33,50.00),(66,'civicrm_financial_item',33,33,50.00),(67,'civicrm_contribution',28,34,50.00),(68,'civicrm_financial_item',34,34,50.00),(69,'civicrm_contribution',29,35,50.00),(70,'civicrm_financial_item',35,35,50.00),(71,'civicrm_contribution',31,36,50.00),(72,'civicrm_financial_item',36,36,50.00),(73,'civicrm_contribution',37,37,50.00),(74,'civicrm_financial_item',37,37,50.00),(75,'civicrm_contribution',38,38,50.00),(76,'civicrm_financial_item',38,38,50.00),(77,'civicrm_contribution',39,39,50.00),(78,'civicrm_financial_item',39,39,50.00),(79,'civicrm_contribution',41,40,50.00),(80,'civicrm_financial_item',40,40,50.00),(81,'civicrm_contribution',43,41,50.00),(82,'civicrm_financial_item',41,41,50.00),(83,'civicrm_contribution',24,42,1200.00),(84,'civicrm_financial_item',42,42,1200.00),(85,'civicrm_contribution',35,43,1200.00),(86,'civicrm_financial_item',43,43,1200.00),(87,'civicrm_contribution',61,44,50.00),(88,'civicrm_financial_item',44,44,50.00),(89,'civicrm_contribution',45,45,50.00),(90,'civicrm_financial_item',45,45,50.00),(91,'civicrm_contribution',92,46,50.00),(92,'civicrm_financial_item',46,46,50.00),(93,'civicrm_contribution',57,47,50.00),(94,'civicrm_financial_item',47,47,50.00),(95,'civicrm_contribution',70,48,50.00),(96,'civicrm_financial_item',48,48,50.00),(97,'civicrm_contribution',89,49,50.00),(98,'civicrm_financial_item',49,49,50.00),(99,'civicrm_contribution',53,50,50.00),(100,'civicrm_financial_item',50,50,50.00),(101,'civicrm_contribution',72,51,50.00),(102,'civicrm_financial_item',51,51,50.00),(103,'civicrm_contribution',50,52,50.00),(104,'civicrm_financial_item',52,52,50.00),(105,'civicrm_contribution',79,53,50.00),(106,'civicrm_financial_item',53,53,50.00),(107,'civicrm_contribution',77,54,50.00),(108,'civicrm_financial_item',54,54,50.00),(109,'civicrm_contribution',66,55,50.00),(110,'civicrm_financial_item',55,55,50.00),(111,'civicrm_contribution',63,56,50.00),(112,'civicrm_financial_item',56,56,50.00),(113,'civicrm_contribution',78,57,50.00),(114,'civicrm_financial_item',57,57,50.00),(115,'civicrm_contribution',64,58,50.00),(116,'civicrm_financial_item',58,58,50.00),(117,'civicrm_contribution',87,59,50.00),(118,'civicrm_financial_item',59,59,50.00),(119,'civicrm_contribution',56,60,800.00),(120,'civicrm_financial_item',60,60,800.00),(121,'civicrm_contribution',58,61,800.00),(122,'civicrm_financial_item',61,61,800.00),(123,'civicrm_contribution',94,62,800.00),(124,'civicrm_financial_item',62,62,800.00),(125,'civicrm_contribution',69,63,800.00),(126,'civicrm_financial_item',63,63,800.00),(127,'civicrm_contribution',91,64,800.00),(128,'civicrm_financial_item',64,64,800.00),(129,'civicrm_contribution',60,65,800.00),(130,'civicrm_financial_item',65,65,800.00),(131,'civicrm_contribution',73,66,800.00),(132,'civicrm_financial_item',66,66,800.00),(133,'civicrm_contribution',59,67,800.00),(134,'civicrm_financial_item',67,67,800.00),(135,'civicrm_contribution',51,68,800.00),(136,'civicrm_financial_item',68,68,800.00),(137,'civicrm_contribution',46,69,800.00),(138,'civicrm_financial_item',69,69,800.00),(139,'civicrm_contribution',67,70,800.00),(140,'civicrm_financial_item',70,70,800.00),(141,'civicrm_contribution',83,71,800.00),(142,'civicrm_financial_item',71,71,800.00),(143,'civicrm_contribution',65,72,800.00),(144,'civicrm_financial_item',72,72,800.00),(145,'civicrm_contribution',75,73,800.00),(146,'civicrm_financial_item',73,73,800.00),(147,'civicrm_contribution',49,74,800.00),(148,'civicrm_financial_item',74,74,800.00),(149,'civicrm_contribution',82,75,800.00),(150,'civicrm_financial_item',75,75,800.00),(151,'civicrm_contribution',81,76,800.00),(152,'civicrm_financial_item',76,76,800.00),(153,'civicrm_contribution',76,77,800.00),(154,'civicrm_financial_item',77,77,800.00),(155,'civicrm_contribution',84,78,50.00),(156,'civicrm_financial_item',78,78,50.00),(157,'civicrm_contribution',55,79,50.00),(158,'civicrm_financial_item',79,79,50.00),(159,'civicrm_contribution',47,80,50.00),(160,'civicrm_financial_item',80,80,50.00),(161,'civicrm_contribution',71,81,50.00),(162,'civicrm_financial_item',81,81,50.00),(163,'civicrm_contribution',62,82,50.00),(164,'civicrm_financial_item',82,82,50.00),(165,'civicrm_contribution',74,83,50.00),(166,'civicrm_financial_item',83,83,50.00),(167,'civicrm_contribution',80,84,50.00),(168,'civicrm_financial_item',84,84,50.00),(169,'civicrm_contribution',93,85,50.00),(170,'civicrm_financial_item',85,85,50.00),(171,'civicrm_contribution',85,86,50.00),(172,'civicrm_financial_item',86,86,50.00),(173,'civicrm_contribution',68,87,50.00),(174,'civicrm_financial_item',87,87,50.00),(175,'civicrm_contribution',86,88,50.00),(176,'civicrm_financial_item',88,88,50.00),(177,'civicrm_contribution',88,89,50.00),(178,'civicrm_financial_item',89,89,50.00),(179,'civicrm_contribution',90,90,50.00),(180,'civicrm_financial_item',90,90,50.00),(181,'civicrm_contribution',48,91,50.00),(182,'civicrm_financial_item',91,91,50.00),(183,'civicrm_contribution',54,92,50.00),(184,'civicrm_financial_item',92,92,50.00),(185,'civicrm_contribution',52,93,50.00),(186,'civicrm_financial_item',93,93,50.00); /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -457,7 +457,7 @@ 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 (69,'civicrm_contact',2,5),(75,'civicrm_contact',3,4),(76,'civicrm_contact',3,5),(101,'civicrm_contact',5,5),(89,'civicrm_contact',9,4),(90,'civicrm_contact',9,5),(52,'civicrm_contact',10,4),(30,'civicrm_contact',11,5),(54,'civicrm_contact',12,4),(55,'civicrm_contact',12,5),(86,'civicrm_contact',14,4),(17,'civicrm_contact',15,4),(18,'civicrm_contact',15,5),(51,'civicrm_contact',19,5),(11,'civicrm_contact',23,5),(37,'civicrm_contact',24,4),(38,'civicrm_contact',24,5),(77,'civicrm_contact',25,5),(4,'civicrm_contact',26,3),(64,'civicrm_contact',28,5),(42,'civicrm_contact',29,4),(80,'civicrm_contact',30,4),(81,'civicrm_contact',30,5),(105,'civicrm_contact',33,4),(106,'civicrm_contact',33,5),(1,'civicrm_contact',34,2),(16,'civicrm_contact',35,5),(71,'civicrm_contact',38,4),(103,'civicrm_contact',39,4),(104,'civicrm_contact',39,5),(41,'civicrm_contact',40,5),(91,'civicrm_contact',48,4),(92,'civicrm_contact',48,5),(70,'civicrm_contact',49,4),(33,'civicrm_contact',50,4),(15,'civicrm_contact',56,4),(62,'civicrm_contact',60,4),(63,'civicrm_contact',60,5),(117,'civicrm_contact',61,4),(65,'civicrm_contact',63,4),(66,'civicrm_contact',63,5),(79,'civicrm_contact',64,4),(25,'civicrm_contact',65,5),(97,'civicrm_contact',66,4),(98,'civicrm_contact',66,5),(61,'civicrm_contact',67,4),(83,'civicrm_contact',68,5),(9,'civicrm_contact',69,2),(12,'civicrm_contact',74,4),(6,'civicrm_contact',75,2),(36,'civicrm_contact',77,4),(110,'civicrm_contact',78,4),(111,'civicrm_contact',78,5),(115,'civicrm_contact',79,4),(57,'civicrm_contact',82,5),(39,'civicrm_contact',84,4),(40,'civicrm_contact',84,5),(72,'civicrm_contact',86,4),(47,'civicrm_contact',87,4),(48,'civicrm_contact',87,5),(3,'civicrm_contact',89,2),(102,'civicrm_contact',92,5),(68,'civicrm_contact',98,4),(78,'civicrm_contact',100,4),(5,'civicrm_contact',103,1),(109,'civicrm_contact',104,4),(10,'civicrm_contact',105,3),(53,'civicrm_contact',107,4),(14,'civicrm_contact',113,4),(7,'civicrm_contact',115,1),(20,'civicrm_contact',116,4),(28,'civicrm_contact',121,5),(95,'civicrm_contact',126,4),(96,'civicrm_contact',126,5),(116,'civicrm_contact',128,5),(58,'civicrm_contact',130,4),(93,'civicrm_contact',135,4),(94,'civicrm_contact',135,5),(107,'civicrm_contact',137,5),(26,'civicrm_contact',138,4),(27,'civicrm_contact',138,5),(59,'civicrm_contact',140,4),(45,'civicrm_contact',141,4),(46,'civicrm_contact',141,5),(2,'civicrm_contact',142,3),(19,'civicrm_contact',143,5),(108,'civicrm_contact',146,4),(60,'civicrm_contact',148,4),(35,'civicrm_contact',149,5),(73,'civicrm_contact',150,4),(74,'civicrm_contact',150,5),(112,'civicrm_contact',153,4),(113,'civicrm_contact',153,5),(56,'civicrm_contact',154,5),(34,'civicrm_contact',157,4),(23,'civicrm_contact',161,4),(49,'civicrm_contact',163,5),(24,'civicrm_contact',167,4),(87,'civicrm_contact',168,4),(88,'civicrm_contact',168,5),(82,'civicrm_contact',175,5),(13,'civicrm_contact',176,5),(21,'civicrm_contact',177,4),(22,'civicrm_contact',177,5),(114,'civicrm_contact',179,4),(29,'civicrm_contact',182,4),(99,'civicrm_contact',186,4),(100,'civicrm_contact',186,5),(67,'civicrm_contact',187,4),(50,'civicrm_contact',194,4),(84,'civicrm_contact',195,4),(85,'civicrm_contact',195,5),(31,'civicrm_contact',198,4),(32,'civicrm_contact',198,5),(8,'civicrm_contact',200,1),(43,'civicrm_contact',201,4),(44,'civicrm_contact',201,5); +INSERT INTO `civicrm_entity_tag` (`id`, `entity_table`, `entity_id`, `tag_id`) VALUES (103,'civicrm_contact',3,4),(104,'civicrm_contact',3,5),(93,'civicrm_contact',5,4),(22,'civicrm_contact',10,5),(107,'civicrm_contact',13,4),(112,'civicrm_contact',15,4),(113,'civicrm_contact',15,5),(111,'civicrm_contact',16,4),(52,'civicrm_contact',18,4),(53,'civicrm_contact',18,5),(8,'civicrm_contact',22,1),(114,'civicrm_contact',24,4),(115,'civicrm_contact',24,5),(68,'civicrm_contact',27,4),(69,'civicrm_contact',27,5),(7,'civicrm_contact',28,3),(39,'civicrm_contact',32,4),(13,'civicrm_contact',33,4),(14,'civicrm_contact',33,5),(21,'civicrm_contact',37,4),(40,'civicrm_contact',40,4),(109,'civicrm_contact',44,4),(108,'civicrm_contact',46,4),(3,'civicrm_contact',47,3),(23,'civicrm_contact',48,4),(24,'civicrm_contact',48,5),(45,'civicrm_contact',49,4),(116,'civicrm_contact',52,4),(43,'civicrm_contact',54,4),(44,'civicrm_contact',54,5),(83,'civicrm_contact',56,5),(31,'civicrm_contact',57,4),(32,'civicrm_contact',57,5),(28,'civicrm_contact',58,4),(88,'civicrm_contact',65,5),(57,'civicrm_contact',66,4),(58,'civicrm_contact',66,5),(4,'civicrm_contact',69,3),(90,'civicrm_contact',70,4),(9,'civicrm_contact',72,2),(63,'civicrm_contact',74,4),(36,'civicrm_contact',75,4),(37,'civicrm_contact',75,5),(25,'civicrm_contact',77,4),(55,'civicrm_contact',78,4),(56,'civicrm_contact',78,5),(67,'civicrm_contact',83,5),(91,'civicrm_contact',87,4),(92,'civicrm_contact',87,5),(11,'civicrm_contact',91,4),(46,'civicrm_contact',95,5),(84,'civicrm_contact',96,4),(85,'civicrm_contact',96,5),(117,'civicrm_contact',99,4),(118,'civicrm_contact',99,5),(66,'civicrm_contact',100,4),(106,'civicrm_contact',101,5),(12,'civicrm_contact',103,4),(86,'civicrm_contact',105,4),(87,'civicrm_contact',105,5),(27,'civicrm_contact',107,4),(41,'civicrm_contact',113,5),(6,'civicrm_contact',114,1),(64,'civicrm_contact',115,4),(2,'civicrm_contact',116,2),(59,'civicrm_contact',117,4),(60,'civicrm_contact',117,5),(19,'civicrm_contact',118,4),(61,'civicrm_contact',119,5),(95,'civicrm_contact',120,4),(96,'civicrm_contact',120,5),(51,'civicrm_contact',122,5),(78,'civicrm_contact',123,4),(79,'civicrm_contact',123,5),(38,'civicrm_contact',125,5),(99,'civicrm_contact',129,4),(100,'civicrm_contact',129,5),(82,'civicrm_contact',130,5),(65,'civicrm_contact',131,4),(98,'civicrm_contact',140,5),(70,'civicrm_contact',141,4),(71,'civicrm_contact',141,5),(54,'civicrm_contact',142,4),(62,'civicrm_contact',143,5),(80,'civicrm_contact',144,4),(81,'civicrm_contact',144,5),(72,'civicrm_contact',147,4),(73,'civicrm_contact',147,5),(89,'civicrm_contact',148,4),(74,'civicrm_contact',152,5),(26,'civicrm_contact',155,5),(105,'civicrm_contact',157,4),(17,'civicrm_contact',159,4),(18,'civicrm_contact',159,5),(75,'civicrm_contact',161,4),(29,'civicrm_contact',162,4),(30,'civicrm_contact',162,5),(50,'civicrm_contact',163,4),(42,'civicrm_contact',164,5),(33,'civicrm_contact',165,4),(34,'civicrm_contact',165,5),(94,'civicrm_contact',169,4),(101,'civicrm_contact',174,4),(102,'civicrm_contact',174,5),(77,'civicrm_contact',179,5),(48,'civicrm_contact',180,4),(49,'civicrm_contact',180,5),(35,'civicrm_contact',182,5),(110,'civicrm_contact',184,4),(47,'civicrm_contact',185,4),(15,'civicrm_contact',186,4),(16,'civicrm_contact',186,5),(119,'civicrm_contact',187,5),(10,'civicrm_contact',188,1),(1,'civicrm_contact',189,1),(5,'civicrm_contact',190,1),(97,'civicrm_contact',197,5),(20,'civicrm_contact',199,4),(76,'civicrm_contact',200,4); /*!40000 ALTER TABLE `civicrm_entity_tag` ENABLE KEYS */; UNLOCK TABLES; @@ -523,7 +523,7 @@ 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,'2018-09-19 20:23:52','2010-04-11 00:00:00',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),(2,'2018-09-19 20:23:52','2010-03-21 00:00:00',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),(3,'2018-09-19 20:23:52','2010-04-29 00:00:00',6,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',3),(4,'2018-09-19 20:23:52','2010-04-11 00:00:00',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),(5,'2018-09-19 20:23:52','2010-04-15 00:00:00',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',5),(6,'2018-09-19 20:23:52','2010-04-11 00:00:00',19,'Contribution Amount',175.00,'USD',1,1,'civicrm_line_item',6),(7,'2018-09-19 20:23:52','2010-03-27 00:00:00',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',7),(8,'2018-09-19 20:23:52','2010-03-08 00:00:00',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',8),(9,'2018-09-19 20:23:52','2010-04-22 00:00:00',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',9),(10,'2018-09-19 20:23:52','2009-07-01 11:53:50',71,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',10),(11,'2018-09-19 20:23:52','2009-07-01 12:55:41',43,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',11),(12,'2018-09-19 20:23:52','2009-10-01 11:53:50',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',12),(13,'2018-09-19 20:23:52','2009-12-01 12:55:41',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',13),(14,'2018-09-19 20:23:52','2018-09-19 13:23:52',168,'General',100.00,'USD',2,1,'civicrm_line_item',16),(15,'2018-09-19 20:23:52','2018-09-19 13:23:52',188,'General',100.00,'USD',2,1,'civicrm_line_item',17),(16,'2018-09-19 20:23:52','2018-09-19 13:23:52',157,'General',100.00,'USD',2,1,'civicrm_line_item',18),(17,'2018-09-19 20:23:52','2018-09-19 13:23:52',80,'General',100.00,'USD',2,1,'civicrm_line_item',19),(18,'2018-09-19 20:23:52','2018-09-19 13:23:52',150,'General',100.00,'USD',2,1,'civicrm_line_item',20),(19,'2018-09-19 20:23:52','2018-09-19 13:23:52',68,'General',100.00,'USD',2,1,'civicrm_line_item',21),(20,'2018-09-19 20:23:52','2018-09-19 13:23:52',175,'General',100.00,'USD',2,1,'civicrm_line_item',22),(21,'2018-09-19 20:23:52','2018-09-19 13:23:52',126,'General',100.00,'USD',2,1,'civicrm_line_item',23),(22,'2018-09-19 20:23:52','2018-09-19 13:23:52',88,'General',100.00,'USD',2,1,'civicrm_line_item',24),(23,'2018-09-19 20:23:52','2018-09-19 13:23:52',56,'General',100.00,'USD',2,1,'civicrm_line_item',25),(24,'2018-09-19 20:23:52','2018-09-19 13:23:52',86,'General',100.00,'USD',2,1,'civicrm_line_item',26),(25,'2018-09-19 20:23:52','2018-09-19 13:23:52',109,'General',100.00,'USD',2,1,'civicrm_line_item',27),(26,'2018-09-19 20:23:52','2018-09-19 13:23:52',29,'General',100.00,'USD',2,1,'civicrm_line_item',28),(27,'2018-09-19 20:23:52','2018-09-19 13:23:52',28,'General',100.00,'USD',2,1,'civicrm_line_item',29),(28,'2018-09-19 20:23:52','2018-09-19 13:23:52',195,'General',100.00,'USD',2,1,'civicrm_line_item',30),(29,'2018-09-19 20:23:52','2018-09-19 13:23:52',48,'General',100.00,'USD',2,1,'civicrm_line_item',31),(30,'2018-09-19 20:23:52','2018-09-19 13:23:52',38,'Student',50.00,'USD',2,1,'civicrm_line_item',32),(31,'2018-09-19 20:23:52','2018-09-19 13:23:52',45,'Student',50.00,'USD',2,1,'civicrm_line_item',33),(32,'2018-09-19 20:23:52','2018-09-19 13:23:52',97,'Student',50.00,'USD',2,1,'civicrm_line_item',34),(33,'2018-09-19 20:23:52','2018-09-19 13:23:52',74,'Student',50.00,'USD',2,1,'civicrm_line_item',35),(34,'2018-09-19 20:23:52','2018-09-19 13:23:52',197,'Student',50.00,'USD',2,1,'civicrm_line_item',36),(35,'2018-09-19 20:23:52','2018-09-19 13:23:52',49,'Student',50.00,'USD',2,1,'civicrm_line_item',37),(36,'2018-09-19 20:23:52','2018-09-19 13:23:52',119,'Student',50.00,'USD',2,1,'civicrm_line_item',38),(37,'2018-09-19 20:23:52','2018-09-19 13:23:52',94,'Student',50.00,'USD',2,1,'civicrm_line_item',39),(38,'2018-09-19 20:23:52','2018-09-19 13:23:52',55,'Student',50.00,'USD',2,1,'civicrm_line_item',40),(39,'2018-09-19 20:23:52','2018-09-19 13:23:52',59,'Student',50.00,'USD',2,1,'civicrm_line_item',41),(40,'2018-09-19 20:23:52','2018-09-19 13:23:52',10,'Student',50.00,'USD',2,1,'civicrm_line_item',42),(41,'2018-09-19 20:23:52','2018-09-19 13:23:52',71,'Student',50.00,'USD',2,1,'civicrm_line_item',43),(42,'2018-09-19 20:23:52','2018-09-19 13:23:52',179,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',44),(43,'2018-09-19 20:23:52','2018-09-19 13:23:52',138,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',45),(44,'2018-09-19 20:23:52','2018-09-19 13:23:52',46,'Soprano',50.00,'USD',2,1,'civicrm_line_item',81),(45,'2018-09-19 20:23:52','2018-09-19 13:23:52',168,'Soprano',50.00,'USD',2,1,'civicrm_line_item',82),(46,'2018-09-19 20:23:52','2018-09-19 13:23:52',169,'Soprano',50.00,'USD',2,1,'civicrm_line_item',83),(47,'2018-09-19 20:23:52','2018-09-19 13:23:52',165,'Soprano',50.00,'USD',2,1,'civicrm_line_item',84),(48,'2018-09-19 20:23:52','2018-09-19 13:23:52',123,'Soprano',50.00,'USD',2,1,'civicrm_line_item',85),(49,'2018-09-19 20:23:52','2018-09-19 13:23:52',59,'Soprano',50.00,'USD',2,1,'civicrm_line_item',86),(50,'2018-09-19 20:23:52','2018-09-19 13:23:52',196,'Soprano',50.00,'USD',2,1,'civicrm_line_item',87),(51,'2018-09-19 20:23:52','2018-09-19 13:23:52',47,'Soprano',50.00,'USD',2,1,'civicrm_line_item',88),(52,'2018-09-19 20:23:52','2018-09-19 13:23:52',24,'Soprano',50.00,'USD',2,1,'civicrm_line_item',89),(53,'2018-09-19 20:23:52','2018-09-19 13:23:52',69,'Soprano',50.00,'USD',2,1,'civicrm_line_item',90),(54,'2018-09-19 20:23:52','2018-09-19 13:23:52',173,'Soprano',50.00,'USD',2,1,'civicrm_line_item',91),(55,'2018-09-19 20:23:52','2018-09-19 13:23:52',112,'Soprano',50.00,'USD',2,1,'civicrm_line_item',92),(56,'2018-09-19 20:23:52','2018-09-19 13:23:52',15,'Soprano',50.00,'USD',2,1,'civicrm_line_item',93),(57,'2018-09-19 20:23:52','2018-09-19 13:23:52',34,'Soprano',50.00,'USD',2,1,'civicrm_line_item',94),(58,'2018-09-19 20:23:52','2018-09-19 13:23:52',199,'Soprano',50.00,'USD',2,1,'civicrm_line_item',95),(59,'2018-09-19 20:23:52','2018-09-19 13:23:52',161,'Soprano',50.00,'USD',2,1,'civicrm_line_item',96),(60,'2018-09-19 20:23:52','2018-09-19 13:23:52',187,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',47),(61,'2018-09-19 20:23:52','2018-09-19 13:23:52',124,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',48),(62,'2018-09-19 20:23:52','2018-09-19 13:23:52',54,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',49),(63,'2018-09-19 20:23:52','2018-09-19 13:23:52',134,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',50),(64,'2018-09-19 20:23:52','2018-09-19 13:23:52',43,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',51),(65,'2018-09-19 20:23:52','2018-09-19 13:23:52',11,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',52),(66,'2018-09-19 20:23:52','2018-09-19 13:23:52',65,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',53),(67,'2018-09-19 20:23:52','2018-09-19 13:23:52',156,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',54),(68,'2018-09-19 20:23:52','2018-09-19 13:23:52',102,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',55),(69,'2018-09-19 20:23:52','2018-09-19 13:23:52',37,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',56),(70,'2018-09-19 20:23:52','2018-09-19 13:23:52',136,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',57),(71,'2018-09-19 20:23:52','2018-09-19 13:23:52',76,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',58),(72,'2018-09-19 20:23:52','2018-09-19 13:23:52',50,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',59),(73,'2018-09-19 20:23:52','2018-09-19 13:23:52',61,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',60),(74,'2018-09-19 20:23:52','2018-09-19 13:23:52',12,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',61),(75,'2018-09-19 20:23:53','2018-09-19 13:23:52',171,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',62),(76,'2018-09-19 20:23:53','2018-09-19 13:23:52',78,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),(77,'2018-09-19 20:23:53','2018-09-19 13:23:52',22,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),(78,'2018-09-19 20:23:53','2018-09-19 13:23:52',119,'Single',50.00,'USD',4,1,'civicrm_line_item',65),(79,'2018-09-19 20:23:53','2018-09-19 13:23:52',53,'Single',50.00,'USD',4,1,'civicrm_line_item',66),(80,'2018-09-19 20:23:53','2018-09-19 13:23:52',41,'Single',50.00,'USD',4,1,'civicrm_line_item',67),(81,'2018-09-19 20:23:53','2018-09-19 13:23:52',138,'Single',50.00,'USD',4,1,'civicrm_line_item',68),(82,'2018-09-19 20:23:53','2018-09-19 13:23:52',23,'Single',50.00,'USD',4,1,'civicrm_line_item',69),(83,'2018-09-19 20:23:53','2018-09-19 13:23:52',117,'Single',50.00,'USD',4,1,'civicrm_line_item',70),(84,'2018-09-19 20:23:53','2018-09-19 13:23:52',151,'Single',50.00,'USD',4,1,'civicrm_line_item',71),(85,'2018-09-19 20:23:53','2018-09-19 13:23:52',115,'Single',50.00,'USD',4,1,'civicrm_line_item',72),(86,'2018-09-19 20:23:53','2018-09-19 13:23:52',57,'Single',50.00,'USD',4,1,'civicrm_line_item',73),(87,'2018-09-19 20:23:53','2018-09-19 13:23:52',145,'Single',50.00,'USD',4,1,'civicrm_line_item',74),(88,'2018-09-19 20:23:53','2018-09-19 13:23:52',18,'Single',50.00,'USD',4,1,'civicrm_line_item',75),(89,'2018-09-19 20:23:53','2018-09-19 13:23:52',107,'Single',50.00,'USD',4,1,'civicrm_line_item',76),(90,'2018-09-19 20:23:53','2018-09-19 13:23:52',135,'Single',50.00,'USD',4,1,'civicrm_line_item',77),(91,'2018-09-19 20:23:53','2018-09-19 13:23:52',2,'Single',50.00,'USD',4,1,'civicrm_line_item',78),(92,'2018-09-19 20:23:53','2018-09-19 13:23:52',152,'Single',50.00,'USD',4,1,'civicrm_line_item',79),(93,'2018-09-19 20:23:53','2018-09-19 13:23:52',170,'Single',50.00,'USD',4,1,'civicrm_line_item',80); +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,'2018-09-20 03:19:30','2010-04-11 00:00:00',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1),(2,'2018-09-20 03:19:30','2010-03-21 00:00:00',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2),(3,'2018-09-20 03:19:30','2010-04-29 00:00:00',6,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',3),(4,'2018-09-20 03:19:30','2010-04-11 00:00:00',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4),(5,'2018-09-20 03:19:30','2010-04-15 00:00:00',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',5),(6,'2018-09-20 03:19:30','2010-04-11 00:00:00',19,'Contribution Amount',175.00,'USD',1,1,'civicrm_line_item',6),(7,'2018-09-20 03:19:30','2010-03-27 00:00:00',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',7),(8,'2018-09-20 03:19:30','2010-03-08 00:00:00',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',8),(9,'2018-09-20 03:19:30','2010-04-22 00:00:00',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',9),(10,'2018-09-20 03:19:30','2009-07-01 11:53:50',71,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',10),(11,'2018-09-20 03:19:30','2009-07-01 12:55:41',43,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',11),(12,'2018-09-20 03:19:30','2009-10-01 11:53:50',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',12),(13,'2018-09-20 03:19:30','2009-12-01 12:55:41',32,'Contribution Amount',200.00,'USD',1,1,'civicrm_line_item',13),(14,'2018-09-20 03:19:30','2018-09-19 20:19:30',119,'General',100.00,'USD',2,1,'civicrm_line_item',16),(15,'2018-09-20 03:19:30','2018-09-19 20:19:30',146,'General',100.00,'USD',2,1,'civicrm_line_item',17),(16,'2018-09-20 03:19:30','2018-09-19 20:19:30',157,'General',100.00,'USD',2,1,'civicrm_line_item',18),(17,'2018-09-20 03:19:30','2018-09-19 20:19:30',44,'General',100.00,'USD',2,1,'civicrm_line_item',19),(18,'2018-09-20 03:19:30','2018-09-19 20:19:30',93,'General',100.00,'USD',2,1,'civicrm_line_item',20),(19,'2018-09-20 03:19:30','2018-09-19 20:19:30',37,'General',100.00,'USD',2,1,'civicrm_line_item',21),(20,'2018-09-20 03:19:30','2018-09-19 20:19:30',10,'General',100.00,'USD',2,1,'civicrm_line_item',22),(21,'2018-09-20 03:19:30','2018-09-19 20:19:30',89,'General',100.00,'USD',2,1,'civicrm_line_item',23),(22,'2018-09-20 03:19:30','2018-09-19 20:19:30',113,'General',100.00,'USD',2,1,'civicrm_line_item',24),(23,'2018-09-20 03:19:30','2018-09-19 20:19:30',173,'General',100.00,'USD',2,1,'civicrm_line_item',25),(24,'2018-09-20 03:19:30','2018-09-19 20:19:30',65,'General',100.00,'USD',2,1,'civicrm_line_item',26),(25,'2018-09-20 03:19:30','2018-09-19 20:19:30',73,'General',100.00,'USD',2,1,'civicrm_line_item',27),(26,'2018-09-20 03:19:30','2018-09-19 20:19:30',14,'Student',50.00,'USD',2,1,'civicrm_line_item',28),(27,'2018-09-20 03:19:30','2018-09-19 20:19:30',16,'Student',50.00,'USD',2,1,'civicrm_line_item',29),(28,'2018-09-20 03:19:30','2018-09-19 20:19:30',103,'Student',50.00,'USD',2,1,'civicrm_line_item',30),(29,'2018-09-20 03:19:30','2018-09-19 20:19:30',9,'Student',50.00,'USD',2,1,'civicrm_line_item',31),(30,'2018-09-20 03:19:30','2018-09-19 20:19:30',19,'Student',50.00,'USD',2,1,'civicrm_line_item',32),(31,'2018-09-20 03:19:30','2018-09-19 20:19:30',115,'Student',50.00,'USD',2,1,'civicrm_line_item',33),(32,'2018-09-20 03:19:30','2018-09-19 20:19:30',20,'Student',50.00,'USD',2,1,'civicrm_line_item',34),(33,'2018-09-20 03:19:30','2018-09-19 20:19:30',62,'Student',50.00,'USD',2,1,'civicrm_line_item',35),(34,'2018-09-20 03:19:30','2018-09-19 20:19:30',54,'Student',50.00,'USD',2,1,'civicrm_line_item',36),(35,'2018-09-20 03:19:30','2018-09-19 20:19:30',60,'Student',50.00,'USD',2,1,'civicrm_line_item',37),(36,'2018-09-20 03:19:30','2018-09-19 20:19:30',170,'Student',50.00,'USD',2,1,'civicrm_line_item',38),(37,'2018-09-20 03:19:30','2018-09-19 20:19:30',77,'Student',50.00,'USD',2,1,'civicrm_line_item',39),(38,'2018-09-20 03:19:30','2018-09-19 20:19:30',6,'Student',50.00,'USD',2,1,'civicrm_line_item',40),(39,'2018-09-20 03:19:30','2018-09-19 20:19:30',184,'Student',50.00,'USD',2,1,'civicrm_line_item',41),(40,'2018-09-20 03:19:30','2018-09-19 20:19:30',58,'Student',50.00,'USD',2,1,'civicrm_line_item',42),(41,'2018-09-20 03:19:30','2018-09-19 20:19:30',71,'Student',50.00,'USD',2,1,'civicrm_line_item',43),(42,'2018-09-20 03:19:30','2018-09-19 20:19:30',124,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',44),(43,'2018-09-20 03:19:30','2018-09-19 20:19:30',105,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',45),(44,'2018-09-20 03:19:30','2018-09-19 20:19:30',80,'Soprano',50.00,'USD',2,1,'civicrm_line_item',81),(45,'2018-09-20 03:19:30','2018-09-19 20:19:30',5,'Soprano',50.00,'USD',2,1,'civicrm_line_item',82),(46,'2018-09-20 03:19:30','2018-09-19 20:19:30',193,'Soprano',50.00,'USD',2,1,'civicrm_line_item',83),(47,'2018-09-20 03:19:30','2018-09-19 20:19:30',67,'Soprano',50.00,'USD',2,1,'civicrm_line_item',84),(48,'2018-09-20 03:19:30','2018-09-19 20:19:30',111,'Soprano',50.00,'USD',2,1,'civicrm_line_item',85),(49,'2018-09-20 03:19:30','2018-09-19 20:19:30',182,'Soprano',50.00,'USD',2,1,'civicrm_line_item',86),(50,'2018-09-20 03:19:30','2018-09-19 20:19:30',58,'Soprano',50.00,'USD',2,1,'civicrm_line_item',87),(51,'2018-09-20 03:19:30','2018-09-19 20:19:30',116,'Soprano',50.00,'USD',2,1,'civicrm_line_item',88),(52,'2018-09-20 03:19:30','2018-09-19 20:19:30',40,'Soprano',50.00,'USD',2,1,'civicrm_line_item',89),(53,'2018-09-20 03:19:30','2018-09-19 20:19:30',132,'Soprano',50.00,'USD',2,1,'civicrm_line_item',90),(54,'2018-09-20 03:19:30','2018-09-19 20:19:30',126,'Soprano',50.00,'USD',2,1,'civicrm_line_item',91),(55,'2018-09-20 03:19:30','2018-09-19 20:19:30',95,'Soprano',50.00,'USD',2,1,'civicrm_line_item',92),(56,'2018-09-20 03:19:30','2018-09-19 20:19:30',90,'Soprano',50.00,'USD',2,1,'civicrm_line_item',93),(57,'2018-09-20 03:19:30','2018-09-19 20:19:30',131,'Soprano',50.00,'USD',2,1,'civicrm_line_item',94),(58,'2018-09-20 03:19:30','2018-09-19 20:19:30',93,'Soprano',50.00,'USD',2,1,'civicrm_line_item',95),(59,'2018-09-20 03:19:30','2018-09-19 20:19:30',171,'Soprano',50.00,'USD',2,1,'civicrm_line_item',96),(60,'2018-09-20 03:19:30','2018-09-19 20:19:30',64,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',47),(61,'2018-09-20 03:19:30','2018-09-19 20:19:30',72,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',48),(62,'2018-09-20 03:19:30','2018-09-19 20:19:30',201,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',49),(63,'2018-09-20 03:19:30','2018-09-19 20:19:30',107,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',50),(64,'2018-09-20 03:19:30','2018-09-19 20:19:30',189,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',51),(65,'2018-09-20 03:19:30','2018-09-19 20:19:30',78,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',52),(66,'2018-09-20 03:19:30','2018-09-19 20:19:30',119,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',53),(67,'2018-09-20 03:19:30','2018-09-19 20:19:30',73,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',54),(68,'2018-09-20 03:19:30','2018-09-19 20:19:30',47,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',55),(69,'2018-09-20 03:19:30','2018-09-19 20:19:30',11,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',56),(70,'2018-09-20 03:19:30','2018-09-19 20:19:30',100,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',57),(71,'2018-09-20 03:19:30','2018-09-19 20:19:30',149,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',58),(72,'2018-09-20 03:19:30','2018-09-19 20:19:30',94,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',59),(73,'2018-09-20 03:19:30','2018-09-19 20:19:30',122,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',60),(74,'2018-09-20 03:19:30','2018-09-19 20:19:30',34,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',61),(75,'2018-09-20 03:19:30','2018-09-19 20:19:30',145,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',62),(76,'2018-09-20 03:19:30','2018-09-19 20:19:30',143,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63),(77,'2018-09-20 03:19:30','2018-09-19 20:19:30',125,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64),(78,'2018-09-20 03:19:30','2018-09-19 20:19:30',150,'Single',50.00,'USD',4,1,'civicrm_line_item',65),(79,'2018-09-20 03:19:30','2018-09-19 20:19:30',62,'Single',50.00,'USD',4,1,'civicrm_line_item',66),(80,'2018-09-20 03:19:30','2018-09-19 20:19:30',24,'Single',50.00,'USD',4,1,'civicrm_line_item',67),(81,'2018-09-20 03:19:30','2018-09-19 20:19:30',115,'Single',50.00,'USD',4,1,'civicrm_line_item',68),(82,'2018-09-20 03:19:30','2018-09-19 20:19:30',88,'Single',50.00,'USD',4,1,'civicrm_line_item',69),(83,'2018-09-20 03:19:30','2018-09-19 20:19:30',121,'Single',50.00,'USD',4,1,'civicrm_line_item',70),(84,'2018-09-20 03:19:30','2018-09-19 20:19:30',135,'Single',50.00,'USD',4,1,'civicrm_line_item',71),(85,'2018-09-20 03:19:30','2018-09-19 20:19:30',198,'Single',50.00,'USD',4,1,'civicrm_line_item',72),(86,'2018-09-20 03:19:30','2018-09-19 20:19:30',151,'Single',50.00,'USD',4,1,'civicrm_line_item',73),(87,'2018-09-20 03:19:30','2018-09-19 20:19:30',106,'Single',50.00,'USD',4,1,'civicrm_line_item',74),(88,'2018-09-20 03:19:30','2018-09-19 20:19:30',160,'Single',50.00,'USD',4,1,'civicrm_line_item',75),(89,'2018-09-20 03:19:30','2018-09-19 20:19:30',174,'Single',50.00,'USD',4,1,'civicrm_line_item',76),(90,'2018-09-20 03:19:30','2018-09-19 20:19:30',184,'Single',50.00,'USD',4,1,'civicrm_line_item',77),(91,'2018-09-20 03:19:30','2018-09-19 20:19:30',30,'Single',50.00,'USD',4,1,'civicrm_line_item',78),(92,'2018-09-20 03:19:30','2018-09-19 20:19:30',61,'Single',50.00,'USD',4,1,'civicrm_line_item',79),(93,'2018-09-20 03:19:30','2018-09-19 20:19:30',50,'Single',50.00,'USD',4,1,'civicrm_line_item',80); /*!40000 ALTER TABLE `civicrm_financial_item` ENABLE KEYS */; UNLOCK TABLES; @@ -533,7 +533,7 @@ 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`) VALUES (1,NULL,1,'2010-04-11 00:00:00',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL),(2,NULL,1,'2010-03-21 00:00:00',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL),(3,NULL,1,'2010-04-29 00:00:00',25.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'2095',NULL),(4,NULL,1,'2010-04-11 00:00:00',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL),(5,NULL,1,'2010-04-15 00:00:00',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL),(6,NULL,1,'2010-04-11 00:00:00',175.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'102',NULL),(7,NULL,1,'2010-03-27 00:00:00',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL),(8,NULL,1,'2010-03-08 00:00:00',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL),(9,NULL,1,'2010-04-22 00:00:00',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL),(10,NULL,1,'2009-07-01 11:53:50',500.00,NULL,NULL,'USD',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL),(11,NULL,1,'2009-07-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL43II',NULL,1,NULL,1,NULL,NULL,NULL),(12,NULL,1,'2009-10-01 11:53:50',200.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL),(13,NULL,1,'2009-12-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL),(14,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(15,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(16,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(17,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(18,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(19,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(20,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(21,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(22,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(23,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(24,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(25,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(26,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(27,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(28,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(29,NULL,1,'2018-09-19 13:23:52',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(30,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(31,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(32,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(33,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(34,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(35,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(36,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(37,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(38,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(39,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(40,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(41,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(42,NULL,1,'2018-09-19 13:23:52',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(43,NULL,1,'2018-09-19 13:23:52',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(44,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(45,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(46,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(47,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(48,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(49,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(50,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(51,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(52,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(53,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(54,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(55,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(56,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(57,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(58,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(59,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(60,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(61,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(62,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(63,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(64,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(65,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(66,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(67,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(68,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(69,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(70,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(71,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(72,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(73,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(74,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(75,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(76,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(77,NULL,1,'2018-09-19 13:23:52',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(78,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(79,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(80,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(81,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(82,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(83,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(84,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(85,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(86,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(87,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(88,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(89,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(90,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(91,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(92,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(93,NULL,1,'2018-09-19 13:23:52',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL); +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`) VALUES (1,NULL,1,'2010-04-11 00:00:00',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL),(2,NULL,1,'2010-03-21 00:00:00',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL),(3,NULL,1,'2010-04-29 00:00:00',25.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'2095',NULL),(4,NULL,1,'2010-04-11 00:00:00',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL),(5,NULL,1,'2010-04-15 00:00:00',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL),(6,NULL,1,'2010-04-11 00:00:00',175.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'102',NULL),(7,NULL,1,'2010-03-27 00:00:00',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL),(8,NULL,1,'2010-03-08 00:00:00',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL),(9,NULL,1,'2010-04-22 00:00:00',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL),(10,NULL,1,'2009-07-01 11:53:50',500.00,NULL,NULL,'USD',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL),(11,NULL,1,'2009-07-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL43II',NULL,1,NULL,1,NULL,NULL,NULL),(12,NULL,1,'2009-10-01 11:53:50',200.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL),(13,NULL,1,'2009-12-01 12:55:41',200.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL),(14,NULL,1,'2018-09-19 20:19:30',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(15,NULL,1,'2018-09-19 20:19:30',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(16,NULL,1,'2018-09-19 20:19:30',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(17,NULL,1,'2018-09-19 20:19:30',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(18,NULL,1,'2018-09-19 20:19:30',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(19,NULL,1,'2018-09-19 20:19:30',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(20,NULL,1,'2018-09-19 20:19:30',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(21,NULL,1,'2018-09-19 20:19:30',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(22,NULL,1,'2018-09-19 20:19:30',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(23,NULL,1,'2018-09-19 20:19:30',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(24,NULL,1,'2018-09-19 20:19:30',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(25,NULL,1,'2018-09-19 20:19:30',100.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(26,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(27,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(28,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(29,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(30,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(31,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(32,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(33,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(34,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(35,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(36,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(37,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(38,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(39,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(40,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(41,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(42,NULL,1,'2018-09-19 20:19:30',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(43,NULL,1,'2018-09-19 20:19:30',1200.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(44,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(45,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(46,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(47,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(48,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(49,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(50,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(51,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(52,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(53,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(54,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(55,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(56,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(57,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(58,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(59,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(60,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(61,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(62,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(63,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(64,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(65,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(66,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(67,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(68,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(69,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(70,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(71,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(72,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(73,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(74,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(75,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(76,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(77,NULL,1,'2018-09-19 20:19:30',800.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(78,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(79,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(80,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(81,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(82,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(83,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(84,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(85,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(86,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(87,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(88,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(89,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(90,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(91,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(92,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL),(93,NULL,1,'2018-09-19 20:19:30',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -572,7 +572,7 @@ 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,23,'Added',NULL,NULL),(2,2,31,'Added',NULL,NULL),(3,2,74,'Added',NULL,NULL),(4,2,59,'Added',NULL,NULL),(5,2,176,'Added',NULL,NULL),(6,2,97,'Added',NULL,NULL),(7,2,113,'Added',NULL,NULL),(8,2,164,'Added',NULL,NULL),(9,2,56,'Added',NULL,NULL),(10,2,4,'Added',NULL,NULL),(11,2,35,'Added',NULL,NULL),(12,2,21,'Added',NULL,NULL),(13,2,15,'Added',NULL,NULL),(14,2,110,'Added',NULL,NULL),(15,2,143,'Added',NULL,NULL),(16,2,36,'Added',NULL,NULL),(17,2,116,'Added',NULL,NULL),(18,2,16,'Added',NULL,NULL),(19,2,177,'Added',NULL,NULL),(20,2,166,'Added',NULL,NULL),(21,2,161,'Added',NULL,NULL),(22,2,145,'Added',NULL,NULL),(23,2,167,'Added',NULL,NULL),(24,2,184,'Added',NULL,NULL),(25,2,65,'Added',NULL,NULL),(26,2,185,'Added',NULL,NULL),(27,2,138,'Added',NULL,NULL),(28,2,94,'Added',NULL,NULL),(29,2,121,'Added',NULL,NULL),(30,2,134,'Added',NULL,NULL),(31,2,182,'Added',NULL,NULL),(32,2,83,'Added',NULL,NULL),(33,2,11,'Added',NULL,NULL),(34,2,7,'Added',NULL,NULL),(35,2,198,'Added',NULL,NULL),(36,2,17,'Added',NULL,NULL),(37,2,50,'Added',NULL,NULL),(38,2,71,'Added',NULL,NULL),(39,2,157,'Added',NULL,NULL),(40,2,93,'Added',NULL,NULL),(41,2,149,'Added',NULL,NULL),(42,2,172,'Added',NULL,NULL),(43,2,77,'Added',NULL,NULL),(44,2,57,'Added',NULL,NULL),(45,2,24,'Added',NULL,NULL),(46,2,119,'Added',NULL,NULL),(47,2,84,'Added',NULL,NULL),(48,2,162,'Added',NULL,NULL),(49,2,40,'Added',NULL,NULL),(50,2,190,'Added',NULL,NULL),(51,2,29,'Added',NULL,NULL),(52,2,155,'Added',NULL,NULL),(53,2,201,'Added',NULL,NULL),(54,2,174,'Added',NULL,NULL),(55,2,141,'Added',NULL,NULL),(56,2,114,'Added',NULL,NULL),(57,2,87,'Added',NULL,NULL),(58,2,20,'Added',NULL,NULL),(59,2,163,'Added',NULL,NULL),(60,2,178,'Added',NULL,NULL),(61,3,194,'Added',NULL,NULL),(62,3,124,'Added',NULL,NULL),(63,3,19,'Added',NULL,NULL),(64,3,109,'Added',NULL,NULL),(65,3,10,'Added',NULL,NULL),(66,3,37,'Added',NULL,NULL),(67,3,107,'Added',NULL,NULL),(68,3,156,'Added',NULL,NULL),(69,3,12,'Added',NULL,NULL),(70,3,47,'Added',NULL,NULL),(71,3,154,'Added',NULL,NULL),(72,3,76,'Added',NULL,NULL),(73,3,82,'Added',NULL,NULL),(74,3,54,'Added',NULL,NULL),(75,3,130,'Added',NULL,NULL),(76,4,23,'Added',NULL,NULL),(77,4,164,'Added',NULL,NULL),(78,4,143,'Added',NULL,NULL),(79,4,145,'Added',NULL,NULL),(80,4,121,'Added',NULL,NULL),(81,4,17,'Added',NULL,NULL),(82,4,77,'Added',NULL,NULL),(83,4,190,'Added',NULL,NULL); +INSERT INTO `civicrm_group_contact` (`id`, `group_id`, `contact_id`, `status`, `location_id`, `email_id`) VALUES (1,2,91,'Added',NULL,NULL),(2,2,133,'Added',NULL,NULL),(3,2,103,'Added',NULL,NULL),(4,2,73,'Added',NULL,NULL),(5,2,33,'Added',NULL,NULL),(6,2,85,'Added',NULL,NULL),(7,2,186,'Added',NULL,NULL),(8,2,175,'Added',NULL,NULL),(9,2,159,'Added',NULL,NULL),(10,2,23,'Added',NULL,NULL),(11,2,118,'Added',NULL,NULL),(12,2,173,'Added',NULL,NULL),(13,2,199,'Added',NULL,NULL),(14,2,82,'Added',NULL,NULL),(15,2,37,'Added',NULL,NULL),(16,2,166,'Added',NULL,NULL),(17,2,10,'Added',NULL,NULL),(18,2,196,'Added',NULL,NULL),(19,2,48,'Added',NULL,NULL),(20,2,92,'Added',NULL,NULL),(21,2,77,'Added',NULL,NULL),(22,2,151,'Added',NULL,NULL),(23,2,155,'Added',NULL,NULL),(24,2,104,'Added',NULL,NULL),(25,2,107,'Added',NULL,NULL),(26,2,84,'Added',NULL,NULL),(27,2,58,'Added',NULL,NULL),(28,2,55,'Added',NULL,NULL),(29,2,162,'Added',NULL,NULL),(30,2,193,'Added',NULL,NULL),(31,2,57,'Added',NULL,NULL),(32,2,20,'Added',NULL,NULL),(33,2,165,'Added',NULL,NULL),(34,2,127,'Added',NULL,NULL),(35,2,182,'Added',NULL,NULL),(36,2,19,'Added',NULL,NULL),(37,2,75,'Added',NULL,NULL),(38,2,88,'Added',NULL,NULL),(39,2,125,'Added',NULL,NULL),(40,2,60,'Added',NULL,NULL),(41,2,32,'Added',NULL,NULL),(42,2,53,'Added',NULL,NULL),(43,2,40,'Added',NULL,NULL),(44,2,145,'Added',NULL,NULL),(45,2,113,'Added',NULL,NULL),(46,2,61,'Added',NULL,NULL),(47,2,164,'Added',NULL,NULL),(48,2,6,'Added',NULL,NULL),(49,2,54,'Added',NULL,NULL),(50,2,35,'Added',NULL,NULL),(51,2,49,'Added',NULL,NULL),(52,2,158,'Added',NULL,NULL),(53,2,95,'Added',NULL,NULL),(54,2,71,'Added',NULL,NULL),(55,2,185,'Added',NULL,NULL),(56,2,172,'Added',NULL,NULL),(57,2,180,'Added',NULL,NULL),(58,2,112,'Added',NULL,NULL),(59,2,163,'Added',NULL,NULL),(60,2,2,'Added',NULL,NULL),(61,3,122,'Added',NULL,NULL),(62,3,21,'Added',NULL,NULL),(63,3,18,'Added',NULL,NULL),(64,3,124,'Added',NULL,NULL),(65,3,142,'Added',NULL,NULL),(66,3,126,'Added',NULL,NULL),(67,3,78,'Added',NULL,NULL),(68,3,76,'Added',NULL,NULL),(69,3,66,'Added',NULL,NULL),(70,3,154,'Added',NULL,NULL),(71,3,117,'Added',NULL,NULL),(72,3,39,'Added',NULL,NULL),(73,3,119,'Added',NULL,NULL),(74,3,67,'Added',NULL,NULL),(75,3,143,'Added',NULL,NULL),(76,4,91,'Added',NULL,NULL),(77,4,175,'Added',NULL,NULL),(78,4,37,'Added',NULL,NULL),(79,4,151,'Added',NULL,NULL),(80,4,162,'Added',NULL,NULL),(81,4,19,'Added',NULL,NULL),(82,4,40,'Added',NULL,NULL),(83,4,35,'Added',NULL,NULL); /*!40000 ALTER TABLE `civicrm_group_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -637,7 +637,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_line_item` WRITE; /*!40000 ALTER TABLE `civicrm_line_item` DISABLE KEYS */; -INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contribution_id`, `price_field_id`, `label`, `qty`, `unit_price`, `line_total`, `participant_count`, `price_field_value_id`, `financial_type_id`, `non_deductible_amount`, `tax_amount`) VALUES (1,'civicrm_contribution',1,1,1,'Contribution Amount',1.00,125.00,125.00,0,1,1,0.00,NULL),(2,'civicrm_contribution',2,2,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(3,'civicrm_contribution',3,3,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL),(4,'civicrm_contribution',4,4,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(5,'civicrm_contribution',5,5,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(6,'civicrm_contribution',6,6,1,'Contribution Amount',1.00,175.00,175.00,0,1,1,0.00,NULL),(7,'civicrm_contribution',7,7,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(8,'civicrm_contribution',8,8,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL),(9,'civicrm_contribution',9,9,1,'Contribution Amount',1.00,250.00,250.00,0,1,1,0.00,NULL),(10,'civicrm_contribution',10,10,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(11,'civicrm_contribution',11,11,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(12,'civicrm_contribution',12,12,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(13,'civicrm_contribution',13,13,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(16,'civicrm_membership',1,14,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(17,'civicrm_membership',3,16,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(18,'civicrm_membership',5,18,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(19,'civicrm_membership',7,20,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(20,'civicrm_membership',9,22,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(21,'civicrm_membership',10,23,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(22,'civicrm_membership',13,26,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(23,'civicrm_membership',15,28,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(24,'civicrm_membership',17,30,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(25,'civicrm_membership',19,32,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(26,'civicrm_membership',20,33,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(27,'civicrm_membership',21,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(28,'civicrm_membership',23,36,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(29,'civicrm_membership',25,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(30,'civicrm_membership',27,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(31,'civicrm_membership',29,42,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(32,'civicrm_membership',2,15,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(33,'civicrm_membership',4,17,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(34,'civicrm_membership',6,19,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(35,'civicrm_membership',8,21,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(36,'civicrm_membership',12,25,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(37,'civicrm_membership',14,27,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(38,'civicrm_membership',16,29,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(39,'civicrm_membership',18,31,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(40,'civicrm_membership',24,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(41,'civicrm_membership',26,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(42,'civicrm_membership',28,41,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(43,'civicrm_membership',30,43,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(44,'civicrm_membership',11,24,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(45,'civicrm_membership',22,35,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(47,'civicrm_participant',3,92,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(48,'civicrm_participant',6,76,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(49,'civicrm_participant',9,61,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(50,'civicrm_participant',12,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(51,'civicrm_participant',15,56,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(52,'civicrm_participant',18,46,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(53,'civicrm_participant',21,65,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(54,'civicrm_participant',24,84,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(55,'civicrm_participant',25,69,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(56,'civicrm_participant',28,54,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(57,'civicrm_participant',31,79,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(58,'civicrm_participant',34,67,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(59,'civicrm_participant',37,59,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(60,'civicrm_participant',40,64,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(61,'civicrm_participant',43,47,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(62,'civicrm_participant',46,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(63,'civicrm_participant',49,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(64,'civicrm_participant',50,50,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(65,'civicrm_participant',1,74,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(66,'civicrm_participant',4,60,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(67,'civicrm_participant',7,55,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(68,'civicrm_participant',10,80,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(69,'civicrm_participant',13,51,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(70,'civicrm_participant',16,73,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(71,'civicrm_participant',19,82,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(72,'civicrm_participant',22,72,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(73,'civicrm_participant',26,62,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(74,'civicrm_participant',29,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(75,'civicrm_participant',32,49,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(76,'civicrm_participant',35,70,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(77,'civicrm_participant',38,78,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(78,'civicrm_participant',41,45,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(79,'civicrm_participant',44,83,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(80,'civicrm_participant',47,89,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(81,'civicrm_participant',2,57,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(82,'civicrm_participant',5,87,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(83,'civicrm_participant',8,88,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(84,'civicrm_participant',11,86,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(85,'civicrm_participant',14,75,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(86,'civicrm_participant',17,63,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(87,'civicrm_participant',20,93,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(88,'civicrm_participant',23,58,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(89,'civicrm_participant',27,52,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(90,'civicrm_participant',30,66,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(91,'civicrm_participant',33,91,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(92,'civicrm_participant',36,71,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(93,'civicrm_participant',39,48,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(94,'civicrm_participant',42,53,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(95,'civicrm_participant',45,94,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(96,'civicrm_participant',48,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL); +INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contribution_id`, `price_field_id`, `label`, `qty`, `unit_price`, `line_total`, `participant_count`, `price_field_value_id`, `financial_type_id`, `non_deductible_amount`, `tax_amount`) VALUES (1,'civicrm_contribution',1,1,1,'Contribution Amount',1.00,125.00,125.00,0,1,1,0.00,NULL),(2,'civicrm_contribution',2,2,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(3,'civicrm_contribution',3,3,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL),(4,'civicrm_contribution',4,4,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(5,'civicrm_contribution',5,5,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(6,'civicrm_contribution',6,6,1,'Contribution Amount',1.00,175.00,175.00,0,1,1,0.00,NULL),(7,'civicrm_contribution',7,7,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL),(8,'civicrm_contribution',8,8,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL),(9,'civicrm_contribution',9,9,1,'Contribution Amount',1.00,250.00,250.00,0,1,1,0.00,NULL),(10,'civicrm_contribution',10,10,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL),(11,'civicrm_contribution',11,11,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(12,'civicrm_contribution',12,12,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(13,'civicrm_contribution',13,13,1,'Contribution Amount',1.00,200.00,200.00,0,1,1,0.00,NULL),(16,'civicrm_membership',1,14,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(17,'civicrm_membership',3,16,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(18,'civicrm_membership',7,20,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(19,'civicrm_membership',9,22,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(20,'civicrm_membership',13,26,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(21,'civicrm_membership',17,30,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(22,'civicrm_membership',19,32,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(23,'civicrm_membership',20,33,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(24,'civicrm_membership',21,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(25,'civicrm_membership',23,36,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(26,'civicrm_membership',27,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(27,'civicrm_membership',29,42,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL),(28,'civicrm_membership',2,15,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(29,'civicrm_membership',4,17,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(30,'civicrm_membership',5,18,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(31,'civicrm_membership',6,19,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(32,'civicrm_membership',8,21,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(33,'civicrm_membership',10,23,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(34,'civicrm_membership',12,25,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(35,'civicrm_membership',14,27,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(36,'civicrm_membership',15,28,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(37,'civicrm_membership',16,29,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(38,'civicrm_membership',18,31,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(39,'civicrm_membership',24,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(40,'civicrm_membership',25,38,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(41,'civicrm_membership',26,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(42,'civicrm_membership',28,41,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(43,'civicrm_membership',30,43,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL),(44,'civicrm_membership',11,24,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(45,'civicrm_membership',22,35,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL),(47,'civicrm_participant',3,56,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(48,'civicrm_participant',6,58,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(49,'civicrm_participant',9,94,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(50,'civicrm_participant',12,69,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(51,'civicrm_participant',15,91,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(52,'civicrm_participant',18,60,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(53,'civicrm_participant',21,73,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(54,'civicrm_participant',24,59,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(55,'civicrm_participant',25,51,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(56,'civicrm_participant',28,46,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(57,'civicrm_participant',31,67,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(58,'civicrm_participant',34,83,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(59,'civicrm_participant',37,65,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(60,'civicrm_participant',40,75,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(61,'civicrm_participant',43,49,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(62,'civicrm_participant',46,82,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(63,'civicrm_participant',49,81,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(64,'civicrm_participant',50,76,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL),(65,'civicrm_participant',1,84,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(66,'civicrm_participant',4,55,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(67,'civicrm_participant',7,47,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(68,'civicrm_participant',10,71,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(69,'civicrm_participant',13,62,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(70,'civicrm_participant',16,74,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(71,'civicrm_participant',19,80,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(72,'civicrm_participant',22,93,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(73,'civicrm_participant',26,85,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(74,'civicrm_participant',29,68,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(75,'civicrm_participant',32,86,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(76,'civicrm_participant',35,88,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(77,'civicrm_participant',38,90,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(78,'civicrm_participant',41,48,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(79,'civicrm_participant',44,54,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(80,'civicrm_participant',47,52,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL),(81,'civicrm_participant',2,61,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(82,'civicrm_participant',5,45,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(83,'civicrm_participant',8,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(84,'civicrm_participant',11,57,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(85,'civicrm_participant',14,70,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(86,'civicrm_participant',17,89,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(87,'civicrm_participant',20,53,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(88,'civicrm_participant',23,72,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(89,'civicrm_participant',27,50,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(90,'civicrm_participant',30,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(91,'civicrm_participant',33,77,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(92,'civicrm_participant',36,66,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(93,'civicrm_participant',39,63,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(94,'civicrm_participant',42,78,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(95,'civicrm_participant',45,64,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL),(96,'civicrm_participant',48,87,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL); /*!40000 ALTER TABLE `civicrm_line_item` ENABLE KEYS */; UNLOCK TABLES; @@ -647,7 +647,7 @@ 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,180,194,154,NULL,NULL,NULL,NULL,NULL),(2,181,195,155,NULL,NULL,NULL,NULL,NULL),(3,182,196,156,NULL,NULL,NULL,NULL,NULL); +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,173,206,157,NULL,NULL,NULL,NULL,NULL),(2,174,207,158,NULL,NULL,NULL,NULL,NULL),(3,175,208,159,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_loc_block` ENABLE KEYS */; UNLOCK TABLES; @@ -896,7 +896,7 @@ 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,168,1,'2018-09-19','2018-09-19','2020-09-18','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(2,38,2,'2018-09-18','2018-09-18','2019-09-17','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(3,188,1,'2018-09-17','2018-09-17','2020-09-16','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(4,45,2,'2018-09-16','2018-09-16','2019-09-15','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(5,157,1,'2016-08-18','2016-08-18','2018-08-17','Donation',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(6,97,2,'2018-09-14','2018-09-14','2019-09-13','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(7,80,1,'2018-09-13','2018-09-13','2020-09-12','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(8,74,2,'2018-09-12','2018-09-12','2019-09-11','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(9,150,1,'2018-09-11','2018-09-11','2020-09-10','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(10,68,1,'2016-07-09','2016-07-09','2018-07-08','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(11,179,3,'2018-09-09','2018-09-09',NULL,'Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(12,197,2,'2018-09-08','2018-09-08','2019-09-07','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(13,175,1,'2018-09-07','2018-09-07','2020-09-06','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(14,49,2,'2018-09-06','2018-09-06','2019-09-05','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(15,126,1,'2016-05-30','2016-05-30','2018-05-29','Check',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(16,119,2,'2018-09-04','2018-09-04','2019-09-03','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(17,88,1,'2018-09-03','2018-09-03','2020-09-02','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(18,94,2,'2018-09-02','2018-09-02','2019-09-01','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(19,56,1,'2018-09-01','2018-09-01','2020-08-31','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(20,86,1,'2016-04-20','2016-04-20','2018-04-19','Donation',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(21,109,1,'2018-08-30','2018-08-30','2020-08-29','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(22,138,3,'2018-08-29','2018-08-29',NULL,'Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(23,29,1,'2018-08-28','2018-08-28','2020-08-27','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(24,55,2,'2018-08-27','2018-08-27','2019-08-26','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(25,28,1,'2016-03-11','2016-03-11','2018-03-10','Donation',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(26,59,2,'2018-08-25','2018-08-25','2019-08-24','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(27,195,1,'2018-08-24','2018-08-24','2020-08-23','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(28,10,2,'2018-08-23','2018-08-23','2019-08-22','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(29,48,1,'2018-08-22','2018-08-22','2020-08-21','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(30,71,2,'2017-08-21','2017-08-21','2018-08-20','Payment',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL); +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,119,1,'2018-09-19','2018-09-19','2020-09-18','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(2,14,2,'2018-09-18','2018-09-18','2019-09-17','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(3,146,1,'2018-09-17','2018-09-17','2020-09-16','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(4,16,2,'2018-09-16','2018-09-16','2019-09-15','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(5,103,2,'2017-09-15','2017-09-15','2018-09-14','Check',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(6,9,2,'2018-09-14','2018-09-14','2019-09-13','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(7,157,1,'2018-09-13','2018-09-13','2020-09-12','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(8,19,2,'2018-09-12','2018-09-12','2019-09-11','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(9,44,1,'2018-09-11','2018-09-11','2020-09-10','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(10,115,2,'2017-09-10','2017-09-10','2018-09-09','Check',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(11,124,3,'2018-09-09','2018-09-09',NULL,'Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(12,20,2,'2018-09-08','2018-09-08','2019-09-07','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(13,93,1,'2018-09-07','2018-09-07','2020-09-06','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(14,62,2,'2018-09-06','2018-09-06','2019-09-05','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(15,54,2,'2017-09-05','2017-09-05','2018-09-04','Donation',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(16,60,2,'2018-09-04','2018-09-04','2019-09-03','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(17,37,1,'2018-09-03','2018-09-03','2020-09-02','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(18,170,2,'2018-09-02','2018-09-02','2019-09-01','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(19,10,1,'2018-09-01','2018-09-01','2020-08-31','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(20,89,1,'2016-04-20','2016-04-20','2018-04-19','Donation',3,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(21,113,1,'2018-08-30','2018-08-30','2020-08-29','Donation',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(22,105,3,'2018-08-29','2018-08-29',NULL,'Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(23,173,1,'2018-08-28','2018-08-28','2020-08-27','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(24,77,2,'2018-08-27','2018-08-27','2019-08-26','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(25,6,2,'2017-08-26','2017-08-26','2018-08-25','Donation',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(26,184,2,'2018-08-25','2018-08-25','2019-08-24','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(27,65,1,'2018-08-24','2018-08-24','2020-08-23','Payment',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(28,58,2,'2018-08-23','2018-08-23','2019-08-22','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(29,73,1,'2018-08-22','2018-08-22','2020-08-21','Check',1,NULL,NULL,NULL,NULL,0,0,NULL,NULL),(30,71,2,'2017-08-21','2017-08-21','2018-08-20','Payment',4,NULL,NULL,NULL,NULL,0,0,NULL,NULL); /*!40000 ALTER TABLE `civicrm_membership` ENABLE KEYS */; UNLOCK TABLES; @@ -916,7 +916,7 @@ 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,28,1,'2018-08-23','2019-08-22',10,'2018-09-19',2,NULL),(2,25,3,'2016-03-11','2018-03-10',28,'2018-09-19',1,NULL),(3,23,1,'2018-08-28','2020-08-27',29,'2018-09-19',1,NULL),(4,2,1,'2018-09-18','2019-09-17',38,'2018-09-19',2,NULL),(5,4,1,'2018-09-16','2019-09-15',45,'2018-09-19',2,NULL),(6,29,1,'2018-08-22','2020-08-21',48,'2018-09-19',1,NULL),(7,14,1,'2018-09-06','2019-09-05',49,'2018-09-19',2,NULL),(8,24,1,'2018-08-27','2019-08-26',55,'2018-09-19',2,NULL),(9,19,1,'2018-09-01','2020-08-31',56,'2018-09-19',1,NULL),(10,26,1,'2018-08-25','2019-08-24',59,'2018-09-19',2,NULL),(11,10,3,'2016-07-09','2018-07-08',68,'2018-09-19',1,NULL),(12,30,4,'2017-08-21','2018-08-20',71,'2018-09-19',2,NULL),(13,8,1,'2018-09-12','2019-09-11',74,'2018-09-19',2,NULL),(14,7,1,'2018-09-13','2020-09-12',80,'2018-09-19',1,NULL),(15,20,3,'2016-04-20','2018-04-19',86,'2018-09-19',1,NULL),(16,17,1,'2018-09-03','2020-09-02',88,'2018-09-19',1,NULL),(17,18,1,'2018-09-02','2019-09-01',94,'2018-09-19',2,NULL),(18,6,1,'2018-09-14','2019-09-13',97,'2018-09-19',2,NULL),(19,21,1,'2018-08-30','2020-08-29',109,'2018-09-19',1,NULL),(20,16,1,'2018-09-04','2019-09-03',119,'2018-09-19',2,NULL),(21,15,3,'2016-05-30','2018-05-29',126,'2018-09-19',1,NULL),(22,22,1,'2018-08-29',NULL,138,'2018-09-19',3,NULL),(23,9,1,'2018-09-11','2020-09-10',150,'2018-09-19',1,NULL),(24,5,3,'2016-08-18','2018-08-17',157,'2018-09-19',1,NULL),(25,1,1,'2018-09-19','2020-09-18',168,'2018-09-19',1,NULL),(26,13,1,'2018-09-07','2020-09-06',175,'2018-09-19',1,NULL),(27,11,1,'2018-09-09',NULL,179,'2018-09-19',3,NULL),(28,3,1,'2018-09-17','2020-09-16',188,'2018-09-19',1,NULL),(29,27,1,'2018-08-24','2020-08-23',195,'2018-09-19',1,NULL),(30,12,1,'2018-09-08','2019-09-07',197,'2018-09-19',2,NULL); +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,25,4,'2017-08-26','2018-08-25',6,'2018-09-19',2,NULL),(2,6,1,'2018-09-14','2019-09-13',9,'2018-09-19',2,NULL),(3,19,1,'2018-09-01','2020-08-31',10,'2018-09-19',1,NULL),(4,2,1,'2018-09-18','2019-09-17',14,'2018-09-19',2,NULL),(5,4,1,'2018-09-16','2019-09-15',16,'2018-09-19',2,NULL),(6,8,1,'2018-09-12','2019-09-11',19,'2018-09-19',2,NULL),(7,12,1,'2018-09-08','2019-09-07',20,'2018-09-19',2,NULL),(8,17,1,'2018-09-03','2020-09-02',37,'2018-09-19',1,NULL),(9,9,1,'2018-09-11','2020-09-10',44,'2018-09-19',1,NULL),(10,15,4,'2017-09-05','2018-09-04',54,'2018-09-19',2,NULL),(11,28,1,'2018-08-23','2019-08-22',58,'2018-09-19',2,NULL),(12,16,1,'2018-09-04','2019-09-03',60,'2018-09-19',2,NULL),(13,14,1,'2018-09-06','2019-09-05',62,'2018-09-19',2,NULL),(14,27,1,'2018-08-24','2020-08-23',65,'2018-09-19',1,NULL),(15,30,4,'2017-08-21','2018-08-20',71,'2018-09-19',2,NULL),(16,29,1,'2018-08-22','2020-08-21',73,'2018-09-19',1,NULL),(17,24,1,'2018-08-27','2019-08-26',77,'2018-09-19',2,NULL),(18,20,3,'2016-04-20','2018-04-19',89,'2018-09-19',1,NULL),(19,13,1,'2018-09-07','2020-09-06',93,'2018-09-19',1,NULL),(20,5,4,'2017-09-15','2018-09-14',103,'2018-09-19',2,NULL),(21,22,1,'2018-08-29',NULL,105,'2018-09-19',3,NULL),(22,21,1,'2018-08-30','2020-08-29',113,'2018-09-19',1,NULL),(23,10,4,'2017-09-10','2018-09-09',115,'2018-09-19',2,NULL),(24,1,1,'2018-09-19','2020-09-18',119,'2018-09-19',1,NULL),(25,11,1,'2018-09-09',NULL,124,'2018-09-19',3,NULL),(26,3,1,'2018-09-17','2020-09-16',146,'2018-09-19',1,NULL),(27,7,1,'2018-09-13','2020-09-12',157,'2018-09-19',1,NULL),(28,18,1,'2018-09-02','2019-09-01',170,'2018-09-19',2,NULL),(29,23,1,'2018-08-28','2020-08-27',173,'2018-09-19',1,NULL),(30,26,1,'2018-08-25','2019-08-24',184,'2018-09-19',2,NULL); /*!40000 ALTER TABLE `civicrm_membership_log` ENABLE KEYS */; UNLOCK TABLES; @@ -986,7 +986,7 @@ 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`, `modified_date`, `subject`, `privacy`) VALUES (1,'civicrm_contact',84,'Contact the Commissioner of Charities',1,'2018-03-23',NULL,'0'),(2,'civicrm_contact',24,'Arrange for cricket match with Sunil Gavaskar',1,'2018-02-27',NULL,'0'),(3,'civicrm_contact',83,'Connect for presentation',1,'2017-10-26',NULL,'0'),(4,'civicrm_contact',145,'Contact the Commissioner of Charities',1,'2018-03-07',NULL,'0'),(5,'civicrm_contact',83,'Reminder screening of \"Black\" on next Friday',1,'2018-08-22',NULL,'0'),(6,'civicrm_contact',6,'Reminder screening of \"Black\" on next Friday',1,'2018-04-15',NULL,'0'),(7,'civicrm_contact',116,'Send newsletter for April 2005',1,'2017-10-24',NULL,'0'),(8,'civicrm_contact',195,'Arrange for cricket match with Sunil Gavaskar',1,'2018-03-17',NULL,'0'),(9,'civicrm_contact',145,'Reminder screening of \"Black\" on next Friday',1,'2018-07-17',NULL,'0'),(10,'civicrm_contact',104,'Reminder screening of \"Black\" on next Friday',1,'2018-09-06',NULL,'0'),(11,'civicrm_contact',75,'Organize the Terry Fox run',1,'2018-02-15',NULL,'0'),(12,'civicrm_contact',91,'Chart out route map for next 10k run',1,'2018-04-03',NULL,'0'),(13,'civicrm_contact',73,'Organize the Terry Fox run',1,'2017-10-10',NULL,'0'),(14,'civicrm_contact',196,'Reminder screening of \"Black\" on next Friday',1,'2018-08-25',NULL,'0'),(15,'civicrm_contact',125,'Send newsletter for April 2005',1,'2018-03-11',NULL,'0'),(16,'civicrm_contact',101,'Organize the Terry Fox run',1,'2018-05-25',NULL,'0'),(17,'civicrm_contact',38,'Get the registration done for NGO status',1,'2017-12-04',NULL,'0'),(18,'civicrm_contact',35,'Send reminder for annual dinner',1,'2018-09-12',NULL,'0'),(19,'civicrm_contact',15,'Chart out route map for next 10k run',1,'2018-01-04',NULL,'0'),(20,'civicrm_contact',17,'Arrange for cricket match with Sunil Gavaskar',1,'2018-07-02',NULL,'0'); +INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `modified_date`, `subject`, `privacy`) VALUES (1,'civicrm_contact',4,'Chart out route map for next 10k run',1,'2017-10-17',NULL,'0'),(2,'civicrm_contact',6,'Connect for presentation',1,'2017-11-25',NULL,'0'),(3,'civicrm_contact',187,'Connect for presentation',1,'2018-05-04',NULL,'0'),(4,'civicrm_contact',159,'Get the registration done for NGO status',1,'2018-02-08',NULL,'0'),(5,'civicrm_contact',61,'Reminder screening of \"Black\" on next Friday',1,'2017-10-21',NULL,'0'),(6,'civicrm_contact',11,'Invite members for the Steve Prefontaine 10k dream run',1,'2018-03-14',NULL,'0'),(7,'civicrm_contact',66,'Connect for presentation',1,'2017-11-23',NULL,'0'),(8,'civicrm_contact',27,'Connect for presentation',1,'2018-02-15',NULL,'0'),(9,'civicrm_contact',178,'Reminder screening of \"Black\" on next Friday',1,'2018-07-01',NULL,'0'),(10,'civicrm_contact',126,'Chart out route map for next 10k run',1,'2017-12-03',NULL,'0'),(11,'civicrm_contact',72,'Send reminder for annual dinner',1,'2018-04-13',NULL,'0'),(12,'civicrm_contact',45,'Invite members for the Steve Prefontaine 10k dream run',1,'2018-07-04',NULL,'0'),(13,'civicrm_contact',10,'Chart out route map for next 10k run',1,'2018-05-30',NULL,'0'),(14,'civicrm_contact',144,'Chart out route map for next 10k run',1,'2018-07-16',NULL,'0'),(15,'civicrm_contact',182,'Chart out route map for next 10k run',1,'2018-02-24',NULL,'0'),(16,'civicrm_contact',31,'Arrange collection of funds from members',1,'2018-05-25',NULL,'0'),(17,'civicrm_contact',11,'Invite members for the Steve Prefontaine 10k dream run',1,'2017-10-18',NULL,'0'),(18,'civicrm_contact',117,'Get the registration done for NGO status',1,'2017-11-20',NULL,'0'),(19,'civicrm_contact',38,'Arrange for cricket match with Sunil Gavaskar',1,'2018-06-01',NULL,'0'),(20,'civicrm_contact',97,'Connect for presentation',1,'2018-09-15',NULL,'0'); /*!40000 ALTER TABLE `civicrm_note` ENABLE KEYS */; UNLOCK TABLES; @@ -1025,7 +1025,7 @@ 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`) VALUES (1,119,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(2,46,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(3,187,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),(4,53,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(5,168,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(6,124,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),(7,41,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(8,169,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(9,54,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),(10,138,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(11,165,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(12,134,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),(13,23,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(14,123,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(15,43,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),(16,117,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(17,59,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(18,11,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),(19,151,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(20,196,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(21,65,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),(22,115,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(23,47,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(24,156,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),(25,102,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),(26,57,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(27,24,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(28,37,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),(29,145,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(30,69,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(31,136,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),(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),(33,173,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(34,76,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),(35,107,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(36,112,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(37,50,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),(38,135,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(39,15,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(40,61,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),(41,2,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(42,34,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',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),(44,152,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(45,199,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(46,171,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),(47,170,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(48,161,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(49,78,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),(50,22,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); +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`) VALUES (1,150,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(2,80,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(3,64,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),(4,62,1,4,'4','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(5,5,2,1,'1','2008-01-10 00:00:00','Check','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(6,72,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),(7,24,1,3,'3','2009-07-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(8,193,2,4,'4','2009-03-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(9,201,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),(10,115,1,2,'2','2008-02-01 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(11,67,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(12,107,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),(13,88,1,1,'2','2008-06-04 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(14,111,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(15,189,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),(16,121,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(17,182,2,2,'3','2008-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(18,78,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),(19,135,1,2,'1','2008-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(20,58,2,4,'1','2009-01-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(21,119,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),(22,198,1,2,'3','2009-10-21 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(23,116,2,4,'1','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(24,73,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),(25,47,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),(26,151,1,1,'1','2009-01-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(27,40,2,2,'2','2008-05-07 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(28,11,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),(29,106,1,4,'4','2009-12-13 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(30,132,2,1,'1','2009-12-14 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(31,100,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),(32,160,1,3,'3','2009-07-21 00:00:00','Check','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(33,126,2,4,'4','2009-03-07 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(34,149,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),(35,174,1,2,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(36,95,2,3,'3','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(37,94,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),(38,184,1,1,'2','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(39,90,2,2,'3','2008-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(40,122,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),(41,30,1,4,'2','2009-01-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(42,131,2,2,'3','2009-12-15 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(43,34,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),(44,61,1,2,'1','2009-12-13 00:00:00','Direct Transfer','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(45,93,2,4,'1','2009-01-10 00:00:00','Direct Transfer','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(46,145,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),(47,50,1,2,'3','2009-10-21 00:00:00','Credit Card','Single',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(48,171,2,4,'1','2009-12-10 00:00:00','Credit Card','Soprano',0,0,50.00,NULL,NULL,'USD',NULL,NULL,NULL,NULL,NULL),(49,143,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),(50,125,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); /*!40000 ALTER TABLE `civicrm_participant` ENABLE KEYS */; UNLOCK TABLES; @@ -1035,7 +1035,7 @@ 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,41,45),(2,18,46),(3,43,47),(4,39,48),(5,32,49),(6,50,50),(7,13,51),(8,27,52),(9,42,53),(10,28,54),(11,7,55),(12,15,56),(13,2,57),(14,23,58),(15,37,59),(16,4,60),(17,9,61),(18,26,62),(19,17,63),(20,40,64),(21,21,65),(22,30,66),(23,34,67),(24,49,68),(25,25,69),(26,35,70),(27,36,71),(28,22,72),(29,16,73),(30,1,74),(31,14,75),(32,6,76),(33,12,77),(34,38,78),(35,31,79),(36,10,80),(37,29,81),(38,19,82),(39,44,83),(40,24,84),(41,48,85),(42,11,86),(43,5,87),(44,8,88),(45,47,89),(46,46,90),(47,33,91),(48,3,92),(49,20,93),(50,45,94); +INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES (1,5,45),(2,28,46),(3,7,47),(4,41,48),(5,43,49),(6,27,50),(7,25,51),(8,47,52),(9,20,53),(10,44,54),(11,4,55),(12,3,56),(13,11,57),(14,6,58),(15,24,59),(16,18,60),(17,2,61),(18,13,62),(19,39,63),(20,45,64),(21,37,65),(22,36,66),(23,31,67),(24,29,68),(25,12,69),(26,14,70),(27,10,71),(28,23,72),(29,21,73),(30,16,74),(31,40,75),(32,50,76),(33,33,77),(34,42,78),(35,30,79),(36,19,80),(37,49,81),(38,46,82),(39,34,83),(40,1,84),(41,26,85),(42,32,86),(43,48,87),(44,35,88),(45,17,89),(46,38,90),(47,15,91),(48,8,92),(49,22,93),(50,9,94); /*!40000 ALTER TABLE `civicrm_participant_payment` ENABLE KEYS */; UNLOCK TABLES; @@ -1083,7 +1083,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,59,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); +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,73,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; @@ -1112,7 +1112,7 @@ 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,74,1,1,0,NULL,'(662) 789-7975',NULL,'6627897975',1),(2,176,1,1,0,NULL,'362-1547',NULL,'3621547',1),(3,176,1,0,0,NULL,'(692) 763-5060',NULL,'6927635060',1),(4,97,1,1,0,NULL,'(847) 537-6938',NULL,'8475376938',2),(5,113,1,1,0,NULL,'472-6947',NULL,'4726947',1),(6,35,1,1,0,NULL,'866-3913',NULL,'8663913',1),(7,15,1,1,0,NULL,'(459) 716-3120',NULL,'4597163120',2),(8,110,1,1,0,NULL,'(332) 257-6294',NULL,'3322576294',2),(9,110,1,0,0,NULL,'663-5363',NULL,'6635363',1),(10,36,1,1,0,NULL,'418-2141',NULL,'4182141',2),(11,36,1,0,0,NULL,'298-2189',NULL,'2982189',1),(12,116,1,1,0,NULL,'(389) 590-1488',NULL,'3895901488',2),(13,116,1,0,0,NULL,'673-7756',NULL,'6737756',2),(14,16,1,1,0,NULL,'(472) 245-5860',NULL,'4722455860',1),(15,177,1,1,0,NULL,'355-4155',NULL,'3554155',2),(16,161,1,1,0,NULL,'871-3492',NULL,'8713492',1),(17,161,1,0,0,NULL,'761-9835',NULL,'7619835',2),(18,167,1,1,0,NULL,'(852) 316-5491',NULL,'8523165491',1),(19,167,1,0,0,NULL,'330-8898',NULL,'3308898',1),(20,184,1,1,0,NULL,'(570) 763-1978',NULL,'5707631978',2),(21,65,1,1,0,NULL,'881-8550',NULL,'8818550',2),(22,185,1,1,0,NULL,'504-8837',NULL,'5048837',1),(23,185,1,0,0,NULL,'(792) 827-2019',NULL,'7928272019',2),(24,138,1,1,0,NULL,'684-1837',NULL,'6841837',1),(25,94,1,1,0,NULL,'(233) 593-2171',NULL,'2335932171',1),(26,121,1,1,0,NULL,'(494) 378-3443',NULL,'4943783443',2),(27,134,1,1,0,NULL,'404-3094',NULL,'4043094',1),(28,134,1,0,0,NULL,'(868) 270-4395',NULL,'8682704395',2),(29,11,1,1,0,NULL,'706-5737',NULL,'7065737',2),(30,198,1,1,0,NULL,'(474) 276-7420',NULL,'4742767420',1),(31,198,1,0,0,NULL,'326-9903',NULL,'3269903',1),(32,17,1,1,0,NULL,'(208) 562-3475',NULL,'2085623475',2),(33,17,1,0,0,NULL,'(800) 210-8880',NULL,'8002108880',1),(34,71,1,1,0,NULL,'(401) 790-4130',NULL,'4017904130',1),(35,71,1,0,0,NULL,'203-4785',NULL,'2034785',2),(36,157,1,1,0,NULL,'808-5438',NULL,'8085438',1),(37,93,1,1,0,NULL,'(224) 816-6701',NULL,'2248166701',1),(38,149,1,1,0,NULL,'(287) 861-3692',NULL,'2878613692',1),(39,172,1,1,0,NULL,'749-8367',NULL,'7498367',1),(40,57,1,1,0,NULL,'729-9258',NULL,'7299258',2),(41,57,1,0,0,NULL,'(458) 644-3943',NULL,'4586443943',2),(42,24,1,1,0,NULL,'818-8835',NULL,'8188835',1),(43,119,1,1,0,NULL,'316-4928',NULL,'3164928',1),(44,84,1,1,0,NULL,'(534) 697-8475',NULL,'5346978475',1),(45,84,1,0,0,NULL,'(621) 781-9342',NULL,'6217819342',2),(46,162,1,1,0,NULL,'741-5218',NULL,'7415218',1),(47,162,1,0,0,NULL,'394-3071',NULL,'3943071',1),(48,40,1,1,0,NULL,'714-9483',NULL,'7149483',1),(49,190,1,1,0,NULL,'(229) 284-4438',NULL,'2292844438',2),(50,190,1,0,0,NULL,'597-8998',NULL,'5978998',2),(51,29,1,1,0,NULL,'450-6050',NULL,'4506050',1),(52,201,1,1,0,NULL,'538-3336',NULL,'5383336',1),(53,201,1,0,0,NULL,'240-5085',NULL,'2405085',1),(54,141,1,1,0,NULL,'798-1000',NULL,'7981000',2),(55,114,1,1,0,NULL,'271-6561',NULL,'2716561',1),(56,114,1,0,0,NULL,'(349) 204-7050',NULL,'3492047050',2),(57,163,1,1,0,NULL,'(621) 499-4808',NULL,'6214994808',1),(58,178,1,1,0,NULL,'326-8294',NULL,'3268294',2),(59,19,1,1,0,NULL,'532-3352',NULL,'5323352',2),(60,19,1,0,0,NULL,'572-9281',NULL,'5729281',2),(61,109,1,1,0,NULL,'723-2637',NULL,'7232637',2),(62,10,1,1,0,NULL,'448-2362',NULL,'4482362',2),(63,10,1,0,0,NULL,'608-3461',NULL,'6083461',1),(64,156,1,1,0,NULL,'888-9347',NULL,'8889347',2),(65,47,1,1,0,NULL,'294-6361',NULL,'2946361',2),(66,47,1,0,0,NULL,'250-9324',NULL,'2509324',2),(67,76,1,1,0,NULL,'370-3733',NULL,'3703733',1),(68,76,1,0,0,NULL,'380-1819',NULL,'3801819',1),(69,82,1,1,0,NULL,'(360) 859-1951',NULL,'3608591951',2),(70,82,1,0,0,NULL,'(217) 542-8873',NULL,'2175428873',1),(71,54,1,1,0,NULL,'496-7933',NULL,'4967933',2),(72,54,1,0,0,NULL,'(352) 204-7394',NULL,'3522047394',1),(73,140,1,1,0,NULL,'745-8685',NULL,'7458685',2),(74,148,1,1,0,NULL,'800-4081',NULL,'8004081',1),(75,199,1,1,0,NULL,'692-3158',NULL,'6923158',1),(76,199,1,0,0,NULL,'778-4208',NULL,'7784208',2),(77,67,1,1,0,NULL,'533-5114',NULL,'5335114',2),(78,67,1,0,0,NULL,'430-9134',NULL,'4309134',1),(79,6,1,1,0,NULL,'(716) 419-9993',NULL,'7164199993',2),(80,60,1,1,0,NULL,'779-7784',NULL,'7797784',1),(81,60,1,0,0,NULL,'(479) 649-5968',NULL,'4796495968',2),(82,28,1,1,0,NULL,'(687) 202-7461',NULL,'6872027461',1),(83,28,1,0,0,NULL,'712-2213',NULL,'7122213',2),(84,147,1,1,0,NULL,'(381) 316-2043',NULL,'3813162043',2),(85,147,1,0,0,NULL,'264-4220',NULL,'2644220',2),(86,63,1,1,0,NULL,'569-4044',NULL,'5694044',2),(87,63,1,0,0,NULL,'246-2438',NULL,'2462438',2),(88,187,1,1,0,NULL,'836-4811',NULL,'8364811',2),(89,187,1,0,0,NULL,'(422) 709-5963',NULL,'4227095963',1),(90,98,1,1,0,NULL,'607-2425',NULL,'6072425',1),(91,98,1,0,0,NULL,'541-4632',NULL,'5414632',1),(92,197,1,1,0,NULL,'(540) 214-1338',NULL,'5402141338',1),(93,197,1,0,0,NULL,'(270) 499-9908',NULL,'2704999908',1),(94,72,1,1,0,NULL,'351-3934',NULL,'3513934',2),(95,49,1,1,0,NULL,'536-3255',NULL,'5363255',1),(96,132,1,1,0,NULL,'(833) 677-3914',NULL,'8336773914',2),(97,132,1,0,0,NULL,'(887) 413-2942',NULL,'8874132942',1),(98,38,1,1,0,NULL,'(588) 318-6711',NULL,'5883186711',1),(99,122,1,1,0,NULL,'(826) 246-9522',NULL,'8262469522',1),(100,53,1,1,0,NULL,'(307) 240-7642',NULL,'3072407642',1),(101,53,1,0,0,NULL,'373-6093',NULL,'3736093',2),(102,91,1,1,0,NULL,'430-4836',NULL,'4304836',2),(103,91,1,0,0,NULL,'(687) 533-9307',NULL,'6875339307',1),(104,111,1,1,0,NULL,'724-1040',NULL,'7241040',1),(105,25,1,1,0,NULL,'(773) 434-3017',NULL,'7734343017',1),(106,25,1,0,0,NULL,'804-5809',NULL,'8045809',2),(107,188,1,1,0,NULL,'(468) 805-3339',NULL,'4688053339',1),(108,100,1,1,0,NULL,'774-8281',NULL,'7748281',2),(109,100,1,0,0,NULL,'(628) 604-4465',NULL,'6286044465',1),(110,64,1,1,0,NULL,'747-5955',NULL,'7475955',1),(111,30,1,1,0,NULL,'380-2289',NULL,'3802289',1),(112,169,1,1,0,NULL,'(754) 540-8608',NULL,'7545408608',1),(113,169,1,0,0,NULL,'(725) 464-1040',NULL,'7254641040',2),(114,68,1,1,0,NULL,'534-3526',NULL,'5343526',1),(115,195,1,1,0,NULL,'403-4626',NULL,'4034626',1),(116,120,1,1,0,NULL,'860-6135',NULL,'8606135',1),(117,81,1,1,0,NULL,'(616) 537-6564',NULL,'6165376564',1),(118,9,1,1,0,NULL,'(782) 365-3784',NULL,'7823653784',2),(119,99,1,1,0,NULL,'338-1262',NULL,'3381262',2),(120,135,1,1,0,NULL,'(384) 845-9681',NULL,'3848459681',1),(121,112,1,1,0,NULL,'360-9322',NULL,'3609322',2),(122,112,1,0,0,NULL,'(583) 734-1290',NULL,'5837341290',1),(123,66,1,1,0,NULL,'669-3393',NULL,'6693393',1),(124,108,1,1,0,NULL,'(865) 743-7591',NULL,'8657437591',1),(125,108,1,0,0,NULL,'(737) 310-3423',NULL,'7373103423',2),(126,106,1,1,0,NULL,'(888) 407-9647',NULL,'8884079647',1),(127,106,1,0,0,NULL,'(757) 824-8715',NULL,'7578248715',1),(128,5,1,1,0,NULL,'236-2124',NULL,'2362124',1),(129,5,1,0,0,NULL,'750-5407',NULL,'7505407',2),(130,96,1,1,0,NULL,'(599) 627-9142',NULL,'5996279142',1),(131,92,1,1,0,NULL,'(630) 262-7034',NULL,'6302627034',1),(132,92,1,0,0,NULL,'699-5729',NULL,'6995729',2),(133,8,1,1,0,NULL,'(840) 651-3956',NULL,'8406513956',1),(134,8,1,0,0,NULL,'(227) 541-9069',NULL,'2275419069',1),(135,173,1,1,0,NULL,'(201) 669-1279',NULL,'2016691279',1),(136,137,1,1,0,NULL,'(883) 515-9839',NULL,'8835159839',1),(137,137,1,0,0,NULL,'(277) 655-3382',NULL,'2776553382',1),(138,165,1,1,0,NULL,'(640) 420-4463',NULL,'6404204463',1),(139,151,1,1,0,NULL,'(268) 601-2143',NULL,'2686012143',1),(140,151,1,0,0,NULL,'690-6145',NULL,'6906145',2),(141,104,1,1,0,NULL,'(804) 689-2602',NULL,'8046892602',2),(142,88,1,1,0,NULL,'319-4861',NULL,'3194861',2),(143,88,1,0,0,NULL,'373-6660',NULL,'3736660',2),(144,78,1,1,0,NULL,'(630) 561-4739',NULL,'6305614739',2),(145,193,1,1,0,NULL,'800-3304',NULL,'8003304',1),(146,153,1,1,0,NULL,'(884) 454-2741',NULL,'8844542741',1),(147,80,1,1,0,NULL,'612-7689',NULL,'6127689',1),(148,80,1,0,0,NULL,'(387) 662-1368',NULL,'3876621368',2),(149,128,1,1,0,NULL,'(280) 214-3210',NULL,'2802143210',1),(150,61,1,1,0,NULL,'333-6400',NULL,'3336400',2),(151,61,1,0,0,NULL,'435-1979',NULL,'4351979',2),(152,27,1,1,0,NULL,'237-8513',NULL,'2378513',2),(153,27,1,0,0,NULL,'694-9855',NULL,'6949855',2),(154,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),(155,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),(156,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); +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,91,1,1,0,NULL,'(368) 601-7461',NULL,'3686017461',1),(2,91,1,0,0,NULL,'618-2494',NULL,'6182494',2),(3,33,1,1,0,NULL,'(547) 249-5891',NULL,'5472495891',1),(4,33,1,0,0,NULL,'(679) 788-2136',NULL,'6797882136',2),(5,186,1,1,0,NULL,'(409) 734-5337',NULL,'4097345337',2),(6,186,1,0,0,NULL,'(785) 772-5053',NULL,'7857725053',2),(7,23,1,1,0,NULL,'616-7366',NULL,'6167366',1),(8,199,1,1,0,NULL,'645-6981',NULL,'6456981',1),(9,199,1,0,0,NULL,'360-6664',NULL,'3606664',2),(10,82,1,1,0,NULL,'(687) 718-3350',NULL,'6877183350',2),(11,82,1,0,0,NULL,'(743) 785-3097',NULL,'7437853097',2),(12,37,1,1,0,NULL,'472-7162',NULL,'4727162',2),(13,37,1,0,0,NULL,'(328) 843-2970',NULL,'3288432970',1),(14,166,1,1,0,NULL,'(792) 509-6770',NULL,'7925096770',1),(15,10,1,1,0,NULL,'(878) 539-2571',NULL,'8785392571',1),(16,10,1,0,0,NULL,'317-2390',NULL,'3172390',1),(17,196,1,1,0,NULL,'294-4904',NULL,'2944904',1),(18,196,1,0,0,NULL,'893-5335',NULL,'8935335',1),(19,48,1,1,0,NULL,'(516) 280-6334',NULL,'5162806334',2),(20,48,1,0,0,NULL,'(423) 261-8416',NULL,'4232618416',1),(21,92,1,1,0,NULL,'641-9539',NULL,'6419539',2),(22,155,1,1,0,NULL,'767-6761',NULL,'7676761',1),(23,155,1,0,0,NULL,'524-2181',NULL,'5242181',1),(24,107,1,1,0,NULL,'341-1716',NULL,'3411716',2),(25,84,1,1,0,NULL,'344-3237',NULL,'3443237',2),(26,84,1,0,0,NULL,'(368) 475-5379',NULL,'3684755379',2),(27,58,1,1,0,NULL,'(307) 455-4501',NULL,'3074554501',2),(28,55,1,1,0,NULL,'(735) 750-3309',NULL,'7357503309',1),(29,55,1,0,0,NULL,'348-5343',NULL,'3485343',2),(30,162,1,1,0,NULL,'258-3378',NULL,'2583378',1),(31,162,1,0,0,NULL,'763-1341',NULL,'7631341',1),(32,193,1,1,0,NULL,'(268) 683-1066',NULL,'2686831066',2),(33,193,1,0,0,NULL,'(377) 226-9778',NULL,'3772269778',2),(34,20,1,1,0,NULL,'694-7243',NULL,'6947243',2),(35,127,1,1,0,NULL,'294-5130',NULL,'2945130',2),(36,127,1,0,0,NULL,'879-6313',NULL,'8796313',2),(37,182,1,1,0,NULL,'358-6235',NULL,'3586235',2),(38,19,1,1,0,NULL,'(237) 790-8556',NULL,'2377908556',1),(39,75,1,1,0,NULL,'421-6247',NULL,'4216247',2),(40,125,1,1,0,NULL,'(276) 727-4574',NULL,'2767274574',1),(41,32,1,1,0,NULL,'(652) 857-6788',NULL,'6528576788',1),(42,53,1,1,0,NULL,'284-9933',NULL,'2849933',1),(43,145,1,1,0,NULL,'(586) 529-9690',NULL,'5865299690',1),(44,61,1,1,0,NULL,'(640) 784-2109',NULL,'6407842109',2),(45,61,1,0,0,NULL,'551-7737',NULL,'5517737',2),(46,6,1,1,0,NULL,'777-1689',NULL,'7771689',1),(47,6,1,0,0,NULL,'477-2554',NULL,'4772554',1),(48,35,1,1,0,NULL,'(393) 696-5189',NULL,'3936965189',2),(49,49,1,1,0,NULL,'690-4483',NULL,'6904483',2),(50,49,1,0,0,NULL,'519-8917',NULL,'5198917',1),(51,95,1,1,0,NULL,'250-3226',NULL,'2503226',2),(52,71,1,1,0,NULL,'(597) 719-6974',NULL,'5977196974',1),(53,71,1,0,0,NULL,'642-2669',NULL,'6422669',1),(54,185,1,1,0,NULL,'(880) 872-6068',NULL,'8808726068',2),(55,172,1,1,0,NULL,'(291) 834-9983',NULL,'2918349983',1),(56,172,1,0,0,NULL,'(538) 358-7229',NULL,'5383587229',2),(57,180,1,1,0,NULL,'(873) 473-7123',NULL,'8734737123',2),(58,180,1,0,0,NULL,'759-2223',NULL,'7592223',2),(59,112,1,1,0,NULL,'257-4579',NULL,'2574579',1),(60,2,1,1,0,NULL,'(539) 553-7923',NULL,'5395537923',1),(61,2,1,0,0,NULL,'649-7221',NULL,'6497221',2),(62,122,1,1,0,NULL,'510-8396',NULL,'5108396',1),(63,122,1,0,0,NULL,'444-7245',NULL,'4447245',2),(64,21,1,1,0,NULL,'860-3518',NULL,'8603518',2),(65,21,1,0,0,NULL,'790-6248',NULL,'7906248',2),(66,124,1,1,0,NULL,'476-3621',NULL,'4763621',2),(67,124,1,0,0,NULL,'783-5853',NULL,'7835853',1),(68,142,1,1,0,NULL,'780-1739',NULL,'7801739',2),(69,126,1,1,0,NULL,'(468) 220-6168',NULL,'4682206168',2),(70,78,1,1,0,NULL,'229-2327',NULL,'2292327',1),(71,76,1,1,0,NULL,'345-1471',NULL,'3451471',1),(72,76,1,0,0,NULL,'296-2932',NULL,'2962932',2),(73,66,1,1,0,NULL,'(725) 826-7080',NULL,'7258267080',2),(74,39,1,1,0,NULL,'(465) 814-5331',NULL,'4658145331',1),(75,119,1,1,0,NULL,'(526) 625-8701',NULL,'5266258701',2),(76,134,1,1,0,NULL,'241-9212',NULL,'2419212',2),(77,134,1,0,0,NULL,'887-4242',NULL,'8874242',2),(78,115,1,1,0,NULL,'(562) 885-7027',NULL,'5628857027',1),(79,115,1,0,0,NULL,'(252) 384-7007',NULL,'2523847007',2),(80,131,1,1,0,NULL,'(361) 508-4253',NULL,'3615084253',2),(81,100,1,1,0,NULL,'833-9528',NULL,'8339528',1),(82,100,1,0,0,NULL,'(862) 236-9573',NULL,'8622369573',1),(83,167,1,1,0,NULL,'351-5927',NULL,'3515927',2),(84,83,1,1,0,NULL,'320-3259',NULL,'3203259',2),(85,83,1,0,0,NULL,'440-9289',NULL,'4409289',2),(86,139,1,1,0,NULL,'263-5014',NULL,'2635014',1),(87,139,1,0,0,NULL,'588-2473',NULL,'5882473',2),(88,178,1,1,0,NULL,'(548) 728-1364',NULL,'5487281364',2),(89,17,1,1,0,NULL,'557-1316',NULL,'5571316',2),(90,17,1,0,0,NULL,'608-3326',NULL,'6083326',1),(91,147,1,1,0,NULL,'(406) 858-5491',NULL,'4068585491',2),(92,201,1,1,0,NULL,'(545) 586-8501',NULL,'5455868501',2),(93,62,1,1,0,NULL,'(673) 428-7537',NULL,'6734287537',2),(94,62,1,0,0,NULL,'301-2914',NULL,'3012914',1),(95,161,1,1,0,NULL,'(774) 362-6777',NULL,'7743626777',1),(96,161,1,0,0,NULL,'(834) 657-4181',NULL,'8346574181',1),(97,7,1,1,0,NULL,'(617) 639-6568',NULL,'6176396568',1),(98,200,1,1,0,NULL,'(562) 454-9121',NULL,'5624549121',2),(99,89,1,1,0,NULL,'(685) 402-6563',NULL,'6854026563',2),(100,89,1,0,0,NULL,'(215) 267-7304',NULL,'2152677304',2),(101,179,1,1,0,NULL,'407-3653',NULL,'4073653',2),(102,123,1,1,0,NULL,'401-7618',NULL,'4017618',1),(103,110,1,1,0,NULL,'(772) 564-7975',NULL,'7725647975',2),(104,144,1,1,0,NULL,'693-3235',NULL,'6933235',2),(105,144,1,0,0,NULL,'(349) 542-8344',NULL,'3495428344',1),(106,56,1,1,0,NULL,'223-6208',NULL,'2236208',1),(107,111,1,1,0,NULL,'(341) 535-8924',NULL,'3415358924',1),(108,96,1,1,0,NULL,'(376) 867-6184',NULL,'3768676184',2),(109,96,1,0,0,NULL,'(710) 759-4136',NULL,'7107594136',2),(110,198,1,1,0,NULL,'(410) 393-8598',NULL,'4103938598',1),(111,198,1,0,0,NULL,'(792) 758-8421',NULL,'7927588421',2),(112,149,1,1,0,NULL,'537-8248',NULL,'5378248',2),(113,65,1,1,0,NULL,'(488) 878-1344',NULL,'4888781344',2),(114,102,1,1,0,NULL,'707-3839',NULL,'7073839',2),(115,102,1,0,0,NULL,'(513) 733-5678',NULL,'5137335678',2),(116,148,1,1,0,NULL,'(279) 696-3884',NULL,'2796963884',2),(117,150,1,1,0,NULL,'(239) 519-7742',NULL,'2395197742',1),(118,150,1,0,0,NULL,'316-4917',NULL,'3164917',1),(119,87,1,1,0,NULL,'328-3531',NULL,'3283531',1),(120,14,1,1,0,NULL,'490-7228',NULL,'4907228',2),(121,14,1,0,0,NULL,'(507) 563-8712',NULL,'5075638712',1),(122,169,1,1,0,NULL,'856-7545',NULL,'8567545',2),(123,169,1,0,0,NULL,'591-4350',NULL,'5914350',1),(124,177,1,1,0,NULL,'785-3274',NULL,'7853274',2),(125,120,1,1,0,NULL,'380-7041',NULL,'3807041',2),(126,197,1,1,0,NULL,'804-6963',NULL,'8046963',1),(127,38,1,1,0,NULL,'444-5709',NULL,'4445709',1),(128,140,1,1,0,NULL,'(255) 688-2105',NULL,'2556882105',1),(129,140,1,0,0,NULL,'231-7653',NULL,'2317653',1),(130,129,1,1,0,NULL,'393-3185',NULL,'3933185',1),(131,129,1,0,0,NULL,'(885) 607-5634',NULL,'8856075634',1),(132,80,1,1,0,NULL,'(860) 623-1747',NULL,'8606231747',2),(133,174,1,1,0,NULL,'(369) 436-1503',NULL,'3694361503',1),(134,174,1,0,0,NULL,'(609) 349-6663',NULL,'6093496663',2),(135,3,1,1,0,NULL,'(382) 765-5037',NULL,'3827655037',2),(136,42,1,1,0,NULL,'211-6550',NULL,'2116550',2),(137,42,1,0,0,NULL,'(551) 723-3901',NULL,'5517233901',1),(138,157,1,1,0,NULL,'383-7619',NULL,'3837619',1),(139,81,1,1,0,NULL,'(493) 476-3451',NULL,'4934763451',1),(140,13,1,1,0,NULL,'539-4675',NULL,'5394675',1),(141,128,1,1,0,NULL,'458-5653',NULL,'4585653',2),(142,184,1,1,0,NULL,'376-4014',NULL,'3764014',1),(143,36,1,1,0,NULL,'744-8349',NULL,'7448349',1),(144,16,1,1,0,NULL,'690-4336',NULL,'6904336',2),(145,16,1,0,0,NULL,'324-9422',NULL,'3249422',2),(146,15,1,1,0,NULL,'(667) 855-2802',NULL,'6678552802',2),(147,146,1,1,0,NULL,'(424) 510-9373',NULL,'4245109373',1),(148,146,1,0,0,NULL,'488-1759',NULL,'4881759',2),(149,24,1,1,0,NULL,'(246) 602-9205',NULL,'2466029205',2),(150,170,1,1,0,NULL,'(777) 573-3993',NULL,'7775733993',2),(151,52,1,1,0,NULL,'(777) 771-6482',NULL,'7777716482',2),(152,106,1,1,0,NULL,'431-9337',NULL,'4319337',2),(153,106,1,0,0,NULL,'414-8172',NULL,'4148172',1),(154,63,1,1,0,NULL,'(528) 792-3021',NULL,'5287923021',2),(155,63,1,0,0,NULL,'614-9966',NULL,'6149966',2),(156,29,1,1,0,NULL,'(352) 661-5953',NULL,'3526615953',2),(157,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1),(158,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1),(159,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); /*!40000 ALTER TABLE `civicrm_phone` ENABLE KEYS */; UNLOCK TABLES; @@ -1269,7 +1269,7 @@ 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`) VALUES (1,60,67,1,NULL,NULL,1,NULL,0,0,NULL),(2,131,67,1,NULL,NULL,1,NULL,0,0,NULL),(3,60,6,1,NULL,NULL,1,NULL,0,0,NULL),(4,131,6,1,NULL,NULL,1,NULL,0,0,NULL),(5,131,60,4,NULL,NULL,1,NULL,0,0,NULL),(6,6,52,8,NULL,NULL,1,NULL,0,0,NULL),(7,60,52,8,NULL,NULL,1,NULL,0,0,NULL),(8,131,52,8,NULL,NULL,1,NULL,0,0,NULL),(9,67,52,7,NULL,NULL,0,NULL,0,0,NULL),(10,6,67,2,NULL,NULL,0,NULL,0,0,NULL),(11,63,28,1,NULL,NULL,1,NULL,0,0,NULL),(12,183,28,1,NULL,NULL,1,NULL,0,0,NULL),(13,63,147,1,NULL,NULL,1,NULL,0,0,NULL),(14,183,147,1,NULL,NULL,1,NULL,0,0,NULL),(15,183,63,4,NULL,NULL,1,NULL,0,0,NULL),(16,147,117,8,NULL,NULL,1,NULL,0,0,NULL),(17,63,117,8,NULL,NULL,1,NULL,0,0,NULL),(18,183,117,8,NULL,NULL,1,NULL,0,0,NULL),(19,28,117,7,NULL,NULL,0,NULL,0,0,NULL),(20,147,28,2,NULL,NULL,0,NULL,0,0,NULL),(21,98,187,1,NULL,NULL,1,NULL,0,0,NULL),(22,197,187,1,NULL,NULL,1,NULL,0,0,NULL),(23,98,55,1,NULL,NULL,1,NULL,0,0,NULL),(24,197,55,1,NULL,NULL,1,NULL,0,0,NULL),(25,197,98,4,NULL,NULL,1,NULL,0,0,NULL),(26,55,129,8,NULL,NULL,1,NULL,0,0,NULL),(27,98,129,8,NULL,NULL,1,NULL,0,0,NULL),(28,197,129,8,NULL,NULL,1,NULL,0,0,NULL),(29,187,129,7,NULL,NULL,0,NULL,0,0,NULL),(30,55,187,2,NULL,NULL,0,NULL,0,0,NULL),(31,49,2,1,NULL,NULL,1,NULL,0,0,NULL),(32,132,2,1,NULL,NULL,1,NULL,0,0,NULL),(33,49,72,1,NULL,NULL,1,NULL,0,0,NULL),(34,132,72,1,NULL,NULL,1,NULL,0,0,NULL),(35,132,49,4,NULL,NULL,1,NULL,0,0,NULL),(36,72,159,8,NULL,NULL,1,NULL,0,0,NULL),(37,49,159,8,NULL,NULL,1,NULL,0,0,NULL),(38,132,159,8,NULL,NULL,1,NULL,0,0,NULL),(39,2,159,7,NULL,NULL,0,NULL,0,0,NULL),(40,72,2,2,NULL,NULL,0,NULL,0,0,NULL),(41,86,38,1,NULL,NULL,1,NULL,0,0,NULL),(42,53,38,1,NULL,NULL,1,NULL,0,0,NULL),(43,86,122,1,NULL,NULL,1,NULL,0,0,NULL),(44,53,122,1,NULL,NULL,1,NULL,0,0,NULL),(45,53,86,4,NULL,NULL,1,NULL,0,0,NULL),(46,122,22,8,NULL,NULL,1,NULL,0,0,NULL),(47,86,22,8,NULL,NULL,1,NULL,0,0,NULL),(48,53,22,8,NULL,NULL,1,NULL,0,0,NULL),(49,38,22,7,NULL,NULL,0,NULL,0,0,NULL),(50,122,38,2,NULL,NULL,0,NULL,0,0,NULL),(51,3,150,1,NULL,NULL,1,NULL,0,0,NULL),(52,111,150,1,NULL,NULL,1,NULL,0,0,NULL),(53,3,91,1,NULL,NULL,1,NULL,0,0,NULL),(54,111,91,1,NULL,NULL,1,NULL,0,0,NULL),(55,111,3,4,NULL,NULL,1,NULL,0,0,NULL),(56,91,13,8,NULL,NULL,1,NULL,0,0,NULL),(57,3,13,8,NULL,NULL,1,NULL,0,0,NULL),(58,111,13,8,NULL,NULL,1,NULL,0,0,NULL),(59,150,13,7,NULL,NULL,0,NULL,0,0,NULL),(60,91,150,2,NULL,NULL,0,NULL,0,0,NULL),(61,100,25,1,NULL,NULL,1,NULL,0,0,NULL),(62,180,25,1,NULL,NULL,1,NULL,0,0,NULL),(63,100,188,1,NULL,NULL,1,NULL,0,0,NULL),(64,180,188,1,NULL,NULL,1,NULL,0,0,NULL),(65,180,100,4,NULL,NULL,1,NULL,0,0,NULL),(66,188,73,8,NULL,NULL,1,NULL,0,0,NULL),(67,100,73,8,NULL,NULL,1,NULL,0,0,NULL),(68,180,73,8,NULL,NULL,1,NULL,0,0,NULL),(69,25,73,7,NULL,NULL,0,NULL,0,0,NULL),(70,188,25,2,NULL,NULL,0,NULL,0,0,NULL),(71,30,64,1,NULL,NULL,1,NULL,0,0,NULL),(72,160,64,1,NULL,NULL,1,NULL,0,0,NULL),(73,30,118,1,NULL,NULL,1,NULL,0,0,NULL),(74,160,118,1,NULL,NULL,1,NULL,0,0,NULL),(75,160,30,4,NULL,NULL,1,NULL,0,0,NULL),(76,118,196,8,NULL,NULL,1,NULL,0,0,NULL),(77,30,196,8,NULL,NULL,1,NULL,0,0,NULL),(78,160,196,8,NULL,NULL,1,NULL,0,0,NULL),(79,64,196,7,NULL,NULL,1,NULL,0,0,NULL),(80,118,64,2,NULL,NULL,1,NULL,0,0,NULL),(81,68,175,1,NULL,NULL,1,NULL,0,0,NULL),(82,95,175,1,NULL,NULL,1,NULL,0,0,NULL),(83,68,169,1,NULL,NULL,1,NULL,0,0,NULL),(84,95,169,1,NULL,NULL,1,NULL,0,0,NULL),(85,95,68,4,NULL,NULL,1,NULL,0,0,NULL),(86,169,125,8,NULL,NULL,1,NULL,0,0,NULL),(87,68,125,8,NULL,NULL,1,NULL,0,0,NULL),(88,95,125,8,NULL,NULL,1,NULL,0,0,NULL),(89,175,125,7,NULL,NULL,0,NULL,0,0,NULL),(90,169,175,2,NULL,NULL,0,NULL,0,0,NULL),(91,14,195,1,NULL,NULL,1,NULL,0,0,NULL),(92,41,195,1,NULL,NULL,1,NULL,0,0,NULL),(93,14,120,1,NULL,NULL,1,NULL,0,0,NULL),(94,41,120,1,NULL,NULL,1,NULL,0,0,NULL),(95,41,14,4,NULL,NULL,1,NULL,0,0,NULL),(96,120,158,8,NULL,NULL,1,NULL,0,0,NULL),(97,14,158,8,NULL,NULL,1,NULL,0,0,NULL),(98,41,158,8,NULL,NULL,1,NULL,0,0,NULL),(99,195,158,7,NULL,NULL,1,NULL,0,0,NULL),(100,120,195,2,NULL,NULL,1,NULL,0,0,NULL),(101,9,168,1,NULL,NULL,1,NULL,0,0,NULL),(102,152,168,1,NULL,NULL,1,NULL,0,0,NULL),(103,9,81,1,NULL,NULL,1,NULL,0,0,NULL),(104,152,81,1,NULL,NULL,1,NULL,0,0,NULL),(105,152,9,4,NULL,NULL,1,NULL,0,0,NULL),(106,81,18,8,NULL,NULL,1,NULL,0,0,NULL),(107,9,18,8,NULL,NULL,1,NULL,0,0,NULL),(108,152,18,8,NULL,NULL,1,NULL,0,0,NULL),(109,168,18,7,NULL,NULL,0,NULL,0,0,NULL),(110,81,168,2,NULL,NULL,0,NULL,0,0,NULL),(111,135,48,1,NULL,NULL,1,NULL,0,0,NULL),(112,112,48,1,NULL,NULL,1,NULL,0,0,NULL),(113,135,99,1,NULL,NULL,1,NULL,0,0,NULL),(114,112,99,1,NULL,NULL,1,NULL,0,0,NULL),(115,112,135,4,NULL,NULL,1,NULL,0,0,NULL),(116,99,51,8,NULL,NULL,1,NULL,0,0,NULL),(117,135,51,8,NULL,NULL,1,NULL,0,0,NULL),(118,112,51,8,NULL,NULL,1,NULL,0,0,NULL),(119,48,51,7,NULL,NULL,0,NULL,0,0,NULL),(120,99,48,2,NULL,NULL,0,NULL,0,0,NULL),(121,66,126,1,NULL,NULL,1,NULL,0,0,NULL),(122,108,126,1,NULL,NULL,1,NULL,0,0,NULL),(123,66,171,1,NULL,NULL,1,NULL,0,0,NULL),(124,108,171,1,NULL,NULL,1,NULL,0,0,NULL),(125,108,66,4,NULL,NULL,1,NULL,0,0,NULL),(126,171,62,8,NULL,NULL,1,NULL,0,0,NULL),(127,66,62,8,NULL,NULL,1,NULL,0,0,NULL),(128,108,62,8,NULL,NULL,1,NULL,0,0,NULL),(129,126,62,7,NULL,NULL,0,NULL,0,0,NULL),(130,171,126,2,NULL,NULL,0,NULL,0,0,NULL),(131,5,186,1,NULL,NULL,1,NULL,0,0,NULL),(132,96,186,1,NULL,NULL,1,NULL,0,0,NULL),(133,5,106,1,NULL,NULL,1,NULL,0,0,NULL),(134,96,106,1,NULL,NULL,1,NULL,0,0,NULL),(135,96,5,4,NULL,NULL,1,NULL,0,0,NULL),(136,106,85,8,NULL,NULL,1,NULL,0,0,NULL),(137,5,85,8,NULL,NULL,1,NULL,0,0,NULL),(138,96,85,8,NULL,NULL,1,NULL,0,0,NULL),(139,186,85,7,NULL,NULL,1,NULL,0,0,NULL),(140,106,186,2,NULL,NULL,1,NULL,0,0,NULL),(141,39,92,1,NULL,NULL,1,NULL,0,0,NULL),(142,8,92,1,NULL,NULL,1,NULL,0,0,NULL),(143,39,133,1,NULL,NULL,1,NULL,0,0,NULL),(144,8,133,1,NULL,NULL,1,NULL,0,0,NULL),(145,8,39,4,NULL,NULL,1,NULL,0,0,NULL),(146,133,43,8,NULL,NULL,1,NULL,0,0,NULL),(147,39,43,8,NULL,NULL,1,NULL,0,0,NULL),(148,8,43,8,NULL,NULL,1,NULL,0,0,NULL),(149,92,43,7,NULL,NULL,1,NULL,0,0,NULL),(150,133,92,2,NULL,NULL,1,NULL,0,0,NULL),(151,137,33,1,NULL,NULL,1,NULL,0,0,NULL),(152,165,33,1,NULL,NULL,1,NULL,0,0,NULL),(153,137,173,1,NULL,NULL,1,NULL,0,0,NULL),(154,165,173,1,NULL,NULL,1,NULL,0,0,NULL),(155,165,137,4,NULL,NULL,1,NULL,0,0,NULL),(156,173,192,8,NULL,NULL,1,NULL,0,0,NULL),(157,137,192,8,NULL,NULL,1,NULL,0,0,NULL),(158,165,192,8,NULL,NULL,1,NULL,0,0,NULL),(159,33,192,7,NULL,NULL,1,NULL,0,0,NULL),(160,173,33,2,NULL,NULL,1,NULL,0,0,NULL),(161,104,146,1,NULL,NULL,1,NULL,0,0,NULL),(162,88,146,1,NULL,NULL,1,NULL,0,0,NULL),(163,104,151,1,NULL,NULL,1,NULL,0,0,NULL),(164,88,151,1,NULL,NULL,1,NULL,0,0,NULL),(165,88,104,4,NULL,NULL,1,NULL,0,0,NULL),(166,151,170,8,NULL,NULL,1,NULL,0,0,NULL),(167,104,170,8,NULL,NULL,1,NULL,0,0,NULL),(168,88,170,8,NULL,NULL,1,NULL,0,0,NULL),(169,146,170,7,NULL,NULL,1,NULL,0,0,NULL),(170,151,146,2,NULL,NULL,1,NULL,0,0,NULL),(171,153,78,1,NULL,NULL,1,NULL,0,0,NULL),(172,42,78,1,NULL,NULL,1,NULL,0,0,NULL),(173,153,193,1,NULL,NULL,1,NULL,0,0,NULL),(174,42,193,1,NULL,NULL,1,NULL,0,0,NULL),(175,42,153,4,NULL,NULL,1,NULL,0,0,NULL),(176,193,44,8,NULL,NULL,1,NULL,0,0,NULL),(177,153,44,8,NULL,NULL,1,NULL,0,0,NULL),(178,42,44,8,NULL,NULL,1,NULL,0,0,NULL),(179,78,44,7,NULL,NULL,0,NULL,0,0,NULL),(180,193,78,2,NULL,NULL,0,NULL,0,0,NULL),(181,79,179,1,NULL,NULL,1,NULL,0,0,NULL),(182,80,179,1,NULL,NULL,1,NULL,0,0,NULL),(183,79,45,1,NULL,NULL,1,NULL,0,0,NULL),(184,80,45,1,NULL,NULL,1,NULL,0,0,NULL),(185,80,79,4,NULL,NULL,1,NULL,0,0,NULL),(186,45,58,8,NULL,NULL,1,NULL,0,0,NULL),(187,79,58,8,NULL,NULL,1,NULL,0,0,NULL),(188,80,58,8,NULL,NULL,1,NULL,0,0,NULL),(189,179,58,7,NULL,NULL,1,NULL,0,0,NULL),(190,45,179,2,NULL,NULL,1,NULL,0,0,NULL),(191,61,128,1,NULL,NULL,1,NULL,0,0,NULL),(192,27,128,1,NULL,NULL,1,NULL,0,0,NULL),(193,61,136,1,NULL,NULL,1,NULL,0,0,NULL),(194,27,136,1,NULL,NULL,1,NULL,0,0,NULL),(195,27,61,4,NULL,NULL,1,NULL,0,0,NULL),(196,136,46,8,NULL,NULL,1,NULL,0,0,NULL),(197,61,46,8,NULL,NULL,1,NULL,0,0,NULL),(198,27,46,8,NULL,NULL,1,NULL,0,0,NULL),(199,128,46,7,NULL,NULL,1,NULL,0,0,NULL),(200,136,128,2,NULL,NULL,1,NULL,0,0,NULL),(201,154,26,5,NULL,NULL,1,NULL,0,0,NULL),(202,157,34,5,NULL,NULL,1,NULL,0,0,NULL),(203,161,69,5,NULL,NULL,1,NULL,0,0,NULL),(204,91,70,5,NULL,NULL,1,NULL,0,0,NULL),(205,77,75,5,NULL,NULL,1,NULL,0,0,NULL),(206,111,89,5,NULL,NULL,1,NULL,0,0,NULL),(207,66,90,5,NULL,NULL,1,NULL,0,0,NULL),(208,162,101,5,NULL,NULL,1,NULL,0,0,NULL),(209,9,102,5,NULL,NULL,1,NULL,0,0,NULL),(210,195,103,5,NULL,NULL,1,NULL,0,0,NULL),(211,59,105,5,NULL,NULL,1,NULL,0,0,NULL),(212,137,123,5,NULL,NULL,1,NULL,0,0,NULL),(213,140,127,5,NULL,NULL,1,NULL,0,0,NULL),(214,114,139,5,NULL,NULL,1,NULL,0,0,NULL),(215,41,142,5,NULL,NULL,1,NULL,0,0,NULL),(216,92,144,5,NULL,NULL,1,NULL,0,0,NULL),(217,42,181,5,NULL,NULL,1,NULL,0,0,NULL),(218,112,189,5,NULL,NULL,1,NULL,0,0,NULL); +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`) VALUES (1,100,131,1,NULL,NULL,1,NULL,0,0,NULL),(2,167,131,1,NULL,NULL,1,NULL,0,0,NULL),(3,100,153,1,NULL,NULL,1,NULL,0,0,NULL),(4,167,153,1,NULL,NULL,1,NULL,0,0,NULL),(5,167,100,4,NULL,NULL,1,NULL,0,0,NULL),(6,153,64,8,NULL,NULL,1,NULL,0,0,NULL),(7,100,64,8,NULL,NULL,1,NULL,0,0,NULL),(8,167,64,8,NULL,NULL,1,NULL,0,0,NULL),(9,131,64,7,NULL,NULL,0,NULL,0,0,NULL),(10,153,131,2,NULL,NULL,0,NULL,0,0,NULL),(11,27,83,1,NULL,NULL,1,NULL,0,0,NULL),(12,178,83,1,NULL,NULL,1,NULL,0,0,NULL),(13,27,139,1,NULL,NULL,1,NULL,0,0,NULL),(14,178,139,1,NULL,NULL,1,NULL,0,0,NULL),(15,178,27,4,NULL,NULL,1,NULL,0,0,NULL),(16,139,30,8,NULL,NULL,1,NULL,0,0,NULL),(17,27,30,8,NULL,NULL,1,NULL,0,0,NULL),(18,178,30,8,NULL,NULL,1,NULL,0,0,NULL),(19,83,30,7,NULL,NULL,0,NULL,0,0,NULL),(20,139,83,2,NULL,NULL,0,NULL,0,0,NULL),(21,147,141,1,NULL,NULL,1,NULL,0,0,NULL),(22,201,141,1,NULL,NULL,1,NULL,0,0,NULL),(23,147,17,1,NULL,NULL,1,NULL,0,0,NULL),(24,201,17,1,NULL,NULL,1,NULL,0,0,NULL),(25,201,147,4,NULL,NULL,1,NULL,0,0,NULL),(26,17,97,8,NULL,NULL,1,NULL,0,0,NULL),(27,147,97,8,NULL,NULL,1,NULL,0,0,NULL),(28,201,97,8,NULL,NULL,1,NULL,0,0,NULL),(29,141,97,7,NULL,NULL,0,NULL,0,0,NULL),(30,17,141,2,NULL,NULL,0,NULL,0,0,NULL),(31,161,152,1,NULL,NULL,1,NULL,0,0,NULL),(32,7,152,1,NULL,NULL,1,NULL,0,0,NULL),(33,161,62,1,NULL,NULL,1,NULL,0,0,NULL),(34,7,62,1,NULL,NULL,1,NULL,0,0,NULL),(35,7,161,4,NULL,NULL,1,NULL,0,0,NULL),(36,62,171,8,NULL,NULL,1,NULL,0,0,NULL),(37,161,171,8,NULL,NULL,1,NULL,0,0,NULL),(38,7,171,8,NULL,NULL,1,NULL,0,0,NULL),(39,152,171,7,NULL,NULL,0,NULL,0,0,NULL),(40,62,152,2,NULL,NULL,0,NULL,0,0,NULL),(41,179,200,1,NULL,NULL,1,NULL,0,0,NULL),(42,137,200,1,NULL,NULL,1,NULL,0,0,NULL),(43,179,89,1,NULL,NULL,1,NULL,0,0,NULL),(44,137,89,1,NULL,NULL,1,NULL,0,0,NULL),(45,137,179,4,NULL,NULL,1,NULL,0,0,NULL),(46,89,8,8,NULL,NULL,1,NULL,0,0,NULL),(47,179,8,8,NULL,NULL,1,NULL,0,0,NULL),(48,137,8,8,NULL,NULL,1,NULL,0,0,NULL),(49,200,8,7,NULL,NULL,1,NULL,0,0,NULL),(50,89,200,2,NULL,NULL,1,NULL,0,0,NULL),(51,144,123,1,NULL,NULL,1,NULL,0,0,NULL),(52,108,123,1,NULL,NULL,1,NULL,0,0,NULL),(53,144,110,1,NULL,NULL,1,NULL,0,0,NULL),(54,108,110,1,NULL,NULL,1,NULL,0,0,NULL),(55,108,144,4,NULL,NULL,1,NULL,0,0,NULL),(56,110,191,8,NULL,NULL,1,NULL,0,0,NULL),(57,144,191,8,NULL,NULL,1,NULL,0,0,NULL),(58,108,191,8,NULL,NULL,1,NULL,0,0,NULL),(59,123,191,7,NULL,NULL,0,NULL,0,0,NULL),(60,110,123,2,NULL,NULL,0,NULL,0,0,NULL),(61,56,130,1,NULL,NULL,1,NULL,0,0,NULL),(62,111,130,1,NULL,NULL,1,NULL,0,0,NULL),(63,56,68,1,NULL,NULL,1,NULL,0,0,NULL),(64,111,68,1,NULL,NULL,1,NULL,0,0,NULL),(65,111,56,4,NULL,NULL,1,NULL,0,0,NULL),(66,68,98,8,NULL,NULL,1,NULL,0,0,NULL),(67,56,98,8,NULL,NULL,1,NULL,0,0,NULL),(68,111,98,8,NULL,NULL,1,NULL,0,0,NULL),(69,130,98,7,NULL,NULL,1,NULL,0,0,NULL),(70,68,130,2,NULL,NULL,1,NULL,0,0,NULL),(71,105,96,1,NULL,NULL,1,NULL,0,0,NULL),(72,149,96,1,NULL,NULL,1,NULL,0,0,NULL),(73,105,198,1,NULL,NULL,1,NULL,0,0,NULL),(74,149,198,1,NULL,NULL,1,NULL,0,0,NULL),(75,149,105,4,NULL,NULL,1,NULL,0,0,NULL),(76,198,34,8,NULL,NULL,1,NULL,0,0,NULL),(77,105,34,8,NULL,NULL,1,NULL,0,0,NULL),(78,149,34,8,NULL,NULL,1,NULL,0,0,NULL),(79,96,34,7,NULL,NULL,1,NULL,0,0,NULL),(80,198,96,2,NULL,NULL,1,NULL,0,0,NULL),(81,148,65,1,NULL,NULL,1,NULL,0,0,NULL),(82,59,65,1,NULL,NULL,1,NULL,0,0,NULL),(83,148,102,1,NULL,NULL,1,NULL,0,0,NULL),(84,59,102,1,NULL,NULL,1,NULL,0,0,NULL),(85,59,148,4,NULL,NULL,1,NULL,0,0,NULL),(86,102,135,8,NULL,NULL,1,NULL,0,0,NULL),(87,148,135,8,NULL,NULL,1,NULL,0,0,NULL),(88,59,135,8,NULL,NULL,1,NULL,0,0,NULL),(89,65,135,7,NULL,NULL,0,NULL,0,0,NULL),(90,102,65,2,NULL,NULL,0,NULL,0,0,NULL),(91,87,70,1,NULL,NULL,1,NULL,0,0,NULL),(92,43,70,1,NULL,NULL,1,NULL,0,0,NULL),(93,87,150,1,NULL,NULL,1,NULL,0,0,NULL),(94,43,150,1,NULL,NULL,1,NULL,0,0,NULL),(95,43,87,4,NULL,NULL,1,NULL,0,0,NULL),(96,150,192,8,NULL,NULL,1,NULL,0,0,NULL),(97,87,192,8,NULL,NULL,1,NULL,0,0,NULL),(98,43,192,8,NULL,NULL,1,NULL,0,0,NULL),(99,70,192,7,NULL,NULL,0,NULL,0,0,NULL),(100,150,70,2,NULL,NULL,0,NULL,0,0,NULL),(101,169,5,1,NULL,NULL,1,NULL,0,0,NULL),(102,177,5,1,NULL,NULL,1,NULL,0,0,NULL),(103,169,14,1,NULL,NULL,1,NULL,0,0,NULL),(104,177,14,1,NULL,NULL,1,NULL,0,0,NULL),(105,177,169,4,NULL,NULL,1,NULL,0,0,NULL),(106,14,45,8,NULL,NULL,1,NULL,0,0,NULL),(107,169,45,8,NULL,NULL,1,NULL,0,0,NULL),(108,177,45,8,NULL,NULL,1,NULL,0,0,NULL),(109,5,45,7,NULL,NULL,1,NULL,0,0,NULL),(110,14,5,2,NULL,NULL,1,NULL,0,0,NULL),(111,197,120,1,NULL,NULL,1,NULL,0,0,NULL),(112,38,120,1,NULL,NULL,1,NULL,0,0,NULL),(113,197,160,1,NULL,NULL,1,NULL,0,0,NULL),(114,38,160,1,NULL,NULL,1,NULL,0,0,NULL),(115,38,197,4,NULL,NULL,1,NULL,0,0,NULL),(116,160,4,8,NULL,NULL,1,NULL,0,0,NULL),(117,197,4,8,NULL,NULL,1,NULL,0,0,NULL),(118,38,4,8,NULL,NULL,1,NULL,0,0,NULL),(119,120,4,7,NULL,NULL,0,NULL,0,0,NULL),(120,160,120,2,NULL,NULL,0,NULL,0,0,NULL),(121,129,140,1,NULL,NULL,1,NULL,0,0,NULL),(122,80,140,1,NULL,NULL,1,NULL,0,0,NULL),(123,129,50,1,NULL,NULL,1,NULL,0,0,NULL),(124,80,50,1,NULL,NULL,1,NULL,0,0,NULL),(125,80,129,4,NULL,NULL,1,NULL,0,0,NULL),(126,50,132,8,NULL,NULL,1,NULL,0,0,NULL),(127,129,132,8,NULL,NULL,1,NULL,0,0,NULL),(128,80,132,8,NULL,NULL,1,NULL,0,0,NULL),(129,140,132,7,NULL,NULL,0,NULL,0,0,NULL),(130,50,140,2,NULL,NULL,0,NULL,0,0,NULL),(131,3,174,1,NULL,NULL,1,NULL,0,0,NULL),(132,42,174,1,NULL,NULL,1,NULL,0,0,NULL),(133,3,109,1,NULL,NULL,1,NULL,0,0,NULL),(134,42,109,1,NULL,NULL,1,NULL,0,0,NULL),(135,42,3,4,NULL,NULL,1,NULL,0,0,NULL),(136,109,79,8,NULL,NULL,1,NULL,0,0,NULL),(137,3,79,8,NULL,NULL,1,NULL,0,0,NULL),(138,42,79,8,NULL,NULL,1,NULL,0,0,NULL),(139,174,79,7,NULL,NULL,1,NULL,0,0,NULL),(140,109,174,2,NULL,NULL,1,NULL,0,0,NULL),(141,101,157,1,NULL,NULL,1,NULL,0,0,NULL),(142,81,157,1,NULL,NULL,1,NULL,0,0,NULL),(143,101,121,1,NULL,NULL,1,NULL,0,0,NULL),(144,81,121,1,NULL,NULL,1,NULL,0,0,NULL),(145,81,101,4,NULL,NULL,1,NULL,0,0,NULL),(146,121,51,8,NULL,NULL,1,NULL,0,0,NULL),(147,101,51,8,NULL,NULL,1,NULL,0,0,NULL),(148,81,51,8,NULL,NULL,1,NULL,0,0,NULL),(149,157,51,7,NULL,NULL,0,NULL,0,0,NULL),(150,121,157,2,NULL,NULL,0,NULL,0,0,NULL),(151,46,13,1,NULL,NULL,1,NULL,0,0,NULL),(152,11,13,1,NULL,NULL,1,NULL,0,0,NULL),(153,46,9,1,NULL,NULL,1,NULL,0,0,NULL),(154,11,9,1,NULL,NULL,1,NULL,0,0,NULL),(155,11,46,4,NULL,NULL,1,NULL,0,0,NULL),(156,9,12,8,NULL,NULL,1,NULL,0,0,NULL),(157,46,12,8,NULL,NULL,1,NULL,0,0,NULL),(158,11,12,8,NULL,NULL,1,NULL,0,0,NULL),(159,13,12,7,NULL,NULL,0,NULL,0,0,NULL),(160,9,13,2,NULL,NULL,0,NULL,0,0,NULL),(161,184,44,1,NULL,NULL,1,NULL,0,0,NULL),(162,36,44,1,NULL,NULL,1,NULL,0,0,NULL),(163,184,128,1,NULL,NULL,1,NULL,0,0,NULL),(164,36,128,1,NULL,NULL,1,NULL,0,0,NULL),(165,36,184,4,NULL,NULL,1,NULL,0,0,NULL),(166,128,138,8,NULL,NULL,1,NULL,0,0,NULL),(167,184,138,8,NULL,NULL,1,NULL,0,0,NULL),(168,36,138,8,NULL,NULL,1,NULL,0,0,NULL),(169,44,138,7,NULL,NULL,0,NULL,0,0,NULL),(170,128,44,2,NULL,NULL,0,NULL,0,0,NULL),(171,15,16,1,NULL,NULL,1,NULL,0,0,NULL),(172,146,16,1,NULL,NULL,1,NULL,0,0,NULL),(173,15,94,1,NULL,NULL,1,NULL,0,0,NULL),(174,146,94,1,NULL,NULL,1,NULL,0,0,NULL),(175,146,15,4,NULL,NULL,1,NULL,0,0,NULL),(176,94,31,8,NULL,NULL,1,NULL,0,0,NULL),(177,15,31,8,NULL,NULL,1,NULL,0,0,NULL),(178,146,31,8,NULL,NULL,1,NULL,0,0,NULL),(179,16,31,7,NULL,NULL,0,NULL,0,0,NULL),(180,94,16,2,NULL,NULL,0,NULL,0,0,NULL),(181,52,24,1,NULL,NULL,1,NULL,0,0,NULL),(182,106,24,1,NULL,NULL,1,NULL,0,0,NULL),(183,52,170,1,NULL,NULL,1,NULL,0,0,NULL),(184,106,170,1,NULL,NULL,1,NULL,0,0,NULL),(185,106,52,4,NULL,NULL,1,NULL,0,0,NULL),(186,170,181,8,NULL,NULL,1,NULL,0,0,NULL),(187,52,181,8,NULL,NULL,1,NULL,0,0,NULL),(188,106,181,8,NULL,NULL,1,NULL,0,0,NULL),(189,24,181,7,NULL,NULL,1,NULL,0,0,NULL),(190,170,24,2,NULL,NULL,1,NULL,0,0,NULL),(191,187,99,1,NULL,NULL,1,NULL,0,0,NULL),(192,29,99,1,NULL,NULL,1,NULL,0,0,NULL),(193,187,63,1,NULL,NULL,1,NULL,0,0,NULL),(194,29,63,1,NULL,NULL,1,NULL,0,0,NULL),(195,29,187,4,NULL,NULL,1,NULL,0,0,NULL),(196,63,194,8,NULL,NULL,1,NULL,0,0,NULL),(197,187,194,8,NULL,NULL,1,NULL,0,0,NULL),(198,29,194,8,NULL,NULL,1,NULL,0,0,NULL),(199,99,194,7,NULL,NULL,0,NULL,0,0,NULL),(200,63,99,2,NULL,NULL,0,NULL,0,0,NULL),(201,96,22,5,NULL,NULL,1,NULL,0,0,NULL),(202,60,28,5,NULL,NULL,1,NULL,0,0,NULL),(203,139,69,5,NULL,NULL,1,NULL,0,0,NULL),(204,35,86,5,NULL,NULL,1,NULL,0,0,NULL),(205,146,90,5,NULL,NULL,1,NULL,0,0,NULL),(206,111,114,5,NULL,NULL,1,NULL,0,0,NULL),(207,66,116,5,NULL,NULL,1,NULL,0,0,NULL),(208,77,136,5,NULL,NULL,1,NULL,0,0,NULL),(209,39,156,5,NULL,NULL,1,NULL,0,0,NULL),(210,127,168,5,NULL,NULL,1,NULL,0,0,NULL),(211,126,176,5,NULL,NULL,1,NULL,0,0,NULL),(212,89,183,5,NULL,NULL,1,NULL,0,0,NULL),(213,84,188,5,NULL,NULL,1,NULL,0,0,NULL),(214,87,190,5,NULL,NULL,1,NULL,0,0,NULL),(215,160,195,5,NULL,NULL,1,NULL,0,0,NULL); /*!40000 ALTER TABLE `civicrm_relationship` ENABLE KEYS */; UNLOCK TABLES; @@ -1345,7 +1345,7 @@ 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,23,2,'2018-07-24 11:51:10','Admin','Added',NULL),(2,31,2,'2018-01-29 13:30:57','Email','Added',NULL),(3,74,2,'2018-04-23 15:23:33','Email','Added',NULL),(4,59,2,'2017-09-24 12:04:28','Email','Added',NULL),(5,176,2,'2018-01-03 00:34:57','Email','Added',NULL),(6,97,2,'2018-03-11 23:24:03','Admin','Added',NULL),(7,113,2,'2017-10-30 15:04:04','Admin','Added',NULL),(8,164,2,'2017-12-31 03:51:10','Admin','Added',NULL),(9,56,2,'2017-10-04 00:39:49','Email','Added',NULL),(10,4,2,'2018-04-11 18:40:18','Admin','Added',NULL),(11,35,2,'2017-09-28 18:03:54','Admin','Added',NULL),(12,21,2,'2018-05-24 21:23:46','Email','Added',NULL),(13,15,2,'2017-10-14 05:11:57','Admin','Added',NULL),(14,110,2,'2017-12-27 10:20:24','Admin','Added',NULL),(15,143,2,'2018-04-30 11:51:46','Admin','Added',NULL),(16,36,2,'2018-06-02 18:14:35','Admin','Added',NULL),(17,116,2,'2018-08-27 03:04:16','Admin','Added',NULL),(18,16,2,'2017-12-13 07:07:18','Email','Added',NULL),(19,177,2,'2018-01-31 06:19:02','Admin','Added',NULL),(20,166,2,'2018-07-17 12:32:58','Admin','Added',NULL),(21,161,2,'2018-07-14 02:18:49','Email','Added',NULL),(22,145,2,'2017-10-09 01:21:58','Admin','Added',NULL),(23,167,2,'2018-07-29 17:13:48','Email','Added',NULL),(24,184,2,'2018-01-25 13:32:33','Email','Added',NULL),(25,65,2,'2017-10-14 08:47:57','Admin','Added',NULL),(26,185,2,'2017-10-21 00:28:05','Admin','Added',NULL),(27,138,2,'2018-03-23 06:52:53','Admin','Added',NULL),(28,94,2,'2018-03-21 21:28:44','Admin','Added',NULL),(29,121,2,'2018-05-18 18:54:05','Email','Added',NULL),(30,134,2,'2017-10-07 21:48:25','Email','Added',NULL),(31,182,2,'2017-10-29 02:06:31','Admin','Added',NULL),(32,83,2,'2018-06-10 09:40:43','Email','Added',NULL),(33,11,2,'2018-09-03 10:16:37','Admin','Added',NULL),(34,7,2,'2018-01-24 11:18:22','Admin','Added',NULL),(35,198,2,'2018-02-18 01:49:10','Email','Added',NULL),(36,17,2,'2017-11-27 01:21:24','Admin','Added',NULL),(37,50,2,'2018-06-22 15:44:00','Admin','Added',NULL),(38,71,2,'2017-12-14 02:53:02','Admin','Added',NULL),(39,157,2,'2017-11-25 01:03:11','Admin','Added',NULL),(40,93,2,'2018-07-25 00:01:01','Admin','Added',NULL),(41,149,2,'2017-10-15 19:07:51','Email','Added',NULL),(42,172,2,'2017-09-20 07:38:24','Admin','Added',NULL),(43,77,2,'2018-01-10 17:19:58','Admin','Added',NULL),(44,57,2,'2017-09-28 00:19:30','Admin','Added',NULL),(45,24,2,'2018-06-15 19:21:11','Admin','Added',NULL),(46,119,2,'2018-02-03 14:22:07','Email','Added',NULL),(47,84,2,'2017-09-26 10:26:09','Admin','Added',NULL),(48,162,2,'2018-07-28 12:44:46','Admin','Added',NULL),(49,40,2,'2018-03-28 14:23:14','Email','Added',NULL),(50,190,2,'2017-12-23 14:37:09','Admin','Added',NULL),(51,29,2,'2018-01-27 23:00:36','Email','Added',NULL),(52,155,2,'2018-08-21 12:14:30','Email','Added',NULL),(53,201,2,'2018-02-10 08:24:24','Admin','Added',NULL),(54,174,2,'2017-09-24 00:38:00','Admin','Added',NULL),(55,141,2,'2018-05-06 17:44:37','Admin','Added',NULL),(56,114,2,'2018-02-02 19:04:59','Email','Added',NULL),(57,87,2,'2018-03-20 15:10:52','Email','Added',NULL),(58,20,2,'2018-09-06 05:23:41','Email','Added',NULL),(59,163,2,'2017-11-17 05:59:03','Email','Added',NULL),(60,178,2,'2017-10-11 17:05:53','Admin','Added',NULL),(61,194,3,'2017-12-04 09:31:54','Email','Added',NULL),(62,124,3,'2017-11-30 09:21:36','Email','Added',NULL),(63,19,3,'2017-10-14 16:11:07','Admin','Added',NULL),(64,109,3,'2017-11-24 21:44:22','Email','Added',NULL),(65,10,3,'2017-10-20 21:54:43','Admin','Added',NULL),(66,37,3,'2017-11-20 20:58:35','Admin','Added',NULL),(67,107,3,'2018-06-24 23:22:47','Admin','Added',NULL),(68,156,3,'2018-01-23 08:54:56','Email','Added',NULL),(69,12,3,'2017-12-23 07:16:23','Email','Added',NULL),(70,47,3,'2018-06-23 05:51:33','Email','Added',NULL),(71,154,3,'2018-05-17 23:25:50','Email','Added',NULL),(72,76,3,'2018-08-01 11:04:06','Email','Added',NULL),(73,82,3,'2018-01-12 13:19:00','Admin','Added',NULL),(74,54,3,'2017-11-18 09:42:20','Admin','Added',NULL),(75,130,3,'2018-01-06 13:13:07','Admin','Added',NULL),(76,23,4,'2018-05-28 11:01:55','Email','Added',NULL),(77,164,4,'2018-02-08 23:34:13','Admin','Added',NULL),(78,143,4,'2018-09-12 08:51:08','Email','Added',NULL),(79,145,4,'2018-09-13 08:24:05','Admin','Added',NULL),(80,121,4,'2018-02-16 08:57:53','Email','Added',NULL),(81,17,4,'2017-10-09 06:26:45','Admin','Added',NULL),(82,77,4,'2018-06-28 17:00:19','Email','Added',NULL),(83,190,4,'2017-11-26 19:45:36','Admin','Added',NULL); +INSERT INTO `civicrm_subscription_history` (`id`, `contact_id`, `group_id`, `date`, `method`, `status`, `tracking`) VALUES (1,91,2,'2018-03-03 02:00:56','Email','Added',NULL),(2,133,2,'2018-05-28 09:09:38','Email','Added',NULL),(3,103,2,'2017-12-04 22:29:37','Admin','Added',NULL),(4,73,2,'2018-06-04 05:17:04','Admin','Added',NULL),(5,33,2,'2017-12-03 20:15:33','Email','Added',NULL),(6,85,2,'2018-02-09 04:35:13','Admin','Added',NULL),(7,186,2,'2017-12-05 10:25:21','Admin','Added',NULL),(8,175,2,'2018-07-11 13:37:51','Email','Added',NULL),(9,159,2,'2018-02-28 05:49:30','Admin','Added',NULL),(10,23,2,'2017-11-25 05:18:06','Email','Added',NULL),(11,118,2,'2018-07-12 01:36:01','Email','Added',NULL),(12,173,2,'2018-02-12 23:16:49','Admin','Added',NULL),(13,199,2,'2018-02-17 22:00:39','Admin','Added',NULL),(14,82,2,'2018-02-21 05:40:16','Email','Added',NULL),(15,37,2,'2017-12-05 20:21:14','Admin','Added',NULL),(16,166,2,'2018-06-14 05:29:32','Admin','Added',NULL),(17,10,2,'2017-10-20 02:01:07','Email','Added',NULL),(18,196,2,'2018-08-09 02:24:37','Admin','Added',NULL),(19,48,2,'2018-03-10 08:21:17','Admin','Added',NULL),(20,92,2,'2017-12-06 02:04:44','Email','Added',NULL),(21,77,2,'2018-09-12 03:56:21','Admin','Added',NULL),(22,151,2,'2018-09-05 06:51:13','Email','Added',NULL),(23,155,2,'2017-12-21 16:46:27','Admin','Added',NULL),(24,104,2,'2018-01-13 00:09:15','Admin','Added',NULL),(25,107,2,'2018-01-05 18:54:34','Admin','Added',NULL),(26,84,2,'2018-04-12 22:37:38','Admin','Added',NULL),(27,58,2,'2018-07-01 17:31:27','Email','Added',NULL),(28,55,2,'2018-07-27 05:34:57','Admin','Added',NULL),(29,162,2,'2017-11-01 17:37:56','Admin','Added',NULL),(30,193,2,'2018-05-29 01:38:32','Admin','Added',NULL),(31,57,2,'2017-10-03 14:36:54','Email','Added',NULL),(32,20,2,'2018-09-17 19:16:28','Admin','Added',NULL),(33,165,2,'2018-01-06 13:52:27','Admin','Added',NULL),(34,127,2,'2018-06-17 16:20:52','Email','Added',NULL),(35,182,2,'2018-02-16 13:59:46','Email','Added',NULL),(36,19,2,'2018-06-22 02:33:15','Admin','Added',NULL),(37,75,2,'2017-10-19 11:19:08','Email','Added',NULL),(38,88,2,'2017-12-21 06:12:37','Admin','Added',NULL),(39,125,2,'2018-03-29 19:36:38','Admin','Added',NULL),(40,60,2,'2018-08-29 13:53:21','Admin','Added',NULL),(41,32,2,'2018-06-09 04:01:41','Email','Added',NULL),(42,53,2,'2017-12-20 10:53:22','Email','Added',NULL),(43,40,2,'2017-12-14 19:47:20','Email','Added',NULL),(44,145,2,'2018-04-24 05:51:39','Admin','Added',NULL),(45,113,2,'2017-11-24 17:49:52','Admin','Added',NULL),(46,61,2,'2017-11-08 00:22:54','Admin','Added',NULL),(47,164,2,'2018-01-17 10:58:37','Admin','Added',NULL),(48,6,2,'2017-10-08 16:23:08','Admin','Added',NULL),(49,54,2,'2018-08-13 12:21:14','Admin','Added',NULL),(50,35,2,'2018-08-14 18:14:24','Admin','Added',NULL),(51,49,2,'2017-09-29 01:22:35','Email','Added',NULL),(52,158,2,'2018-06-06 17:54:39','Email','Added',NULL),(53,95,2,'2018-08-17 09:55:27','Email','Added',NULL),(54,71,2,'2018-06-28 08:13:47','Email','Added',NULL),(55,185,2,'2018-01-16 14:50:28','Email','Added',NULL),(56,172,2,'2017-10-04 18:04:54','Email','Added',NULL),(57,180,2,'2017-09-21 15:11:05','Admin','Added',NULL),(58,112,2,'2017-11-29 17:17:41','Email','Added',NULL),(59,163,2,'2017-12-06 04:13:53','Email','Added',NULL),(60,2,2,'2018-08-20 01:08:37','Email','Added',NULL),(61,122,3,'2018-01-31 09:33:51','Admin','Added',NULL),(62,21,3,'2018-04-09 02:29:05','Admin','Added',NULL),(63,18,3,'2018-01-08 09:55:52','Email','Added',NULL),(64,124,3,'2018-03-31 06:26:46','Email','Added',NULL),(65,142,3,'2018-09-09 02:01:52','Email','Added',NULL),(66,126,3,'2018-07-11 15:23:55','Email','Added',NULL),(67,78,3,'2017-12-03 14:14:34','Admin','Added',NULL),(68,76,3,'2018-05-25 20:11:07','Admin','Added',NULL),(69,66,3,'2018-01-31 04:26:36','Email','Added',NULL),(70,154,3,'2018-05-25 16:44:37','Admin','Added',NULL),(71,117,3,'2018-01-06 21:07:38','Admin','Added',NULL),(72,39,3,'2018-08-29 18:59:09','Email','Added',NULL),(73,119,3,'2018-07-01 22:44:36','Admin','Added',NULL),(74,67,3,'2017-09-24 23:58:55','Email','Added',NULL),(75,143,3,'2017-11-16 14:52:50','Email','Added',NULL),(76,91,4,'2017-12-26 14:32:05','Email','Added',NULL),(77,175,4,'2018-04-12 13:57:54','Admin','Added',NULL),(78,37,4,'2018-07-31 22:54:34','Admin','Added',NULL),(79,151,4,'2018-07-26 15:42:33','Admin','Added',NULL),(80,162,4,'2018-01-13 03:38:48','Admin','Added',NULL),(81,19,4,'2018-02-23 04:56:34','Email','Added',NULL),(82,40,4,'2018-08-11 11:27:53','Admin','Added',NULL),(83,35,4,'2017-09-25 13:28:22','Admin','Added',NULL); /*!40000 ALTER TABLE `civicrm_subscription_history` ENABLE KEYS */; UNLOCK TABLES; @@ -1441,7 +1441,7 @@ 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,181,'http://unitedaction.org',1),(2,142,'http://communitydevelopment.org',1),(3,144,'http://ruralfellowship.org',1),(4,89,'http://hollywoodcollective.org',1),(5,189,'http://communitysoftwareacademy.org',1),(6,26,'http://urbanfamilycenter.org',1),(7,123,'http://localpartners.org',1),(8,103,'http://alabamaadvocacyinitiative.org',1),(9,75,'http://friendsagriculture.org',1),(10,70,'http://californiaaction.org',1),(11,115,'http://statesalliance.org',1),(12,139,'http://kentuckyacademy.org',1),(13,200,'http://bayfund.org',1),(14,101,'http://alabamafamilysystems.org',1),(15,69,'http://friendsfamily.org',1),(16,102,'http://texasculturetrust.org',1),(17,90,'http://slagriculturecenter.org',1); +INSERT INTO `civicrm_website` (`id`, `contact_id`, `url`, `website_type_id`) VALUES (1,189,'http://ruralarts.org',1),(2,41,'http://sierraactionsystems.org',1),(3,116,'http://mlkingpoetry.org',1),(4,90,'http://wvsportsnetwork.org',1),(5,47,'http://beechsystems.org',1),(6,176,'http://localliteracysolutions.org',1),(7,26,'http://globalsolutions.org',1),(8,114,'http://scagricultureservices.org',1),(9,136,'http://njagriculturefellowship.org',1),(10,28,'http://ohiopartners.org',1),(11,86,'http://wbfoodinitiative.org',1),(12,22,'http://bayenvironmentalsolutions.org',1),(13,168,'http://creativecenter.org',1),(14,72,'http://ohiosports.org',1),(15,188,'http://secondlegal.org',1),(16,156,'http://mainalliance.org',1); /*!40000 ALTER TABLE `civicrm_website` ENABLE KEYS */; UNLOCK TABLES; @@ -1473,7 +1473,7 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2018-09-19 13:23:53 +-- Dump completed on 2018-09-19 20:19:31 -- +--------------------------------------------------------------------+ -- | CiviCRM version 5 | -- +--------------------------------------------------------------------+ diff --git a/civicrm/templates/CRM/Admin/Page/Reminders.tpl b/civicrm/templates/CRM/Admin/Page/Reminders.tpl index e533bf45ce30fd8d68c03ac76126b585e4f0d73a..4ee45c6a5bfd77dbc7f15899a749e22e90471da6 100644 --- a/civicrm/templates/CRM/Admin/Page/Reminders.tpl +++ b/civicrm/templates/CRM/Admin/Page/Reminders.tpl @@ -32,7 +32,7 @@ <table id="scheduleReminders" class="display"> <thead> <tr id="options" class="columnheader"> - <th class="sortable">{ts}Title{/ts}</th> + <th id="sortable">{ts}Title{/ts}</th> <th >{ts}Reminder For{/ts}</th> <th >{ts}When{/ts}</th> <th >{ts}While{/ts}</th> diff --git a/civicrm/templates/CRM/Case/Form/CaseView.tpl b/civicrm/templates/CRM/Case/Form/CaseView.tpl index f15819318a3ca021d6fb780b8b6ca1b832f48b5b..14dd2bd8d483766e00832fa32c7ec744197ae453 100644 --- a/civicrm/templates/CRM/Case/Form/CaseView.tpl +++ b/civicrm/templates/CRM/Case/Form/CaseView.tpl @@ -60,7 +60,9 @@ <table class="form-layout-compressed"> {foreach from=$caseRoles.client item=client} <tr class="crm-case-caseview-display_name"> - <td class="label-left bold" style="padding: 0px; border: none;">{$client.display_name}</td> + <td class="label-left bold" style="padding: 0px; border: none;"> + <a href="{crmURL p='civicrm/contact/view' q="action=view&reset=1&cid=`$client.contact_id`"}" title="{ts}View contact record{/ts}">{$client.display_name}</a> + </td> </tr> {if $client.phone} <tr class="crm-case-caseview-phone"> diff --git a/civicrm/templates/CRM/Contact/Form/Relationship.tpl b/civicrm/templates/CRM/Contact/Form/Relationship.tpl index ad0efe0c0a8f8c6b72477019f213e11a8e47a577..23239b69a4eef7f29a39c87c47e29c3edcb958f9 100644 --- a/civicrm/templates/CRM/Contact/Form/Relationship.tpl +++ b/civicrm/templates/CRM/Contact/Form/Relationship.tpl @@ -121,7 +121,7 @@ </td> </tr> <tr class="crm-relationship-form-block-is_permission_b_a"> - <td class="label"></td> + <td class="label"> </td> <td> {ts 1=$contact_b|ucfirst 2=$display_name_a}Permission for <strong>%1</strong> to access information about <strong>%2</strong>{/ts}<br /> {$form.is_permission_b_a.html} @@ -262,10 +262,6 @@ // Show/hide employer field $('.crm-relationship-form-block-is_current_employer', $form).toggle(rType === {/literal}'{$employmentRelationship}'{literal}); - // Swap the permission checkboxes to match selected relationship direction - $('#is_permission_a_b', $form).attr('name', 'is_permission_' + source + '_' + target); - $('#is_permission_b_a', $form).attr('name', 'is_permission_' + target + '_' + source); - CRM.buildCustomData('Relationship', rType); } } diff --git a/civicrm/templates/CRM/Contact/Page/Inline/Address.tpl b/civicrm/templates/CRM/Contact/Page/Inline/Address.tpl index 10439c08e043c3d847cb07a8fe48436e220fa51e..f847a9f41bd70ac81fd3c1a87ae3956974cca3dd 100644 --- a/civicrm/templates/CRM/Contact/Page/Inline/Address.tpl +++ b/civicrm/templates/CRM/Contact/Page/Inline/Address.tpl @@ -31,7 +31,12 @@ <span class="crm-i fa-pencil"></span> {if $add}{ts}Edit address{/ts}{else}{ts}Add address{/ts}{/if} </div> {/if} - {if $add } + {if !$add} + <div class="crm-summary-row"> + <div class="crm-label">{ts}Address{/ts}</div> + <div class="crm-content"></div> + </div> + {else} <div class="crm-summary-row {if $add.is_primary eq 1} primary{/if}"> <div class="crm-label"> {ts 1=$add.location_type}%1 Address{/ts} diff --git a/civicrm/templates/CRM/Contact/Page/Inline/Basic.tpl b/civicrm/templates/CRM/Contact/Page/Inline/Basic.tpl index f6123d37c5a14f76feb2fe43f0ca6038eb2a8546..cc9d6cfd8aee0d3d2fc5a7b65a4aee975771ff7c 100644 --- a/civicrm/templates/CRM/Contact/Page/Inline/Basic.tpl +++ b/civicrm/templates/CRM/Contact/Page/Inline/Basic.tpl @@ -1,4 +1,4 @@ -{*<div class="crm-clear crm-inline-block-content">*} +<div class="crm-clear crm-inline-block-content"> <div class="crm-summary-row"> <div class="crm-label" id="tagLink"> <a href="{crmURL p='civicrm/contact/view' q="reset=1&cid=$contactId&selectedChild=tag"}" @@ -38,4 +38,4 @@ {if isset($external_identifier)}{$external_identifier}{/if} </div> </div> -{*</div>*} +</div> diff --git a/civicrm/templates/CRM/Contact/Page/View/Summary.js b/civicrm/templates/CRM/Contact/Page/View/Summary.js index 76d7bb46927f73a275ed8decca64bfb08b842c65..95c2abe55801689d173cf086104881466b71dbc5 100644 --- a/civicrm/templates/CRM/Contact/Page/View/Summary.js +++ b/civicrm/templates/CRM/Contact/Page/View/Summary.js @@ -17,22 +17,38 @@ o.animate({height: '+=50px'}, 200); data.snippet = 6; data.reset = 1; - o.addClass('form'); + var width = o.width(); $('.crm-edit-ready').removeClass('crm-edit-ready'); - o.block(); + o.block().addClass('form').css('width', '' + width + 'px'); $.getJSON(CRM.url('civicrm/ajax/inline', data)) .fail(errorHandler) .done(function(response) { o.unblock(); o.css('overflow', 'hidden').wrapInner('<div class="inline-edit-hidden-content" style="display:none" />').append(response.content); + // Needed to accurately measure box width + $('.crm-container-snippet', o).css('display', 'inline-block'); // Smooth resizing - var newHeight = $('.crm-container-snippet', o).height(); - var diff = newHeight - parseInt(o.css('height'), 10); - if (diff < 0) { - diff = 0 - diff; + var newHeight = $('.crm-container-snippet', o).height(), + speed = newHeight - parseInt(o.css('height'), 10), + animation = {height: '' + newHeight + 'px'}; + // Animation speed is set relative to how much the box needs to grow + if (speed < 0) { + speed = 0 - speed; } - o.animate({height: '' + newHeight + 'px'}, diff * 2, function() { - o.removeAttr('style'); + // Horizontal growth + var newWidth = $('.crm-container-snippet', o).width(); + if (newWidth > width) { + animation.width = '' + newWidth + 'px'; + // Slow down animation if we have lots of horizontal growth to do + if (newWidth - width > speed) { + speed = newWidth - width; + } + } else { + newWidth = width; + } + $('.crm-container-snippet', o).css('display', ''); + o.animate(animation, speed, function() { + o.css({height: '', width: '', minWidth: '' + newWidth + 'px'}); }); $('form', o).validate(CRM.validate.params); ajaxFormParams.data = data; @@ -57,7 +73,7 @@ $('form', o).ajaxFormUnbind(); if (response.status == 'success' || response.status == 'cancel') { - o.trigger('crmFormSuccess', [response]); + o.trigger('crmFormSuccess', [response]).removeAttr('style'); $('.crm-inline-edit-container').addClass('crm-edit-ready'); var data = o.data('edit-params'); var dependent = $((o.data('dependent-fields') || []).join(',')); @@ -207,7 +223,7 @@ $('form', container).ajaxFormUnbind(); $('.inline-edit-hidden-content', container).nextAll().remove(); $('.inline-edit-hidden-content > *:first-child', container).unwrap(); - container.removeClass('form'); + container.removeClass('form').removeAttr('style'); $('.crm-inline-edit-container').addClass('crm-edit-ready'); $('a.ui-notify-close', '#crm-notification-container').click(); return false; @@ -252,7 +268,7 @@ CRM.api3('address', 'delete', {id: $block.data('edit-params').aid}, true) .done(function(data) { $('.crm-inline-edit-container').addClass('crm-edit-ready'); - $block.remove(); + $block.closest('.crm-address-block').remove(); reloadBlock('.crm-inline-edit.address:not(.add-new)'); }); }); diff --git a/civicrm/templates/CRM/Contact/Page/View/Summary.tpl b/civicrm/templates/CRM/Contact/Page/View/Summary.tpl index c8ce4311d3493508f2437505b9893c9e1edb2e0f..c1696f58bbe2e55c7dba95a02d59f9b95d9005f0 100644 --- a/civicrm/templates/CRM/Contact/Page/View/Summary.tpl +++ b/civicrm/templates/CRM/Contact/Page/View/Summary.tpl @@ -158,7 +158,7 @@ </div> {/if} <div class="{if !empty($imageURL)} float-left{/if}"> - <div class="crm-clear crm-summary-block"> + <div class="crm-summary-basic-block crm-summary-block"> {include file="CRM/Contact/Page/Inline/Basic.tpl"} </div> </div> diff --git a/civicrm/templates/CRM/Contribute/Form/AdditionalInfo/AdditionalDetail.tpl b/civicrm/templates/CRM/Contribute/Form/AdditionalInfo/AdditionalDetail.tpl index cb1e683a1af896072618ce500d9cd608b1b72439..190e1b4fd836ac457fc01430fcc5cc95d04f4fa7 100644 --- a/civicrm/templates/CRM/Contribute/Form/AdditionalInfo/AdditionalDetail.tpl +++ b/civicrm/templates/CRM/Contribute/Form/AdditionalInfo/AdditionalDetail.tpl @@ -33,8 +33,6 @@ <span class="description">{ts}Non-deductible portion of this contribution.{/ts}</span></td></tr> <tr class="crm-contribution-form-block-fee_amount"><td class="label">{$form.fee_amount.label}</td><td{$valueStyle}>{$form.fee_amount.html|crmMoney:$currency:'XXX':'YYY'}<br /> <span class="description">{ts}Processing fee for this transaction (if applicable).{/ts}</span></td></tr> - - <tr class="crm-contribution-form-block-net_amount"><td class="label">{$form.net_amount.label}</td><td{$valueStyle}>{$form.net_amount.html|crmMoney:$currency:'':1}<br /> <span class="description">{ts}Net value of the contribution (Total Amount minus Fee).{/ts}</span></td></tr> <tr class="crm-contribution-form-block-invoice_id"><td class="label">{$form.invoice_id.label}</td><td{$valueStyle}>{$form.invoice_id.html}<br /> <span class="description">{ts}Unique internal reference ID for this contribution.{/ts}</span></td></tr> diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution.tpl index 44f813d4be0b56bc635fa5f40674d63be6b9c551..b38df538290c546626fadc7d1c05fad0db648e42 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution.tpl @@ -44,7 +44,7 @@ {/if} </div> {/if} - + <div class="crm-block crm-form-block crm-contribution-form-block"> {if !$email and $action neq 8 and $context neq 'standalone'} @@ -52,7 +52,7 @@ <div class="icon inform-icon"></div> {ts}You will not be able to send an automatic email receipt for this contribution because there is no email address recorded for this contact. If you want a receipt to be sent when this contribution is recorded, click Cancel and then click Edit from the Summary tab to add an email address before recording the contribution.{/ts} </div> {/if} - + {if $action eq 8} <div class="messages status no-popup"> <div class="icon inform-icon"></div> @@ -590,15 +590,6 @@ function showStartDate( ) { var thousandMarker = "{/literal}{$config->monetaryThousandSeparator}{literal}"; var separator = "{/literal}{$config->monetaryDecimalPoint}{literal}"; -cj('#fee_amount').change( function() { - var totalAmount = cj('#total_amount').val().replace(thousandMarker,'').replace(separator,'.'); - var feeAmount = cj('#fee_amount').val().replace(thousandMarker,'').replace(separator,'.'); - var netAmount = totalAmount - feeAmount; - if (totalAmount) { - cj('#net_amount').val(CRM.formatMoney(netAmount, true)); - } -}); - cj("#financial_type_id").on("change",function(){ cj('#total_amount').trigger("change"); }) diff --git a/civicrm/templates/CRM/Member/Form/Membership.tpl b/civicrm/templates/CRM/Member/Form/Membership.tpl index cdda8dd679693da987994c812ea695fdf7c8b1af..ab0efc27720d7805becaa97f1c0571dd416a5044 100644 --- a/civicrm/templates/CRM/Member/Form/Membership.tpl +++ b/civicrm/templates/CRM/Member/Form/Membership.tpl @@ -617,7 +617,7 @@ var fname = '#priceset'; if ( !priceSetId ) { cj('#membership_type_id_1').val(0); - CRM.buildCustomData(customDataType, 'null' ); + CRM.buildCustomData(customDataType, null ); // hide price set fields. cj( fname ).hide( ); @@ -797,7 +797,7 @@ subTypeNames = currentMembershipType.join(','); if ( subTypeNames.length < 1 ) { - subTypeNames = 'null'; + subTypeNames = null; } CRM.buildCustomData( customDataType, subTypeNames ); diff --git a/civicrm/templates/CRM/Member/Form/MembershipType.tpl b/civicrm/templates/CRM/Member/Form/MembershipType.tpl index 2fee1d365533c295c56128ae527c100f610f39a4..3f9a87461669823c891da18feb92118e8273bcc4 100644 --- a/civicrm/templates/CRM/Member/Form/MembershipType.tpl +++ b/civicrm/templates/CRM/Member/Form/MembershipType.tpl @@ -125,6 +125,8 @@ </div> </fieldset> + {include file="CRM/common/customDataBlock.tpl"} + <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div> {/if} <div class="spacer"></div> diff --git a/civicrm/templates/CRM/Report/Form/Tabs/Developer.tpl b/civicrm/templates/CRM/Report/Form/Tabs/Developer.tpl index dd2f3a195d2e047649b44e57e9d8780a4a8adf48..67e814ad53e9aa2b6715f14c03eb765ad0f6b386 100644 --- a/civicrm/templates/CRM/Report/Form/Tabs/Developer.tpl +++ b/civicrm/templates/CRM/Report/Form/Tabs/Developer.tpl @@ -1,4 +1,9 @@ <div id="report-tab-set-developer" class="civireport-criteria"> - <p><b>{ts}Class used{/ts}: {$report_class}</b></p> + <p><b>{ts}Class used{/ts}: {$report_class|escape}</b></p> + <p>{ts}SQL Modes{/ts}: + {foreach from=$sqlModes item=sqlMode} + {$sqlMode|escape} + {/foreach} + </p> <pre>{$sql|purify}</pre> </div> diff --git a/civicrm/templates/CRM/common/navigation.js.tpl b/civicrm/templates/CRM/common/navigation.js.tpl index 69151673f3dc4f50076bcd0ee13803e333a786c6..5902068185ebb3523bfcbf100c389bf7178990d9 100644 --- a/civicrm/templates/CRM/common/navigation.js.tpl +++ b/civicrm/templates/CRM/common/navigation.js.tpl @@ -54,30 +54,25 @@ {/strip}{/capture}// <script> Generated {$smarty.now|date_format:'%d %b %Y %H:%M:%S'} {literal} (function($) { - var menuMarkup = {/literal}{$menuMarkup|@json_encode}; -{if $config->userFramework neq 'Joomla'}{literal} - $('body').append(menuMarkup); - - $('#civicrm-menu').css({position: "fixed", top: "0px"}); + var menuMarkup = {/literal}{$menuMarkup|@json_encode}{literal}; //Track Scrolling - $(window).scroll(function () { - $('div.sticky-header').css({top: $('#civicrm-menu').height() + "px", position: "fixed"}); - }); - - if ($('#edit-shortcuts').length > 0) { - $('#civicrm-menu').css({'width': '97%'}); + if ($('div.sticky-header').length) { + $(window).scroll(function () { + $('div.sticky-header').css({top: $('#civicrm-menu').height() + "px", position: "fixed"}); + }); } -{/literal}{else}{* Special menu hacks for Joomla *}{literal} - // below div is present in older version of joomla 2.5.x - var elementExists = $('div#toolbar-box div.m').length; - if (elementExists > 0) { + + if ($('div#toolbar-box div.m').length) { $('div#toolbar-box div.m').html(menuMarkup); } - else { + else if ($("#crm-nav-menu-container").length) { $("#crm-nav-menu-container").html(menuMarkup).css({'padding-bottom': '10px'}); } -{/literal}{/if}{literal} + else { + $('body').append(menuMarkup); + } + // CRM-15493 get the current qfKey $("input[name=qfKey]", "#quickSearch").val($('#civicrm-navigation-menu').data('qfkey')); diff --git a/civicrm/vendor/autoload.php b/civicrm/vendor/autoload.php index d6d5c572bdf401c201c346c0a7f9557a054a45b6..bcb4f7e14985ddef08e4a252e29955a416b94043 100644 --- a/civicrm/vendor/autoload.php +++ b/civicrm/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit437ca3b0f4619c3058aaa7d4b56b01d9::getLoader(); +return ComposerAutoloaderInit51610d91ebd47e0f48d98a5f52f3068c::getLoader(); diff --git a/civicrm/vendor/composer/autoload_files.php b/civicrm/vendor/composer/autoload_files.php index 03f050c0be90cc925af8db25d16b3d67758116b9..c044948f25a4b4e53c1a61f1012e5b104e894a8f 100644 --- a/civicrm/vendor/composer/autoload_files.php +++ b/civicrm/vendor/composer/autoload_files.php @@ -6,10 +6,12 @@ $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( + '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', 'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php', '3919eeb97e98d4648304477f8ef734ba' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/Random.php', 'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php', 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', '5636a0a89fc28f9cfa8624493b142015' => $vendorDir . '/civicrm/civicrm-setup/civicrm-setup-autoload.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', + 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php', ); diff --git a/civicrm/vendor/composer/autoload_namespaces.php b/civicrm/vendor/composer/autoload_namespaces.php index fcdea29a6a319844f4563bdbca84f71e5f1b2d29..675c27b9ef55fd3d7d361fb4fa400227bf5df77d 100644 --- a/civicrm/vendor/composer/autoload_namespaces.php +++ b/civicrm/vendor/composer/autoload_namespaces.php @@ -8,12 +8,6 @@ $baseDir = dirname($vendorDir); return array( 'Validate' => array($vendorDir . '/pear/validate_finance_creditcard'), 'System' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'), - 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), - 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), - 'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'), - 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), - 'Symfony\\Component\\DependencyInjection\\' => array($vendorDir . '/symfony/dependency-injection'), - 'Symfony\\Component\\Config\\' => array($vendorDir . '/symfony/config'), 'Svg\\' => array($vendorDir . '/phenx/php-svg-lib/src'), 'Sabberworm\\CSS' => array($vendorDir . '/sabberworm/php-css-parser/lib'), 'Psr\\Log\\' => array($vendorDir . '/psr/log'), diff --git a/civicrm/vendor/composer/autoload_psr4.php b/civicrm/vendor/composer/autoload_psr4.php index 1db2a6d77c858a955289db753f31b6cd065f56d4..eb36b6844cb414d8cb62773d447b039d368e925f 100644 --- a/civicrm/vendor/composer/autoload_psr4.php +++ b/civicrm/vendor/composer/autoload_psr4.php @@ -9,6 +9,14 @@ return array( 'Zend\\Validator\\' => array($vendorDir . '/zendframework/zend-validator/src'), 'Zend\\Stdlib\\' => array($vendorDir . '/zendframework/zend-stdlib/src'), 'Zend\\Escaper\\' => array($vendorDir . '/zendframework/zend-escaper/src'), + 'Symfony\\Polyfill\\Iconv\\' => array($vendorDir . '/symfony/polyfill-iconv'), + 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), + 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), + 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), + 'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'), + 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), + 'Symfony\\Component\\DependencyInjection\\' => array($vendorDir . '/symfony/dependency-injection'), + 'Symfony\\Component\\Config\\' => array($vendorDir . '/symfony/config'), 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'), 'PhpOffice\\PhpWord\\' => array($vendorDir . '/phpoffice/phpword/src/PhpWord'), diff --git a/civicrm/vendor/composer/autoload_real.php b/civicrm/vendor/composer/autoload_real.php index 232db9fbe4c5f09fcb03777fb0ee66e039042ab6..333e8fce71d5473dd4c0765c6ccb935d4a16e0f2 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 ComposerAutoloaderInit437ca3b0f4619c3058aaa7d4b56b01d9 +class ComposerAutoloaderInit51610d91ebd47e0f48d98a5f52f3068c { private static $loader; @@ -19,9 +19,9 @@ class ComposerAutoloaderInit437ca3b0f4619c3058aaa7d4b56b01d9 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit437ca3b0f4619c3058aaa7d4b56b01d9', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit51610d91ebd47e0f48d98a5f52f3068c', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit437ca3b0f4619c3058aaa7d4b56b01d9', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit51610d91ebd47e0f48d98a5f52f3068c', 'loadClassLoader')); $includePaths = require __DIR__ . '/include_paths.php'; $includePaths[] = get_include_path(); @@ -31,7 +31,7 @@ class ComposerAutoloaderInit437ca3b0f4619c3058aaa7d4b56b01d9 if ($useStaticLoader) { require_once __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit437ca3b0f4619c3058aaa7d4b56b01d9::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit51610d91ebd47e0f48d98a5f52f3068c::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -52,19 +52,19 @@ class ComposerAutoloaderInit437ca3b0f4619c3058aaa7d4b56b01d9 $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInit437ca3b0f4619c3058aaa7d4b56b01d9::$files; + $includeFiles = Composer\Autoload\ComposerStaticInit51610d91ebd47e0f48d98a5f52f3068c::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire437ca3b0f4619c3058aaa7d4b56b01d9($fileIdentifier, $file); + composerRequire51610d91ebd47e0f48d98a5f52f3068c($fileIdentifier, $file); } return $loader; } } -function composerRequire437ca3b0f4619c3058aaa7d4b56b01d9($fileIdentifier, $file) +function composerRequire51610d91ebd47e0f48d98a5f52f3068c($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; diff --git a/civicrm/vendor/composer/autoload_static.php b/civicrm/vendor/composer/autoload_static.php index cf21ad061ff3316f6dcac9c1dadb4cc6951798a1..895b6feb3cb71b203a449690c1db4c5f92951f29 100644 --- a/civicrm/vendor/composer/autoload_static.php +++ b/civicrm/vendor/composer/autoload_static.php @@ -4,15 +4,17 @@ namespace Composer\Autoload; -class ComposerStaticInit437ca3b0f4619c3058aaa7d4b56b01d9 +class ComposerStaticInit51610d91ebd47e0f48d98a5f52f3068c { public static $files = array ( + '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', 'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php', '3919eeb97e98d4648304477f8ef734ba' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/Random.php', 'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php', 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', '5636a0a89fc28f9cfa8624493b142015' => __DIR__ . '/..' . '/civicrm/civicrm-setup/civicrm-setup-autoload.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', + 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php', ); public static $prefixLengthsPsr4 = array ( @@ -22,6 +24,17 @@ class ComposerStaticInit437ca3b0f4619c3058aaa7d4b56b01d9 'Zend\\Stdlib\\' => 12, 'Zend\\Escaper\\' => 13, ), + 'S' => + array ( + 'Symfony\\Polyfill\\Iconv\\' => 23, + 'Symfony\\Polyfill\\Ctype\\' => 23, + 'Symfony\\Component\\Process\\' => 26, + 'Symfony\\Component\\Finder\\' => 25, + 'Symfony\\Component\\Filesystem\\' => 29, + 'Symfony\\Component\\EventDispatcher\\' => 34, + 'Symfony\\Component\\DependencyInjection\\' => 38, + 'Symfony\\Component\\Config\\' => 25, + ), 'P' => array ( 'Psr\\SimpleCache\\' => 16, @@ -67,6 +80,38 @@ class ComposerStaticInit437ca3b0f4619c3058aaa7d4b56b01d9 array ( 0 => __DIR__ . '/..' . '/zendframework/zend-escaper/src', ), + 'Symfony\\Polyfill\\Iconv\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-iconv', + ), + 'Symfony\\Polyfill\\Ctype\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', + ), + 'Symfony\\Component\\Process\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/process', + ), + 'Symfony\\Component\\Finder\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/finder', + ), + 'Symfony\\Component\\Filesystem\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/filesystem', + ), + 'Symfony\\Component\\EventDispatcher\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/event-dispatcher', + ), + 'Symfony\\Component\\DependencyInjection\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/dependency-injection', + ), + 'Symfony\\Component\\Config\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/config', + ), 'Psr\\SimpleCache\\' => array ( 0 => __DIR__ . '/..' . '/psr/simple-cache/src', @@ -131,30 +176,6 @@ class ComposerStaticInit437ca3b0f4619c3058aaa7d4b56b01d9 array ( 0 => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib', ), - 'Symfony\\Component\\Process\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/process', - ), - 'Symfony\\Component\\Finder\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/finder', - ), - 'Symfony\\Component\\Filesystem\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/filesystem', - ), - 'Symfony\\Component\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/event-dispatcher', - ), - 'Symfony\\Component\\DependencyInjection\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/dependency-injection', - ), - 'Symfony\\Component\\Config\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/config', - ), 'Svg\\' => array ( 0 => __DIR__ . '/..' . '/phenx/php-svg-lib/src', @@ -376,10 +397,10 @@ class ComposerStaticInit437ca3b0f4619c3058aaa7d4b56b01d9 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit437ca3b0f4619c3058aaa7d4b56b01d9::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit437ca3b0f4619c3058aaa7d4b56b01d9::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInit437ca3b0f4619c3058aaa7d4b56b01d9::$prefixesPsr0; - $loader->classMap = ComposerStaticInit437ca3b0f4619c3058aaa7d4b56b01d9::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit51610d91ebd47e0f48d98a5f52f3068c::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit51610d91ebd47e0f48d98a5f52f3068c::$prefixDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInit51610d91ebd47e0f48d98a5f52f3068c::$prefixesPsr0; + $loader->classMap = ComposerStaticInit51610d91ebd47e0f48d98a5f52f3068c::$classMap; }, null, ClassLoader::class); } diff --git a/civicrm/vendor/composer/installed.json b/civicrm/vendor/composer/installed.json index 8bae0c3aa181b77c34b7a0be6dc274f1d41bfcaf..07ede94683e350f1db8e3b4e391dec7c1cf3ec70 100644 --- a/civicrm/vendor/composer/installed.json +++ b/civicrm/vendor/composer/installed.json @@ -109,6 +109,9 @@ "extra": { "branch-alias": { "dev-develop": "0.7-dev" + }, + "patches_applied": { + "Fix Fatal error: Uncaught Dompdf Exception: No block-level parent found.": "tools/scripts/composer/patches/dompdf_no_block_level_parent_fix.patch" } }, "installation-source": "dist", @@ -541,6 +544,14 @@ }, "time": "2015-08-02T17:20:17+00:00", "type": "library", + "extra": { + "patches_applied": { + "CRM-8744 Display CiviCRM Specific error message": "tools/scripts/composer/patches/net-smtp-patch.patch", + "Fix PHP7 Compliance": "tools/scripts/composer/patches/net-smtp-php7-patch.patch", + "Fix Pass by reference issues": "tools/scripts/composer/patches/net-smtp-ref-patch.patch", + "Fix TLS support issue in PHP5.6": "tools/scripts/composer/patches/net-smtp-tls-patch.patch" + } + }, "installation-source": "dist", "autoload": { "psr-0": { @@ -1261,39 +1272,45 @@ }, { "name": "symfony/config", - "version": "v2.6.13", - "version_normalized": "2.6.13.0", - "target-dir": "Symfony/Component/Config", + "version": "v2.8.44", + "version_normalized": "2.8.44.0", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "0ca496cbe208fc37c4cf3415ebb3056e0963115b" + "reference": "06c0be4cdd8363f3ec8d592c9a4d1b981d5052af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/0ca496cbe208fc37c4cf3415ebb3056e0963115b", - "reference": "0ca496cbe208fc37c4cf3415ebb3056e0963115b", + "url": "https://api.github.com/repos/symfony/config/zipball/06c0be4cdd8363f3ec8d592c9a4d1b981d5052af", + "reference": "06c0be4cdd8363f3ec8d592c9a4d1b981d5052af", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/filesystem": "~2.3" + "php": ">=5.3.9", + "symfony/filesystem": "~2.3|~3.0.0", + "symfony/polyfill-ctype": "~1.8" }, "require-dev": { - "symfony/phpunit-bridge": "~2.7" + "symfony/yaml": "~2.7|~3.0.0" }, - "time": "2015-07-08T05:59:48+00:00", + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "time": "2018-07-26T11:13:39+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } }, "installation-source": "dist", "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Config\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1314,49 +1331,51 @@ }, { "name": "symfony/dependency-injection", - "version": "v2.6.13", - "version_normalized": "2.6.13.0", - "target-dir": "Symfony/Component/DependencyInjection", + "version": "v2.8.44", + "version_normalized": "2.8.44.0", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "d9fe6837d74aed11e5ee741cd6b6dfe45e0af78e" + "reference": "ad2446d39d11c3daaa7f147d957941a187e47357" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d9fe6837d74aed11e5ee741cd6b6dfe45e0af78e", - "reference": "d9fe6837d74aed11e5ee741cd6b6dfe45e0af78e", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ad2446d39d11c3daaa7f147d957941a187e47357", + "reference": "ad2446d39d11c3daaa7f147d957941a187e47357", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, "conflict": { "symfony/expression-language": "<2.6" }, "require-dev": { - "symfony/config": "~2.2", - "symfony/expression-language": "~2.6", - "symfony/phpunit-bridge": "~2.7", - "symfony/yaml": "~2.1" + "symfony/config": "~2.2|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/yaml": "~2.3.42|~2.7.14|~2.8.7|~3.0.7" }, "suggest": { "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", "symfony/yaml": "" }, - "time": "2015-07-22T10:08:40+00:00", + "time": "2018-07-26T11:13:39+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } }, "installation-source": "dist", "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\DependencyInjection\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1377,47 +1396,48 @@ }, { "name": "symfony/event-dispatcher", - "version": "v2.6.13", - "version_normalized": "2.6.13.0", - "target-dir": "Symfony/Component/EventDispatcher", + "version": "v2.8.44", + "version_normalized": "2.8.44.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "672593bc4b0043a0acf91903bb75a1c82d8f2e02" + "reference": "84ae343f39947aa084426ed1138bb96bf94d1f12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/672593bc4b0043a0acf91903bb75a1c82d8f2e02", - "reference": "672593bc4b0043a0acf91903bb75a1c82d8f2e02", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/84ae343f39947aa084426ed1138bb96bf94d1f12", + "reference": "84ae343f39947aa084426ed1138bb96bf94d1f12", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.0,>=2.0.5", - "symfony/dependency-injection": "~2.6", - "symfony/expression-language": "~2.6", - "symfony/phpunit-bridge": "~2.7", - "symfony/stopwatch": "~2.3" + "symfony/config": "^2.0.5|~3.0.0", + "symfony/dependency-injection": "~2.6|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0" }, "suggest": { "symfony/dependency-injection": "", "symfony/http-kernel": "" }, - "time": "2015-05-02T15:18:45+00:00", + "time": "2018-07-26T09:03:18+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } }, "installation-source": "dist", "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1438,38 +1458,38 @@ }, { "name": "symfony/filesystem", - "version": "v2.6.13", - "version_normalized": "2.6.13.0", - "target-dir": "Symfony/Component/Filesystem", + "version": "v2.8.44", + "version_normalized": "2.8.44.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "823c035b1a5c13a4924e324d016eb07e70f94735" + "reference": "2d6a4deccdfa2e4e9f113138b93457b2d0886c15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/823c035b1a5c13a4924e324d016eb07e70f94735", - "reference": "823c035b1a5c13a4924e324d016eb07e70f94735", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/2d6a4deccdfa2e4e9f113138b93457b2d0886c15", + "reference": "2d6a4deccdfa2e4e9f113138b93457b2d0886c15", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" - }, - "time": "2015-07-08T05:59:48+00:00", + "time": "2018-07-26T11:13:39+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } }, "installation-source": "dist", "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Filesystem\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1490,38 +1510,37 @@ }, { "name": "symfony/finder", - "version": "v2.6.13", - "version_normalized": "2.6.13.0", - "target-dir": "Symfony/Component/Finder", + "version": "v2.8.44", + "version_normalized": "2.8.44.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "203a10f928ae30176deeba33512999233181dd28" + "reference": "f0de0b51913eb2caab7dfed6413b87e14fca780e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/203a10f928ae30176deeba33512999233181dd28", - "reference": "203a10f928ae30176deeba33512999233181dd28", + "url": "https://api.github.com/repos/symfony/finder/zipball/f0de0b51913eb2caab7dfed6413b87e14fca780e", + "reference": "f0de0b51913eb2caab7dfed6413b87e14fca780e", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" - }, - "time": "2015-07-09T16:02:48+00:00", + "time": "2018-07-26T11:13:39+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } }, "installation-source": "dist", "autoload": { - "psr-0": { + "psr-4": { "Symfony\\Component\\Finder\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1541,39 +1560,156 @@ "homepage": "https://symfony.com" }, { - "name": "symfony/process", - "version": "v2.6.13", - "version_normalized": "2.6.13.0", - "target-dir": "Symfony/Component/Process", + "name": "symfony/polyfill-ctype", + "version": "v1.8.0", + "version_normalized": "1.8.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "57f1e88bb5dafa449b83f9f265b11d52d517b3e9" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/57f1e88bb5dafa449b83f9f265b11d52d517b3e9", - "reference": "57f1e88bb5dafa449b83f9f265b11d52d517b3e9", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/7cc359f1b7b80fc25ed7796be7d96adc9b354bae", + "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" + "time": "2018-04-30T19:57:29+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } }, - "time": "2015-06-30T16:10:16+00:00", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ] + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.9.0", + "version_normalized": "1.9.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "bcc0cd69185b8a5d8b4a5400c489ed3333bf9bb2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/bcc0cd69185b8a5d8b4a5400c489ed3333bf9bb2", + "reference": "bcc0cd69185b8a5d8b4a5400c489ed3333bf9bb2", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "time": "2018-08-06T14:22:27+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "1.9-dev" } }, "installation-source": "dist", "autoload": { - "psr-0": { - "Symfony\\Component\\Process\\": "" + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ] + }, + { + "name": "symfony/process", + "version": "v2.8.44", + "version_normalized": "2.8.44.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "cc83afdb5ac99147806b3bb65a3ff1227664f596" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/cc83afdb5ac99147806b3bb65a3ff1227664f596", + "reference": "cc83afdb5ac99147806b3bb65a3ff1227664f596", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "time": "2018-07-26T11:13:39+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ diff --git a/civicrm/vendor/symfony/config/CHANGELOG.md b/civicrm/vendor/symfony/config/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..65b602e71353cb3a6f911f3ccbd6f4b97c5b9051 --- /dev/null +++ b/civicrm/vendor/symfony/config/CHANGELOG.md @@ -0,0 +1,54 @@ +CHANGELOG +========= + +2.8.0 +----- + +The edge case of defining just one value for nodes of type Enum is now allowed: + +```php +$rootNode + ->children() + ->enumNode('variable') + ->values(array('value')) + ->end() + ->end() +; +``` + +Before: `InvalidArgumentException` (variable must contain at least two +distinct elements). +After: the code will work as expected and it will restrict the values of the +`variable` option to just `value`. + + * deprecated the `ResourceInterface::isFresh()` method. If you implement custom resource types and they + can be validated that way, make them implement the new `SelfCheckingResourceInterface`. + * deprecated the getResource() method in ResourceInterface. You can still call this method + on concrete classes implementing the interface, but it does not make sense at the interface + level as you need to know about the particular type of resource at hand to understand the + semantics of the returned value. + +2.7.0 +----- + + * added `ConfigCacheInterface`, `ConfigCacheFactoryInterface` and a basic `ConfigCacheFactory` + implementation to delegate creation of ConfigCache instances + +2.2.0 +----- + + * added ArrayNodeDefinition::canBeEnabled() and ArrayNodeDefinition::canBeDisabled() + to ease configuration when some sections are respectively disabled / enabled + by default. + * added a `normalizeKeys()` method for array nodes (to avoid key normalization) + * added numerical type handling for config definitions + * added convenience methods for optional configuration sections to ArrayNodeDefinition + * added a utils class for XML manipulations + +2.1.0 +----- + + * added a way to add documentation on configuration + * implemented `Serializable` on resources + * LoaderResolverInterface is now used instead of LoaderResolver for type + hinting diff --git a/civicrm/vendor/symfony/config/ConfigCache.php b/civicrm/vendor/symfony/config/ConfigCache.php new file mode 100644 index 0000000000000000000000000000000000000000..016e014b6c516a051d8fa8c0234e94757816c8b4 --- /dev/null +++ b/civicrm/vendor/symfony/config/ConfigCache.php @@ -0,0 +1,79 @@ +<?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\Component\Config; + +use Symfony\Component\Config\Resource\BCResourceInterfaceChecker; +use Symfony\Component\Config\Resource\SelfCheckingResourceChecker; + +/** + * ConfigCache caches arbitrary content in files on disk. + * + * When in debug mode, those metadata resources that implement + * \Symfony\Component\Config\Resource\SelfCheckingResourceInterface will + * be used to check cache freshness. + * + * During a transition period, also instances of + * \Symfony\Component\Config\Resource\ResourceInterface will be checked + * by means of the isFresh() method. This behaviour is deprecated since 2.8 + * and will be removed in 3.0. + * + * @author Fabien Potencier <fabien@symfony.com> + * @author Matthias Pigulla <mp@webfactory.de> + */ +class ConfigCache extends ResourceCheckerConfigCache +{ + private $debug; + + /** + * @param string $file The absolute cache path + * @param bool $debug Whether debugging is enabled or not + */ + public function __construct($file, $debug) + { + parent::__construct($file, array( + new SelfCheckingResourceChecker(), + new BCResourceInterfaceChecker(), + )); + $this->debug = (bool) $debug; + } + + /** + * Gets the cache file path. + * + * @return string The cache file path + * + * @deprecated since 2.7, to be removed in 3.0. Use getPath() instead. + */ + public function __toString() + { + @trigger_error('ConfigCache::__toString() is deprecated since Symfony 2.7 and will be removed in 3.0. Use the getPath() method instead.', E_USER_DEPRECATED); + + return $this->getPath(); + } + + /** + * Checks if the cache is still fresh. + * + * This implementation always returns true when debug is off and the + * cache file exists. + * + * @return bool true if the cache is fresh, false otherwise + */ + public function isFresh() + { + if (!$this->debug && is_file($this->getPath())) { + return true; + } + + return parent::isFresh(); + } +} diff --git a/civicrm/vendor/symfony/config/ConfigCacheFactory.php b/civicrm/vendor/symfony/config/ConfigCacheFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..7903cca9321f0901f0f8f033ef56c8b0d1cbd78e --- /dev/null +++ b/civicrm/vendor/symfony/config/ConfigCacheFactory.php @@ -0,0 +1,51 @@ +<?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\Component\Config; + +/** + * Basic implementation of ConfigCacheFactoryInterface that + * creates an instance of the default ConfigCache. + * + * This factory and/or cache <em>do not</em> support cache validation + * by means of ResourceChecker instances (that is, service-based). + * + * @author Matthias Pigulla <mp@webfactory.de> + */ +class ConfigCacheFactory implements ConfigCacheFactoryInterface +{ + private $debug; + + /** + * @param bool $debug The debug flag to pass to ConfigCache + */ + public function __construct($debug) + { + $this->debug = $debug; + } + + /** + * {@inheritdoc} + */ + public function cache($file, $callback) + { + if (!\is_callable($callback)) { + throw new \InvalidArgumentException(sprintf('Invalid type for callback argument. Expected callable, but got "%s".', \gettype($callback))); + } + + $cache = new ConfigCache($file, $this->debug); + if (!$cache->isFresh()) { + \call_user_func($callback, $cache); + } + + return $cache; + } +} diff --git a/civicrm/vendor/symfony/config/ConfigCacheFactoryInterface.php b/civicrm/vendor/symfony/config/ConfigCacheFactoryInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..bd614c4b6b39357e515a29107d5bc5cb5bc7ad32 --- /dev/null +++ b/civicrm/vendor/symfony/config/ConfigCacheFactoryInterface.php @@ -0,0 +1,32 @@ +<?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\Component\Config; + +/** + * Interface for a ConfigCache factory. This factory creates + * an instance of ConfigCacheInterface and initializes the + * cache if necessary. + * + * @author Matthias Pigulla <mp@webfactory.de> + */ +interface ConfigCacheFactoryInterface +{ + /** + * Creates a cache instance and (re-)initializes it if necessary. + * + * @param string $file The absolute cache file path + * @param callable $callable The callable to be executed when the cache needs to be filled (i. e. is not fresh). The cache will be passed as the only parameter to this callback + * + * @return ConfigCacheInterface $configCache The cache instance + */ + public function cache($file, $callable); +} diff --git a/civicrm/vendor/symfony/config/ConfigCacheInterface.php b/civicrm/vendor/symfony/config/ConfigCacheInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..7c47ad70a56858a30baf04bb8e47888de15b060b --- /dev/null +++ b/civicrm/vendor/symfony/config/ConfigCacheInterface.php @@ -0,0 +1,49 @@ +<?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\Component\Config; + +use Symfony\Component\Config\Resource\ResourceInterface; + +/** + * Interface for ConfigCache. + * + * @author Matthias Pigulla <mp@webfactory.de> + */ +interface ConfigCacheInterface +{ + /** + * Gets the cache file path. + * + * @return string The cache file path + */ + public function getPath(); + + /** + * Checks if the cache is still fresh. + * + * This check should take the metadata passed to the write() method into consideration. + * + * @return bool Whether the cache is still fresh + */ + public function isFresh(); + + /** + * Writes the given content into the cache file. Metadata will be stored + * independently and can be used to check cache freshness at a later time. + * + * @param string $content The content to write into the cache + * @param ResourceInterface[]|null $metadata An array of ResourceInterface instances + * + * @throws \RuntimeException When the cache file cannot be written + */ + public function write($content, array $metadata = null); +} diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/ArrayNode.php b/civicrm/vendor/symfony/config/Definition/ArrayNode.php similarity index 90% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/ArrayNode.php rename to civicrm/vendor/symfony/config/Definition/ArrayNode.php index 05ae1fdcd99e1dc94ab1071efcf8803c020e44ee..1ab4a3ae59e43c645dc1f6fa9c49053bfaa61b85 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/ArrayNode.php +++ b/civicrm/vendor/symfony/config/Definition/ArrayNode.php @@ -29,6 +29,7 @@ class ArrayNode extends BaseNode implements PrototypeNodeInterface protected $addIfNotSet = false; protected $performDeepMerging = true; protected $ignoreExtraKeys = false; + protected $removeExtraKeys = true; protected $normalizeKeys = true; public function setNormalizeKeys($normalizeKeys) @@ -51,18 +52,21 @@ class ArrayNode extends BaseNode implements PrototypeNodeInterface */ protected function preNormalize($value) { - if (!$this->normalizeKeys || !is_array($value)) { + if (!$this->normalizeKeys || !\is_array($value)) { return $value; } + $normalized = array(); + foreach ($value as $k => $v) { if (false !== strpos($k, '-') && false === strpos($k, '_') && !array_key_exists($normalizedKey = str_replace('-', '_', $k), $value)) { - $value[$normalizedKey] = $v; - unset($value[$k]); + $normalized[$normalizedKey] = $v; + } else { + $normalized[$k] = $v; } } - return $value; + return $normalized; } /** @@ -78,7 +82,7 @@ class ArrayNode extends BaseNode implements PrototypeNodeInterface /** * Sets the xml remappings that should be performed. * - * @param array $remappings an array of the form array(array(string, string)) + * @param array $remappings An array of the form array(array(string, string)) */ public function setXmlRemappings(array $remappings) { @@ -140,16 +144,16 @@ class ArrayNode extends BaseNode implements PrototypeNodeInterface * Whether extra keys should just be ignore without an exception. * * @param bool $boolean To allow extra keys + * @param bool $remove To remove extra keys */ - public function setIgnoreExtraKeys($boolean) + public function setIgnoreExtraKeys($boolean, $remove = true) { $this->ignoreExtraKeys = (bool) $boolean; + $this->removeExtraKeys = $this->ignoreExtraKeys && $remove; } /** - * Sets the node Name. - * - * @param string $name The node's name + * {@inheritdoc} */ public function setName($name) { @@ -157,9 +161,7 @@ class ArrayNode extends BaseNode implements PrototypeNodeInterface } /** - * Checks if the node has a default value. - * - * @return bool + * {@inheritdoc} */ public function hasDefaultValue() { @@ -167,11 +169,7 @@ class ArrayNode extends BaseNode implements PrototypeNodeInterface } /** - * Retrieves the default value. - * - * @return array The default value - * - * @throws \RuntimeException if the node has no default value + * {@inheritdoc} */ public function getDefaultValue() { @@ -192,15 +190,13 @@ class ArrayNode extends BaseNode implements PrototypeNodeInterface /** * Adds a child node. * - * @param NodeInterface $node The child node to add - * * @throws \InvalidArgumentException when the child node has no name * @throws \InvalidArgumentException when the child node's name is not unique */ public function addChild(NodeInterface $node) { $name = $node->getName(); - if (!strlen($name)) { + if (!\strlen($name)) { throw new \InvalidArgumentException('Child nodes must be named.'); } if (isset($this->children[$name])) { @@ -263,11 +259,11 @@ class ArrayNode extends BaseNode implements PrototypeNodeInterface */ protected function validateType($value) { - if (!is_array($value) && (!$this->allowFalse || false !== $value)) { + if (!\is_array($value) && (!$this->allowFalse || false !== $value)) { $ex = new InvalidTypeException(sprintf( 'Invalid type for path "%s". Expected array, but got %s', $this->getPath(), - gettype($value) + \gettype($value) )); if ($hint = $this->getInfo()) { $ex->addHint($hint); @@ -300,12 +296,14 @@ class ArrayNode extends BaseNode implements PrototypeNodeInterface if (isset($this->children[$name])) { $normalized[$name] = $this->children[$name]->normalize($val); unset($value[$name]); + } elseif (!$this->removeExtraKeys) { + $normalized[$name] = $val; } } // if extra fields are present, throw exception - if (count($value) && !$this->ignoreExtraKeys) { - $msg = sprintf('Unrecognized option%s "%s" under "%s"', 1 === count($value) ? '' : 's', implode(', ', array_keys($value)), $this->getPath()); + if (\count($value) && !$this->ignoreExtraKeys) { + $msg = sprintf('Unrecognized option%s "%s" under "%s"', 1 === \count($value) ? '' : 's', implode(', ', array_keys($value)), $this->getPath()); $ex = new InvalidConfigurationException($msg); $ex->setPath($this->getPath()); @@ -341,8 +339,8 @@ class ArrayNode extends BaseNode implements PrototypeNodeInterface /** * Merges values together. * - * @param mixed $leftSide The left side to merge. - * @param mixed $rightSide The right side to merge. + * @param mixed $leftSide The left side to merge + * @param mixed $rightSide The right side to merge * * @return mixed The merged values * diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/BaseNode.php b/civicrm/vendor/symfony/config/Definition/BaseNode.php similarity index 87% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/BaseNode.php rename to civicrm/vendor/symfony/config/Definition/BaseNode.php index fc3e01291665a834845e3405b4c3a2d0b9edaa7f..8885775e607dc1a6b78cc809db121c2370157b3a 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/BaseNode.php +++ b/civicrm/vendor/symfony/config/Definition/BaseNode.php @@ -33,16 +33,14 @@ abstract class BaseNode implements NodeInterface protected $attributes = array(); /** - * Constructor. + * @param string|null $name The name of the node + * @param NodeInterface|null $parent The parent of this node * - * @param string $name The name of the node - * @param NodeInterface $parent The parent of this node - * - * @throws \InvalidArgumentException if the name contains a period. + * @throws \InvalidArgumentException if the name contains a period */ public function __construct($name, NodeInterface $parent = null) { - if (false !== strpos($name, '.')) { + if (false !== strpos($name = (string) $name, '.')) { throw new \InvalidArgumentException('The name must not contain ".".'); } @@ -172,9 +170,7 @@ abstract class BaseNode implements NodeInterface } /** - * Checks if this node is required. - * - * @return bool + * {@inheritdoc} */ public function isRequired() { @@ -182,9 +178,7 @@ abstract class BaseNode implements NodeInterface } /** - * Returns the name of this node. - * - * @return string The Node's name. + * {@inheritdoc} */ public function getName() { @@ -192,9 +186,7 @@ abstract class BaseNode implements NodeInterface } /** - * Retrieves the path of this node. - * - * @return string The Node's path + * {@inheritdoc} */ public function getPath() { @@ -208,14 +200,7 @@ abstract class BaseNode implements NodeInterface } /** - * Merges two values together. - * - * @param mixed $leftSide - * @param mixed $rightSide - * - * @return mixed The merged value - * - * @throws ForbiddenOverwriteException + * {@inheritdoc} */ final public function merge($leftSide, $rightSide) { @@ -235,11 +220,7 @@ abstract class BaseNode implements NodeInterface } /** - * Normalizes a value, applying all normalization closures. - * - * @param mixed $value Value to normalize. - * - * @return mixed The normalized value. + * {@inheritdoc} */ final public function normalize($value) { @@ -287,14 +268,7 @@ abstract class BaseNode implements NodeInterface } /** - * Finalizes a value, applying all finalization closures. - * - * @param mixed $value The value to finalize - * - * @return mixed The finalized value - * - * @throws Exception - * @throws InvalidConfigurationException + * {@inheritdoc} */ final public function finalize($value) { @@ -329,7 +303,7 @@ abstract class BaseNode implements NodeInterface /** * Normalizes the value. * - * @param mixed $value The value to normalize. + * @param mixed $value The value to normalize * * @return mixed The normalized value */ diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/BooleanNode.php b/civicrm/vendor/symfony/config/Definition/BooleanNode.php similarity index 81% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/BooleanNode.php rename to civicrm/vendor/symfony/config/Definition/BooleanNode.php index df06b307aea42eac90003077729de35a110c1c51..77e90cf7d624a98d04c260dbd1c64d31cff743b2 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/BooleanNode.php +++ b/civicrm/vendor/symfony/config/Definition/BooleanNode.php @@ -25,11 +25,11 @@ class BooleanNode extends ScalarNode */ protected function validateType($value) { - if (!is_bool($value)) { + if (!\is_bool($value)) { $ex = new InvalidTypeException(sprintf( 'Invalid type for path "%s". Expected boolean, but got %s.', $this->getPath(), - gettype($value) + \gettype($value) )); if ($hint = $this->getInfo()) { $ex->addHint($hint); @@ -39,4 +39,13 @@ class BooleanNode extends ScalarNode throw $ex; } } + + /** + * {@inheritdoc} + */ + protected function isValueEmpty($value) + { + // a boolean value cannot be empty + return false; + } } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/ArrayNodeDefinition.php b/civicrm/vendor/symfony/config/Definition/Builder/ArrayNodeDefinition.php similarity index 89% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/ArrayNodeDefinition.php rename to civicrm/vendor/symfony/config/Definition/Builder/ArrayNodeDefinition.php index c64b2ecfdb91b9241a0cc4a0ad534e86df138dc5..27fadba6f8ab6e528904ed6d26c3d51304e792f2 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/ArrayNodeDefinition.php +++ b/civicrm/vendor/symfony/config/Definition/Builder/ArrayNodeDefinition.php @@ -12,8 +12,8 @@ namespace Symfony\Component\Config\Definition\Builder; use Symfony\Component\Config\Definition\ArrayNode; -use Symfony\Component\Config\Definition\PrototypedArrayNode; use Symfony\Component\Config\Definition\Exception\InvalidDefinitionException; +use Symfony\Component\Config\Definition\PrototypedArrayNode; /** * This class provides a fluent interface for defining an array node. @@ -24,6 +24,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition { protected $performDeepMerging = true; protected $ignoreExtraKeys = false; + protected $removeExtraKeys = true; protected $children = array(); protected $prototype; protected $atLeastOne = false; @@ -47,9 +48,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition } /** - * Sets a custom children builder. - * - * @param NodeBuilder $builder A custom NodeBuilder + * {@inheritdoc} */ public function setBuilder(NodeBuilder $builder) { @@ -57,9 +56,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition } /** - * Returns a builder to add children nodes. - * - * @return NodeBuilder + * {@inheritdoc} */ public function children() { @@ -69,7 +66,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition /** * Sets a prototype for child nodes. * - * @param string $type the type of node + * @param string $type The type of node * * @return NodeDefinition */ @@ -85,7 +82,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition * If this function has been called and the node is not set during the finalization * phase, it's default value will be derived from its children default values. * - * @return ArrayNodeDefinition + * @return $this */ public function addDefaultsIfNotSet() { @@ -97,11 +94,11 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition /** * Adds children with a default value when none are defined. * - * @param int|string|array|null $children The number of children|The child name|The children names to be added - * * This method is applicable to prototype nodes only. * - * @return ArrayNodeDefinition + * @param int|string|array|null $children The number of children|The child name|The children names to be added + * + * @return $this */ public function addDefaultChildrenIfNoneSet($children = null) { @@ -115,7 +112,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition * * This method is applicable to prototype nodes only. * - * @return ArrayNodeDefinition + * @return $this */ public function requiresAtLeastOneElement() { @@ -129,7 +126,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition * * If used all keys have to be defined in the same configuration file. * - * @return ArrayNodeDefinition + * @return $this */ public function disallowNewKeysInSubsequentConfigs() { @@ -144,7 +141,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition * @param string $singular The key to remap * @param string $plural The plural of the key for irregular plurals * - * @return ArrayNodeDefinition + * @return $this */ public function fixXmlConfig($singular, $plural = null) { @@ -177,9 +174,9 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition * This method is applicable to prototype nodes only. * * @param string $name The name of the key - * @param bool $removeKeyItem Whether or not the key item should be removed. + * @param bool $removeKeyItem Whether or not the key item should be removed * - * @return ArrayNodeDefinition + * @return $this */ public function useAttributeAsKey($name, $removeKeyItem = true) { @@ -194,7 +191,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition * * @param bool $allow * - * @return ArrayNodeDefinition + * @return $this */ public function canBeUnset($allow = true) { @@ -216,7 +213,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition * enableableArrayNode: {enabled: false, ...} # The config is disabled * enableableArrayNode: false # The config is disabled * - * @return ArrayNodeDefinition + * @return $this */ public function canBeEnabled() { @@ -246,7 +243,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition * * By default, the section is enabled. * - * @return ArrayNodeDefinition + * @return $this */ public function canBeDisabled() { @@ -266,7 +263,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition /** * Disables the deep merging of the node. * - * @return ArrayNodeDefinition + * @return $this */ public function performNoDeepMerging() { @@ -284,11 +281,14 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition * you want to send an entire configuration array through a special * tree that processes only part of the array. * - * @return ArrayNodeDefinition + * @param bool $remove Whether to remove the extra keys + * + * @return $this */ - public function ignoreExtraKeys() + public function ignoreExtraKeys($remove = true) { $this->ignoreExtraKeys = true; + $this->removeExtraKeys = $remove; return $this; } @@ -298,7 +298,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition * * @param bool $bool Whether to enable key normalization * - * @return ArrayNodeDefinition + * @return $this */ public function normalizeKeys($bool) { @@ -308,19 +308,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition } /** - * Appends a node definition. - * - * $node = new ArrayNodeDefinition() - * ->children() - * ->scalarNode('foo')->end() - * ->scalarNode('baz')->end() - * ->end() - * ->append($this->getBarNodeDefinition()) - * ; - * - * @param NodeDefinition $node A NodeDefinition instance - * - * @return ArrayNodeDefinition This node + * {@inheritdoc} */ public function append(NodeDefinition $node) { @@ -393,7 +381,7 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition $node->addEquivalentValue(false, $this->falseEquivalent); $node->setPerformDeepMerging($this->performDeepMerging); $node->setRequired($this->required); - $node->setIgnoreExtraKeys($this->ignoreExtraKeys); + $node->setIgnoreExtraKeys($this->ignoreExtraKeys, $this->removeExtraKeys); $node->setNormalizeKeys($this->normalizeKeys); if (null !== $this->normalization) { @@ -416,8 +404,6 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition /** * Validate the configuration of a concrete node. * - * @param ArrayNode $node The related node - * * @throws InvalidDefinitionException */ protected function validateConcreteNode(ArrayNode $node) @@ -452,8 +438,6 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition /** * Validate the configuration of a prototype node. * - * @param PrototypedArrayNode $node The related node - * * @throws InvalidDefinitionException */ protected function validatePrototypeNode(PrototypedArrayNode $node) @@ -473,13 +457,13 @@ class ArrayNodeDefinition extends NodeDefinition implements ParentNodeDefinition ); } - if (null !== $this->key && (null === $this->addDefaultChildren || is_int($this->addDefaultChildren) && $this->addDefaultChildren > 0)) { + if (null !== $this->key && (null === $this->addDefaultChildren || \is_int($this->addDefaultChildren) && $this->addDefaultChildren > 0)) { throw new InvalidDefinitionException( sprintf('->addDefaultChildrenIfNoneSet() should set default children names as ->useAttributeAsKey() is used at path "%s"', $path) ); } - if (null === $this->key && (is_string($this->addDefaultChildren) || is_array($this->addDefaultChildren))) { + if (null === $this->key && (\is_string($this->addDefaultChildren) || \is_array($this->addDefaultChildren))) { throw new InvalidDefinitionException( sprintf('->addDefaultChildrenIfNoneSet() might not set default children names as ->useAttributeAsKey() is not used at path "%s"', $path) ); diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/BooleanNodeDefinition.php b/civicrm/vendor/symfony/config/Definition/Builder/BooleanNodeDefinition.php similarity index 73% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/BooleanNodeDefinition.php rename to civicrm/vendor/symfony/config/Definition/Builder/BooleanNodeDefinition.php index db7ebc24117a15093f64426ff0b82652a47c8862..a6292f74d81200b0505205fa7a158d3e16f403b2 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/BooleanNodeDefinition.php +++ b/civicrm/vendor/symfony/config/Definition/Builder/BooleanNodeDefinition.php @@ -30,6 +30,18 @@ class BooleanNodeDefinition extends ScalarNodeDefinition $this->nullEquivalent = true; } + /** + * {@inheritdoc} + * + * @deprecated Deprecated since version 2.8, to be removed in 3.0. + */ + public function cannotBeEmpty() + { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + + return parent::cannotBeEmpty(); + } + /** * Instantiate a Node. * diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/EnumNodeDefinition.php b/civicrm/vendor/symfony/config/Definition/Builder/EnumNodeDefinition.php similarity index 87% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/EnumNodeDefinition.php rename to civicrm/vendor/symfony/config/Definition/Builder/EnumNodeDefinition.php index dc25fcbd26f267e9b09e7428a40b80ede03b9e32..817906f5076295ea9a9e660bd31630f5a387459f 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/EnumNodeDefinition.php +++ b/civicrm/vendor/symfony/config/Definition/Builder/EnumNodeDefinition.php @@ -23,16 +23,14 @@ class EnumNodeDefinition extends ScalarNodeDefinition private $values; /** - * @param array $values - * - * @return EnumNodeDefinition|$this + * @return $this */ public function values(array $values) { $values = array_unique($values); - if (count($values) <= 1) { - throw new \InvalidArgumentException('->values() must be called with at least two distinct values.'); + if (empty($values)) { + throw new \InvalidArgumentException('->values() must be called with at least one value.'); } $this->values = $values; diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/ExprBuilder.php b/civicrm/vendor/symfony/config/Definition/Builder/ExprBuilder.php similarity index 80% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/ExprBuilder.php rename to civicrm/vendor/symfony/config/Definition/Builder/ExprBuilder.php index 3d79b2985874effaed15c567fbaeda5d605e856e..fedbe0cc1bba226d1d0abf6f26b8506decc1054d 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/ExprBuilder.php +++ b/civicrm/vendor/symfony/config/Definition/Builder/ExprBuilder.php @@ -25,11 +25,6 @@ class ExprBuilder public $ifPart; public $thenPart; - /** - * Constructor. - * - * @param NodeDefinition $node The related node - */ public function __construct(NodeDefinition $node) { $this->node = $node; @@ -38,9 +33,7 @@ class ExprBuilder /** * Marks the expression as being always used. * - * @param \Closure $then - * - * @return ExprBuilder + * @return $this */ public function always(\Closure $then = null) { @@ -58,9 +51,7 @@ class ExprBuilder * * The default one tests if the value is true. * - * @param \Closure $closure - * - * @return ExprBuilder + * @return $this */ public function ifTrue(\Closure $closure = null) { @@ -76,11 +67,11 @@ class ExprBuilder /** * Tests if the value is a string. * - * @return ExprBuilder + * @return $this */ public function ifString() { - $this->ifPart = function ($v) { return is_string($v); }; + $this->ifPart = function ($v) { return \is_string($v); }; return $this; } @@ -88,7 +79,7 @@ class ExprBuilder /** * Tests if the value is null. * - * @return ExprBuilder + * @return $this */ public function ifNull() { @@ -100,11 +91,11 @@ class ExprBuilder /** * Tests if the value is an array. * - * @return ExprBuilder + * @return $this */ public function ifArray() { - $this->ifPart = function ($v) { return is_array($v); }; + $this->ifPart = function ($v) { return \is_array($v); }; return $this; } @@ -112,13 +103,11 @@ class ExprBuilder /** * Tests if the value is in an array. * - * @param array $array - * - * @return ExprBuilder + * @return $this */ public function ifInArray(array $array) { - $this->ifPart = function ($v) use ($array) { return in_array($v, $array, true); }; + $this->ifPart = function ($v) use ($array) { return \in_array($v, $array, true); }; return $this; } @@ -126,13 +115,11 @@ class ExprBuilder /** * Tests if the value is not in an array. * - * @param array $array - * - * @return ExprBuilder + * @return $this */ public function ifNotInArray(array $array) { - $this->ifPart = function ($v) use ($array) { return !in_array($v, $array, true); }; + $this->ifPart = function ($v) use ($array) { return !\in_array($v, $array, true); }; return $this; } @@ -140,9 +127,7 @@ class ExprBuilder /** * Sets the closure to run if the test pass. * - * @param \Closure $closure - * - * @return ExprBuilder + * @return $this */ public function then(\Closure $closure) { @@ -154,7 +139,7 @@ class ExprBuilder /** * Sets a closure returning an empty array. * - * @return ExprBuilder + * @return $this */ public function thenEmptyArray() { @@ -170,13 +155,13 @@ class ExprBuilder * * @param string $message * - * @return ExprBuilder + * @return $this * * @throws \InvalidArgumentException */ public function thenInvalid($message) { - $this->thenPart = function ($v) use ($message) {throw new \InvalidArgumentException(sprintf($message, json_encode($v))); }; + $this->thenPart = function ($v) use ($message) { throw new \InvalidArgumentException(sprintf($message, json_encode($v))); }; return $this; } @@ -184,7 +169,7 @@ class ExprBuilder /** * Sets a closure unsetting this key of the array at validation time. * - * @return ExprBuilder + * @return $this * * @throws UnsetKeyException */ @@ -198,7 +183,7 @@ class ExprBuilder /** * Returns the related node. * - * @return NodeDefinition + * @return NodeDefinition|ArrayNodeDefinition|VariableNodeDefinition * * @throws \RuntimeException */ diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/FloatNodeDefinition.php b/civicrm/vendor/symfony/config/Definition/Builder/FloatNodeDefinition.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/FloatNodeDefinition.php rename to civicrm/vendor/symfony/config/Definition/Builder/FloatNodeDefinition.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/IntegerNodeDefinition.php b/civicrm/vendor/symfony/config/Definition/Builder/IntegerNodeDefinition.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/IntegerNodeDefinition.php rename to civicrm/vendor/symfony/config/Definition/Builder/IntegerNodeDefinition.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/MergeBuilder.php b/civicrm/vendor/symfony/config/Definition/Builder/MergeBuilder.php similarity index 87% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/MergeBuilder.php rename to civicrm/vendor/symfony/config/Definition/Builder/MergeBuilder.php index f908a499cab20bc02c46e15d4a40537d51710f66..105e2d64709b11342c113f732bb0ab6655e2ec16 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/MergeBuilder.php +++ b/civicrm/vendor/symfony/config/Definition/Builder/MergeBuilder.php @@ -22,11 +22,6 @@ class MergeBuilder public $allowFalse = false; public $allowOverwrite = true; - /** - * Constructor. - * - * @param NodeDefinition $node The related node - */ public function __construct(NodeDefinition $node) { $this->node = $node; @@ -37,7 +32,7 @@ class MergeBuilder * * @param bool $allow * - * @return MergeBuilder + * @return $this */ public function allowUnset($allow = true) { @@ -51,7 +46,7 @@ class MergeBuilder * * @param bool $deny Whether the overwriting is forbidden or not * - * @return MergeBuilder + * @return $this */ public function denyOverwrite($deny = true) { @@ -63,7 +58,7 @@ class MergeBuilder /** * Returns the related node. * - * @return NodeDefinition + * @return NodeDefinition|ArrayNodeDefinition|VariableNodeDefinition */ public function end() { diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/NodeBuilder.php b/civicrm/vendor/symfony/config/Definition/Builder/NodeBuilder.php similarity index 91% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/NodeBuilder.php rename to civicrm/vendor/symfony/config/Definition/Builder/NodeBuilder.php index b2b63368e2fc4eab634621d9f571c644cfc26ca5..1fac66fd3702f2d14730cf01b2c7553e7a725817 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/NodeBuilder.php +++ b/civicrm/vendor/symfony/config/Definition/Builder/NodeBuilder.php @@ -21,9 +21,6 @@ class NodeBuilder implements NodeParentInterface protected $parent; protected $nodeMapping; - /** - * Constructor. - */ public function __construct() { $this->nodeMapping = array( @@ -40,9 +37,7 @@ class NodeBuilder implements NodeParentInterface /** * Set the parent node. * - * @param ParentNodeDefinitionInterface $parent The parent node - * - * @return NodeBuilder This node builder + * @return $this */ public function setParent(ParentNodeDefinitionInterface $parent = null) { @@ -66,7 +61,7 @@ class NodeBuilder implements NodeParentInterface /** * Creates a child scalar node. * - * @param string $name the name of the node + * @param string $name The name of the node * * @return ScalarNodeDefinition The child node */ @@ -90,7 +85,7 @@ class NodeBuilder implements NodeParentInterface /** * Creates a child integer node. * - * @param string $name the name of the node + * @param string $name The name of the node * * @return IntegerNodeDefinition The child node */ @@ -102,7 +97,7 @@ class NodeBuilder implements NodeParentInterface /** * Creates a child float node. * - * @param string $name the name of the node + * @param string $name The name of the node * * @return FloatNodeDefinition The child node */ @@ -138,7 +133,7 @@ class NodeBuilder implements NodeParentInterface /** * Returns the parent node. * - * @return ParentNodeDefinitionInterface The parent node + * @return ParentNodeDefinitionInterface|NodeDefinition The parent node */ public function end() { @@ -148,8 +143,8 @@ class NodeBuilder implements NodeParentInterface /** * Creates a child node. * - * @param string $name The name of the node - * @param string $type The type of the node + * @param string|null $name The name of the node + * @param string $type The type of the node * * @return NodeDefinition The child node * @@ -180,9 +175,7 @@ class NodeBuilder implements NodeParentInterface * ->end() * ; * - * @param NodeDefinition $node - * - * @return NodeBuilder This node builder + * @return $this */ public function append(NodeDefinition $node) { @@ -207,7 +200,7 @@ class NodeBuilder implements NodeParentInterface * @param string $type The name of the type * @param string $class The fully qualified name the node definition class * - * @return NodeBuilder This node builder + * @return $this */ public function setNodeClass($type, $class) { diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/NodeDefinition.php b/civicrm/vendor/symfony/config/Definition/Builder/NodeDefinition.php similarity index 89% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/NodeDefinition.php rename to civicrm/vendor/symfony/config/Definition/Builder/NodeDefinition.php index f7f84bc0715303e20c598e9e280428972150337c..f94d3f01f803abaec38aac0f536733e0eba455a1 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/NodeDefinition.php +++ b/civicrm/vendor/symfony/config/Definition/Builder/NodeDefinition.php @@ -11,8 +11,8 @@ namespace Symfony\Component\Config\Definition\Builder; -use Symfony\Component\Config\Definition\NodeInterface; use Symfony\Component\Config\Definition\Exception\InvalidDefinitionException; +use Symfony\Component\Config\Definition\NodeInterface; /** * This class provides a fluent interface for defining a node. @@ -32,17 +32,11 @@ abstract class NodeDefinition implements NodeParentInterface protected $nullEquivalent; protected $trueEquivalent = true; protected $falseEquivalent = false; - - /** - * @var NodeParentInterface|null - */ protected $parent; protected $attributes = array(); /** - * Constructor. - * - * @param string $name The name of the node + * @param string|null $name The name of the node * @param NodeParentInterface|null $parent The parent */ public function __construct($name, NodeParentInterface $parent = null) @@ -54,9 +48,7 @@ abstract class NodeDefinition implements NodeParentInterface /** * Sets the parent node. * - * @param NodeParentInterface $parent The parent - * - * @return NodeDefinition|$this + * @return $this */ public function setParent(NodeParentInterface $parent) { @@ -70,7 +62,7 @@ abstract class NodeDefinition implements NodeParentInterface * * @param string $info The info text * - * @return NodeDefinition|$this + * @return $this */ public function info($info) { @@ -82,7 +74,7 @@ abstract class NodeDefinition implements NodeParentInterface * * @param string|array $example * - * @return NodeDefinition|$this + * @return $this */ public function example($example) { @@ -95,7 +87,7 @@ abstract class NodeDefinition implements NodeParentInterface * @param string $key * @param mixed $value * - * @return NodeDefinition|$this + * @return $this */ public function attribute($key, $value) { @@ -107,7 +99,7 @@ abstract class NodeDefinition implements NodeParentInterface /** * Returns the parent node. * - * @return NodeParentInterface|null The builder of the parent node + * @return NodeParentInterface|NodeBuilder|NodeDefinition|ArrayNodeDefinition|VariableNodeDefinition|null The builder of the parent node */ public function end() { @@ -146,7 +138,7 @@ abstract class NodeDefinition implements NodeParentInterface * * @param mixed $value The default value * - * @return NodeDefinition|$this + * @return $this */ public function defaultValue($value) { @@ -159,7 +151,7 @@ abstract class NodeDefinition implements NodeParentInterface /** * Sets the node as required. * - * @return NodeDefinition|$this + * @return $this */ public function isRequired() { @@ -173,7 +165,7 @@ abstract class NodeDefinition implements NodeParentInterface * * @param mixed $value * - * @return NodeDefinition|$this + * @return $this */ public function treatNullLike($value) { @@ -187,7 +179,7 @@ abstract class NodeDefinition implements NodeParentInterface * * @param mixed $value * - * @return NodeDefinition|$this + * @return $this */ public function treatTrueLike($value) { @@ -201,7 +193,7 @@ abstract class NodeDefinition implements NodeParentInterface * * @param mixed $value * - * @return NodeDefinition|$this + * @return $this */ public function treatFalseLike($value) { @@ -213,7 +205,7 @@ abstract class NodeDefinition implements NodeParentInterface /** * Sets null as the default value. * - * @return NodeDefinition|$this + * @return $this */ public function defaultNull() { @@ -223,7 +215,7 @@ abstract class NodeDefinition implements NodeParentInterface /** * Sets true as the default value. * - * @return NodeDefinition|$this + * @return $this */ public function defaultTrue() { @@ -233,7 +225,7 @@ abstract class NodeDefinition implements NodeParentInterface /** * Sets false as the default value. * - * @return NodeDefinition|$this + * @return $this */ public function defaultFalse() { @@ -253,7 +245,7 @@ abstract class NodeDefinition implements NodeParentInterface /** * Denies the node value being empty. * - * @return NodeDefinition|$this + * @return $this */ public function cannotBeEmpty() { @@ -281,7 +273,7 @@ abstract class NodeDefinition implements NodeParentInterface * * @param bool $deny Whether the overwriting is forbidden or not * - * @return NodeDefinition|$this + * @return $this */ public function cannotBeOverwritten($deny = true) { diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/NodeParentInterface.php b/civicrm/vendor/symfony/config/Definition/Builder/NodeParentInterface.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/NodeParentInterface.php rename to civicrm/vendor/symfony/config/Definition/Builder/NodeParentInterface.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/NormalizationBuilder.php b/civicrm/vendor/symfony/config/Definition/Builder/NormalizationBuilder.php similarity index 86% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/NormalizationBuilder.php rename to civicrm/vendor/symfony/config/Definition/Builder/NormalizationBuilder.php index 748c9f28cbece361679aba7601177f19602a1018..35e30487a60ebd21106ecb15c04ade3aa5ff700d 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/NormalizationBuilder.php +++ b/civicrm/vendor/symfony/config/Definition/Builder/NormalizationBuilder.php @@ -22,11 +22,6 @@ class NormalizationBuilder public $before = array(); public $remappings = array(); - /** - * Constructor. - * - * @param NodeDefinition $node The related node - */ public function __construct(NodeDefinition $node) { $this->node = $node; @@ -38,7 +33,7 @@ class NormalizationBuilder * @param string $key The key to remap * @param string $plural The plural of the key in case of irregular plural * - * @return NormalizationBuilder + * @return $this */ public function remap($key, $plural = null) { @@ -50,9 +45,7 @@ class NormalizationBuilder /** * Registers a closure to run before the normalization or an expression builder to build it if null is provided. * - * @param \Closure $closure - * - * @return ExprBuilder|NormalizationBuilder + * @return ExprBuilder|$this */ public function before(\Closure $closure = null) { diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/NumericNodeDefinition.php b/civicrm/vendor/symfony/config/Definition/Builder/NumericNodeDefinition.php similarity index 80% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/NumericNodeDefinition.php rename to civicrm/vendor/symfony/config/Definition/Builder/NumericNodeDefinition.php index ddd716d06a7b58bd2c156f453e88e0709c4baf86..40c0bfcc6e96119f7354579de1884855c3e6102c 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/NumericNodeDefinition.php +++ b/civicrm/vendor/symfony/config/Definition/Builder/NumericNodeDefinition.php @@ -26,7 +26,7 @@ abstract class NumericNodeDefinition extends ScalarNodeDefinition * * @param mixed $max * - * @return NumericNodeDefinition + * @return $this * * @throws \InvalidArgumentException when the constraint is inconsistent */ @@ -45,7 +45,7 @@ abstract class NumericNodeDefinition extends ScalarNodeDefinition * * @param mixed $min * - * @return NumericNodeDefinition + * @return $this * * @throws \InvalidArgumentException when the constraint is inconsistent */ @@ -58,4 +58,16 @@ abstract class NumericNodeDefinition extends ScalarNodeDefinition return $this; } + + /** + * {@inheritdoc} + * + * @deprecated Deprecated since version 2.8, to be removed in 3.0. + */ + public function cannotBeEmpty() + { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + + return parent::cannotBeEmpty(); + } } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/ParentNodeDefinitionInterface.php b/civicrm/vendor/symfony/config/Definition/Builder/ParentNodeDefinitionInterface.php similarity index 54% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/ParentNodeDefinitionInterface.php rename to civicrm/vendor/symfony/config/Definition/Builder/ParentNodeDefinitionInterface.php index 575495bb684db9867da0690717a8e437415db0d9..1bf2ad4bf6d9699f9a75dbc9271ead33745f3c78 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/ParentNodeDefinitionInterface.php +++ b/civicrm/vendor/symfony/config/Definition/Builder/ParentNodeDefinitionInterface.php @@ -18,9 +18,32 @@ namespace Symfony\Component\Config\Definition\Builder; */ interface ParentNodeDefinitionInterface { + /** + * Returns a builder to add children nodes. + * + * @return NodeBuilder + */ public function children(); + /** + * Appends a node definition. + * + * Usage: + * + * $node = $parentNode + * ->children() + * ->scalarNode('foo')->end() + * ->scalarNode('baz')->end() + * ->append($this->getBarNodeDefinition()) + * ->end() + * ; + * + * @return $this + */ public function append(NodeDefinition $node); + /** + * Sets a custom children builder. + */ public function setBuilder(NodeBuilder $builder); } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/ScalarNodeDefinition.php b/civicrm/vendor/symfony/config/Definition/Builder/ScalarNodeDefinition.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/ScalarNodeDefinition.php rename to civicrm/vendor/symfony/config/Definition/Builder/ScalarNodeDefinition.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/TreeBuilder.php b/civicrm/vendor/symfony/config/Definition/Builder/TreeBuilder.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/TreeBuilder.php rename to civicrm/vendor/symfony/config/Definition/Builder/TreeBuilder.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/ValidationBuilder.php b/civicrm/vendor/symfony/config/Definition/Builder/ValidationBuilder.php similarity index 83% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/ValidationBuilder.php rename to civicrm/vendor/symfony/config/Definition/Builder/ValidationBuilder.php index e885823892645305851636c1c5fbf9b1c9d0c293..bb2b9eb33924b62cbd4269efba97fdb43429676d 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/ValidationBuilder.php +++ b/civicrm/vendor/symfony/config/Definition/Builder/ValidationBuilder.php @@ -21,11 +21,6 @@ class ValidationBuilder protected $node; public $rules = array(); - /** - * Constructor. - * - * @param NodeDefinition $node The related node - */ public function __construct(NodeDefinition $node) { $this->node = $node; @@ -34,9 +29,7 @@ class ValidationBuilder /** * Registers a closure to run as normalization or an expression builder to build it if null is provided. * - * @param \Closure $closure - * - * @return ExprBuilder|ValidationBuilder + * @return ExprBuilder|$this */ public function rule(\Closure $closure = null) { diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/VariableNodeDefinition.php b/civicrm/vendor/symfony/config/Definition/Builder/VariableNodeDefinition.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Builder/VariableNodeDefinition.php rename to civicrm/vendor/symfony/config/Definition/Builder/VariableNodeDefinition.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/ConfigurationInterface.php b/civicrm/vendor/symfony/config/Definition/ConfigurationInterface.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/ConfigurationInterface.php rename to civicrm/vendor/symfony/config/Definition/ConfigurationInterface.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Dumper/XmlReferenceDumper.php b/civicrm/vendor/symfony/config/Definition/Dumper/XmlReferenceDumper.php similarity index 90% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Dumper/XmlReferenceDumper.php rename to civicrm/vendor/symfony/config/Definition/Dumper/XmlReferenceDumper.php index ab56a928382b106d5a737cc644a9b2303f634749..0e297318d26227d2d50fac397bbea96a8743f32c 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Dumper/XmlReferenceDumper.php +++ b/civicrm/vendor/symfony/config/Definition/Dumper/XmlReferenceDumper.php @@ -11,10 +11,10 @@ namespace Symfony\Component\Config\Definition\Dumper; -use Symfony\Component\Config\Definition\ConfigurationInterface; -use Symfony\Component\Config\Definition\NodeInterface; use Symfony\Component\Config\Definition\ArrayNode; +use Symfony\Component\Config\Definition\ConfigurationInterface; use Symfony\Component\Config\Definition\EnumNode; +use Symfony\Component\Config\Definition\NodeInterface; use Symfony\Component\Config\Definition\PrototypedArrayNode; /** @@ -58,7 +58,7 @@ class XmlReferenceDumper return $rootName === $mapping[1]; }); - if (count($remapping)) { + if (\count($remapping)) { list($singular) = current($remapping); $rootName = $singular; } @@ -84,21 +84,25 @@ class XmlReferenceDumper // render prototyped nodes if ($node instanceof PrototypedArrayNode) { - array_unshift($rootComments, 'prototype'); + $prototype = $node->getPrototype(); + + $info = 'prototype'; + if (null !== $prototype->getInfo()) { + $info .= ': '.$prototype->getInfo(); + } + array_unshift($rootComments, $info); if ($key = $node->getKeyAttribute()) { $rootAttributes[$key] = str_replace('-', ' ', $rootName).' '.$key; } - $prototype = $node->getPrototype(); - if ($prototype instanceof ArrayNode) { $children = $prototype->getChildren(); } else { if ($prototype->hasDefaultValue()) { $prototypeValue = $prototype->getDefaultValue(); } else { - switch (get_class($prototype)) { + switch (\get_class($prototype)) { case 'Symfony\Component\Config\Definition\ScalarNode': $prototypeValue = 'scalar value'; break; @@ -150,7 +154,7 @@ class XmlReferenceDumper $comments[] = 'One of '.implode('; ', array_map('json_encode', $child->getValues())); } - if (count($comments)) { + if (\count($comments)) { $rootAttributeComments[$name] = implode(";\n", $comments); } @@ -171,18 +175,18 @@ class XmlReferenceDumper // render comments // root node comment - if (count($rootComments)) { + if (\count($rootComments)) { foreach ($rootComments as $comment) { $this->writeLine('<!-- '.$comment.' -->', $depth); } } // attribute comments - if (count($rootAttributeComments)) { + if (\count($rootAttributeComments)) { foreach ($rootAttributeComments as $attrName => $comment) { - $commentDepth = $depth + 4 + strlen($attrName) + 2; + $commentDepth = $depth + 4 + \strlen($attrName) + 2; $commentLines = explode("\n", $comment); - $multiline = (count($commentLines) > 1); + $multiline = (\count($commentLines) > 1); $comment = implode(PHP_EOL.str_repeat(' ', $commentDepth), $commentLines); if ($multiline) { @@ -197,9 +201,9 @@ class XmlReferenceDumper // render start tag + attributes $rootIsVariablePrototype = isset($prototypeValue); - $rootIsEmptyTag = (0 === count($rootChildren) && !$rootIsVariablePrototype); + $rootIsEmptyTag = (0 === \count($rootChildren) && !$rootIsVariablePrototype); $rootOpenTag = '<'.$rootName; - if (1 >= ($attributesCount = count($rootAttributes))) { + if (1 >= ($attributesCount = \count($rootAttributes))) { if (1 === $attributesCount) { $rootOpenTag .= sprintf(' %s="%s"', current(array_keys($rootAttributes)), $this->writeValue(current($rootAttributes))); } @@ -247,17 +251,17 @@ class XmlReferenceDumper } /** - * Outputs a single config reference line + * Outputs a single config reference line. * * @param string $text * @param int $indent */ private function writeLine($text, $indent = 0) { - $indent = strlen($text) + $indent; + $indent = \strlen($text) + $indent; $format = '%'.$indent.'s'; - $this->reference .= sprintf($format, $text)."\n"; + $this->reference .= sprintf($format, $text).PHP_EOL; } /** @@ -273,7 +277,7 @@ class XmlReferenceDumper return ''; } - if (is_string($value) || is_numeric($value)) { + if (\is_string($value) || is_numeric($value)) { return $value; } @@ -293,7 +297,7 @@ class XmlReferenceDumper return ''; } - if (is_array($value)) { + if (\is_array($value)) { return implode(',', $value); } } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Dumper/YamlReferenceDumper.php b/civicrm/vendor/symfony/config/Definition/Dumper/YamlReferenceDumper.php similarity index 78% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Dumper/YamlReferenceDumper.php rename to civicrm/vendor/symfony/config/Definition/Dumper/YamlReferenceDumper.php index a7cd4486f2c47649c1e4e4583444ac20dd2c8dab..8945cba0057d79419892a300c5b4d80ba477d767 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Dumper/YamlReferenceDumper.php +++ b/civicrm/vendor/symfony/config/Definition/Dumper/YamlReferenceDumper.php @@ -11,10 +11,10 @@ namespace Symfony\Component\Config\Definition\Dumper; -use Symfony\Component\Config\Definition\ConfigurationInterface; -use Symfony\Component\Config\Definition\NodeInterface; use Symfony\Component\Config\Definition\ArrayNode; +use Symfony\Component\Config\Definition\ConfigurationInterface; use Symfony\Component\Config\Definition\EnumNode; +use Symfony\Component\Config\Definition\NodeInterface; use Symfony\Component\Config\Definition\PrototypedArrayNode; use Symfony\Component\Yaml\Inline; @@ -69,7 +69,12 @@ class YamlReferenceDumper if ($key = $node->getKeyAttribute()) { $keyNodeClass = 'Symfony\Component\Config\Definition\\'.($prototype instanceof ArrayNode ? 'ArrayNode' : 'ScalarNode'); $keyNode = new $keyNodeClass($key, $node); - $keyNode->setInfo('Prototype'); + + $info = 'Prototype'; + if (null !== $prototype->getInfo()) { + $info .= ': '.$prototype->getInfo(); + } + $keyNode->setInfo($info); // add children foreach ($children as $childNode) { @@ -80,25 +85,25 @@ class YamlReferenceDumper } if (!$children) { - if ($node->hasDefaultValue() && count($defaultArray = $node->getDefaultValue())) { + if ($node->hasDefaultValue() && \count($defaultArray = $node->getDefaultValue())) { $default = ''; - } elseif (!is_array($example)) { + } elseif (!\is_array($example)) { $default = '[]'; } } } elseif ($node instanceof EnumNode) { $comments[] = 'One of '.implode('; ', array_map('json_encode', $node->getValues())); - $default = '~'; + $default = $node->hasDefaultValue() ? Inline::dump($node->getDefaultValue()) : '~'; } else { $default = '~'; if ($node->hasDefaultValue()) { $default = $node->getDefaultValue(); - if (is_array($default)) { - if (count($defaultArray = $node->getDefaultValue())) { + if (\is_array($default)) { + if (\count($defaultArray = $node->getDefaultValue())) { $default = ''; - } elseif (!is_array($example)) { + } elseif (!\is_array($example)) { $default = '[]'; } } else { @@ -113,19 +118,19 @@ class YamlReferenceDumper } // example - if ($example && !is_array($example)) { + if ($example && !\is_array($example)) { $comments[] = 'Example: '.$example; } - $default = (string) $default != '' ? ' '.$default : ''; - $comments = count($comments) ? '# '.implode(', ', $comments) : ''; + $default = '' != (string) $default ? ' '.$default : ''; + $comments = \count($comments) ? '# '.implode(', ', $comments) : ''; - $text = rtrim(sprintf('%-20s %s %s', $node->getName().':', $default, $comments), ' '); + $text = rtrim(sprintf('%-21s%s %s', $node->getName().':', $default, $comments), ' '); if ($info = $node->getInfo()) { $this->writeLine(''); // indenting multi-line info - $info = str_replace("\n", sprintf("\n%".($depth * 4)."s# ", ' '), $info); + $info = str_replace("\n", sprintf("\n%".($depth * 4).'s# ', ' '), $info); $this->writeLine('# '.$info, $depth * 4); } @@ -135,17 +140,17 @@ class YamlReferenceDumper if ($defaultArray) { $this->writeLine(''); - $message = count($defaultArray) > 1 ? 'Defaults' : 'Default'; + $message = \count($defaultArray) > 1 ? 'Defaults' : 'Default'; $this->writeLine('# '.$message.':', $depth * 4 + 4); $this->writeArray($defaultArray, $depth + 1); } - if (is_array($example)) { + if (\is_array($example)) { $this->writeLine(''); - $message = count($example) > 1 ? 'Examples' : 'Example'; + $message = \count($example) > 1 ? 'Examples' : 'Example'; $this->writeLine('# '.$message.':', $depth * 4 + 4); @@ -160,14 +165,14 @@ class YamlReferenceDumper } /** - * Outputs a single config reference line + * Outputs a single config reference line. * * @param string $text * @param int $indent */ private function writeLine($text, $indent = 0) { - $indent = strlen($text) + $indent; + $indent = \strlen($text) + $indent; $format = '%'.$indent.'s'; $this->reference .= sprintf($format, $text)."\n"; @@ -178,7 +183,7 @@ class YamlReferenceDumper $isIndexed = array_values($array) === $array; foreach ($array as $key => $value) { - if (is_array($value)) { + if (\is_array($value)) { $val = ''; } else { $val = $value; @@ -190,7 +195,7 @@ class YamlReferenceDumper $this->writeLine(sprintf('%-20s %s', $key.':', $val), $depth * 4); } - if (is_array($value)) { + if (\is_array($value)) { $this->writeArray($value, $depth + 1); } } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/EnumNode.php b/civicrm/vendor/symfony/config/Definition/EnumNode.php similarity index 91% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/EnumNode.php rename to civicrm/vendor/symfony/config/Definition/EnumNode.php index 224871ab6fe02858f75a2d84420baf605064de7b..0cb40018b04fea200956eded49602fc3e2ecc75f 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/EnumNode.php +++ b/civicrm/vendor/symfony/config/Definition/EnumNode.php @@ -25,8 +25,8 @@ class EnumNode extends ScalarNode public function __construct($name, NodeInterface $parent = null, array $values = array()) { $values = array_unique($values); - if (count($values) <= 1) { - throw new \InvalidArgumentException('$values must contain at least two distinct elements.'); + if (empty($values)) { + throw new \InvalidArgumentException('$values must contain at least one element.'); } parent::__construct($name, $parent); @@ -42,7 +42,7 @@ class EnumNode extends ScalarNode { $value = parent::finalizeValue($value); - if (!in_array($value, $this->values, true)) { + if (!\in_array($value, $this->values, true)) { $ex = new InvalidConfigurationException(sprintf( 'The value %s is not allowed for path "%s". Permissible values: %s', json_encode($value), diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Exception/DuplicateKeyException.php b/civicrm/vendor/symfony/config/Definition/Exception/DuplicateKeyException.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Exception/DuplicateKeyException.php rename to civicrm/vendor/symfony/config/Definition/Exception/DuplicateKeyException.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Exception/Exception.php b/civicrm/vendor/symfony/config/Definition/Exception/Exception.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Exception/Exception.php rename to civicrm/vendor/symfony/config/Definition/Exception/Exception.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Exception/ForbiddenOverwriteException.php b/civicrm/vendor/symfony/config/Definition/Exception/ForbiddenOverwriteException.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Exception/ForbiddenOverwriteException.php rename to civicrm/vendor/symfony/config/Definition/Exception/ForbiddenOverwriteException.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Exception/InvalidConfigurationException.php b/civicrm/vendor/symfony/config/Definition/Exception/InvalidConfigurationException.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Exception/InvalidConfigurationException.php rename to civicrm/vendor/symfony/config/Definition/Exception/InvalidConfigurationException.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Exception/InvalidDefinitionException.php b/civicrm/vendor/symfony/config/Definition/Exception/InvalidDefinitionException.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Exception/InvalidDefinitionException.php rename to civicrm/vendor/symfony/config/Definition/Exception/InvalidDefinitionException.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Exception/InvalidTypeException.php b/civicrm/vendor/symfony/config/Definition/Exception/InvalidTypeException.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Exception/InvalidTypeException.php rename to civicrm/vendor/symfony/config/Definition/Exception/InvalidTypeException.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Exception/UnsetKeyException.php b/civicrm/vendor/symfony/config/Definition/Exception/UnsetKeyException.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Exception/UnsetKeyException.php rename to civicrm/vendor/symfony/config/Definition/Exception/UnsetKeyException.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/FloatNode.php b/civicrm/vendor/symfony/config/Definition/FloatNode.php similarity index 92% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/FloatNode.php rename to civicrm/vendor/symfony/config/Definition/FloatNode.php index 5e1af17ada07b22cb4e43a171a7048359fee0e0e..9eb8789950ecde9d36cab0003714fedd45a6138a 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/FloatNode.php +++ b/civicrm/vendor/symfony/config/Definition/FloatNode.php @@ -26,12 +26,12 @@ class FloatNode extends NumericNode protected function validateType($value) { // Integers are also accepted, we just cast them - if (is_int($value)) { + if (\is_int($value)) { $value = (float) $value; } - if (!is_float($value)) { - $ex = new InvalidTypeException(sprintf('Invalid type for path "%s". Expected float, but got %s.', $this->getPath(), gettype($value))); + if (!\is_float($value)) { + $ex = new InvalidTypeException(sprintf('Invalid type for path "%s". Expected float, but got %s.', $this->getPath(), \gettype($value))); if ($hint = $this->getInfo()) { $ex->addHint($hint); } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/IntegerNode.php b/civicrm/vendor/symfony/config/Definition/IntegerNode.php similarity index 88% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/IntegerNode.php rename to civicrm/vendor/symfony/config/Definition/IntegerNode.php index ba2307024cae31b5b9b689fe5040122cef6997b6..8ec068a84ecf98237f8f006ca311ebfa1b08f267 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/IntegerNode.php +++ b/civicrm/vendor/symfony/config/Definition/IntegerNode.php @@ -25,8 +25,8 @@ class IntegerNode extends NumericNode */ protected function validateType($value) { - if (!is_int($value)) { - $ex = new InvalidTypeException(sprintf('Invalid type for path "%s". Expected int, but got %s.', $this->getPath(), gettype($value))); + if (!\is_int($value)) { + $ex = new InvalidTypeException(sprintf('Invalid type for path "%s". Expected int, but got %s.', $this->getPath(), \gettype($value))); if ($hint = $this->getInfo()) { $ex->addHint($hint); } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/NodeInterface.php b/civicrm/vendor/symfony/config/Definition/NodeInterface.php similarity index 72% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/NodeInterface.php rename to civicrm/vendor/symfony/config/Definition/NodeInterface.php index b9bddc49385a3ca8330f42359e4f4c227f8140a6..45f1f681c1ea58cde3327a9eb2b36974c8ebd966 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/NodeInterface.php +++ b/civicrm/vendor/symfony/config/Definition/NodeInterface.php @@ -11,6 +11,10 @@ namespace Symfony\Component\Config\Definition; +use Symfony\Component\Config\Definition\Exception\ForbiddenOverwriteException; +use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException; +use Symfony\Component\Config\Definition\Exception\InvalidTypeException; + /** * Common Interface among all nodes. * @@ -59,11 +63,13 @@ interface NodeInterface public function getDefaultValue(); /** - * Normalizes the supplied value. + * Normalizes a value. * * @param mixed $value The value to normalize * * @return mixed The normalized value + * + * @throws InvalidTypeException if the value type is invalid */ public function normalize($value); @@ -73,7 +79,10 @@ interface NodeInterface * @param mixed $leftSide * @param mixed $rightSide * - * @return mixed The merged values + * @return mixed The merged value + * + * @throws ForbiddenOverwriteException if the configuration path cannot be overwritten + * @throws InvalidTypeException if the value type is invalid */ public function merge($leftSide, $rightSide); @@ -83,6 +92,9 @@ interface NodeInterface * @param mixed $value The value to finalize * * @return mixed The finalized value + * + * @throws InvalidTypeException if the value type is invalid + * @throws InvalidConfigurationException if the value is invalid configuration */ public function finalize($value); } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/NumericNode.php b/civicrm/vendor/symfony/config/Definition/NumericNode.php similarity index 90% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/NumericNode.php rename to civicrm/vendor/symfony/config/Definition/NumericNode.php index 2304ad99871200166ea2a835f2fff74a39002ab6..439935e4559f8c978dedcea4cc3f532adedcb290 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/NumericNode.php +++ b/civicrm/vendor/symfony/config/Definition/NumericNode.php @@ -52,4 +52,13 @@ class NumericNode extends ScalarNode return $value; } + + /** + * {@inheritdoc} + */ + protected function isValueEmpty($value) + { + // a numeric value cannot be empty + return false; + } } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Processor.php b/civicrm/vendor/symfony/config/Definition/Processor.php similarity index 97% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Processor.php rename to civicrm/vendor/symfony/config/Definition/Processor.php index 025e69378f948be4a7ddd18a60ae3c57ba38aa52..3e0feab8693e154897771ccb4a60aa3403284222 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/Processor.php +++ b/civicrm/vendor/symfony/config/Definition/Processor.php @@ -84,7 +84,7 @@ class Processor } if (isset($config[$key])) { - if (is_string($config[$key]) || !is_int(key($config[$key]))) { + if (\is_string($config[$key]) || !\is_int(key($config[$key]))) { // only one return array($config[$key]); } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/PrototypeNodeInterface.php b/civicrm/vendor/symfony/config/Definition/PrototypeNodeInterface.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/PrototypeNodeInterface.php rename to civicrm/vendor/symfony/config/Definition/PrototypeNodeInterface.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/PrototypedArrayNode.php b/civicrm/vendor/symfony/config/Definition/PrototypedArrayNode.php similarity index 70% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/PrototypedArrayNode.php rename to civicrm/vendor/symfony/config/Definition/PrototypedArrayNode.php index 931b46792f10065b5ce1a34f2bdfb8c59af1f46c..6af4a61e475d4896d8eb13855c36f8e7f27ba26b 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/PrototypedArrayNode.php +++ b/civicrm/vendor/symfony/config/Definition/PrototypedArrayNode.php @@ -11,10 +11,10 @@ namespace Symfony\Component\Config\Definition; -use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException; use Symfony\Component\Config\Definition\Exception\DuplicateKeyException; -use Symfony\Component\Config\Definition\Exception\UnsetKeyException; use Symfony\Component\Config\Definition\Exception\Exception; +use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException; +use Symfony\Component\Config\Definition\Exception\UnsetKeyException; /** * Represents a prototyped Array node in the config tree. @@ -29,6 +29,10 @@ class PrototypedArrayNode extends ArrayNode protected $minNumberOfElements = 0; protected $defaultValue = array(); protected $defaultChildren; + /** + * @var NodeInterface[] An array of the prototypes of the simplified value children + */ + private $valuePrototypes = array(); /** * Sets the minimum number of elements that a prototype based node must @@ -90,7 +94,7 @@ class PrototypedArrayNode extends ArrayNode */ public function setDefaultValue($value) { - if (!is_array($value)) { + if (!\is_array($value)) { throw new \InvalidArgumentException($this->getPath().': the default value of an array node has to be an array.'); } @@ -98,9 +102,7 @@ class PrototypedArrayNode extends ArrayNode } /** - * Checks if the node has a default value. - * - * @return bool + * {@inheritdoc} */ public function hasDefaultValue() { @@ -117,17 +119,15 @@ class PrototypedArrayNode extends ArrayNode if (null === $children) { $this->defaultChildren = array('defaults'); } else { - $this->defaultChildren = is_int($children) && $children > 0 ? range(1, $children) : (array) $children; + $this->defaultChildren = \is_int($children) && $children > 0 ? range(1, $children) : (array) $children; } } /** - * Retrieves the default value. + * {@inheritdoc} * * The default value could be either explicited or derived from the prototype * default value. - * - * @return array The default value */ public function getDefaultValue() { @@ -146,8 +146,6 @@ class PrototypedArrayNode extends ArrayNode /** * Sets the node prototype. - * - * @param PrototypeNodeInterface $node */ public function setPrototype(PrototypeNodeInterface $node) { @@ -167,8 +165,6 @@ class PrototypedArrayNode extends ArrayNode /** * Disable adding concrete children for prototyped nodes. * - * @param NodeInterface $node The child node to add - * * @throws Exception */ public function addChild(NodeInterface $node) @@ -194,15 +190,15 @@ class PrototypedArrayNode extends ArrayNode } foreach ($value as $k => $v) { - $this->prototype->setName($k); + $prototype = $this->getPrototypeForChild($k); try { - $value[$k] = $this->prototype->finalize($v); + $value[$k] = $prototype->finalize($v); } catch (UnsetKeyException $e) { unset($value[$k]); } } - if (count($value) < $this->minNumberOfElements) { + if (\count($value) < $this->minNumberOfElements) { $msg = sprintf('The path "%s" should have at least %d element(s) defined.', $this->getPath(), $this->minNumberOfElements); $ex = new InvalidConfigurationException($msg); $ex->setPath($this->getPath()); @@ -231,11 +227,11 @@ class PrototypedArrayNode extends ArrayNode $value = $this->remapXml($value); - $isAssoc = array_keys($value) !== range(0, count($value) - 1); + $isAssoc = array_keys($value) !== range(0, \count($value) - 1); $normalized = array(); foreach ($value as $k => $v) { - if (null !== $this->keyAttribute && is_array($v)) { - if (!isset($v[$this->keyAttribute]) && is_int($k) && !$isAssoc) { + if (null !== $this->keyAttribute && \is_array($v)) { + if (!isset($v[$this->keyAttribute]) && \is_int($k) && !$isAssoc) { $msg = sprintf('The attribute "%s" must be set for path "%s".', $this->keyAttribute, $this->getPath()); $ex = new InvalidConfigurationException($msg); $ex->setPath($this->getPath()); @@ -250,8 +246,18 @@ class PrototypedArrayNode extends ArrayNode } // if only "value" is left - if (1 == count($v) && isset($v['value'])) { + if (array_keys($v) === array('value')) { $v = $v['value']; + if ($this->prototype instanceof ArrayNode && ($children = $this->prototype->getChildren()) && array_key_exists('value', $children)) { + $valuePrototype = current($this->valuePrototypes) ?: clone $children['value']; + $valuePrototype->parent = $this; + $originalClosures = $this->prototype->normalizationClosures; + if (\is_array($originalClosures)) { + $valuePrototypeClosures = $valuePrototype->normalizationClosures; + $valuePrototype->normalizationClosures = \is_array($valuePrototypeClosures) ? array_merge($originalClosures, $valuePrototypeClosures) : $originalClosures; + } + $this->valuePrototypes[$k] = $valuePrototype; + } } } @@ -264,11 +270,11 @@ class PrototypedArrayNode extends ArrayNode } } - $this->prototype->setName($k); + $prototype = $this->getPrototypeForChild($k); if (null !== $this->keyAttribute || $isAssoc) { - $normalized[$k] = $this->prototype->normalize($v); + $normalized[$k] = $prototype->normalize($v); } else { - $normalized[] = $this->prototype->normalize($v); + $normalized[] = $prototype->normalize($v); } } @@ -278,8 +284,8 @@ class PrototypedArrayNode extends ArrayNode /** * Merges values together. * - * @param mixed $leftSide The left side to merge. - * @param mixed $rightSide The right side to merge. + * @param mixed $leftSide The left side to merge + * @param mixed $rightSide The right side to merge * * @return mixed The merged values * @@ -322,10 +328,54 @@ class PrototypedArrayNode extends ArrayNode continue; } - $this->prototype->setName($k); - $leftSide[$k] = $this->prototype->merge($leftSide[$k], $v); + $prototype = $this->getPrototypeForChild($k); + $leftSide[$k] = $prototype->merge($leftSide[$k], $v); } return $leftSide; } + + /** + * Returns a prototype for the child node that is associated to $key in the value array. + * For general child nodes, this will be $this->prototype. + * But if $this->removeKeyAttribute is true and there are only two keys in the child node: + * one is same as this->keyAttribute and the other is 'value', then the prototype will be different. + * + * For example, assume $this->keyAttribute is 'name' and the value array is as follows: + * array( + * array( + * 'name' => 'name001', + * 'value' => 'value001' + * ) + * ) + * + * Now, the key is 0 and the child node is: + * array( + * 'name' => 'name001', + * 'value' => 'value001' + * ) + * + * When normalizing the value array, the 'name' element will removed from the child node + * and its value becomes the new key of the child node: + * array( + * 'name001' => array('value' => 'value001') + * ) + * + * Now only 'value' element is left in the child node which can be further simplified into a string: + * array('name001' => 'value001') + * + * Now, the key becomes 'name001' and the child node becomes 'value001' and + * the prototype of child node 'name001' should be a ScalarNode instead of an ArrayNode instance. + * + * @param string $key The key of the child node + * + * @return mixed The prototype instance + */ + private function getPrototypeForChild($key) + { + $prototype = isset($this->valuePrototypes[$key]) ? $this->valuePrototypes[$key] : $this->prototype; + $prototype->setName($key); + + return $prototype; + } } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/ReferenceDumper.php b/civicrm/vendor/symfony/config/Definition/ReferenceDumper.php similarity index 51% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/ReferenceDumper.php rename to civicrm/vendor/symfony/config/Definition/ReferenceDumper.php index 7fe336d8fbf113329f9d49dc6de343b836ebdd74..047b258ad3377c4672e7560acd2ed3bbeec469f7 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/ReferenceDumper.php +++ b/civicrm/vendor/symfony/config/Definition/ReferenceDumper.php @@ -11,10 +11,13 @@ namespace Symfony\Component\Config\Definition; +@trigger_error('The '.__NAMESPACE__.'\ReferenceDumper class is deprecated since Symfony 2.4 and will be removed in 3.0. Use the Symfony\Component\Config\Definition\Dumper\YamlReferenceDumper class instead.', E_USER_DEPRECATED); + use Symfony\Component\Config\Definition\Dumper\YamlReferenceDumper; /** - * @deprecated Deprecated since version 2.4, to be removed in 3.0. Use Symfony\Component\Config\Definition\Dumper\YamlReferenceDumper instead. + * @deprecated since version 2.4, to be removed in 3.0. + * Use {@link \Symfony\Component\Config\Definition\Dumper\YamlReferenceDumper} instead. */ class ReferenceDumper extends YamlReferenceDumper { diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/ScalarNode.php b/civicrm/vendor/symfony/config/Definition/ScalarNode.php similarity index 86% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/ScalarNode.php rename to civicrm/vendor/symfony/config/Definition/ScalarNode.php index 854c265763a70b71c3165a8f4b387de4044c9fa1..e63f3f227f7028a55746d919da716a6724120b60 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/ScalarNode.php +++ b/civicrm/vendor/symfony/config/Definition/ScalarNode.php @@ -36,7 +36,7 @@ class ScalarNode extends VariableNode $ex = new InvalidTypeException(sprintf( 'Invalid type for path "%s". Expected scalar, but got %s.', $this->getPath(), - gettype($value) + \gettype($value) )); if ($hint = $this->getInfo()) { $ex->addHint($hint); @@ -46,4 +46,12 @@ class ScalarNode extends VariableNode throw $ex; } } + + /** + * {@inheritdoc} + */ + protected function isValueEmpty($value) + { + return null === $value || '' === $value; + } } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/VariableNode.php b/civicrm/vendor/symfony/config/Definition/VariableNode.php similarity index 83% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/VariableNode.php rename to civicrm/vendor/symfony/config/Definition/VariableNode.php index 2ab7a45b6bc76ea43efb3f3bb4d9481c44fa38cc..0cd84c72bf303431690dab26a7d6055fae5b7343 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Definition/VariableNode.php +++ b/civicrm/vendor/symfony/config/Definition/VariableNode.php @@ -27,9 +27,6 @@ class VariableNode extends BaseNode implements PrototypeNodeInterface protected $defaultValue; protected $allowEmptyValue = true; - /** - * {@inheritdoc} - */ public function setDefaultValue($value) { $this->defaultValueSet = true; @@ -57,7 +54,7 @@ class VariableNode extends BaseNode implements PrototypeNodeInterface /** * Sets if this node is allowed to have an empty value. * - * @param bool $boolean True if this entity will accept empty values. + * @param bool $boolean True if this entity will accept empty values */ public function setAllowEmptyValue($boolean) { @@ -84,7 +81,7 @@ class VariableNode extends BaseNode implements PrototypeNodeInterface */ protected function finalizeValue($value) { - if (!$this->allowEmptyValue && empty($value)) { + if (!$this->allowEmptyValue && $this->isValueEmpty($value)) { $ex = new InvalidConfigurationException(sprintf( 'The path "%s" cannot contain an empty value, but got %s.', $this->getPath(), @@ -116,4 +113,20 @@ class VariableNode extends BaseNode implements PrototypeNodeInterface { return $rightSide; } + + /** + * Evaluates if the given value is to be treated as empty. + * + * By default, PHP's empty() function is used to test for emptiness. This + * method may be overridden by subtypes to better match their understanding + * of empty data. + * + * @param mixed $value + * + * @return bool + */ + protected function isValueEmpty($value) + { + return empty($value); + } } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Exception/FileLoaderImportCircularReferenceException.php b/civicrm/vendor/symfony/config/Exception/FileLoaderImportCircularReferenceException.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Exception/FileLoaderImportCircularReferenceException.php rename to civicrm/vendor/symfony/config/Exception/FileLoaderImportCircularReferenceException.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Exception/FileLoaderLoadException.php b/civicrm/vendor/symfony/config/Exception/FileLoaderLoadException.php similarity index 93% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Exception/FileLoaderLoadException.php rename to civicrm/vendor/symfony/config/Exception/FileLoaderLoadException.php index 6af3dd0a6d618619639d894005d5a82239e55ef7..819abe6ef1e78290dd4f33d0a319dd6a86359b81 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Exception/FileLoaderLoadException.php +++ b/civicrm/vendor/symfony/config/Exception/FileLoaderLoadException.php @@ -56,7 +56,7 @@ class FileLoaderLoadException extends \Exception // Is the resource located inside a bundle? if ('@' === $resource[0]) { - $parts = explode(DIRECTORY_SEPARATOR, $resource); + $parts = explode(\DIRECTORY_SEPARATOR, $resource); $bundle = substr($parts[0], 1); $message .= sprintf(' Make sure the "%s" bundle is correctly registered and loaded in the application kernel class.', $bundle); $message .= sprintf(' If the bundle is registered, make sure the bundle path "%s" is not empty.', $resource); @@ -67,11 +67,11 @@ class FileLoaderLoadException extends \Exception protected function varToString($var) { - if (is_object($var)) { - return sprintf('Object(%s)', get_class($var)); + if (\is_object($var)) { + return sprintf('Object(%s)', \get_class($var)); } - if (is_array($var)) { + if (\is_array($var)) { $a = array(); foreach ($var as $k => $v) { $a[] = sprintf('%s => %s', $k, $this->varToString($v)); @@ -80,7 +80,7 @@ class FileLoaderLoadException extends \Exception return sprintf('Array(%s)', implode(', ', $a)); } - if (is_resource($var)) { + if (\is_resource($var)) { return sprintf('Resource(%s)', get_resource_type($var)); } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/FileLocator.php b/civicrm/vendor/symfony/config/FileLocator.php similarity index 87% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/FileLocator.php rename to civicrm/vendor/symfony/config/FileLocator.php index c6600c77837604dd902e8c8352f3cb534d33c1e8..368cc19ae68ba6d47dd718428e23ae9c8c3d12be 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/FileLocator.php +++ b/civicrm/vendor/symfony/config/FileLocator.php @@ -21,8 +21,6 @@ class FileLocator implements FileLocatorInterface protected $paths; /** - * Constructor. - * * @param string|array $paths A path or an array of paths where to look for resources */ public function __construct($paths = array()) @@ -57,7 +55,7 @@ class FileLocator implements FileLocatorInterface $filepaths = array(); foreach ($paths as $path) { - if (file_exists($file = $path.DIRECTORY_SEPARATOR.$name)) { + if (@file_exists($file = $path.\DIRECTORY_SEPARATOR.$name)) { if (true === $first) { return $file; } @@ -81,10 +79,10 @@ class FileLocator implements FileLocatorInterface */ private function isAbsolutePath($file) { - if ($file[0] === '/' || $file[0] === '\\' - || (strlen($file) > 3 && ctype_alpha($file[0]) - && $file[1] === ':' - && ($file[2] === '\\' || $file[2] === '/') + if ('/' === $file[0] || '\\' === $file[0] + || (\strlen($file) > 3 && ctype_alpha($file[0]) + && ':' === $file[1] + && ('\\' === $file[2] || '/' === $file[2]) ) || null !== parse_url($file, PHP_URL_SCHEME) ) { diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/FileLocatorInterface.php b/civicrm/vendor/symfony/config/FileLocatorInterface.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/FileLocatorInterface.php rename to civicrm/vendor/symfony/config/FileLocatorInterface.php diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/LICENSE b/civicrm/vendor/symfony/config/LICENSE similarity index 96% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/LICENSE rename to civicrm/vendor/symfony/config/LICENSE index 43028bc600f26ec5599ab339d83cd70f70dfcdab..21d7fb9e2f29b50caca3a76f0647e94e2cc8ddc1 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/LICENSE +++ b/civicrm/vendor/symfony/config/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2004-2015 Fabien Potencier +Copyright (c) 2004-2018 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/config/Symfony/Component/Config/Loader/DelegatingLoader.php b/civicrm/vendor/symfony/config/Loader/DelegatingLoader.php similarity index 90% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/DelegatingLoader.php rename to civicrm/vendor/symfony/config/Loader/DelegatingLoader.php index 3097878bf0bf295d973d77a49517f2d92ba8a5c2..237009d45e6d169063f8d5b7ffcccdb5eb5b8b6b 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/DelegatingLoader.php +++ b/civicrm/vendor/symfony/config/Loader/DelegatingLoader.php @@ -23,11 +23,6 @@ use Symfony\Component\Config\Exception\FileLoaderLoadException; */ class DelegatingLoader extends Loader { - /** - * Constructor. - * - * @param LoaderResolverInterface $resolver A LoaderResolverInterface instance - */ public function __construct(LoaderResolverInterface $resolver) { $this->resolver = $resolver; diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/FileLoader.php b/civicrm/vendor/symfony/config/Loader/FileLoader.php similarity index 84% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/FileLoader.php rename to civicrm/vendor/symfony/config/Loader/FileLoader.php index 9c1b4d9f1eaf6bf27fb16473e97749aa57f330e6..506eb1be082a1d5222aa25acd3d38e9abad873b8 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/FileLoader.php +++ b/civicrm/vendor/symfony/config/Loader/FileLoader.php @@ -11,9 +11,9 @@ namespace Symfony\Component\Config\Loader; -use Symfony\Component\Config\FileLocatorInterface; -use Symfony\Component\Config\Exception\FileLoaderLoadException; use Symfony\Component\Config\Exception\FileLoaderImportCircularReferenceException; +use Symfony\Component\Config\Exception\FileLoaderLoadException; +use Symfony\Component\Config\FileLocatorInterface; /** * FileLoader is the abstract class used by all built-in loaders that are file based. @@ -22,23 +22,12 @@ use Symfony\Component\Config\Exception\FileLoaderImportCircularReferenceExceptio */ abstract class FileLoader extends Loader { - /** - * @var array - */ protected static $loading = array(); - /** - * @var FileLocatorInterface - */ protected $locator; private $currentDir; - /** - * Constructor. - * - * @param FileLocatorInterface $locator A FileLocatorInterface instance - */ public function __construct(FileLocatorInterface $locator) { $this->locator = $locator; @@ -86,12 +75,17 @@ abstract class FileLoader extends Loader // we fallback to the current locator to keep BC // as some some loaders do not call the parent __construct() // @deprecated should be removed in 3.0 - $locator = $loader->getLocator() ?: $this->locator; + $locator = $loader->getLocator(); + if (null === $locator) { + @trigger_error('Not calling the parent constructor in '.\get_class($loader).' which extends '.__CLASS__.' is deprecated since Symfony 2.7 and will not be supported anymore in 3.0.', E_USER_DEPRECATED); + $locator = $this->locator; + } + $resource = $locator->locate($resource, $this->currentDir, false); } - $resources = is_array($resource) ? $resource : array($resource); - for ($i = 0; $i < $resourcesCount = count($resources); ++$i) { + $resources = \is_array($resource) ? $resource : array($resource); + for ($i = 0; $i < $resourcesCount = \count($resources); ++$i) { if (isset(self::$loading[$resources[$i]])) { if ($i == $resourcesCount - 1) { throw new FileLoaderImportCircularReferenceException(array_keys(self::$loading)); @@ -108,6 +102,9 @@ abstract class FileLoader extends Loader } catch (\Exception $e) { unset(self::$loading[$resource]); throw $e; + } catch (\Throwable $e) { + unset(self::$loading[$resource]); + throw $e; } unset(self::$loading[$resource]); diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/Loader.php b/civicrm/vendor/symfony/config/Loader/Loader.php similarity index 96% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/Loader.php rename to civicrm/vendor/symfony/config/Loader/Loader.php index de4e127386d8b5bef9eddfd64b794745ff8debfc..a6f8d9c66454c3ef76208214e26ea2af875de5ed 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/Loader.php +++ b/civicrm/vendor/symfony/config/Loader/Loader.php @@ -57,7 +57,7 @@ abstract class Loader implements LoaderInterface * @param mixed $resource A resource * @param string|null $type The resource type or null if unknown * - * @return LoaderInterface A LoaderInterface instance + * @return $this|LoaderInterface * * @throws FileLoaderLoadException If no loader is found */ diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/LoaderInterface.php b/civicrm/vendor/symfony/config/Loader/LoaderInterface.php similarity index 93% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/LoaderInterface.php rename to civicrm/vendor/symfony/config/Loader/LoaderInterface.php index dd0a85a6b08c71e876b78872182ca0ee82dcb002..dfca9dd27bf0dfe7c0af2edbd3d90d13d1d86167 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/LoaderInterface.php +++ b/civicrm/vendor/symfony/config/Loader/LoaderInterface.php @@ -47,8 +47,6 @@ interface LoaderInterface /** * Sets the loader resolver. - * - * @param LoaderResolverInterface $resolver A LoaderResolverInterface instance */ public function setResolver(LoaderResolverInterface $resolver); } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/LoaderResolver.php b/civicrm/vendor/symfony/config/Loader/LoaderResolver.php similarity index 92% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/LoaderResolver.php rename to civicrm/vendor/symfony/config/Loader/LoaderResolver.php index dc6846df8d617e914ecec74aa24c54a38f51435b..9299bc000f5f45a5ca52ac6e4a15b0f4e06d0797 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/LoaderResolver.php +++ b/civicrm/vendor/symfony/config/Loader/LoaderResolver.php @@ -27,8 +27,6 @@ class LoaderResolver implements LoaderResolverInterface private $loaders = array(); /** - * Constructor. - * * @param LoaderInterface[] $loaders An array of loaders */ public function __construct(array $loaders = array()) @@ -52,11 +50,6 @@ class LoaderResolver implements LoaderResolverInterface return false; } - /** - * Adds a loader. - * - * @param LoaderInterface $loader A LoaderInterface instance - */ public function addLoader(LoaderInterface $loader) { $this->loaders[] = $loader; diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/LoaderResolverInterface.php b/civicrm/vendor/symfony/config/Loader/LoaderResolverInterface.php similarity index 100% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Loader/LoaderResolverInterface.php rename to civicrm/vendor/symfony/config/Loader/LoaderResolverInterface.php diff --git a/civicrm/vendor/symfony/config/README.md b/civicrm/vendor/symfony/config/README.md new file mode 100644 index 0000000000000000000000000000000000000000..bf400da196b224a49b83f7caf696a90216e6d3e5 --- /dev/null +++ b/civicrm/vendor/symfony/config/README.md @@ -0,0 +1,15 @@ +Config Component +================ + +The Config component provides several classes to help you find, load, combine, +autofill and validate configuration values of any kind, whatever their source +may be (YAML, XML, INI files, or for instance a database). + +Resources +--------- + + * [Documentation](https://symfony.com/doc/current/components/config/index.html) + * [Contributing](https://symfony.com/doc/current/contributing/index.html) + * [Report issues](https://github.com/symfony/symfony/issues) and + [send Pull Requests](https://github.com/symfony/symfony/pulls) + in the [main Symfony repository](https://github.com/symfony/symfony) diff --git a/civicrm/vendor/symfony/config/Resource/BCResourceInterfaceChecker.php b/civicrm/vendor/symfony/config/Resource/BCResourceInterfaceChecker.php new file mode 100644 index 0000000000000000000000000000000000000000..64c93094aca97a1eae4447300ec0ffa40c380eaa --- /dev/null +++ b/civicrm/vendor/symfony/config/Resource/BCResourceInterfaceChecker.php @@ -0,0 +1,36 @@ +<?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\Component\Config\Resource; + +/** + * Resource checker for the ResourceInterface. Exists for BC. + * + * @author Matthias Pigulla <mp@webfactory.de> + * + * @deprecated since 2.8, to be removed in 3.0. + */ +class BCResourceInterfaceChecker extends SelfCheckingResourceChecker +{ + public function supports(ResourceInterface $metadata) + { + /* As all resources must be instanceof ResourceInterface, + we support them all. */ + return true; + } + + public function isFresh(ResourceInterface $resource, $timestamp) + { + @trigger_error(sprintf('The class "%s" is performing resource checking through ResourceInterface::isFresh(), which is deprecated since Symfony 2.8 and will be removed in 3.0', \get_class($resource)), E_USER_DEPRECATED); + + return parent::isFresh($resource, $timestamp); // For now, $metadata features the isFresh() method, so off we go (quack quack) + } +} diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Resource/DirectoryResource.php b/civicrm/vendor/symfony/config/Resource/DirectoryResource.php similarity index 78% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Resource/DirectoryResource.php rename to civicrm/vendor/symfony/config/Resource/DirectoryResource.php index 515fb5c42d6a94df3439d74e2ee98f96857cac80..b65d40ae4400ed735c11096e4c385569e49c7959 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Resource/DirectoryResource.php +++ b/civicrm/vendor/symfony/config/Resource/DirectoryResource.php @@ -16,14 +16,12 @@ namespace Symfony\Component\Config\Resource; * * @author Fabien Potencier <fabien@symfony.com> */ -class DirectoryResource implements ResourceInterface, \Serializable +class DirectoryResource implements SelfCheckingResourceInterface, \Serializable { private $resource; private $pattern; /** - * Constructor. - * * @param string $resource The file path to the resource * @param string|null $pattern A pattern to restrict monitored files */ @@ -38,7 +36,7 @@ class DirectoryResource implements ResourceInterface, \Serializable */ public function __toString() { - return (string) $this->resource; + return md5(serialize(array($this->resource, $this->pattern))); } /** @@ -68,7 +66,10 @@ class DirectoryResource implements ResourceInterface, \Serializable return false; } - $newestMTime = filemtime($this->resource); + if ($timestamp < filemtime($this->resource)) { + return false; + } + foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->resource), \RecursiveIteratorIterator::SELF_FIRST) as $file) { // if regex filtering is enabled only check matching files if ($this->pattern && $file->isFile() && !preg_match($this->pattern, $file->getBasename())) { @@ -81,10 +82,20 @@ class DirectoryResource implements ResourceInterface, \Serializable continue; } - $newestMTime = max($file->getMTime(), $newestMTime); + // for broken links + try { + $fileMTime = $file->getMTime(); + } catch (\RuntimeException $e) { + continue; + } + + // early return if a file's mtime exceeds the passed timestamp + if ($timestamp < $fileMTime) { + return false; + } } - return $newestMTime < $timestamp; + return true; } public function serialize() diff --git a/civicrm/vendor/symfony/config/Resource/FileExistenceResource.php b/civicrm/vendor/symfony/config/Resource/FileExistenceResource.php new file mode 100644 index 0000000000000000000000000000000000000000..0e87aabb52a8163373e4af62f84ba87f45663aee --- /dev/null +++ b/civicrm/vendor/symfony/config/Resource/FileExistenceResource.php @@ -0,0 +1,76 @@ +<?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\Component\Config\Resource; + +/** + * FileExistenceResource represents a resource stored on the filesystem. + * Freshness is only evaluated against resource creation or deletion. + * + * The resource can be a file or a directory. + * + * @author Charles-Henri Bruyand <charleshenri.bruyand@gmail.com> + */ +class FileExistenceResource implements SelfCheckingResourceInterface, \Serializable +{ + private $resource; + + private $exists; + + /** + * @param string $resource The file path to the resource + */ + public function __construct($resource) + { + $this->resource = (string) $resource; + $this->exists = file_exists($resource); + } + + /** + * {@inheritdoc} + */ + public function __toString() + { + return $this->resource; + } + + /** + * {@inheritdoc} + */ + public function getResource() + { + return $this->resource; + } + + /** + * {@inheritdoc} + */ + public function isFresh($timestamp) + { + return file_exists($this->resource) === $this->exists; + } + + /** + * {@inheritdoc} + */ + public function serialize() + { + return serialize(array($this->resource, $this->exists)); + } + + /** + * {@inheritdoc} + */ + public function unserialize($serialized) + { + list($this->resource, $this->exists) = unserialize($serialized); + } +} diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Resource/FileResource.php b/civicrm/vendor/symfony/config/Resource/FileResource.php similarity index 88% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Resource/FileResource.php rename to civicrm/vendor/symfony/config/Resource/FileResource.php index 4c00ae4140abc7882c60829b0b5205e07de12144..11770106e9b23c212a5e1f5df4d8564896455080 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Resource/FileResource.php +++ b/civicrm/vendor/symfony/config/Resource/FileResource.php @@ -18,7 +18,7 @@ namespace Symfony\Component\Config\Resource; * * @author Fabien Potencier <fabien@symfony.com> */ -class FileResource implements ResourceInterface, \Serializable +class FileResource implements SelfCheckingResourceInterface, \Serializable { /** * @var string|false @@ -26,13 +26,11 @@ class FileResource implements ResourceInterface, \Serializable private $resource; /** - * Constructor. - * * @param string $resource The file path to the resource */ public function __construct($resource) { - $this->resource = realpath($resource); + $this->resource = realpath($resource) ?: (file_exists($resource) ? $resource : false); } /** diff --git a/civicrm/vendor/symfony/config/Resource/ResourceInterface.php b/civicrm/vendor/symfony/config/Resource/ResourceInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..55b3e09648a6b0049bff7ddf260a911ff78af9bc --- /dev/null +++ b/civicrm/vendor/symfony/config/Resource/ResourceInterface.php @@ -0,0 +1,58 @@ +<?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\Component\Config\Resource; + +/** + * ResourceInterface is the interface that must be implemented by all Resource classes. + * + * @author Fabien Potencier <fabien@symfony.com> + */ +interface ResourceInterface +{ + /** + * Returns a string representation of the Resource. + * + * This method is necessary to allow for resource de-duplication, for example by means + * of array_unique(). The string returned need not have a particular meaning, but has + * to be identical for different ResourceInterface instances referring to the same + * resource; and it should be unlikely to collide with that of other, unrelated + * resource instances. + * + * @return string A string representation unique to the underlying Resource + */ + public function __toString(); + + /** + * Returns true if the resource has not been updated since the given timestamp. + * + * @param int $timestamp The last time the resource was loaded + * + * @return bool True if the resource has not been updated, false otherwise + * + * @deprecated since 2.8, to be removed in 3.0. If your resource can check itself for + * freshness implement the SelfCheckingResourceInterface instead. + */ + public function isFresh($timestamp); + + /** + * Returns the tied resource. + * + * @return mixed The resource + * + * @deprecated since 2.8, to be removed in 3.0. As there are many different kinds of resource, + * a single getResource() method does not make sense at the interface level. You + * can still call getResource() on implementing classes, probably after performing + * a type check. If you know the concrete type of Resource at hand, the return value + * of this method may make sense to you. + */ + public function getResource(); +} diff --git a/civicrm/vendor/symfony/config/Resource/SelfCheckingResourceChecker.php b/civicrm/vendor/symfony/config/Resource/SelfCheckingResourceChecker.php new file mode 100644 index 0000000000000000000000000000000000000000..d72203bc1a42c9a9239795bf3f07b3ce774ada40 --- /dev/null +++ b/civicrm/vendor/symfony/config/Resource/SelfCheckingResourceChecker.php @@ -0,0 +1,36 @@ +<?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\Component\Config\Resource; + +use Symfony\Component\Config\ResourceCheckerInterface; + +/** + * Resource checker for instances of SelfCheckingResourceInterface. + * + * As these resources perform the actual check themselves, we can provide + * this class as a standard way of validating them. + * + * @author Matthias Pigulla <mp@webfactory.de> + */ +class SelfCheckingResourceChecker implements ResourceCheckerInterface +{ + public function supports(ResourceInterface $metadata) + { + return $metadata instanceof SelfCheckingResourceInterface; + } + + public function isFresh(ResourceInterface $resource, $timestamp) + { + /* @var SelfCheckingResourceInterface $resource */ + return $resource->isFresh($timestamp); + } +} diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Resource/ResourceInterface.php b/civicrm/vendor/symfony/config/Resource/SelfCheckingResourceInterface.php similarity index 56% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Resource/ResourceInterface.php rename to civicrm/vendor/symfony/config/Resource/SelfCheckingResourceInterface.php index db03d127a401e5ffe364e6980001d41f874585b3..b3260f2be3e58178c28efc3dd644eb9e3e464d6d 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Resource/ResourceInterface.php +++ b/civicrm/vendor/symfony/config/Resource/SelfCheckingResourceInterface.php @@ -12,19 +12,13 @@ namespace Symfony\Component\Config\Resource; /** - * ResourceInterface is the interface that must be implemented by all Resource classes. + * Interface for Resources that can check for freshness autonomously, + * without special support from external services. * - * @author Fabien Potencier <fabien@symfony.com> + * @author Matthias Pigulla <mp@webfactory.de> */ -interface ResourceInterface +interface SelfCheckingResourceInterface extends ResourceInterface { - /** - * Returns a string representation of the Resource. - * - * @return string A string representation of the Resource - */ - public function __toString(); - /** * Returns true if the resource has not been updated since the given timestamp. * @@ -33,11 +27,4 @@ interface ResourceInterface * @return bool True if the resource has not been updated, false otherwise */ public function isFresh($timestamp); - - /** - * Returns the tied resource. - * - * @return mixed The resource - */ - public function getResource(); } diff --git a/civicrm/vendor/symfony/config/ResourceCheckerConfigCache.php b/civicrm/vendor/symfony/config/ResourceCheckerConfigCache.php new file mode 100644 index 0000000000000000000000000000000000000000..52ae833d441821b5117a4d57b04fea8d2be0eb0f --- /dev/null +++ b/civicrm/vendor/symfony/config/ResourceCheckerConfigCache.php @@ -0,0 +1,168 @@ +<?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\Component\Config; + +use Symfony\Component\Config\Resource\ResourceInterface; +use Symfony\Component\Filesystem\Exception\IOException; +use Symfony\Component\Filesystem\Filesystem; + +/** + * ResourceCheckerConfigCache uses instances of ResourceCheckerInterface + * to check whether cached data is still fresh. + * + * @author Matthias Pigulla <mp@webfactory.de> + */ +class ResourceCheckerConfigCache implements ConfigCacheInterface +{ + /** + * @var string + */ + private $file; + + /** + * @var ResourceCheckerInterface[] + */ + private $resourceCheckers; + + /** + * @param string $file The absolute cache path + * @param ResourceCheckerInterface[] $resourceCheckers The ResourceCheckers to use for the freshness check + */ + public function __construct($file, array $resourceCheckers = array()) + { + $this->file = $file; + $this->resourceCheckers = $resourceCheckers; + } + + /** + * {@inheritdoc} + */ + public function getPath() + { + return $this->file; + } + + /** + * Checks if the cache is still fresh. + * + * This implementation will make a decision solely based on the ResourceCheckers + * passed in the constructor. + * + * The first ResourceChecker that supports a given resource is considered authoritative. + * Resources with no matching ResourceChecker will silently be ignored and considered fresh. + * + * @return bool true if the cache is fresh, false otherwise + */ + public function isFresh() + { + if (!is_file($this->file)) { + return false; + } + + if (!$this->resourceCheckers) { + return true; // shortcut - if we don't have any checkers we don't need to bother with the meta file at all + } + + $metadata = $this->getMetaFile(); + if (!is_file($metadata)) { + return false; + } + + $e = null; + $meta = false; + $time = filemtime($this->file); + $signalingException = new \UnexpectedValueException(); + $prevUnserializeHandler = ini_set('unserialize_callback_func', ''); + $prevErrorHandler = set_error_handler(function ($type, $msg, $file, $line, $context) use (&$prevErrorHandler, $signalingException) { + if (E_WARNING === $type && 'Class __PHP_Incomplete_Class has no unserializer' === $msg) { + throw $signalingException; + } + + return $prevErrorHandler ? $prevErrorHandler($type, $msg, $file, $line, $context) : false; + }); + + try { + $meta = unserialize(file_get_contents($metadata)); + } catch (\Error $e) { + } catch (\Exception $e) { + } + restore_error_handler(); + ini_set('unserialize_callback_func', $prevUnserializeHandler); + if (null !== $e && $e !== $signalingException) { + throw $e; + } + if (false === $meta) { + return false; + } + + foreach ($meta as $resource) { + /* @var ResourceInterface $resource */ + foreach ($this->resourceCheckers as $checker) { + if (!$checker->supports($resource)) { + continue; // next checker + } + if ($checker->isFresh($resource, $time)) { + break; // no need to further check this resource + } + + return false; // cache is stale + } + // no suitable checker found, ignore this resource + } + + return true; + } + + /** + * Writes cache. + * + * @param string $content The content to write in the cache + * @param ResourceInterface[] $metadata An array of metadata + * + * @throws \RuntimeException When cache file can't be written + */ + public function write($content, array $metadata = null) + { + $mode = 0666; + $umask = umask(); + $filesystem = new Filesystem(); + $filesystem->dumpFile($this->file, $content, null); + try { + $filesystem->chmod($this->file, $mode, $umask); + } catch (IOException $e) { + // discard chmod failure (some filesystem may not support it) + } + + if (null !== $metadata) { + $filesystem->dumpFile($this->getMetaFile(), serialize($metadata), null); + try { + $filesystem->chmod($this->getMetaFile(), $mode, $umask); + } catch (IOException $e) { + // discard chmod failure (some filesystem may not support it) + } + } + + if (\function_exists('opcache_invalidate') && ini_get('opcache.enable')) { + @opcache_invalidate($this->file, true); + } + } + + /** + * Gets the meta file path. + * + * @return string The meta file path + */ + private function getMetaFile() + { + return $this->file.'.meta'; + } +} diff --git a/civicrm/vendor/symfony/config/ResourceCheckerConfigCacheFactory.php b/civicrm/vendor/symfony/config/ResourceCheckerConfigCacheFactory.php new file mode 100644 index 0000000000000000000000000000000000000000..586c5bf280c28eb3e38d477acdf55f6cb28a4b4c --- /dev/null +++ b/civicrm/vendor/symfony/config/ResourceCheckerConfigCacheFactory.php @@ -0,0 +1,51 @@ +<?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\Component\Config; + +/** + * A ConfigCacheFactory implementation that validates the + * cache with an arbitrary set of ResourceCheckers. + * + * @author Matthias Pigulla <mp@webfactory.de> + */ +class ResourceCheckerConfigCacheFactory implements ConfigCacheFactoryInterface +{ + /** + * @var ResourceCheckerInterface[] + */ + private $resourceCheckers = array(); + + /** + * @param ResourceCheckerInterface[] $resourceCheckers + */ + public function __construct(array $resourceCheckers = array()) + { + $this->resourceCheckers = $resourceCheckers; + } + + /** + * {@inheritdoc} + */ + public function cache($file, $callback) + { + if (!\is_callable($callback)) { + throw new \InvalidArgumentException(sprintf('Invalid type for callback argument. Expected callable, but got "%s".', \gettype($callback))); + } + + $cache = new ResourceCheckerConfigCache($file, $this->resourceCheckers); + if (!$cache->isFresh()) { + \call_user_func($callback, $cache); + } + + return $cache; + } +} diff --git a/civicrm/vendor/symfony/config/ResourceCheckerInterface.php b/civicrm/vendor/symfony/config/ResourceCheckerInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..612d77786446a492c417c5700868a900b49762b5 --- /dev/null +++ b/civicrm/vendor/symfony/config/ResourceCheckerInterface.php @@ -0,0 +1,48 @@ +<?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\Component\Config; + +use Symfony\Component\Config\Resource\ResourceInterface; + +/** + * Interface for ResourceCheckers. + * + * When a ResourceCheckerConfigCache instance is checked for freshness, all its associated + * metadata resources are passed to ResourceCheckers. The ResourceCheckers + * can then inspect the resources and decide whether the cache can be considered + * fresh or not. + * + * @author Matthias Pigulla <mp@webfactory.de> + * @author Benjamin Klotz <bk@webfactory.de> + */ +interface ResourceCheckerInterface +{ + /** + * Queries the ResourceChecker whether it can validate a given + * resource or not. + * + * @param ResourceInterface $metadata The resource to be checked for freshness + * + * @return bool True if the ResourceChecker can handle this resource type, false if not + */ + public function supports(ResourceInterface $metadata); + + /** + * Validates the resource. + * + * @param ResourceInterface $resource The resource to be validated + * @param int $timestamp The timestamp at which the cache associated with this resource was created + * + * @return bool True if the resource has not changed since the given timestamp, false otherwise + */ + public function isFresh(ResourceInterface $resource, $timestamp); +} diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/CHANGELOG.md b/civicrm/vendor/symfony/config/Symfony/Component/Config/CHANGELOG.md deleted file mode 100644 index 59b30a3a7a6d82e9d783170f6c1f1d67325c3bd8..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/CHANGELOG.md +++ /dev/null @@ -1,21 +0,0 @@ -CHANGELOG -========= - -2.2.0 ------ - - * added ArrayNodeDefinition::canBeEnabled() and ArrayNodeDefinition::canBeDisabled() - to ease configuration when some sections are respectively disabled / enabled - by default. - * added a `normalizeKeys()` method for array nodes (to avoid key normalization) - * added numerical type handling for config definitions - * added convenience methods for optional configuration sections to ArrayNodeDefinition - * added a utils class for XML manipulations - -2.1.0 ------ - - * added a way to add documentation on configuration - * implemented `Serializable` on resources - * LoaderResolverInterface is now used instead of LoaderResolver for type - hinting diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/ConfigCache.php b/civicrm/vendor/symfony/config/Symfony/Component/Config/ConfigCache.php deleted file mode 100644 index ebf107f74f35c98113bc263742ec92a64beb0cbc..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/ConfigCache.php +++ /dev/null @@ -1,126 +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\Component\Config; - -use Symfony\Component\Config\Resource\ResourceInterface; -use Symfony\Component\Filesystem\Exception\IOException; -use Symfony\Component\Filesystem\Filesystem; - -/** - * ConfigCache manages PHP cache files. - * - * When debug is enabled, it knows when to flush the cache - * thanks to an array of ResourceInterface instances. - * - * @author Fabien Potencier <fabien@symfony.com> - */ -class ConfigCache -{ - private $debug; - private $file; - - /** - * Constructor. - * - * @param string $file The absolute cache path - * @param bool $debug Whether debugging is enabled or not - */ - public function __construct($file, $debug) - { - $this->file = $file; - $this->debug = (bool) $debug; - } - - /** - * Gets the cache file path. - * - * @return string The cache file path - */ - public function __toString() - { - return $this->file; - } - - /** - * Checks if the cache is still fresh. - * - * This method always returns true when debug is off and the - * cache file exists. - * - * @return bool true if the cache is fresh, false otherwise - */ - public function isFresh() - { - if (!is_file($this->file)) { - return false; - } - - if (!$this->debug) { - return true; - } - - $metadata = $this->getMetaFile(); - if (!is_file($metadata)) { - return false; - } - - $time = filemtime($this->file); - $meta = unserialize(file_get_contents($metadata)); - foreach ($meta as $resource) { - if (!$resource->isFresh($time)) { - return false; - } - } - - return true; - } - - /** - * Writes cache. - * - * @param string $content The content to write in the cache - * @param ResourceInterface[] $metadata An array of ResourceInterface instances - * - * @throws \RuntimeException When cache file can't be written - */ - public function write($content, array $metadata = null) - { - $mode = 0666; - $umask = umask(); - $filesystem = new Filesystem(); - $filesystem->dumpFile($this->file, $content, null); - try { - $filesystem->chmod($this->file, $mode, $umask); - } catch (IOException $e) { - // discard chmod failure (some filesystem may not support it) - } - - if (null !== $metadata && true === $this->debug) { - $filesystem->dumpFile($this->getMetaFile(), serialize($metadata), null); - try { - $filesystem->chmod($this->getMetaFile(), $mode, $umask); - } catch (IOException $e) { - // discard chmod failure (some filesystem may not support it) - } - } - } - - /** - * Gets the meta file path. - * - * @return string The meta file path - */ - private function getMetaFile() - { - return $this->file.'.meta'; - } -} diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/README.md b/civicrm/vendor/symfony/config/Symfony/Component/Config/README.md deleted file mode 100644 index 690d7d74f986e03f6d33d637f8040d2c600d2fce..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/README.md +++ /dev/null @@ -1,17 +0,0 @@ -Config Component -================ - -Config provides the infrastructure for loading configurations from different -data sources and optionally monitoring these data sources for changes. There -are additional tools for validating, normalizing and handling of defaults that -can optionally be used to convert from different formats to arrays. - -Resources ---------- - -You can run the unit tests with the following command: - - $ cd path/to/Symfony/Component/Config/ - $ composer install - $ phpunit - diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/Util/XmlUtils.php b/civicrm/vendor/symfony/config/Util/XmlUtils.php similarity index 88% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/Util/XmlUtils.php rename to civicrm/vendor/symfony/config/Util/XmlUtils.php index d8d4eaa3b17a1b2255bfc4b5a8f4c1110910dfae..5ecbd2efdc262099c0c6075ffe8f720602cd3a24 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/Util/XmlUtils.php +++ b/civicrm/vendor/symfony/config/Util/XmlUtils.php @@ -37,9 +37,14 @@ class XmlUtils * @return \DOMDocument * * @throws \InvalidArgumentException When loading of XML file returns error + * @throws \RuntimeException When DOM extension is missing */ public static function loadFile($file, $schemaOrCallable = null) { + if (!\extension_loaded('dom')) { + throw new \RuntimeException('Extension DOM is required.'); + } + $content = @file_get_contents($file); if ('' === trim($content)) { throw new \InvalidArgumentException(sprintf('File %s does not contain valid XML, it is empty.', $file)); @@ -51,7 +56,7 @@ class XmlUtils $dom = new \DOMDocument(); $dom->validateOnParse = true; - if (!$dom->loadXML($content, LIBXML_NONET | (defined('LIBXML_COMPACT') ? LIBXML_COMPACT : 0))) { + if (!$dom->loadXML($content, LIBXML_NONET | (\defined('LIBXML_COMPACT') ? LIBXML_COMPACT : 0))) { libxml_disable_entity_loader($disableEntities); throw new \InvalidArgumentException(implode("\n", static::getXmlErrors($internalErrors))); @@ -63,7 +68,7 @@ class XmlUtils libxml_disable_entity_loader($disableEntities); foreach ($dom->childNodes as $child) { - if ($child->nodeType === XML_DOCUMENT_TYPE_NODE) { + if (XML_DOCUMENT_TYPE_NODE === $child->nodeType) { throw new \InvalidArgumentException('Document types are not allowed.'); } } @@ -73,13 +78,13 @@ class XmlUtils libxml_clear_errors(); $e = null; - if (is_callable($schemaOrCallable)) { + if (\is_callable($schemaOrCallable)) { try { - $valid = call_user_func($schemaOrCallable, $dom, $internalErrors); + $valid = \call_user_func($schemaOrCallable, $dom, $internalErrors); } catch (\Exception $e) { $valid = false; } - } elseif (!is_array($schemaOrCallable) && is_file((string) $schemaOrCallable)) { + } elseif (!\is_array($schemaOrCallable) && is_file((string) $schemaOrCallable)) { $schemaSource = file_get_contents((string) $schemaOrCallable); $valid = @$dom->schemaValidateSource($schemaSource); } else { @@ -104,7 +109,7 @@ class XmlUtils } /** - * Converts a \DomElement object to a PHP array. + * Converts a \DOMElement object to a PHP array. * * The following rules applies during the conversion: * @@ -118,18 +123,18 @@ class XmlUtils * * * The nested-tags are converted to keys (<foo><foo>bar</foo></foo>) * - * @param \DomElement $element A \DomElement instance + * @param \DOMElement $element A \DOMElement instance * @param bool $checkPrefix Check prefix in an element or an attribute name * * @return array A PHP array */ - public static function convertDomElementToArray(\DomElement $element, $checkPrefix = true) + public static function convertDomElementToArray(\DOMElement $element, $checkPrefix = true) { $prefix = (string) $element->prefix; $empty = true; $config = array(); foreach ($element->attributes as $name => $node) { - if ($checkPrefix && !in_array((string) $node->prefix, array('', $prefix), true)) { + if ($checkPrefix && !\in_array((string) $node->prefix, array('', $prefix), true)) { continue; } $config[$name] = static::phpize($node->value); @@ -150,7 +155,7 @@ class XmlUtils $key = $node->localName; if (isset($config[$key])) { - if (!is_array($config[$key]) || !is_int(key($config[$key]))) { + if (!\is_array($config[$key]) || !\is_int(key($config[$key]))) { $config[$key] = array($config[$key]); } $config[$key][] = $value; @@ -164,7 +169,7 @@ class XmlUtils if (false !== $nodeValue) { $value = static::phpize($nodeValue); - if (count($config)) { + if (\count($config)) { $config['value'] = $value; } else { $config = $value; diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/composer.json b/civicrm/vendor/symfony/config/composer.json similarity index 60% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/composer.json rename to civicrm/vendor/symfony/config/composer.json index 9a4a11b94032f6459aa4bb054cf00ef104eead5b..ee1322ccdba1644cb090484d9590df7d337a0be8 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/composer.json +++ b/civicrm/vendor/symfony/config/composer.json @@ -16,20 +16,26 @@ } ], "require": { - "php": ">=5.3.3", - "symfony/filesystem": "~2.3" + "php": ">=5.3.9", + "symfony/filesystem": "~2.3|~3.0.0", + "symfony/polyfill-ctype": "~1.8" }, "require-dev": { - "symfony/phpunit-bridge": "~2.7" + "symfony/yaml": "~2.7|~3.0.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" }, "autoload": { - "psr-0": { "Symfony\\Component\\Config\\": "" } + "psr-4": { "Symfony\\Component\\Config\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, - "target-dir": "Symfony/Component/Config", "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } } } diff --git a/civicrm/vendor/symfony/config/Symfony/Component/Config/phpunit.xml.dist b/civicrm/vendor/symfony/config/phpunit.xml.dist similarity index 93% rename from civicrm/vendor/symfony/config/Symfony/Component/Config/phpunit.xml.dist rename to civicrm/vendor/symfony/config/phpunit.xml.dist index 2156534e9ce527466e888c1e5ae706214621ad80..36ef339fd78e422a39dacfcb2a6b8b6219577686 100644 --- a/civicrm/vendor/symfony/config/Symfony/Component/Config/phpunit.xml.dist +++ b/civicrm/vendor/symfony/config/phpunit.xml.dist @@ -5,10 +5,13 @@ backupGlobals="false" colors="true" bootstrap="vendor/autoload.php" + failOnRisky="true" + failOnWarning="true" > <php> <ini name="error_reporting" value="-1" /> </php> + <testsuites> <testsuite name="Symfony Config Component Test Suite"> <directory>./Tests/</directory> diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Alias.php b/civicrm/vendor/symfony/dependency-injection/Alias.php similarity index 90% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Alias.php rename to civicrm/vendor/symfony/dependency-injection/Alias.php index 025a2d635e2625d7ae6b141c02f748dbf271a91b..eaf7f00ccd446d4ec4cf5f5979a1b224f9a72d9b 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Alias.php +++ b/civicrm/vendor/symfony/dependency-injection/Alias.php @@ -11,21 +11,14 @@ namespace Symfony\Component\DependencyInjection; -/** - * @api - */ class Alias { private $id; private $public; /** - * Constructor. - * * @param string $id Alias identifier * @param bool $public If this alias is public - * - * @api */ public function __construct($id, $public = true) { @@ -37,8 +30,6 @@ class Alias * Checks if this DI Alias should be public or not. * * @return bool - * - * @api */ public function isPublic() { @@ -49,8 +40,6 @@ class Alias * Sets if this Alias is public. * * @param bool $boolean If this Alias should be public - * - * @api */ public function setPublic($boolean) { @@ -61,8 +50,6 @@ class Alias * Returns the Id of this alias. * * @return string The alias id - * - * @api */ public function __toString() { diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/CHANGELOG.md b/civicrm/vendor/symfony/dependency-injection/CHANGELOG.md similarity index 64% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/CHANGELOG.md rename to civicrm/vendor/symfony/dependency-injection/CHANGELOG.md index b78e440974b2cf0dbaf42d6a5ace1b16674f33f5..27cb2d58a4af1e3b84e0b442afb6255cecfb7aa8 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/CHANGELOG.md +++ b/civicrm/vendor/symfony/dependency-injection/CHANGELOG.md @@ -1,6 +1,23 @@ CHANGELOG ========= +2.8.0 +----- + + * deprecated the abstract ContainerAware class in favor of ContainerAwareTrait + * deprecated IntrospectableContainerInterface, to be merged with ContainerInterface in 3.0 + * allowed specifying a directory to recursively load all configuration files it contains + * deprecated the concept of scopes + * added `Definition::setShared()` and `Definition::isShared()` + * added ResettableContainerInterface to be able to reset the container to release memory on shutdown + * added a way to define the priority of service decoration + * added support for service autowiring + +2.7.0 +----- + + * deprecated synchronized services + 2.6.0 ----- diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/AnalyzeServiceReferencesPass.php similarity index 90% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/AnalyzeServiceReferencesPass.php index c5ecb2d5040b5cedf08c922580696fc2ec4e6e46..ce9d556eaf8e603d9695bd8ee8ab7f019117032f 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/AnalyzeServiceReferencesPass.php @@ -11,9 +11,9 @@ namespace Symfony\Component\DependencyInjection\Compiler; +use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Reference; -use Symfony\Component\DependencyInjection\ContainerBuilder; /** * Run this pass before passes that need to know more about the relation of @@ -30,12 +30,9 @@ class AnalyzeServiceReferencesPass implements RepeatablePassInterface private $container; private $currentId; private $currentDefinition; - private $repeatedPass; private $onlyConstructorArguments; /** - * Constructor. - * * @param bool $onlyConstructorArguments Sets this Service Reference pass to ignore method calls */ public function __construct($onlyConstructorArguments = false) @@ -48,13 +45,11 @@ class AnalyzeServiceReferencesPass implements RepeatablePassInterface */ public function setRepeatedPass(RepeatedPass $repeatedPass) { - $this->repeatedPass = $repeatedPass; + // no-op for BC } /** * Processes a ContainerBuilder object to populate the service reference graph. - * - * @param ContainerBuilder $container */ public function process(ContainerBuilder $container) { @@ -71,10 +66,10 @@ class AnalyzeServiceReferencesPass implements RepeatablePassInterface $this->currentDefinition = $definition; $this->processArguments($definition->getArguments()); - if ($definition->getFactoryService()) { - $this->processArguments(array(new Reference($definition->getFactoryService()))); + if ($definition->getFactoryService(false)) { + $this->processArguments(array(new Reference($definition->getFactoryService(false)))); } - if (is_array($definition->getFactory())) { + if (\is_array($definition->getFactory())) { $this->processArguments($definition->getFactory()); } @@ -100,7 +95,7 @@ class AnalyzeServiceReferencesPass implements RepeatablePassInterface private function processArguments(array $arguments) { foreach ($arguments as $argument) { - if (is_array($argument)) { + if (\is_array($argument)) { $this->processArguments($argument); } elseif ($argument instanceof Reference) { $this->graph->connect( @@ -115,11 +110,11 @@ class AnalyzeServiceReferencesPass implements RepeatablePassInterface $this->processArguments($argument->getMethodCalls()); $this->processArguments($argument->getProperties()); - if (is_array($argument->getFactory())) { + if (\is_array($argument->getFactory())) { $this->processArguments($argument->getFactory()); } - if ($argument->getFactoryService()) { - $this->processArguments(array(new Reference($argument->getFactoryService()))); + if ($argument->getFactoryService(false)) { + $this->processArguments(array(new Reference($argument->getFactoryService(false)))); } } } @@ -128,7 +123,7 @@ class AnalyzeServiceReferencesPass implements RepeatablePassInterface /** * Returns a service definition given the full name or an alias. * - * @param string $id A full id or alias for a service definition. + * @param string $id A full id or alias for a service definition * * @return Definition|null The definition related to the supplied id */ diff --git a/civicrm/vendor/symfony/dependency-injection/Compiler/AutoAliasServicePass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/AutoAliasServicePass.php new file mode 100644 index 0000000000000000000000000000000000000000..c1f05e03ec02c9dd602a89c22b4d7157d2973843 --- /dev/null +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/AutoAliasServicePass.php @@ -0,0 +1,41 @@ +<?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\Component\DependencyInjection\Compiler; + +use Symfony\Component\DependencyInjection\Alias; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; + +/** + * Sets a service to be an alias of another one, given a format pattern. + */ +class AutoAliasServicePass implements CompilerPassInterface +{ + /** + * {@inheritdoc} + */ + public function process(ContainerBuilder $container) + { + foreach ($container->findTaggedServiceIds('auto_alias') as $serviceId => $tags) { + foreach ($tags as $tag) { + if (!isset($tag['format'])) { + throw new InvalidArgumentException(sprintf('Missing tag information "format" on auto_alias service "%s".', $serviceId)); + } + + $aliasId = $container->getParameterBag()->resolveValue($tag['format']); + if ($container->hasDefinition($aliasId) || $container->hasAlias($aliasId)) { + $container->setAlias($serviceId, new Alias($aliasId)); + } + } + } + } +} diff --git a/civicrm/vendor/symfony/dependency-injection/Compiler/AutowirePass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/AutowirePass.php new file mode 100644 index 0000000000000000000000000000000000000000..b2795485531615ff281e0fa7479a4bb5a86e7360 --- /dev/null +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/AutowirePass.php @@ -0,0 +1,334 @@ +<?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\Component\DependencyInjection\Compiler; + +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Definition; +use Symfony\Component\DependencyInjection\Exception\RuntimeException; +use Symfony\Component\DependencyInjection\Reference; + +/** + * Guesses constructor arguments of services definitions and try to instantiate services if necessary. + * + * @author Kévin Dunglas <dunglas@gmail.com> + */ +class AutowirePass implements CompilerPassInterface +{ + private $container; + private $reflectionClasses = array(); + private $definedTypes = array(); + private $types; + private $notGuessableTypes = array(); + private $autowired = array(); + + /** + * {@inheritdoc} + */ + public function process(ContainerBuilder $container) + { + $throwingAutoloader = function ($class) { throw new \ReflectionException(sprintf('Class %s does not exist', $class)); }; + spl_autoload_register($throwingAutoloader); + + try { + $this->container = $container; + foreach ($container->getDefinitions() as $id => $definition) { + if ($definition->isAutowired()) { + $this->completeDefinition($id, $definition); + } + } + } catch (\Exception $e) { + } catch (\Throwable $e) { + } + + spl_autoload_unregister($throwingAutoloader); + + // Free memory and remove circular reference to container + $this->container = null; + $this->reflectionClasses = array(); + $this->definedTypes = array(); + $this->types = null; + $this->notGuessableTypes = array(); + $this->autowired = array(); + + if (isset($e)) { + throw $e; + } + } + + /** + * Wires the given definition. + * + * @param string $id + * @param Definition $definition + * + * @throws RuntimeException + */ + private function completeDefinition($id, Definition $definition) + { + if ($definition->getFactory() || $definition->getFactoryClass(false) || $definition->getFactoryService(false)) { + throw new RuntimeException(sprintf('Service "%s" can use either autowiring or a factory, not both.', $id)); + } + + if (!$reflectionClass = $this->getReflectionClass($id, $definition)) { + return; + } + + $this->container->addClassResource($reflectionClass); + + if (!$constructor = $reflectionClass->getConstructor()) { + return; + } + $parameters = $constructor->getParameters(); + if (method_exists('ReflectionMethod', 'isVariadic') && $constructor->isVariadic()) { + array_pop($parameters); + } + + $arguments = $definition->getArguments(); + foreach ($parameters as $index => $parameter) { + if (array_key_exists($index, $arguments) && '' !== $arguments[$index]) { + continue; + } + + try { + if (!$typeHint = $parameter->getClass()) { + if (isset($arguments[$index])) { + continue; + } + + // no default value? Then fail + if (!$parameter->isOptional()) { + throw new RuntimeException(sprintf('Unable to autowire argument index %d ($%s) for the service "%s". If this is an object, give it a type-hint. Otherwise, specify this argument\'s value explicitly.', $index, $parameter->name, $id)); + } + + // specifically pass the default value + $arguments[$index] = $parameter->getDefaultValue(); + + continue; + } + + if (isset($this->autowired[$typeHint->name])) { + $arguments[$index] = $this->autowired[$typeHint->name] ? new Reference($this->autowired[$typeHint->name]) : null; + continue; + } + + if (null === $this->types) { + $this->populateAvailableTypes(); + } + + if (isset($this->types[$typeHint->name]) && !isset($this->notGuessableTypes[$typeHint->name])) { + $value = new Reference($this->types[$typeHint->name]); + } else { + try { + $value = $this->createAutowiredDefinition($typeHint, $id); + } catch (RuntimeException $e) { + if ($parameter->isDefaultValueAvailable()) { + $value = $parameter->getDefaultValue(); + } elseif ($parameter->allowsNull()) { + $value = null; + } else { + throw $e; + } + $this->autowired[$typeHint->name] = false; + } + } + } catch (\ReflectionException $e) { + // Typehint against a non-existing class + + if (!$parameter->isDefaultValueAvailable()) { + throw new RuntimeException(sprintf('Cannot autowire argument %s for %s because the type-hinted class does not exist (%s).', $index + 1, $definition->getClass(), $e->getMessage()), 0, $e); + } + + $value = $parameter->getDefaultValue(); + } + + $arguments[$index] = $value; + } + + if ($parameters && !isset($arguments[++$index])) { + while (0 <= --$index) { + $parameter = $parameters[$index]; + if (!$parameter->isDefaultValueAvailable() || $parameter->getDefaultValue() !== $arguments[$index]) { + break; + } + unset($arguments[$index]); + } + } + + // it's possible index 1 was set, then index 0, then 2, etc + // make sure that we re-order so they're injected as expected + ksort($arguments); + $definition->setArguments($arguments); + } + + /** + * Populates the list of available types. + */ + private function populateAvailableTypes() + { + $this->types = array(); + + foreach ($this->container->getDefinitions() as $id => $definition) { + $this->populateAvailableType($id, $definition); + } + } + + /** + * Populates the list of available types for a given definition. + * + * @param string $id + * @param Definition $definition + */ + private function populateAvailableType($id, Definition $definition) + { + // Never use abstract services + if ($definition->isAbstract()) { + return; + } + + foreach ($definition->getAutowiringTypes() as $type) { + $this->definedTypes[$type] = true; + $this->types[$type] = $id; + unset($this->notGuessableTypes[$type]); + } + + if (!$reflectionClass = $this->getReflectionClass($id, $definition)) { + return; + } + + foreach ($reflectionClass->getInterfaces() as $reflectionInterface) { + $this->set($reflectionInterface->name, $id); + } + + do { + $this->set($reflectionClass->name, $id); + } while ($reflectionClass = $reflectionClass->getParentClass()); + } + + /** + * Associates a type and a service id if applicable. + * + * @param string $type + * @param string $id + */ + private function set($type, $id) + { + if (isset($this->definedTypes[$type])) { + return; + } + + if (!isset($this->types[$type])) { + $this->types[$type] = $id; + + return; + } + + if ($this->types[$type] === $id) { + return; + } + + if (!isset($this->notGuessableTypes[$type])) { + $this->notGuessableTypes[$type] = true; + $this->types[$type] = (array) $this->types[$type]; + } + + $this->types[$type][] = $id; + } + + /** + * Registers a definition for the type if possible or throws an exception. + * + * @param \ReflectionClass $typeHint + * @param string $id + * + * @return Reference A reference to the registered definition + * + * @throws RuntimeException + */ + private function createAutowiredDefinition(\ReflectionClass $typeHint, $id) + { + if (isset($this->notGuessableTypes[$typeHint->name])) { + $classOrInterface = $typeHint->isInterface() ? 'interface' : 'class'; + $matchingServices = implode(', ', $this->types[$typeHint->name]); + + throw new RuntimeException(sprintf('Unable to autowire argument of type "%s" for the service "%s". Multiple services exist for this %s (%s).', $typeHint->name, $id, $classOrInterface, $matchingServices)); + } + + if (!$typeHint->isInstantiable()) { + $classOrInterface = $typeHint->isInterface() ? 'interface' : 'class'; + throw new RuntimeException(sprintf('Unable to autowire argument of type "%s" for the service "%s". No services were found matching this %s and it cannot be auto-registered.', $typeHint->name, $id, $classOrInterface)); + } + + $this->autowired[$typeHint->name] = $argumentId = sprintf('autowired.%s', $typeHint->name); + + $argumentDefinition = $this->container->register($argumentId, $typeHint->name); + $argumentDefinition->setPublic(false); + + try { + $this->completeDefinition($argumentId, $argumentDefinition); + } catch (RuntimeException $e) { + $classOrInterface = $typeHint->isInterface() ? 'interface' : 'class'; + $message = sprintf('Unable to autowire argument of type "%s" for the service "%s". No services were found matching this %s and it cannot be auto-registered.', $typeHint->name, $id, $classOrInterface); + throw new RuntimeException($message, 0, $e); + } + + return new Reference($argumentId); + } + + /** + * Retrieves the reflection class associated with the given service. + * + * @param string $id + * @param Definition $definition + * + * @return \ReflectionClass|false + */ + private function getReflectionClass($id, Definition $definition) + { + if (isset($this->reflectionClasses[$id])) { + return $this->reflectionClasses[$id]; + } + + // Cannot use reflection if the class isn't set + if (!$class = $definition->getClass()) { + return false; + } + + $class = $this->container->getParameterBag()->resolveValue($class); + + if ($deprecated = $definition->isDeprecated()) { + $prevErrorHandler = set_error_handler(function ($level, $message, $file, $line) use (&$prevErrorHandler) { + return (E_USER_DEPRECATED === $level || !$prevErrorHandler) ? false : $prevErrorHandler($level, $message, $file, $line); + }); + } + + $e = null; + + try { + $reflector = new \ReflectionClass($class); + } catch (\Exception $e) { + } catch (\Throwable $e) { + } + + if ($deprecated) { + restore_error_handler(); + } + + if (null !== $e) { + if (!$e instanceof \ReflectionException) { + throw $e; + } + $reflector = false; + } + + return $this->reflectionClasses[$id] = $reflector; + } +} diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/CheckCircularReferencesPass.php similarity index 75% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/CheckCircularReferencesPass.php index d7570ddc2c4d114071a9abde9d800ca7f26f6247..6bde1942bae12d935b6325c91e058e37bde55bd7 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/CheckCircularReferencesPass.php @@ -11,8 +11,8 @@ namespace Symfony\Component\DependencyInjection\Compiler; -use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException; use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException; /** * Checks your services for circular references. @@ -31,8 +31,6 @@ class CheckCircularReferencesPass implements CompilerPassInterface /** * Checks the ContainerBuilder object for circular references. - * - * @param ContainerBuilder $container The ContainerBuilder instances */ public function process(ContainerBuilder $container) { @@ -51,7 +49,7 @@ class CheckCircularReferencesPass implements CompilerPassInterface * * @param ServiceReferenceGraphEdge[] $edges An array of Edges * - * @throws ServiceCircularReferenceException When a circular reference is found. + * @throws ServiceCircularReferenceException when a circular reference is found */ private function checkOutEdges(array $edges) { @@ -60,14 +58,17 @@ class CheckCircularReferencesPass implements CompilerPassInterface $id = $node->getId(); if (empty($this->checkedNodes[$id])) { - $searchKey = array_search($id, $this->currentPath); - $this->currentPath[] = $id; + // don't check circular dependencies for lazy services + if (!$node->getValue() || !$node->getValue()->isLazy()) { + $searchKey = array_search($id, $this->currentPath); + $this->currentPath[] = $id; - if (false !== $searchKey) { - throw new ServiceCircularReferenceException($id, array_slice($this->currentPath, $searchKey)); - } + if (false !== $searchKey) { + throw new ServiceCircularReferenceException($id, \array_slice($this->currentPath, $searchKey)); + } - $this->checkOutEdges($node->getOutEdges()); + $this->checkOutEdges($node->getOutEdges()); + } $this->checkedNodes[$id] = true; array_pop($this->currentPath); diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CheckDefinitionValidityPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/CheckDefinitionValidityPass.php similarity index 86% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CheckDefinitionValidityPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/CheckDefinitionValidityPass.php index ce89f24e183e3b5d6fab47e8fdcb0f9e193619ba..f79a4b0f5b75fd2587524ee421a9427e44bcebe8 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CheckDefinitionValidityPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/CheckDefinitionValidityPass.php @@ -11,8 +11,8 @@ namespace Symfony\Component\DependencyInjection\Compiler; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Exception\RuntimeException; /** @@ -25,6 +25,7 @@ use Symfony\Component\DependencyInjection\Exception\RuntimeException; * - non synthetic, non abstract services always have a class set * - synthetic services are always public * - synthetic services are always of non-prototype scope + * - shared services are always of non-prototype scope * * @author Johannes M. Schmitt <schmittjoh@gmail.com> */ @@ -33,8 +34,6 @@ class CheckDefinitionValidityPass implements CompilerPassInterface /** * Processes the ContainerBuilder to validate the Definition. * - * @param ContainerBuilder $container - * * @throws RuntimeException When the Definition is invalid */ public function process(ContainerBuilder $container) @@ -46,17 +45,22 @@ class CheckDefinitionValidityPass implements CompilerPassInterface } // synthetic service has non-prototype scope - if ($definition->isSynthetic() && ContainerInterface::SCOPE_PROTOTYPE === $definition->getScope()) { + if ($definition->isSynthetic() && ContainerInterface::SCOPE_PROTOTYPE === $definition->getScope(false)) { throw new RuntimeException(sprintf('A synthetic service ("%s") cannot be of scope "prototype".', $id)); } - if ($definition->getFactory() && ($definition->getFactoryClass() || $definition->getFactoryService() || $definition->getFactoryMethod())) { + // shared service has non-prototype scope + if ($definition->isShared() && ContainerInterface::SCOPE_PROTOTYPE === $definition->getScope(false)) { + throw new RuntimeException(sprintf('A shared service ("%s") cannot be of scope "prototype".', $id)); + } + + if ($definition->getFactory() && ($definition->getFactoryClass(false) || $definition->getFactoryService(false) || $definition->getFactoryMethod(false))) { throw new RuntimeException(sprintf('A service ("%s") can use either the old or the new factory syntax, not both.', $id)); } // non-synthetic, non-abstract service has class if (!$definition->isAbstract() && !$definition->isSynthetic() && !$definition->getClass()) { - if ($definition->getFactory() || $definition->getFactoryClass() || $definition->getFactoryService()) { + if ($definition->getFactory() || $definition->getFactoryClass(false) || $definition->getFactoryService(false)) { throw new RuntimeException(sprintf('Please add the class to service "%s" even if it is constructed by a factory since we might need to add method calls based on compile-time checks.', $id)); } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php similarity index 98% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php index 304f7849516c88d845488cc807b6cd5b8d2833df..f17096f8f3598afe6d8aec109446fcd935c84e5d 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php @@ -11,11 +11,11 @@ namespace Symfony\Component\DependencyInjection\Compiler; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Reference; -use Symfony\Component\DependencyInjection\ContainerBuilder; /** * Checks that all references are pointing to a valid service. @@ -47,7 +47,7 @@ class CheckExceptionOnInvalidReferenceBehaviorPass implements CompilerPassInterf private function processReferences(array $arguments) { foreach ($arguments as $argument) { - if (is_array($argument)) { + if (\is_array($argument)) { $this->processReferences($argument); } elseif ($argument instanceof Definition) { $this->processDefinition($argument); diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CheckReferenceValidityPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/CheckReferenceValidityPass.php similarity index 90% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CheckReferenceValidityPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/CheckReferenceValidityPass.php index 3d4988d2e6653046965990120a87da6c5cf22e62..416103ec0e69dc5fe20a0476f2a8bf5965767c1a 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CheckReferenceValidityPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/CheckReferenceValidityPass.php @@ -11,13 +11,13 @@ namespace Symfony\Component\DependencyInjection\Compiler; -use Symfony\Component\DependencyInjection\Definition; -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\ContainerInterface; +use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Exception\RuntimeException; use Symfony\Component\DependencyInjection\Exception\ScopeCrossingInjectionException; use Symfony\Component\DependencyInjection\Exception\ScopeWideningInjectionException; +use Symfony\Component\DependencyInjection\Reference; /** * Checks the validity of references. @@ -39,17 +39,15 @@ class CheckReferenceValidityPass implements CompilerPassInterface /** * Processes the ContainerBuilder to validate References. - * - * @param ContainerBuilder $container */ public function process(ContainerBuilder $container) { $this->container = $container; - $children = $this->container->getScopeChildren(); + $children = $this->container->getScopeChildren(false); $ancestors = array(); - $scopes = $this->container->getScopes(); + $scopes = $this->container->getScopes(false); foreach ($scopes as $name => $parent) { $ancestors[$name] = array($parent); @@ -64,8 +62,7 @@ class CheckReferenceValidityPass implements CompilerPassInterface } $this->currentId = $id; - $this->currentDefinition = $definition; - $this->currentScope = $scope = $definition->getScope(); + $this->currentScope = $scope = $definition->getScope(false); if (ContainerInterface::SCOPE_CONTAINER === $scope) { $this->currentScopeChildren = array_keys($scopes); @@ -86,12 +83,12 @@ class CheckReferenceValidityPass implements CompilerPassInterface * * @param array $arguments An array of Reference objects * - * @throws RuntimeException when there is a reference to an abstract definition. + * @throws RuntimeException when there is a reference to an abstract definition */ private function validateReferences(array $arguments) { foreach ($arguments as $argument) { - if (is_array($argument)) { + if (\is_array($argument)) { $this->validateReferences($argument); } elseif ($argument instanceof Reference) { $targetDefinition = $this->getDefinition((string) $argument); @@ -113,9 +110,6 @@ class CheckReferenceValidityPass implements CompilerPassInterface /** * Validates the scope of a single Reference. * - * @param Reference $reference - * @param Definition $definition - * * @throws ScopeWideningInjectionException when the definition references a service of a narrower scope * @throws ScopeCrossingInjectionException when the definition references a service of another scope hierarchy */ @@ -125,7 +119,7 @@ class CheckReferenceValidityPass implements CompilerPassInterface return; } - if (!$reference->isStrict()) { + if (!$reference->isStrict(false)) { return; } @@ -133,17 +127,17 @@ class CheckReferenceValidityPass implements CompilerPassInterface return; } - if ($this->currentScope === $scope = $definition->getScope()) { + if ($this->currentScope === $scope = $definition->getScope(false)) { return; } $id = (string) $reference; - if (in_array($scope, $this->currentScopeChildren, true)) { + if (\in_array($scope, $this->currentScopeChildren, true)) { throw new ScopeWideningInjectionException($this->currentId, $this->currentScope, $id, $scope); } - if (!in_array($scope, $this->currentScopeAncestors, true)) { + if (!\in_array($scope, $this->currentScopeAncestors, true)) { throw new ScopeCrossingInjectionException($this->currentId, $this->currentScope, $id, $scope); } } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/Compiler.php b/civicrm/vendor/symfony/dependency-injection/Compiler/Compiler.php similarity index 93% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/Compiler.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/Compiler.php index 4dfa9cf31cb38763b2e0e7cde2700470cf02fd58..dd9539eeb7ceaa7c2a1da208caf9870a7c7a5cd4 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/Compiler.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/Compiler.php @@ -17,8 +17,6 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; * This class is used to remove circular dependencies between individual passes. * * @author Johannes M. Schmitt <schmittjoh@gmail.com> - * - * @api */ class Compiler { @@ -27,9 +25,6 @@ class Compiler private $loggingFormatter; private $serviceReferenceGraph; - /** - * Constructor. - */ public function __construct() { $this->passConfig = new PassConfig(); @@ -41,8 +36,6 @@ class Compiler * Returns the PassConfig. * * @return PassConfig The PassConfig instance - * - * @api */ public function getPassConfig() { @@ -53,8 +46,6 @@ class Compiler * Returns the ServiceReferenceGraph. * * @return ServiceReferenceGraph The ServiceReferenceGraph instance - * - * @api */ public function getServiceReferenceGraph() { @@ -76,8 +67,6 @@ class Compiler * * @param CompilerPassInterface $pass A compiler pass * @param string $type The type of the pass - * - * @api */ public function addPass(CompilerPassInterface $pass, $type = PassConfig::TYPE_BEFORE_OPTIMIZATION) { @@ -106,10 +95,6 @@ class Compiler /** * Run the Compiler and process all Passes. - * - * @param ContainerBuilder $container - * - * @api */ public function compile(ContainerBuilder $container) { diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CompilerPassInterface.php b/civicrm/vendor/symfony/dependency-injection/Compiler/CompilerPassInterface.php similarity index 89% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CompilerPassInterface.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/CompilerPassInterface.php index 7648605451e01f7764845f09226a7f99a2a99ff7..308500605893ddfb3340f8eab396ece84d162764 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/CompilerPassInterface.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/CompilerPassInterface.php @@ -17,17 +17,11 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; * Interface that must be implemented by compilation passes. * * @author Johannes M. Schmitt <schmittjoh@gmail.com> - * - * @api */ interface CompilerPassInterface { /** * You can modify the container here before it is dumped to PHP code. - * - * @param ContainerBuilder $container - * - * @api */ public function process(ContainerBuilder $container); } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/DecoratorServicePass.php similarity index 59% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/DecoratorServicePass.php index ef0a19c6a725c2f64d85449891e8709dec682f55..80eb67a6323473b3184a49f47fa5d919e48c8bfc 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/DecoratorServicePass.php @@ -11,26 +11,36 @@ namespace Symfony\Component\DependencyInjection\Compiler; -use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Alias; +use Symfony\Component\DependencyInjection\ContainerBuilder; /** * Overwrites a service but keeps the overridden one. * * @author Christophe Coevoet <stof@notk.org> * @author Fabien Potencier <fabien@symfony.com> + * @author Diego Saint Esteben <diego@saintesteben.me> */ class DecoratorServicePass implements CompilerPassInterface { public function process(ContainerBuilder $container) { + $definitions = new \SplPriorityQueue(); + $order = PHP_INT_MAX; + foreach ($container->getDefinitions() as $id => $definition) { if (!$decorated = $definition->getDecoratedService()) { continue; } + $definitions->insert(array($id, $definition), array($decorated[2], --$order)); + } + + foreach ($definitions as $arr) { + list($id, $definition) = $arr; + list($inner, $renamedId) = $definition->getDecoratedService(); + $definition->setDecoratedService(null); - list($inner, $renamedId) = $decorated; if (!$renamedId) { $renamedId = $id.'.inner'; } @@ -42,10 +52,14 @@ class DecoratorServicePass implements CompilerPassInterface $public = $alias->isPublic(); $container->setAlias($renamedId, new Alias((string) $alias, false)); } else { - $definition = $container->getDefinition($inner); - $public = $definition->isPublic(); - $definition->setPublic(false); - $container->setDefinition($renamedId, $definition); + $decoratedDefinition = $container->getDefinition($inner); + $definition->setTags(array_merge($decoratedDefinition->getTags(), $definition->getTags())); + $definition->setAutowiringTypes(array_merge($decoratedDefinition->getAutowiringTypes(), $definition->getAutowiringTypes())); + $public = $decoratedDefinition->isPublic(); + $decoratedDefinition->setPublic(false); + $decoratedDefinition->setTags(array()); + $decoratedDefinition->setAutowiringTypes(array()); + $container->setDefinition($renamedId, $decoratedDefinition); } $container->setAlias($inner, new Alias($id, $public)); diff --git a/civicrm/vendor/symfony/dependency-injection/Compiler/ExtensionCompilerPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/ExtensionCompilerPass.php new file mode 100644 index 0000000000000000000000000000000000000000..27e5048245914e8f29f509f1629526231a91e77b --- /dev/null +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/ExtensionCompilerPass.php @@ -0,0 +1,37 @@ +<?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\Component\DependencyInjection\Compiler; + +use Symfony\Component\DependencyInjection\ContainerBuilder; + +/** + * A pass to automatically process extensions if they implement + * CompilerPassInterface. + * + * @author Wouter J <wouter@wouterj.nl> + */ +class ExtensionCompilerPass implements CompilerPassInterface +{ + /** + * {@inheritdoc} + */ + public function process(ContainerBuilder $container) + { + foreach ($container->getExtensions() as $extension) { + if (!$extension instanceof CompilerPassInterface) { + continue; + } + + $extension->process($container); + } + } +} diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/InlineServiceDefinitionsPass.php similarity index 72% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/InlineServiceDefinitionsPass.php index d9a656f78777a657f80cddeaf811fd16abdedf94..b57f48840e7895e9cd7ad75b92cda5199d666644 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/InlineServiceDefinitionsPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/InlineServiceDefinitionsPass.php @@ -11,10 +11,10 @@ namespace Symfony\Component\DependencyInjection\Compiler; +use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Reference; -use Symfony\Component\DependencyInjection\ContainerBuilder; /** * Inline service definitions where this is possible. @@ -23,7 +23,6 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; */ class InlineServiceDefinitionsPass implements RepeatablePassInterface { - private $repeatedPass; private $graph; private $compiler; private $formatter; @@ -34,13 +33,11 @@ class InlineServiceDefinitionsPass implements RepeatablePassInterface */ public function setRepeatedPass(RepeatedPass $repeatedPass) { - $this->repeatedPass = $repeatedPass; + // no-op for BC } /** * Processes the ContainerBuilder for inline service definitions. - * - * @param ContainerBuilder $container */ public function process(ContainerBuilder $container) { @@ -48,21 +45,7 @@ class InlineServiceDefinitionsPass implements RepeatablePassInterface $this->formatter = $this->compiler->getLoggingFormatter(); $this->graph = $this->compiler->getServiceReferenceGraph(); - foreach ($container->getDefinitions() as $id => $definition) { - $this->currentId = $id; - - $definition->setArguments( - $this->inlineArguments($container, $definition->getArguments()) - ); - - $definition->setMethodCalls( - $this->inlineArguments($container, $definition->getMethodCalls()) - ); - - $definition->setProperties( - $this->inlineArguments($container, $definition->getProperties()) - ); - } + $container->setDefinitions($this->inlineArguments($container, $container->getDefinitions(), true)); } /** @@ -70,13 +53,17 @@ class InlineServiceDefinitionsPass implements RepeatablePassInterface * * @param ContainerBuilder $container The ContainerBuilder * @param array $arguments An array of arguments + * @param bool $isRoot If we are processing the root definitions or not * * @return array */ - private function inlineArguments(ContainerBuilder $container, array $arguments) + private function inlineArguments(ContainerBuilder $container, array $arguments, $isRoot = false) { foreach ($arguments as $k => $argument) { - if (is_array($argument)) { + if ($isRoot) { + $this->currentId = $k; + } + if (\is_array($argument)) { $arguments[$k] = $this->inlineArguments($container, $argument); } elseif ($argument instanceof Reference) { if (!$container->hasDefinition($id = (string) $argument)) { @@ -86,7 +73,7 @@ class InlineServiceDefinitionsPass implements RepeatablePassInterface if ($this->isInlineableDefinition($container, $id, $definition = $container->getDefinition($id))) { $this->compiler->addLogMessage($this->formatter->formatInlineService($this, $id, $this->currentId)); - if (ContainerInterface::SCOPE_PROTOTYPE !== $definition->getScope()) { + if ($definition->isShared() && ContainerInterface::SCOPE_PROTOTYPE !== $definition->getScope(false)) { $arguments[$k] = $definition; } else { $arguments[$k] = clone $definition; @@ -96,6 +83,12 @@ class InlineServiceDefinitionsPass implements RepeatablePassInterface $argument->setArguments($this->inlineArguments($container, $argument->getArguments())); $argument->setMethodCalls($this->inlineArguments($container, $argument->getMethodCalls())); $argument->setProperties($this->inlineArguments($container, $argument->getProperties())); + + $configurator = $this->inlineArguments($container, array($argument->getConfigurator())); + $argument->setConfigurator($configurator[0]); + + $factory = $this->inlineArguments($container, array($argument->getFactory())); + $argument->setFactory($factory[0]); } } @@ -113,11 +106,15 @@ class InlineServiceDefinitionsPass implements RepeatablePassInterface */ private function isInlineableDefinition(ContainerBuilder $container, $id, Definition $definition) { - if (ContainerInterface::SCOPE_PROTOTYPE === $definition->getScope()) { + if ($definition->isDeprecated() || $definition->isLazy() || $definition->isSynthetic()) { + return false; + } + + if (!$definition->isShared() || ContainerInterface::SCOPE_PROTOTYPE === $definition->getScope(false)) { return true; } - if ($definition->isPublic() || $definition->isLazy()) { + if ($definition->isPublic()) { return false; } @@ -134,18 +131,18 @@ class InlineServiceDefinitionsPass implements RepeatablePassInterface $ids[] = $edge->getSourceNode()->getId(); } - if (count(array_unique($ids)) > 1) { + if (\count(array_unique($ids)) > 1) { return false; } - if (count($ids) > 1 && is_array($factory = $definition->getFactory()) && ($factory[0] instanceof Reference || $factory[0] instanceof Definition)) { + if (\count($ids) > 1 && \is_array($factory = $definition->getFactory()) && ($factory[0] instanceof Reference || $factory[0] instanceof Definition)) { return false; } - if (count($ids) > 1 && $definition->getFactoryService()) { + if (\count($ids) > 1 && $definition->getFactoryService(false)) { return false; } - return $container->getDefinition(reset($ids))->getScope() === $definition->getScope(); + return $container->getDefinition(reset($ids))->getScope(false) === $definition->getScope(false); } } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/LoggingFormatter.php b/civicrm/vendor/symfony/dependency-injection/Compiler/LoggingFormatter.php similarity index 93% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/LoggingFormatter.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/LoggingFormatter.php index 6bd6161ceb441a0d159db0f8125fa608509d0409..64ffc9e478337587d1afcf1fa2b738583a0059bb 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/LoggingFormatter.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/LoggingFormatter.php @@ -20,7 +20,7 @@ class LoggingFormatter { public function formatRemoveService(CompilerPassInterface $pass, $id, $reason) { - return $this->format($pass, sprintf('Removed service "%s"; reason: %s', $id, $reason)); + return $this->format($pass, sprintf('Removed service "%s"; reason: %s.', $id, $reason)); } public function formatInlineService(CompilerPassInterface $pass, $id, $target) @@ -40,6 +40,6 @@ class LoggingFormatter public function format(CompilerPassInterface $pass, $message) { - return sprintf('%s: %s', get_class($pass), $message); + return sprintf('%s: %s', \get_class($pass), $message); } } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/MergeExtensionConfigurationPass.php similarity index 86% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/MergeExtensionConfigurationPass.php index f9e6024164c153b5bcad44b31bab989a5eabacb5..9434ac70b543bef7b360ef8a71b610e8dd0338ac 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/MergeExtensionConfigurationPass.php @@ -12,6 +12,7 @@ namespace Symfony\Component\DependencyInjection\Compiler; use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Extension\ConfigurationExtensionInterface; use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface; /** @@ -47,6 +48,9 @@ class MergeExtensionConfigurationPass implements CompilerPassInterface $tmpContainer = new ContainerBuilder($container->getParameterBag()); $tmpContainer->setResourceTracking($container->isTrackingResources()); $tmpContainer->addObjectResource($extension); + if ($extension instanceof ConfigurationExtensionInterface && null !== $configuration = $extension->getConfiguration($config, $tmpContainer)) { + $tmpContainer->addObjectResource($configuration); + } foreach ($exprLangProviders as $provider) { $tmpContainer->addExpressionLanguageProvider($provider); diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/PassConfig.php b/civicrm/vendor/symfony/dependency-injection/Compiler/PassConfig.php similarity index 90% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/PassConfig.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/PassConfig.php index 044529eb6d7c0359713a3eb77a2a701a3d960612..8eabf3529df7ec6f7c820944d2af1ee7f257f5fb 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/PassConfig.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/PassConfig.php @@ -19,8 +19,6 @@ use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; * This class has a default configuration embedded. * * @author Johannes M. Schmitt <schmittjoh@gmail.com> - * - * @api */ class PassConfig { @@ -37,20 +35,19 @@ class PassConfig private $optimizationPasses; private $removingPasses; - /** - * Constructor. - */ public function __construct() { $this->mergePass = new MergeExtensionConfigurationPass(); $this->optimizationPasses = array( + new ExtensionCompilerPass(), new ResolveDefinitionTemplatesPass(), new DecoratorServicePass(), new ResolveParameterPlaceHoldersPass(), new CheckDefinitionValidityPass(), new ResolveReferencesToAliasesPass(), new ResolveInvalidReferencesPass(), + new AutowirePass(), new AnalyzeServiceReferencesPass(true), new CheckCircularReferencesPass(), new CheckReferenceValidityPass(), @@ -58,8 +55,8 @@ class PassConfig $this->removingPasses = array( new RemovePrivateAliasesPass(), - new RemoveAbstractDefinitionsPass(), new ReplaceAliasByActualDefinitionPass(), + new RemoveAbstractDefinitionsPass(), new RepeatedPass(array( new AnalyzeServiceReferencesPass(), new InlineServiceDefinitionsPass(), @@ -74,8 +71,6 @@ class PassConfig * Returns all passes in order to be processed. * * @return array An array of all passes to process - * - * @api */ public function getPasses() { @@ -96,8 +91,6 @@ class PassConfig * @param string $type The pass type * * @throws InvalidArgumentException when a pass type doesn't exist - * - * @api */ public function addPass(CompilerPassInterface $pass, $type = self::TYPE_BEFORE_OPTIMIZATION) { @@ -106,16 +99,13 @@ class PassConfig throw new InvalidArgumentException(sprintf('Invalid type "%s".', $type)); } - $passes = &$this->$property; - $passes[] = $pass; + $this->{$property}[] = $pass; } /** * Gets all passes for the AfterRemoving pass. * * @return array An array of passes - * - * @api */ public function getAfterRemovingPasses() { @@ -126,8 +116,6 @@ class PassConfig * Gets all passes for the BeforeOptimization pass. * * @return array An array of passes - * - * @api */ public function getBeforeOptimizationPasses() { @@ -138,8 +126,6 @@ class PassConfig * Gets all passes for the BeforeRemoving pass. * * @return array An array of passes - * - * @api */ public function getBeforeRemovingPasses() { @@ -150,8 +136,6 @@ class PassConfig * Gets all passes for the Optimization pass. * * @return array An array of passes - * - * @api */ public function getOptimizationPasses() { @@ -162,8 +146,6 @@ class PassConfig * Gets all passes for the Removing pass. * * @return array An array of passes - * - * @api */ public function getRemovingPasses() { @@ -171,24 +153,15 @@ class PassConfig } /** - * Gets all passes for the Merge pass. + * Gets the Merge pass. * - * @return array An array of passes - * - * @api + * @return CompilerPassInterface The merge pass */ public function getMergePass() { return $this->mergePass; } - /** - * Sets the Merge Pass. - * - * @param CompilerPassInterface $pass The merge pass - * - * @api - */ public function setMergePass(CompilerPassInterface $pass) { $this->mergePass = $pass; @@ -198,8 +171,6 @@ class PassConfig * Sets the AfterRemoving passes. * * @param array $passes An array of passes - * - * @api */ public function setAfterRemovingPasses(array $passes) { @@ -210,8 +181,6 @@ class PassConfig * Sets the BeforeOptimization passes. * * @param array $passes An array of passes - * - * @api */ public function setBeforeOptimizationPasses(array $passes) { @@ -222,8 +191,6 @@ class PassConfig * Sets the BeforeRemoving passes. * * @param array $passes An array of passes - * - * @api */ public function setBeforeRemovingPasses(array $passes) { @@ -234,8 +201,6 @@ class PassConfig * Sets the Optimization passes. * * @param array $passes An array of passes - * - * @api */ public function setOptimizationPasses(array $passes) { @@ -246,8 +211,6 @@ class PassConfig * Sets the Removing passes. * * @param array $passes An array of passes - * - * @api */ public function setRemovingPasses(array $passes) { diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RemoveAbstractDefinitionsPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/RemoveAbstractDefinitionsPass.php similarity index 95% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RemoveAbstractDefinitionsPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/RemoveAbstractDefinitionsPass.php index 0ef0af05b578b0eb846766e067126d54b82e7b9e..9999214c8b763b19319ae3d1405c008f988c83ed 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RemoveAbstractDefinitionsPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/RemoveAbstractDefinitionsPass.php @@ -20,8 +20,6 @@ class RemoveAbstractDefinitionsPass implements CompilerPassInterface { /** * Removes abstract definitions from the ContainerBuilder. - * - * @param ContainerBuilder $container */ public function process(ContainerBuilder $container) { diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RemovePrivateAliasesPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/RemovePrivateAliasesPass.php similarity index 96% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RemovePrivateAliasesPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/RemovePrivateAliasesPass.php index 5c53a33949a539e6f31a75c066cf91a974c7724b..36abc6159ee3cc0351fd4c36f736827ac3da51fe 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RemovePrivateAliasesPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/RemovePrivateAliasesPass.php @@ -24,8 +24,6 @@ class RemovePrivateAliasesPass implements CompilerPassInterface { /** * Removes private aliases from the ContainerBuilder. - * - * @param ContainerBuilder $container */ public function process(ContainerBuilder $container) { diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RemoveUnusedDefinitionsPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/RemoveUnusedDefinitionsPass.php similarity index 88% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RemoveUnusedDefinitionsPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/RemoveUnusedDefinitionsPass.php index 9e18a9ebde062f54c303be7ed31ab2a5a5385a5b..911875cf51d59e319f743d11d9eaf30ac472bfb0 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RemoveUnusedDefinitionsPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/RemoveUnusedDefinitionsPass.php @@ -32,8 +32,6 @@ class RemoveUnusedDefinitionsPass implements RepeatablePassInterface /** * Processes the ContainerBuilder to remove unused definitions. - * - * @param ContainerBuilder $container */ public function process(ContainerBuilder $container) { @@ -59,18 +57,18 @@ class RemoveUnusedDefinitionsPass implements RepeatablePassInterface $referencingAliases[] = $node->getValue(); } } - $isReferenced = (count(array_unique($sourceIds)) - count($referencingAliases)) > 0; + $isReferenced = (\count(array_unique($sourceIds)) - \count($referencingAliases)) > 0; } else { $referencingAliases = array(); $isReferenced = false; } - if (1 === count($referencingAliases) && false === $isReferenced) { + if (1 === \count($referencingAliases) && false === $isReferenced) { $container->setDefinition((string) reset($referencingAliases), $definition); $definition->setPublic(true); $container->removeDefinition($id); $compiler->addLogMessage($formatter->formatRemoveService($this, $id, 'replaces alias '.reset($referencingAliases))); - } elseif (0 === count($referencingAliases) && false === $isReferenced) { + } elseif (0 === \count($referencingAliases) && false === $isReferenced) { $container->removeDefinition($id); $compiler->addLogMessage($formatter->formatRemoveService($this, $id, 'unused')); $hasChanged = true; diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RepeatablePassInterface.php b/civicrm/vendor/symfony/dependency-injection/Compiler/RepeatablePassInterface.php similarity index 84% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RepeatablePassInterface.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/RepeatablePassInterface.php index d60ae35bc8f0b2b69b95b96fa201678a95a2e9bb..2b88bfb917a0fe8128cbb2bde6edc9847f2ab144 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RepeatablePassInterface.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/RepeatablePassInterface.php @@ -19,10 +19,5 @@ namespace Symfony\Component\DependencyInjection\Compiler; */ interface RepeatablePassInterface extends CompilerPassInterface { - /** - * Sets the RepeatedPass interface. - * - * @param RepeatedPass $repeatedPass - */ public function setRepeatedPass(RepeatedPass $repeatedPass); } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RepeatedPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/RepeatedPass.php similarity index 83% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RepeatedPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/RepeatedPass.php index e34b0681e5389cd2df52e394d40b98956dba2d1d..3da1a0d5be8e3d18f3748d0cf9bf7a187e486169 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/RepeatedPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/RepeatedPass.php @@ -26,14 +26,9 @@ class RepeatedPass implements CompilerPassInterface */ private $repeat = false; - /** - * @var RepeatablePassInterface[] - */ private $passes; /** - * Constructor. - * * @param RepeatablePassInterface[] $passes An array of RepeatablePassInterface objects * * @throws InvalidArgumentException when the passes don't implement RepeatablePassInterface @@ -53,19 +48,15 @@ class RepeatedPass implements CompilerPassInterface /** * Process the repeatable passes that run more than once. - * - * @param ContainerBuilder $container */ public function process(ContainerBuilder $container) { - $this->repeat = false; - foreach ($this->passes as $pass) { - $pass->process($container); - } - - if ($this->repeat) { - $this->process($container); - } + do { + $this->repeat = false; + foreach ($this->passes as $pass) { + $pass->process($container); + } + } while ($this->repeat); } /** diff --git a/civicrm/vendor/symfony/dependency-injection/Compiler/ReplaceAliasByActualDefinitionPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/ReplaceAliasByActualDefinitionPass.php new file mode 100644 index 0000000000000000000000000000000000000000..cf48c53da8190816f8a1c1281c4f43e06a2ae466 --- /dev/null +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/ReplaceAliasByActualDefinitionPass.php @@ -0,0 +1,142 @@ +<?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\Component\DependencyInjection\Compiler; + +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; +use Symfony\Component\DependencyInjection\Reference; + +/** + * Replaces aliases with actual service definitions, effectively removing these + * aliases. + * + * @author Johannes M. Schmitt <schmittjoh@gmail.com> + */ +class ReplaceAliasByActualDefinitionPass implements CompilerPassInterface +{ + private $compiler; + private $formatter; + + /** + * Process the Container to replace aliases with service definitions. + * + * @throws InvalidArgumentException if the service definition does not exist + */ + public function process(ContainerBuilder $container) + { + // Setup + $this->compiler = $container->getCompiler(); + $this->formatter = $this->compiler->getLoggingFormatter(); + // First collect all alias targets that need to be replaced + $seenAliasTargets = array(); + $replacements = array(); + foreach ($container->getAliases() as $definitionId => $target) { + $targetId = (string) $target; + // Special case: leave this target alone + if ('service_container' === $targetId) { + continue; + } + // Check if target needs to be replaces + if (isset($replacements[$targetId])) { + $container->setAlias($definitionId, $replacements[$targetId]); + } + // No need to process the same target twice + if (isset($seenAliasTargets[$targetId])) { + continue; + } + // Process new target + $seenAliasTargets[$targetId] = true; + try { + $definition = $container->getDefinition($targetId); + } catch (InvalidArgumentException $e) { + throw new InvalidArgumentException(sprintf('Unable to replace alias "%s" with actual definition "%s".', $definitionId, $targetId), null, $e); + } + if ($definition->isPublic()) { + continue; + } + // Remove private definition and schedule for replacement + $definition->setPublic(true); + $container->setDefinition($definitionId, $definition); + $container->removeDefinition($targetId); + $replacements[$targetId] = $definitionId; + } + + // Now replace target instances in all definitions + foreach ($container->getDefinitions() as $definitionId => $definition) { + $definition->setArguments($this->updateArgumentReferences($replacements, $definitionId, $definition->getArguments())); + $definition->setMethodCalls($this->updateArgumentReferences($replacements, $definitionId, $definition->getMethodCalls())); + $definition->setProperties($this->updateArgumentReferences($replacements, $definitionId, $definition->getProperties())); + $definition->setFactoryService($this->updateFactoryReferenceId($replacements, $definition->getFactoryService(false)), false); + $definition->setFactory($this->updateFactoryReference($replacements, $definition->getFactory())); + } + } + + /** + * Recursively updates references in an array. + * + * @param array $replacements Table of aliases to replace + * @param string $definitionId Identifier of this definition + * @param array $arguments Where to replace the aliases + * + * @return array + */ + private function updateArgumentReferences(array $replacements, $definitionId, array $arguments) + { + foreach ($arguments as $k => $argument) { + // Handle recursion step + if (\is_array($argument)) { + $arguments[$k] = $this->updateArgumentReferences($replacements, $definitionId, $argument); + continue; + } + // Skip arguments that don't need replacement + if (!$argument instanceof Reference) { + continue; + } + $referenceId = (string) $argument; + if (!isset($replacements[$referenceId])) { + continue; + } + // Perform the replacement + $newId = $replacements[$referenceId]; + $arguments[$k] = new Reference($newId, $argument->getInvalidBehavior()); + $this->compiler->addLogMessage($this->formatter->formatUpdateReference($this, $definitionId, $referenceId, $newId)); + } + + return $arguments; + } + + /** + * Returns the updated reference for the factory service. + * + * @param array $replacements Table of aliases to replace + * @param string|null $referenceId Factory service reference identifier + * + * @return string|null + */ + private function updateFactoryReferenceId(array $replacements, $referenceId) + { + if (null === $referenceId) { + return; + } + + return isset($replacements[$referenceId]) ? $replacements[$referenceId] : $referenceId; + } + + private function updateFactoryReference(array $replacements, $factory) + { + if (\is_array($factory) && $factory[0] instanceof Reference && isset($replacements[$referenceId = (string) $factory[0]])) { + $factory[0] = new Reference($replacements[$referenceId], $factory[0]->getInvalidBehavior()); + } + + return $factory; + } +} diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/ResolveDefinitionTemplatesPass.php similarity index 51% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/ResolveDefinitionTemplatesPass.php index 4e806329261881b66c79bd3ae9ee885f34f96bbe..db1864ec01fbd22e018fb1fbc78974a56bd3684a 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/ResolveDefinitionTemplatesPass.php @@ -11,9 +11,9 @@ namespace Symfony\Component\DependencyInjection\Compiler; +use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\DefinitionDecorator; -use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Exception\RuntimeException; /** @@ -21,58 +21,93 @@ use Symfony\Component\DependencyInjection\Exception\RuntimeException; * merged Definition instance. * * @author Johannes M. Schmitt <schmittjoh@gmail.com> + * @author Nicolas Grekas <p@tchwork.com> */ class ResolveDefinitionTemplatesPass implements CompilerPassInterface { - private $container; private $compiler; private $formatter; + private $currentId; /** * Process the ContainerBuilder to replace DefinitionDecorator instances with their real Definition instances. - * - * @param ContainerBuilder $container */ public function process(ContainerBuilder $container) { - $this->container = $container; $this->compiler = $container->getCompiler(); $this->formatter = $this->compiler->getLoggingFormatter(); - foreach ($container->getDefinitions() as $id => $definition) { - // yes, we are specifically fetching the definition from the - // container to ensure we are not operating on stale data - $definition = $container->getDefinition($id); - if (!$definition instanceof DefinitionDecorator || $definition->isAbstract()) { - continue; - } + $container->setDefinitions($this->resolveArguments($container, $container->getDefinitions(), true)); + } - $this->resolveDefinition($id, $definition); + /** + * Resolves definition decorator arguments. + * + * @param ContainerBuilder $container The ContainerBuilder + * @param array $arguments An array of arguments + * @param bool $isRoot If we are processing the root definitions or not + * + * @return array + */ + private function resolveArguments(ContainerBuilder $container, array $arguments, $isRoot = false) + { + foreach ($arguments as $k => $argument) { + if ($isRoot) { + // yes, we are specifically fetching the definition from the + // container to ensure we are not operating on stale data + $arguments[$k] = $argument = $container->getDefinition($k); + $this->currentId = $k; + } + if (\is_array($argument)) { + $arguments[$k] = $this->resolveArguments($container, $argument); + } elseif ($argument instanceof Definition) { + if ($argument instanceof DefinitionDecorator) { + $arguments[$k] = $argument = $this->resolveDefinition($container, $argument); + if ($isRoot) { + $container->setDefinition($k, $argument); + } + } + $argument->setArguments($this->resolveArguments($container, $argument->getArguments())); + $argument->setMethodCalls($this->resolveArguments($container, $argument->getMethodCalls())); + $argument->setProperties($this->resolveArguments($container, $argument->getProperties())); + + $configurator = $this->resolveArguments($container, array($argument->getConfigurator())); + $argument->setConfigurator($configurator[0]); + + $factory = $this->resolveArguments($container, array($argument->getFactory())); + $argument->setFactory($factory[0]); + } } + + return $arguments; } /** * Resolves the definition. * - * @param string $id The definition identifier + * @param ContainerBuilder $container The ContainerBuilder * @param DefinitionDecorator $definition * * @return Definition * * @throws \RuntimeException When the definition is invalid */ - private function resolveDefinition($id, DefinitionDecorator $definition) + private function resolveDefinition(ContainerBuilder $container, DefinitionDecorator $definition) { - if (!$this->container->hasDefinition($parent = $definition->getParent())) { - throw new RuntimeException(sprintf('The parent definition "%s" defined for definition "%s" does not exist.', $parent, $id)); + if (!$container->hasDefinition($parent = $definition->getParent())) { + throw new RuntimeException(sprintf('The parent definition "%s" defined for definition "%s" does not exist.', $parent, $this->currentId)); } - $parentDef = $this->container->getDefinition($parent); + $parentDef = $container->getDefinition($parent); if ($parentDef instanceof DefinitionDecorator) { - $parentDef = $this->resolveDefinition($parent, $parentDef); + $id = $this->currentId; + $this->currentId = $parent; + $parentDef = $this->resolveDefinition($container, $parentDef); + $container->setDefinition($parent, $parentDef); + $this->currentId = $id; } - $this->compiler->addLogMessage($this->formatter->formatResolveInheritance($this, $id, $parent)); + $this->compiler->addLogMessage($this->formatter->formatResolveInheritance($this, $this->currentId, $parent)); $def = new Definition(); // merge in parent definition @@ -81,14 +116,25 @@ class ResolveDefinitionTemplatesPass implements CompilerPassInterface $def->setArguments($parentDef->getArguments()); $def->setMethodCalls($parentDef->getMethodCalls()); $def->setProperties($parentDef->getProperties()); - $def->setFactoryClass($parentDef->getFactoryClass()); - $def->setFactoryMethod($parentDef->getFactoryMethod()); - $def->setFactoryService($parentDef->getFactoryService()); + $def->setAutowiringTypes($parentDef->getAutowiringTypes()); + if ($parentDef->getFactoryClass(false)) { + $def->setFactoryClass($parentDef->getFactoryClass(false)); + } + if ($parentDef->getFactoryMethod(false)) { + $def->setFactoryMethod($parentDef->getFactoryMethod(false)); + } + if ($parentDef->getFactoryService(false)) { + $def->setFactoryService($parentDef->getFactoryService(false)); + } + if ($parentDef->isDeprecated()) { + $def->setDeprecated(true, $parentDef->getDeprecationMessage('%service_id%')); + } $def->setFactory($parentDef->getFactory()); $def->setConfigurator($parentDef->getConfigurator()); $def->setFile($parentDef->getFile()); $def->setPublic($parentDef->isPublic()); $def->setLazy($parentDef->isLazy()); + $def->setAutowired($parentDef->isAutowired()); // overwrite with values specified in the decorator $changes = $definition->getChanges(); @@ -96,13 +142,13 @@ class ResolveDefinitionTemplatesPass implements CompilerPassInterface $def->setClass($definition->getClass()); } if (isset($changes['factory_class'])) { - $def->setFactoryClass($definition->getFactoryClass()); + $def->setFactoryClass($definition->getFactoryClass(false)); } if (isset($changes['factory_method'])) { - $def->setFactoryMethod($definition->getFactoryMethod()); + $def->setFactoryMethod($definition->getFactoryMethod(false)); } if (isset($changes['factory_service'])) { - $def->setFactoryService($definition->getFactoryService()); + $def->setFactoryService($definition->getFactoryService(false)); } if (isset($changes['factory'])) { $def->setFactory($definition->getFactory()); @@ -119,12 +165,18 @@ class ResolveDefinitionTemplatesPass implements CompilerPassInterface if (isset($changes['lazy'])) { $def->setLazy($definition->isLazy()); } + if (isset($changes['deprecated'])) { + $def->setDeprecated($definition->isDeprecated(), $definition->getDeprecationMessage('%service_id%')); + } + if (isset($changes['autowire'])) { + $def->setAutowired($definition->isAutowired()); + } if (isset($changes['decorated_service'])) { $decoratedService = $definition->getDecoratedService(); if (null === $decoratedService) { $def->setDecoratedService($decoratedService); } else { - $def->setDecoratedService($decoratedService[0], $decoratedService[1]); + $def->setDecoratedService($decoratedService[0], $decoratedService[1], $decoratedService[2]); } } @@ -139,7 +191,7 @@ class ResolveDefinitionTemplatesPass implements CompilerPassInterface throw new RuntimeException(sprintf('Invalid argument key "%s" found.', $k)); } - $index = (int) substr($k, strlen('index_')); + $index = (int) substr($k, \strlen('index_')); $def->replaceArgument($index, $v); } @@ -149,18 +201,21 @@ class ResolveDefinitionTemplatesPass implements CompilerPassInterface } // append method calls - if (count($calls = $definition->getMethodCalls()) > 0) { + if (\count($calls = $definition->getMethodCalls()) > 0) { $def->setMethodCalls(array_merge($def->getMethodCalls(), $calls)); } + // merge autowiring types + foreach ($definition->getAutowiringTypes() as $autowiringType) { + $def->addAutowiringType($autowiringType); + } + // these attributes are always taken from the child $def->setAbstract($definition->isAbstract()); - $def->setScope($definition->getScope()); + $def->setScope($definition->getScope(false), false); + $def->setShared($definition->isShared()); $def->setTags($definition->getTags()); - // set new definition on container - $this->container->setDefinition($id, $def); - return $def; } } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/ResolveInvalidReferencesPass.php similarity index 97% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/ResolveInvalidReferencesPass.php index 85dbceb9a61ec526e290eb64f6dd4405485abb58..181c85fa8f9e8f01a9bb3d7e919eab3f29cbbbbe 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/ResolveInvalidReferencesPass.php @@ -11,10 +11,10 @@ namespace Symfony\Component\DependencyInjection\Compiler; -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Exception\RuntimeException; +use Symfony\Component\DependencyInjection\Reference; /** * Emulates the invalid behavior if the reference is not found within the @@ -28,8 +28,6 @@ class ResolveInvalidReferencesPass implements CompilerPassInterface /** * Process the ContainerBuilder to resolve invalid references. - * - * @param ContainerBuilder $container */ public function process(ContainerBuilder $container) { @@ -79,7 +77,7 @@ class ResolveInvalidReferencesPass implements CompilerPassInterface private function processArguments(array $arguments, $inMethodCall = false) { foreach ($arguments as $k => $argument) { - if (is_array($argument)) { + if (\is_array($argument)) { $arguments[$k] = $this->processArguments($argument, $inMethodCall); } elseif ($argument instanceof Reference) { $id = (string) $argument; diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/ResolveParameterPlaceHoldersPass.php similarity index 87% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/ResolveParameterPlaceHoldersPass.php index 35d46cf83d224b69d409180dc834de6792e66d4c..3a31dd55f6751c2b3b4c822945ecf77727dac9eb 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/ResolveParameterPlaceHoldersPass.php @@ -24,8 +24,6 @@ class ResolveParameterPlaceHoldersPass implements CompilerPassInterface /** * Processes the ContainerBuilder to resolve parameter placeholders. * - * @param ContainerBuilder $container - * * @throws ParameterNotFoundException */ public function process(ContainerBuilder $container) @@ -37,11 +35,13 @@ class ResolveParameterPlaceHoldersPass implements CompilerPassInterface $definition->setClass($parameterBag->resolveValue($definition->getClass())); $definition->setFile($parameterBag->resolveValue($definition->getFile())); $definition->setArguments($parameterBag->resolveValue($definition->getArguments())); - $definition->setFactoryClass($parameterBag->resolveValue($definition->getFactoryClass())); + if ($definition->getFactoryClass(false)) { + $definition->setFactoryClass($parameterBag->resolveValue($definition->getFactoryClass(false))); + } $factory = $definition->getFactory(); - if (is_array($factory) && isset($factory[0])) { + if (\is_array($factory) && isset($factory[0])) { $factory[0] = $parameterBag->resolveValue($factory[0]); $definition->setFactory($factory); } @@ -62,7 +62,7 @@ class ResolveParameterPlaceHoldersPass implements CompilerPassInterface $aliases = array(); foreach ($container->getAliases() as $name => $target) { - $aliases[$parameterBag->resolveValue($name)] = $parameterBag->resolveValue($target); + $aliases[$parameterBag->resolveValue($name)] = $target; } $container->setAliases($aliases); diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ResolveReferencesToAliasesPass.php b/civicrm/vendor/symfony/dependency-injection/Compiler/ResolveReferencesToAliasesPass.php similarity index 76% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ResolveReferencesToAliasesPass.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/ResolveReferencesToAliasesPass.php index c90d76f48adf562dcda125014988ff28bd9c803d..8a1113751735eb76d67e0b5419b4c6e4d66cf3d4 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ResolveReferencesToAliasesPass.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/ResolveReferencesToAliasesPass.php @@ -12,9 +12,9 @@ namespace Symfony\Component\DependencyInjection\Compiler; use Symfony\Component\DependencyInjection\Alias; +use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException; use Symfony\Component\DependencyInjection\Reference; -use Symfony\Component\DependencyInjection\ContainerBuilder; /** * Replaces all references to aliases with references to the actual service. @@ -27,8 +27,6 @@ class ResolveReferencesToAliasesPass implements CompilerPassInterface /** * Processes the ContainerBuilder to replace references to aliases with actual service references. - * - * @param ContainerBuilder $container */ public function process(ContainerBuilder $container) { @@ -42,6 +40,8 @@ class ResolveReferencesToAliasesPass implements CompilerPassInterface $definition->setArguments($this->processArguments($definition->getArguments())); $definition->setMethodCalls($this->processArguments($definition->getMethodCalls())); $definition->setProperties($this->processArguments($definition->getProperties())); + $definition->setFactory($this->processFactory($definition->getFactory())); + $definition->setFactoryService($this->processFactoryService($definition->getFactoryService(false)), false); } foreach ($container->getAliases() as $id => $alias) { @@ -62,13 +62,13 @@ class ResolveReferencesToAliasesPass implements CompilerPassInterface private function processArguments(array $arguments) { foreach ($arguments as $k => $argument) { - if (is_array($argument)) { + if (\is_array($argument)) { $arguments[$k] = $this->processArguments($argument); } elseif ($argument instanceof Reference) { $defId = $this->getDefinitionId($id = (string) $argument); if ($defId !== $id) { - $arguments[$k] = new Reference($defId, $argument->getInvalidBehavior(), $argument->isStrict()); + $arguments[$k] = new Reference($defId, $argument->getInvalidBehavior(), $argument->isStrict(false)); } } } @@ -76,6 +76,30 @@ class ResolveReferencesToAliasesPass implements CompilerPassInterface return $arguments; } + private function processFactoryService($factoryService) + { + if (null === $factoryService) { + return; + } + + return $this->getDefinitionId($factoryService); + } + + private function processFactory($factory) + { + if (null === $factory || !\is_array($factory) || !$factory[0] instanceof Reference) { + return $factory; + } + + $defId = $this->getDefinitionId($id = (string) $factory[0]); + + if ($defId !== $id) { + $factory[0] = new Reference($defId, $factory[0]->getInvalidBehavior(), $factory[0]->isStrict(false)); + } + + return $factory; + } + /** * Resolves an alias into a definition id. * diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraph.php b/civicrm/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraph.php similarity index 90% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraph.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraph.php index dc9a1a00eadc826a56c5f822d521ded79b0d73c5..43bac7120bcb606d5a6eb764ef1cfbec19deac3f 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraph.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraph.php @@ -45,7 +45,7 @@ class ServiceReferenceGraph * * @param string $id The id to retrieve * - * @return ServiceReferenceGraphNode The node matching the supplied identifier + * @return ServiceReferenceGraphNode * * @throws InvalidArgumentException if no node matches the supplied identifier */ @@ -61,7 +61,7 @@ class ServiceReferenceGraph /** * Returns all nodes. * - * @return ServiceReferenceGraphNode[] An array of all ServiceReferenceGraphNode objects + * @return ServiceReferenceGraphNode[] */ public function getNodes() { @@ -80,13 +80,16 @@ class ServiceReferenceGraph * Connects 2 nodes together in the Graph. * * @param string $sourceId - * @param string $sourceValue + * @param mixed $sourceValue * @param string $destId - * @param string $destValue + * @param mixed $destValue * @param string $reference */ public function connect($sourceId, $sourceValue, $destId, $destValue = null, $reference = null) { + if (null === $sourceId || null === $destId) { + return; + } $sourceNode = $this->createNode($sourceId, $sourceValue); $destNode = $this->createNode($destId, $destValue); $edge = new ServiceReferenceGraphEdge($sourceNode, $destNode, $reference); @@ -99,7 +102,7 @@ class ServiceReferenceGraph * Creates a graph node. * * @param string $id - * @param string $value + * @param mixed $value * * @return ServiceReferenceGraphNode */ diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphEdge.php b/civicrm/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraphEdge.php similarity index 92% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphEdge.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraphEdge.php index 6a3e2ea5697d31c39229868179fffcebf355aab1..7e8cf812f7082b499a57fa8a5fc8719d4aab4e7a 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphEdge.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraphEdge.php @@ -25,11 +25,9 @@ class ServiceReferenceGraphEdge private $value; /** - * Constructor. - * * @param ServiceReferenceGraphNode $sourceNode * @param ServiceReferenceGraphNode $destNode - * @param string $value + * @param mixed $value */ public function __construct(ServiceReferenceGraphNode $sourceNode, ServiceReferenceGraphNode $destNode, $value = null) { @@ -41,7 +39,7 @@ class ServiceReferenceGraphEdge /** * Returns the value of the edge. * - * @return ServiceReferenceGraphNode + * @return string */ public function getValue() { diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphNode.php b/civicrm/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraphNode.php similarity index 90% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphNode.php rename to civicrm/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraphNode.php index c49c932575f031c65cd0decb776568cffeb7bec2..6a6d42139087a76b5642198ed7d0997fb69d1dab 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ServiceReferenceGraphNode.php +++ b/civicrm/vendor/symfony/dependency-injection/Compiler/ServiceReferenceGraphNode.php @@ -11,8 +11,8 @@ namespace Symfony\Component\DependencyInjection\Compiler; -use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Alias; +use Symfony\Component\DependencyInjection\Definition; /** * Represents a node in your service graph. @@ -29,8 +29,6 @@ class ServiceReferenceGraphNode private $value; /** - * Constructor. - * * @param string $id The node identifier * @param mixed $value The node value */ @@ -40,21 +38,11 @@ class ServiceReferenceGraphNode $this->value = $value; } - /** - * Adds an in edge to this node. - * - * @param ServiceReferenceGraphEdge $edge - */ public function addInEdge(ServiceReferenceGraphEdge $edge) { $this->inEdges[] = $edge; } - /** - * Adds an out edge to this node. - * - * @param ServiceReferenceGraphEdge $edge - */ public function addOutEdge(ServiceReferenceGraphEdge $edge) { $this->outEdges[] = $edge; diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Container.php b/civicrm/vendor/symfony/dependency-injection/Container.php similarity index 84% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Container.php rename to civicrm/vendor/symfony/dependency-injection/Container.php index f0db5de6bc4e64fd8676f4c6e030b066890c196d..00b34b59682cd99bffd9d6092bccb3fda2a84332 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Container.php +++ b/civicrm/vendor/symfony/dependency-injection/Container.php @@ -13,12 +13,13 @@ namespace Symfony\Component\DependencyInjection; use Symfony\Component\DependencyInjection\Exception\InactiveScopeException; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; +use Symfony\Component\DependencyInjection\Exception\LogicException; use Symfony\Component\DependencyInjection\Exception\RuntimeException; -use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException; -use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; -use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag; +use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag; +use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag; +use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; /** * Container is a dependency injection container. @@ -29,16 +30,6 @@ use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag; * * Parameter and service keys are case insensitive. * - * A service id can contain lowercased letters, digits, underscores, and dots. - * Underscores are used to separate words, and dots to group services - * under namespaces: - * - * <ul> - * <li>request</li> - * <li>mysql_session_storage</li> - * <li>symfony.mysql_session_storage</li> - * </ul> - * * A service can also be defined by creating a method named * getXXXService(), where XXX is the camelized version of the id: * @@ -57,16 +48,10 @@ use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag; * * @author Fabien Potencier <fabien@symfony.com> * @author Johannes M. Schmitt <schmittjoh@gmail.com> - * - * @api */ -class Container implements IntrospectableContainerInterface +class Container implements IntrospectableContainerInterface, ResettableContainerInterface { - /** - * @var ParameterBagInterface - */ protected $parameterBag; - protected $services = array(); protected $methodMap = array(); protected $aliases = array(); @@ -78,13 +63,6 @@ class Container implements IntrospectableContainerInterface private $underscoreMap = array('_' => '', '.' => '_', '\\' => '_'); - /** - * Constructor. - * - * @param ParameterBagInterface $parameterBag A ParameterBagInterface instance - * - * @api - */ public function __construct(ParameterBagInterface $parameterBag = null) { $this->parameterBag = $parameterBag ?: new ParameterBag(); @@ -97,8 +75,6 @@ class Container implements IntrospectableContainerInterface * * * Parameter values are resolved; * * The parameter bag is frozen. - * - * @api */ public function compile() { @@ -111,8 +87,6 @@ class Container implements IntrospectableContainerInterface * Returns true if the container parameter bag are frozen. * * @return bool true if the container parameter bag are frozen, false otherwise - * - * @api */ public function isFrozen() { @@ -123,8 +97,6 @@ class Container implements IntrospectableContainerInterface * Gets the service container parameter bag. * * @return ParameterBagInterface A ParameterBagInterface instance - * - * @api */ public function getParameterBag() { @@ -139,8 +111,6 @@ class Container implements IntrospectableContainerInterface * @return mixed The parameter value * * @throws InvalidArgumentException if the parameter is not defined - * - * @api */ public function getParameter($name) { @@ -153,8 +123,6 @@ class Container implements IntrospectableContainerInterface * @param string $name The parameter name * * @return bool The presence of parameter in container - * - * @api */ public function hasParameter($name) { @@ -166,8 +134,6 @@ class Container implements IntrospectableContainerInterface * * @param string $name The parameter name * @param mixed $value The parameter value - * - * @api */ public function setParameter($name, $value) { @@ -180,17 +146,21 @@ class Container implements IntrospectableContainerInterface * Setting a service to null resets the service: has() returns false and get() * behaves in the same way as if the service was never created. * + * Note: The $scope parameter is deprecated since version 2.8 and will be removed in 3.0. + * * @param string $id The service identifier * @param object $service The service instance * @param string $scope The scope of the service * * @throws RuntimeException When trying to set a service in an inactive scope * @throws InvalidArgumentException When trying to set a service in the prototype scope - * - * @api */ public function set($id, $service, $scope = self::SCOPE_CONTAINER) { + if (!\in_array($scope, array('container', 'request')) || ('request' === $scope && 'request' !== $id)) { + @trigger_error('The concept of container scopes is deprecated since Symfony 2.8 and will be removed in 3.0. Omit the third parameter.', E_USER_DEPRECATED); + } + if (self::SCOPE_PROTOTYPE === $scope) { throw new InvalidArgumentException(sprintf('You cannot set service "%s" of scope "prototype".', $id)); } @@ -211,6 +181,10 @@ class Container implements IntrospectableContainerInterface $this->scopedServices[$scope][$id] = $service; } + if (isset($this->aliases[$id])) { + unset($this->aliases[$id]); + } + $this->services[$id] = $service; if (method_exists($this, $method = 'synchronize'.strtr($id, $this->underscoreMap).'Service')) { @@ -232,8 +206,6 @@ class Container implements IntrospectableContainerInterface * @param string $id The service identifier * * @return bool true if the service is defined, false otherwise - * - * @api */ public function has($id) { @@ -269,8 +241,6 @@ class Container implements IntrospectableContainerInterface * @throws \Exception if an exception has been thrown when the service has been resolved * * @see Reference - * - * @api */ public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE) { @@ -279,9 +249,6 @@ class Container implements IntrospectableContainerInterface // this method can be called thousands of times during a request, avoid // calling strtolower() unless necessary. for ($i = 2;;) { - if ('service_container' === $id) { - return $this; - } if (isset($this->aliases[$id])) { $id = $this->aliases[$id]; } @@ -289,6 +256,9 @@ class Container implements IntrospectableContainerInterface if (isset($this->services[$id]) || array_key_exists($id, $this->services)) { return $this->services[$id]; } + if ('service_container' === $id) { + return $this; + } if (isset($this->loading[$id])) { throw new ServiceCircularReferenceException($id, array_keys($this->loading)); @@ -308,10 +278,10 @@ class Container implements IntrospectableContainerInterface } $alternatives = array(); - foreach ($this->services as $key => $associatedService) { - $lev = levenshtein($id, $key); - if ($lev <= strlen($id) / 3 || false !== strpos($key, $id)) { - $alternatives[] = $key; + foreach ($this->getServiceIds() as $knownId) { + $lev = levenshtein($id, $knownId); + if ($lev <= \strlen($id) / 3 || false !== strpos($knownId, $id)) { + $alternatives[] = $knownId; } } @@ -327,15 +297,17 @@ class Container implements IntrospectableContainerInterface $service = $this->$method(); } catch (\Exception $e) { unset($this->loading[$id]); - - if (array_key_exists($id, $this->services)) { - unset($this->services[$id]); - } + unset($this->services[$id]); if ($e instanceof InactiveScopeException && self::EXCEPTION_ON_INVALID_REFERENCE !== $invalidBehavior) { return; } + throw $e; + } catch (\Throwable $e) { + unset($this->loading[$id]); + unset($this->services[$id]); + throw $e; } @@ -356,17 +328,29 @@ class Container implements IntrospectableContainerInterface { $id = strtolower($id); + if (isset($this->aliases[$id])) { + $id = $this->aliases[$id]; + } + if ('service_container' === $id) { // BC: 'service_container' was a synthetic service previously. // @todo Change to false in next major release. return true; } - if (isset($this->aliases[$id])) { - $id = $this->aliases[$id]; + return isset($this->services[$id]) || array_key_exists($id, $this->services); + } + + /** + * {@inheritdoc} + */ + public function reset() + { + if (!empty($this->scopedServices)) { + throw new LogicException('Resetting the container is not allowed when a scope is active.'); } - return isset($this->services[$id]) || array_key_exists($id, $this->services); + $this->services = array(); } /** @@ -377,9 +361,8 @@ class Container implements IntrospectableContainerInterface public function getServiceIds() { $ids = array(); - $r = new \ReflectionClass($this); - foreach ($r->getMethods() as $method) { - if (preg_match('/^get(.+)Service$/', $method->name, $match)) { + foreach (get_class_methods($this) as $method) { + if (preg_match('/^get(.+)Service$/', $method, $match)) { $ids[] = self::underscore($match[1]); } } @@ -396,10 +379,14 @@ class Container implements IntrospectableContainerInterface * @throws RuntimeException When the parent scope is inactive * @throws InvalidArgumentException When the scope does not exist * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ public function enterScope($name) { + if ('request' !== $name) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + } + if (!isset($this->scopes[$name])) { throw new InvalidArgumentException(sprintf('The scope "%s" does not exist.', $name)); } @@ -423,7 +410,7 @@ class Container implements IntrospectableContainerInterface } // update global map - $this->services = call_user_func_array('array_diff_key', $services); + $this->services = \call_user_func_array('array_diff_key', $services); array_shift($services); // add stack entry for this scope so we can restore the removed services later @@ -444,10 +431,14 @@ class Container implements IntrospectableContainerInterface * * @throws InvalidArgumentException if the scope is not active * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ public function leaveScope($name) { + if ('request' !== $name) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + } + if (!isset($this->scopedServices[$name])) { throw new InvalidArgumentException(sprintf('The scope "%s" is not active.', $name)); } @@ -465,10 +456,10 @@ class Container implements IntrospectableContainerInterface } // update global map - $this->services = call_user_func_array('array_diff_key', $services); + $this->services = \call_user_func_array('array_diff_key', $services); // check if we need to restore services of a previous scope of this type - if (isset($this->scopeStacks[$name]) && count($this->scopeStacks[$name]) > 0) { + if (isset($this->scopeStacks[$name]) && \count($this->scopeStacks[$name]) > 0) { $services = $this->scopeStacks[$name]->pop(); $this->scopedServices += $services; @@ -487,17 +478,18 @@ class Container implements IntrospectableContainerInterface /** * Adds a scope to the container. * - * @param ScopeInterface $scope - * * @throws InvalidArgumentException * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ public function addScope(ScopeInterface $scope) { $name = $scope->getName(); $parentScope = $scope->getParentName(); + if ('request' !== $name) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + } if (self::SCOPE_CONTAINER === $name || self::SCOPE_PROTOTYPE === $name) { throw new InvalidArgumentException(sprintf('The scope "%s" is reserved.', $name)); } @@ -512,7 +504,7 @@ class Container implements IntrospectableContainerInterface $this->scopeChildren[$name] = array(); // normalize the child relations - while ($parentScope !== self::SCOPE_CONTAINER) { + while (self::SCOPE_CONTAINER !== $parentScope) { $this->scopeChildren[$parentScope][] = $name; $parentScope = $this->scopes[$parentScope]; } @@ -525,10 +517,14 @@ class Container implements IntrospectableContainerInterface * * @return bool * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ public function hasScope($name) { + if ('request' !== $name) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + } + return isset($this->scopes[$name]); } @@ -541,10 +537,12 @@ class Container implements IntrospectableContainerInterface * * @return bool * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ public function isScopeActive($name) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + return isset($this->scopedServices[$name]); } @@ -569,6 +567,10 @@ class Container implements IntrospectableContainerInterface */ public static function underscore($id) { - return strtolower(preg_replace(array('/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'), array('\\1_\\2', '\\1_\\2'), strtr($id, '_', '.'))); + return strtolower(preg_replace(array('/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'), array('\\1_\\2', '\\1_\\2'), str_replace('_', '.', $id))); + } + + private function __clone() + { } } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerAware.php b/civicrm/vendor/symfony/dependency-injection/ContainerAware.php similarity index 78% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerAware.php rename to civicrm/vendor/symfony/dependency-injection/ContainerAware.php index 40969153118c2529c9bb609523dcffa35f295d1d..f3f2a5065c3110fed10effde25432e8acf75449a 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerAware.php +++ b/civicrm/vendor/symfony/dependency-injection/ContainerAware.php @@ -16,23 +16,17 @@ namespace Symfony\Component\DependencyInjection; * * @author Fabien Potencier <fabien@symfony.com> * - * @api + * @deprecated since version 2.8, to be removed in 3.0. Use the ContainerAwareTrait instead. */ abstract class ContainerAware implements ContainerAwareInterface { /** * @var ContainerInterface - * - * @api */ protected $container; /** - * Sets the Container associated with this Controller. - * - * @param ContainerInterface $container A ContainerInterface instance - * - * @api + * {@inheritdoc} */ public function setContainer(ContainerInterface $container = null) { diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerAwareInterface.php b/civicrm/vendor/symfony/dependency-injection/ContainerAwareInterface.php similarity index 76% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerAwareInterface.php rename to civicrm/vendor/symfony/dependency-injection/ContainerAwareInterface.php index e85bb53dcb9a7f048499569dbf7002979c868619..d78491bb9633572af40871684da4843bb569651e 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerAwareInterface.php +++ b/civicrm/vendor/symfony/dependency-injection/ContainerAwareInterface.php @@ -15,17 +15,8 @@ namespace Symfony\Component\DependencyInjection; * ContainerAwareInterface should be implemented by classes that depends on a Container. * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ interface ContainerAwareInterface { - /** - * Sets the Container. - * - * @param ContainerInterface|null $container A ContainerInterface instance or null - * - * @api - */ public function setContainer(ContainerInterface $container = null); } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerAwareTrait.php b/civicrm/vendor/symfony/dependency-injection/ContainerAwareTrait.php similarity index 79% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerAwareTrait.php rename to civicrm/vendor/symfony/dependency-injection/ContainerAwareTrait.php index 57280aad60da278010f11d51282b6d45eb133a3d..ee1ea2cb3d1487fd3c960de68c9c6dcfde26ea38 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerAwareTrait.php +++ b/civicrm/vendor/symfony/dependency-injection/ContainerAwareTrait.php @@ -23,11 +23,6 @@ trait ContainerAwareTrait */ protected $container; - /** - * Sets the Container associated with this Controller. - * - * @param ContainerInterface $container A ContainerInterface instance - */ public function setContainer(ContainerInterface $container = null) { $this->container = $container; diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerBuilder.php b/civicrm/vendor/symfony/dependency-injection/ContainerBuilder.php similarity index 76% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerBuilder.php rename to civicrm/vendor/symfony/dependency-injection/ContainerBuilder.php index b2981cc7d4d4e1089ab80fbe9f1cc812b80da5f1..dc09a6582058714ae4917861fc286b36194f1945 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerBuilder.php +++ b/civicrm/vendor/symfony/dependency-injection/ContainerBuilder.php @@ -11,6 +11,8 @@ namespace Symfony\Component\DependencyInjection; +use Symfony\Component\Config\Resource\FileResource; +use Symfony\Component\Config\Resource\ResourceInterface; use Symfony\Component\DependencyInjection\Compiler\Compiler; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\Compiler\PassConfig; @@ -19,11 +21,12 @@ use Symfony\Component\DependencyInjection\Exception\InactiveScopeException; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use Symfony\Component\DependencyInjection\Exception\LogicException; use Symfony\Component\DependencyInjection\Exception\RuntimeException; +use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException; +use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; use Symfony\Component\DependencyInjection\Extension\ExtensionInterface; -use Symfony\Component\Config\Resource\FileResource; -use Symfony\Component\Config\Resource\ResourceInterface; use Symfony\Component\DependencyInjection\LazyProxy\Instantiator\InstantiatorInterface; use Symfony\Component\DependencyInjection\LazyProxy\Instantiator\RealServiceInstantiator; +use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Symfony\Component\ExpressionLanguage\Expression; use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface; @@ -31,8 +34,6 @@ use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface; * ContainerBuilder is a DI container that provides an API to easily describe services. * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ class ContainerBuilder extends Container implements TaggedContainerInterface { @@ -73,7 +74,7 @@ class ContainerBuilder extends Container implements TaggedContainerInterface */ private $compiler; - private $trackResources = true; + private $trackResources; /** * @var InstantiatorInterface|null @@ -90,13 +91,25 @@ class ContainerBuilder extends Container implements TaggedContainerInterface */ private $expressionLanguageProviders = array(); + public function __construct(ParameterBagInterface $parameterBag = null) + { + parent::__construct($parameterBag); + + $this->trackResources = interface_exists('Symfony\Component\Config\Resource\ResourceInterface'); + } + + /** + * @var string[] with tag names used by findTaggedServiceIds + */ + private $usedTags = array(); + /** * Sets the track resources flag. * * If you are not using the loaders and therefore don't want * to depend on the Config component, set this flag to false. * - * @param bool $track true if you want to track resources, false otherwise + * @param bool $track True if you want to track resources, false otherwise */ public function setResourceTracking($track) { @@ -106,7 +119,7 @@ class ContainerBuilder extends Container implements TaggedContainerInterface /** * Checks if resources are tracked. * - * @return bool true if resources are tracked, false otherwise + * @return bool true If resources are tracked, false otherwise */ public function isTrackingResources() { @@ -115,21 +128,12 @@ class ContainerBuilder extends Container implements TaggedContainerInterface /** * Sets the instantiator to be used when fetching proxies. - * - * @param InstantiatorInterface $proxyInstantiator */ public function setProxyInstantiator(InstantiatorInterface $proxyInstantiator) { $this->proxyInstantiator = $proxyInstantiator; } - /** - * Registers an extension. - * - * @param ExtensionInterface $extension An extension instance - * - * @api - */ public function registerExtension(ExtensionInterface $extension) { $this->extensions[$extension->getAlias()] = $extension; @@ -147,8 +151,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @return ExtensionInterface An extension instance * * @throws LogicException if the extension is not registered - * - * @api */ public function getExtension($name) { @@ -167,8 +169,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * Returns all registered extensions. * * @return ExtensionInterface[] An array of ExtensionInterface - * - * @api */ public function getExtensions() { @@ -181,8 +181,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @param string $name The name of the extension * * @return bool If the extension exists - * - * @api */ public function hasExtension($name) { @@ -193,8 +191,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * Returns an array of resources loaded to build this configuration. * * @return ResourceInterface[] An array of resources - * - * @api */ public function getResources() { @@ -202,13 +198,7 @@ class ContainerBuilder extends Container implements TaggedContainerInterface } /** - * Adds a resource for this configuration. - * - * @param ResourceInterface $resource A resource instance - * - * @return ContainerBuilder The current instance - * - * @api + * @return $this */ public function addResource(ResourceInterface $resource) { @@ -226,9 +216,7 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * * @param ResourceInterface[] $resources An array of resources * - * @return ContainerBuilder The current instance - * - * @api + * @return $this */ public function setResources(array $resources) { @@ -246,9 +234,7 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * * @param object $object An object instance * - * @return ContainerBuilder The current instance - * - * @api + * @return $this */ public function addObjectResource($object) { @@ -262,9 +248,7 @@ class ContainerBuilder extends Container implements TaggedContainerInterface /** * Adds the given class hierarchy as resources. * - * @param \ReflectionClass $class - * - * @return ContainerBuilder The current instance + * @return $this */ public function addClassResource(\ReflectionClass $class) { @@ -273,7 +257,9 @@ class ContainerBuilder extends Container implements TaggedContainerInterface } do { - $this->addResource(new FileResource($class->getFileName())); + if (is_file($class->getFileName())) { + $this->addResource(new FileResource($class->getFileName())); + } } while ($class = $class->getParentClass()); return $this; @@ -285,19 +271,21 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @param string $extension The extension alias or namespace * @param array $values An array of values that customizes the extension * - * @return ContainerBuilder The current instance + * @return $this * * @throws BadMethodCallException When this ContainerBuilder is frozen * @throws \LogicException if the container is frozen - * - * @api */ - public function loadFromExtension($extension, array $values = array()) + public function loadFromExtension($extension, array $values = null) { if ($this->isFrozen()) { throw new BadMethodCallException('Cannot load from an extension on a frozen container.'); } + if (\func_num_args() < 2) { + $values = array(); + } + $namespace = $this->getExtension($extension)->getAlias(); $this->extensionConfigs[$namespace][] = $values; @@ -311,9 +299,7 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @param CompilerPassInterface $pass A compiler pass * @param string $type The type of compiler pass * - * @return ContainerBuilder The current instance - * - * @api + * @return $this */ public function addCompilerPass(CompilerPassInterface $pass, $type = PassConfig::TYPE_BEFORE_OPTIMIZATION) { @@ -328,8 +314,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * Returns the compiler pass config which can then be modified. * * @return PassConfig The compiler pass config - * - * @api */ public function getCompilerPassConfig() { @@ -340,8 +324,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * Returns the compiler. * * @return Compiler The compiler - * - * @api */ public function getCompiler() { @@ -357,54 +339,55 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * * @return array An array of scopes * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ - public function getScopes() + public function getScopes($triggerDeprecationError = true) { + if ($triggerDeprecationError) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + } + return $this->scopes; } /** * Returns all Scope children. * - * @return array An array of scope children. + * @return array An array of scope children * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ - public function getScopeChildren() + public function getScopeChildren($triggerDeprecationError = true) { + if ($triggerDeprecationError) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + } + return $this->scopeChildren; } /** * Sets a service. * + * Note: The $scope parameter is deprecated since version 2.8 and will be removed in 3.0. + * * @param string $id The service identifier * @param object $service The service instance * @param string $scope The scope * * @throws BadMethodCallException When this ContainerBuilder is frozen - * - * @api */ public function set($id, $service, $scope = self::SCOPE_CONTAINER) { $id = strtolower($id); + $set = isset($this->definitions[$id]); - if ($this->isFrozen()) { + if ($this->isFrozen() && ($set || isset($this->obsoleteDefinitions[$id])) && !$this->{$set ? 'definitions' : 'obsoleteDefinitions'}[$id]->isSynthetic()) { // setting a synthetic service on a frozen container is alright - if ( - (!isset($this->definitions[$id]) && !isset($this->obsoleteDefinitions[$id])) - || - (isset($this->definitions[$id]) && !$this->definitions[$id]->isSynthetic()) - || - (isset($this->obsoleteDefinitions[$id]) && !$this->obsoleteDefinitions[$id]->isSynthetic()) - ) { - throw new BadMethodCallException(sprintf('Setting service "%s" on a frozen container is not allowed.', $id)); - } + throw new BadMethodCallException(sprintf('Setting service "%s" on a frozen container is not allowed.', $id)); } - if (isset($this->definitions[$id])) { + if ($set) { $this->obsoleteDefinitions[$id] = $this->definitions[$id]; } @@ -412,7 +395,7 @@ class ContainerBuilder extends Container implements TaggedContainerInterface parent::set($id, $service, $scope); - if (isset($this->obsoleteDefinitions[$id]) && $this->obsoleteDefinitions[$id]->isSynchronized()) { + if (isset($this->obsoleteDefinitions[$id]) && $this->obsoleteDefinitions[$id]->isSynchronized(false)) { $this->synchronize($id); } } @@ -421,8 +404,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * Removes a service definition. * * @param string $id The service identifier - * - * @api */ public function removeDefinition($id) { @@ -435,8 +416,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @param string $id The service identifier * * @return bool true if the service is defined, false otherwise - * - * @api */ public function has($id) { @@ -453,14 +432,12 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * * @return object The associated service * - * @throws InvalidArgumentException when no definitions are available - * @throws InactiveScopeException when the current scope is not active - * @throws LogicException when a circular dependency is detected + * @throws InvalidArgumentException when no definitions are available + * @throws ServiceCircularReferenceException When a circular reference is detected + * @throws ServiceNotFoundException When the service is not defined * @throws \Exception * * @see Reference - * - * @api */ public function get($id, $invalidBehavior = ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE) { @@ -471,12 +448,12 @@ class ContainerBuilder extends Container implements TaggedContainerInterface } if (!array_key_exists($id, $this->definitions) && isset($this->aliasDefinitions[$id])) { - return $this->get($this->aliasDefinitions[$id]); + return $this->get((string) $this->aliasDefinitions[$id], $invalidBehavior); } try { $definition = $this->getDefinition($id); - } catch (InvalidArgumentException $e) { + } catch (ServiceNotFoundException $e) { if (ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE !== $invalidBehavior) { return; } @@ -487,7 +464,7 @@ class ContainerBuilder extends Container implements TaggedContainerInterface $this->loading[$id] = true; try { - $service = $this->createService($definition, $id); + $service = $this->createService($definition, new \SplObjectStorage(), $id); } catch (\Exception $e) { unset($this->loading[$id]); @@ -495,6 +472,10 @@ class ContainerBuilder extends Container implements TaggedContainerInterface return; } + throw $e; + } catch (\Throwable $e) { + unset($this->loading[$id]); + throw $e; } @@ -512,20 +493,16 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * the parameters passed to the container constructor to have precedence * over the loaded ones. * - * $container = new ContainerBuilder(array('foo' => 'bar')); + * $container = new ContainerBuilder(new ParameterBag(array('foo' => 'bar'))); * $loader = new LoaderXXX($container); * $loader->load('resource_name'); - * $container->register('foo', new stdClass()); + * $container->register('foo', 'stdClass'); * * In the above example, even if the loaded resource defines a foo * parameter, the value will still be 'bar' as defined in the ContainerBuilder * constructor. * - * @param ContainerBuilder $container The ContainerBuilder instance to merge. - * * @throws BadMethodCallException When this ContainerBuilder is frozen - * - * @api */ public function merge(ContainerBuilder $container) { @@ -558,8 +535,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @param string $name The name of the extension * * @return array An array of configuration - * - * @api */ public function getExtensionConfig($name) { @@ -598,8 +573,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * * Parameter values are resolved; * * The parameter bag is frozen; * * Extension loading is disabled. - * - * @api */ public function compile() { @@ -638,10 +611,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface /** * Adds the service aliases. - * - * @param array $aliases An array of aliases - * - * @api */ public function addAliases(array $aliases) { @@ -652,10 +621,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface /** * Sets the service aliases. - * - * @param array $aliases An array of aliases - * - * @api */ public function setAliases(array $aliases) { @@ -671,14 +636,12 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * * @throws InvalidArgumentException if the id is not a string or an Alias * @throws InvalidArgumentException if the alias is for itself - * - * @api */ public function setAlias($alias, $id) { $alias = strtolower($alias); - if (is_string($id)) { + if (\is_string($id)) { $id = new Alias($id); } elseif (!$id instanceof Alias) { throw new InvalidArgumentException('$id must be a string, or an Alias object.'); @@ -697,8 +660,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * Removes an alias. * * @param string $alias The alias to remove - * - * @api */ public function removeAlias($alias) { @@ -711,8 +672,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @param string $id The service identifier * * @return bool true if the alias exists, false otherwise - * - * @api */ public function hasAlias($id) { @@ -723,8 +682,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * Gets all defined aliases. * * @return Alias[] An array of aliases - * - * @api */ public function getAliases() { @@ -739,8 +696,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @return Alias An Alias instance * * @throws InvalidArgumentException if the alias does not exist - * - * @api */ public function getAlias($id) { @@ -759,12 +714,10 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * This methods allows for simple registration of service definition * with a fluid interface. * - * @param string $id The service identifier - * @param string $class The service class + * @param string $id The service identifier + * @param string $class|null The service class * * @return Definition A Definition instance - * - * @api */ public function register($id, $class = null) { @@ -775,8 +728,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * Adds the service definitions. * * @param Definition[] $definitions An array of service definitions - * - * @api */ public function addDefinitions(array $definitions) { @@ -789,8 +740,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * Sets the service definitions. * * @param Definition[] $definitions An array of service definitions - * - * @api */ public function setDefinitions(array $definitions) { @@ -802,8 +751,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * Gets all service definitions. * * @return Definition[] An array of Definition instances - * - * @api */ public function getDefinitions() { @@ -819,8 +766,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @return Definition the service definition * * @throws BadMethodCallException When this ContainerBuilder is frozen - * - * @api */ public function setDefinition($id, Definition $definition) { @@ -841,8 +786,6 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * @param string $id The service identifier * * @return bool true if the service definition exists, false otherwise - * - * @api */ public function hasDefinition($id) { @@ -856,16 +799,14 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * * @return Definition A Definition instance * - * @throws InvalidArgumentException if the service definition does not exist - * - * @api + * @throws ServiceNotFoundException if the service definition does not exist */ public function getDefinition($id) { $id = strtolower($id); if (!array_key_exists($id, $this->definitions)) { - throw new InvalidArgumentException(sprintf('The service definition "%s" does not exist.', $id)); + throw new ServiceNotFoundException($id); } return $this->definitions[$id]; @@ -880,9 +821,7 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * * @return Definition A Definition instance * - * @throws InvalidArgumentException if the service definition does not exist - * - * @api + * @throws ServiceNotFoundException if the service definition does not exist */ public function findDefinition($id) { @@ -911,12 +850,24 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * * @internal this method is public because of PHP 5.3 limitations, do not use it explicitly in your code */ - public function createService(Definition $definition, $id, $tryProxy = true) + public function createService(Definition $definition, \SplObjectStorage $inlinedDefinitions, $id = null, $tryProxy = true) { + if (null === $id && isset($inlinedDefinitions[$definition])) { + return $inlinedDefinitions[$definition]; + } + + if ($definition instanceof DefinitionDecorator) { + throw new RuntimeException(sprintf('Constructing service "%s" from a parent definition is not supported at build time.', $id)); + } + if ($definition->isSynthetic()) { throw new RuntimeException(sprintf('You have requested a synthetic service ("%s"). The DIC does not know how to construct this service.', $id)); } + if ($definition->isDeprecated()) { + @trigger_error($definition->getDeprecationMessage($id), E_USER_DEPRECATED); + } + if ($tryProxy && $definition->isLazy()) { $container = $this; @@ -925,11 +876,11 @@ class ContainerBuilder extends Container implements TaggedContainerInterface ->instantiateProxy( $container, $definition, - $id, function () use ($definition, $id, $container) { - return $container->createService($definition, $id, false); + $id, function () use ($definition, $inlinedDefinitions, $id, $container) { + return $container->createService($definition, $inlinedDefinitions, $id, false); } ); - $this->shareService($definition, $proxy, $id); + $this->shareService($definition, $proxy, $id, $inlinedDefinitions); return $proxy; } @@ -940,56 +891,74 @@ class ContainerBuilder extends Container implements TaggedContainerInterface require_once $parameterBag->resolveValue($definition->getFile()); } - $arguments = $this->resolveServices($parameterBag->unescapeValue($parameterBag->resolveValue($definition->getArguments()))); + $arguments = $this->doResolveServices($parameterBag->unescapeValue($parameterBag->resolveValue($definition->getArguments())), $inlinedDefinitions); if (null !== $factory = $definition->getFactory()) { - if (is_array($factory)) { - $factory = array($this->resolveServices($parameterBag->resolveValue($factory[0])), $factory[1]); - } elseif (!is_string($factory)) { + if (\is_array($factory)) { + $factory = array($this->doResolveServices($parameterBag->resolveValue($factory[0]), $inlinedDefinitions), $factory[1]); + } elseif (!\is_string($factory)) { throw new RuntimeException(sprintf('Cannot create service "%s" because of invalid factory', $id)); } - $service = call_user_func_array($factory, $arguments); - } elseif (null !== $definition->getFactoryMethod()) { - if (null !== $definition->getFactoryClass()) { - $factory = $parameterBag->resolveValue($definition->getFactoryClass()); - } elseif (null !== $definition->getFactoryService()) { - $factory = $this->get($parameterBag->resolveValue($definition->getFactoryService())); + $service = \call_user_func_array($factory, $arguments); + + if (!$definition->isDeprecated() && \is_array($factory) && \is_string($factory[0])) { + $r = new \ReflectionClass($factory[0]); + + if (0 < strpos($r->getDocComment(), "\n * @deprecated ")) { + @trigger_error(sprintf('The "%s" service relies on the deprecated "%s" factory class. It should either be deprecated or its factory upgraded.', $id, $r->name), E_USER_DEPRECATED); + } + } + } elseif (null !== $definition->getFactoryMethod(false)) { + if (null !== $definition->getFactoryClass(false)) { + $factory = $parameterBag->resolveValue($definition->getFactoryClass(false)); + } elseif (null !== $definition->getFactoryService(false)) { + $factory = $this->get($parameterBag->resolveValue($definition->getFactoryService(false))); } else { throw new RuntimeException(sprintf('Cannot create service "%s" from factory method without a factory service or factory class.', $id)); } - $service = call_user_func_array(array($factory, $definition->getFactoryMethod()), $arguments); + $service = \call_user_func_array(array($factory, $definition->getFactoryMethod(false)), $arguments); } else { $r = new \ReflectionClass($parameterBag->resolveValue($definition->getClass())); $service = null === $r->getConstructor() ? $r->newInstance() : $r->newInstanceArgs($arguments); + + if (!$definition->isDeprecated() && 0 < strpos($r->getDocComment(), "\n * @deprecated ")) { + @trigger_error(sprintf('The "%s" service relies on the deprecated "%s" class. It should either be deprecated or its implementation upgraded.', $id, $r->name), E_USER_DEPRECATED); + } } if ($tryProxy || !$definition->isLazy()) { // share only if proxying failed, or if not a proxy - $this->shareService($definition, $service, $id); + $this->shareService($definition, $service, $id, $inlinedDefinitions); } - foreach ($definition->getMethodCalls() as $call) { - $this->callMethod($service, $call); - } - - $properties = $this->resolveServices($parameterBag->resolveValue($definition->getProperties())); + $properties = $this->doResolveServices($parameterBag->unescapeValue($parameterBag->resolveValue($definition->getProperties())), $inlinedDefinitions); foreach ($properties as $name => $value) { $service->$name = $value; } + foreach ($definition->getMethodCalls() as $call) { + $this->callMethod($service, $call, $inlinedDefinitions); + } + if ($callable = $definition->getConfigurator()) { - if (is_array($callable)) { - $callable[0] = $callable[0] instanceof Reference ? $this->get((string) $callable[0]) : $parameterBag->resolveValue($callable[0]); + if (\is_array($callable)) { + $callable[0] = $parameterBag->resolveValue($callable[0]); + + if ($callable[0] instanceof Reference) { + $callable[0] = $this->get((string) $callable[0], $callable[0]->getInvalidBehavior()); + } elseif ($callable[0] instanceof Definition) { + $callable[0] = $this->createService($callable[0], $inlinedDefinitions); + } } - if (!is_callable($callable)) { - throw new InvalidArgumentException(sprintf('The configure callable for class "%s" is not a callable.', get_class($service))); + if (!\is_callable($callable)) { + throw new InvalidArgumentException(sprintf('The configure callable for class "%s" is not a callable.', \get_class($service))); } - call_user_func($callable, $service); + \call_user_func($callable, $service); } return $service; @@ -1005,12 +974,19 @@ class ContainerBuilder extends Container implements TaggedContainerInterface */ public function resolveServices($value) { - if (is_array($value)) { - $value = array_map(array($this, 'resolveServices'), $value); + return $this->doResolveServices($value, new \SplObjectStorage()); + } + + private function doResolveServices($value, \SplObjectStorage $inlinedDefinitions) + { + if (\is_array($value)) { + foreach ($value as $k => $v) { + $value[$k] = $this->doResolveServices($v, $inlinedDefinitions); + } } elseif ($value instanceof Reference) { $value = $this->get((string) $value, $value->getInvalidBehavior()); } elseif ($value instanceof Definition) { - $value = $this->createService($value, null); + $value = $this->createService($value, $inlinedDefinitions); } elseif ($value instanceof Expression) { $value = $this->getExpressionLanguage()->evaluate($value, array('container' => $this)); } @@ -1034,12 +1010,11 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * * @param string $name The tag name * - * @return array An array of tags with the tagged service as key, holding a list of attribute arrays. - * - * @api + * @return array An array of tags with the tagged service as key, holding a list of attribute arrays */ public function findTaggedServiceIds($name) { + $this->usedTags[] = $name; $tags = array(); foreach ($this->getDefinitions() as $id => $definition) { if ($definition->hasTag($name)) { @@ -1065,6 +1040,16 @@ class ContainerBuilder extends Container implements TaggedContainerInterface return array_unique($tags); } + /** + * Returns all tags not queried by findTaggedServiceIds. + * + * @return string[] An array of tags + */ + public function findUnusedTags() + { + return array_values(array_diff($this->findTags(), $this->usedTags)); + } + public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider) { $this->expressionLanguageProviders[] = $provider; @@ -1081,7 +1066,7 @@ class ContainerBuilder extends Container implements TaggedContainerInterface /** * Returns the Service Conditionals. * - * @param mixed $value An array of conditionals to return. + * @param mixed $value An array of conditionals to return * * @return array An array of Service conditionals */ @@ -1089,11 +1074,11 @@ class ContainerBuilder extends Container implements TaggedContainerInterface { $services = array(); - if (is_array($value)) { + if (\is_array($value)) { foreach ($value as $v) { $services = array_unique(array_merge($services, self::getServiceConditionals($v))); } - } elseif ($value instanceof Reference && $value->getInvalidBehavior() === ContainerInterface::IGNORE_ON_INVALID_REFERENCE) { + } elseif ($value instanceof Reference && ContainerInterface::IGNORE_ON_INVALID_REFERENCE === $value->getInvalidBehavior()) { $services[] = (string) $value; } @@ -1121,9 +1106,15 @@ class ContainerBuilder extends Container implements TaggedContainerInterface * service by calling all methods referencing it. * * @param string $id A service id + * + * @deprecated since version 2.7, will be removed in 3.0. */ private function synchronize($id) { + if ('request' !== $id) { + @trigger_error('The '.__METHOD__.' method is deprecated in version 2.7 and will be removed in version 3.0.', E_USER_DEPRECATED); + } + foreach ($this->definitions as $definitionId => $definition) { // only check initialized services if (!$this->initialized($definitionId)) { @@ -1133,14 +1124,14 @@ class ContainerBuilder extends Container implements TaggedContainerInterface foreach ($definition->getMethodCalls() as $call) { foreach ($call[1] as $argument) { if ($argument instanceof Reference && $id == (string) $argument) { - $this->callMethod($this->get($definitionId), $call); + $this->callMethod($this->get($definitionId), $call, new \SplObjectStorage()); } } } } } - private function callMethod($service, $call) + private function callMethod($service, $call, \SplObjectStorage $inlinedDefinitions) { $services = self::getServiceConditionals($call[1]); @@ -1150,21 +1141,26 @@ class ContainerBuilder extends Container implements TaggedContainerInterface } } - call_user_func_array(array($service, $call[0]), $this->resolveServices($this->getParameterBag()->resolveValue($call[1]))); + \call_user_func_array(array($service, $call[0]), $this->doResolveServices($this->getParameterBag()->unescapeValue($this->getParameterBag()->resolveValue($call[1])), $inlinedDefinitions)); } /** * Shares a given service in the container. * - * @param Definition $definition - * @param mixed $service - * @param string $id + * @param Definition $definition + * @param mixed $service + * @param string|null $id * * @throws InactiveScopeException */ - private function shareService(Definition $definition, $service, $id) + private function shareService(Definition $definition, $service, $id, \SplObjectStorage $inlinedDefinitions) { - if (self::SCOPE_PROTOTYPE !== $scope = $definition->getScope()) { + if (!$definition->isShared() || self::SCOPE_PROTOTYPE === $scope = $definition->getScope(false)) { + return; + } + if (null === $id) { + $inlinedDefinitions[$definition] = $service; + } else { if (self::SCOPE_CONTAINER !== $scope && !isset($this->scopedServices[$scope])) { throw new InactiveScopeException($id, $scope); } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerInterface.php b/civicrm/vendor/symfony/dependency-injection/ContainerInterface.php similarity index 90% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerInterface.php rename to civicrm/vendor/symfony/dependency-injection/ContainerInterface.php index 19e800b3144da1572d3042e197b508e11ddb44a9..d9076eb1f87681f0eb04f9158ff6bbefafaf61fa 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ContainerInterface.php +++ b/civicrm/vendor/symfony/dependency-injection/ContainerInterface.php @@ -20,8 +20,6 @@ use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; * * @author Fabien Potencier <fabien@symfony.com> * @author Johannes M. Schmitt <schmittjoh@gmail.com> - * - * @api */ interface ContainerInterface { @@ -34,11 +32,11 @@ interface ContainerInterface /** * Sets a service. * + * Note: The $scope parameter is deprecated since version 2.8 and will be removed in 3.0. + * * @param string $id The service identifier * @param object $service The service instance * @param string $scope The scope of the service - * - * @api */ public function set($id, $service, $scope = self::SCOPE_CONTAINER); @@ -54,8 +52,6 @@ interface ContainerInterface * @throws ServiceNotFoundException When the service is not defined * * @see Reference - * - * @api */ public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE); @@ -65,8 +61,6 @@ interface ContainerInterface * @param string $id The service identifier * * @return bool true if the service is defined, false otherwise - * - * @api */ public function has($id); @@ -78,8 +72,6 @@ interface ContainerInterface * @return mixed The parameter value * * @throws InvalidArgumentException if the parameter is not defined - * - * @api */ public function getParameter($name); @@ -89,8 +81,6 @@ interface ContainerInterface * @param string $name The parameter name * * @return bool The presence of parameter in container - * - * @api */ public function hasParameter($name); @@ -99,8 +89,6 @@ interface ContainerInterface * * @param string $name The parameter name * @param mixed $value The parameter value - * - * @api */ public function setParameter($name, $value); @@ -109,7 +97,7 @@ interface ContainerInterface * * @param string $name * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ public function enterScope($name); @@ -118,7 +106,7 @@ interface ContainerInterface * * @param string $name * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ public function leaveScope($name); @@ -127,7 +115,7 @@ interface ContainerInterface * * @param ScopeInterface $scope * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ public function addScope(ScopeInterface $scope); @@ -138,7 +126,7 @@ interface ContainerInterface * * @return bool * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ public function hasScope($name); @@ -151,7 +139,7 @@ interface ContainerInterface * * @return bool * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ public function isScopeActive($name); } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Definition.php b/civicrm/vendor/symfony/dependency-injection/Definition.php similarity index 59% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Definition.php rename to civicrm/vendor/symfony/dependency-injection/Definition.php index bdc75e04173cbcca3f298a7cda3bfa335973de01..70f68469e30dc7aabe75e7a1803feee57fe9c9bb 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Definition.php +++ b/civicrm/vendor/symfony/dependency-injection/Definition.php @@ -18,8 +18,6 @@ use Symfony\Component\DependencyInjection\Exception\OutOfBoundsException; * Definition represents a service definition. * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ class Definition { @@ -29,6 +27,9 @@ class Definition private $factoryClass; private $factoryMethod; private $factoryService; + private $shared = true; + private $deprecated = false; + private $deprecationTemplate; private $scope = ContainerInterface::SCOPE_CONTAINER; private $properties = array(); private $calls = array(); @@ -40,16 +41,16 @@ class Definition private $synchronized = false; private $lazy = false; private $decoratedService; + private $autowired = false; + private $autowiringTypes = array(); + + private static $defaultDeprecationTemplate = 'The "%service_id%" service is deprecated. You should stop using it, as it will soon be removed.'; protected $arguments; /** - * Constructor. - * * @param string|null $class The service class * @param array $arguments An array of arguments to pass to the service constructor - * - * @api */ public function __construct($class = null, array $arguments = array()) { @@ -62,11 +63,11 @@ class Definition * * @param string|array $factory A PHP function or an array containing a class/Reference and a method to call * - * @return Definition The current instance + * @return $this */ public function setFactory($factory) { - if (is_string($factory) && strpos($factory, '::') !== false) { + if (\is_string($factory) && false !== strpos($factory, '::')) { $factory = explode('::', $factory, 2); } @@ -91,13 +92,14 @@ class Definition * * @param string $factoryClass The factory class name * - * @return Definition The current instance + * @return $this * - * @api - * @deprecated Deprecated since version 2.6, to be removed in 3.0. + * @deprecated since version 2.6, to be removed in 3.0. */ public function setFactoryClass($factoryClass) { + @trigger_error(sprintf('%s(%s) is deprecated since Symfony 2.6 and will be removed in 3.0. Use Definition::setFactory() instead.', __METHOD__, $factoryClass), E_USER_DEPRECATED); + $this->factoryClass = $factoryClass; return $this; @@ -108,11 +110,14 @@ class Definition * * @return string|null The factory class name * - * @api - * @deprecated Deprecated since version 2.6, to be removed in 3.0. + * @deprecated since version 2.6, to be removed in 3.0. */ - public function getFactoryClass() + public function getFactoryClass($triggerDeprecationError = true) { + if ($triggerDeprecationError) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.6 and will be removed in 3.0.', E_USER_DEPRECATED); + } + return $this->factoryClass; } @@ -121,13 +126,14 @@ class Definition * * @param string $factoryMethod The factory method name * - * @return Definition The current instance + * @return $this * - * @api - * @deprecated Deprecated since version 2.6, to be removed in 3.0. + * @deprecated since version 2.6, to be removed in 3.0. */ public function setFactoryMethod($factoryMethod) { + @trigger_error(sprintf('%s(%s) is deprecated since Symfony 2.6 and will be removed in 3.0. Use Definition::setFactory() instead.', __METHOD__, $factoryMethod), E_USER_DEPRECATED); + $this->factoryMethod = $factoryMethod; return $this; @@ -138,30 +144,31 @@ class Definition * * @param null|string $id The decorated service id, use null to remove decoration * @param null|string $renamedId The new decorated service id + * @param int $priority The priority of decoration * - * @return Definition The current instance + * @return $this * - * @throws InvalidArgumentException In case the decorated service id and the new decorated service id are equals. + * @throws InvalidArgumentException in case the decorated service id and the new decorated service id are equals */ - public function setDecoratedService($id, $renamedId = null) + public function setDecoratedService($id, $renamedId = null, $priority = 0) { - if ($renamedId && $id == $renamedId) { + if ($renamedId && $id === $renamedId) { throw new \InvalidArgumentException(sprintf('The decorated service inner name for "%s" must be different than the service name itself.', $id)); } if (null === $id) { $this->decoratedService = null; } else { - $this->decoratedService = array($id, $renamedId); + $this->decoratedService = array($id, $renamedId, (int) $priority); } return $this; } /** - * Gets the service that decorates this service. + * Gets the service that this service is decorating. * - * @return null|array An array composed of the decorated service id and the new id for it, null if no service is decorated + * @return null|array An array composed of the decorated service id, the new id for it and the priority of decoration, null if no service is decorated */ public function getDecoratedService() { @@ -173,11 +180,14 @@ class Definition * * @return string|null The factory method name * - * @api - * @deprecated Deprecated since version 2.6, to be removed in 3.0. + * @deprecated since version 2.6, to be removed in 3.0. */ - public function getFactoryMethod() + public function getFactoryMethod($triggerDeprecationError = true) { + if ($triggerDeprecationError) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.6 and will be removed in 3.0.', E_USER_DEPRECATED); + } + return $this->factoryMethod; } @@ -186,13 +196,16 @@ class Definition * * @param string $factoryService The factory service id * - * @return Definition The current instance + * @return $this * - * @api - * @deprecated Deprecated since version 2.6, to be removed in 3.0. + * @deprecated since version 2.6, to be removed in 3.0. */ - public function setFactoryService($factoryService) + public function setFactoryService($factoryService, $triggerDeprecationError = true) { + if ($triggerDeprecationError) { + @trigger_error(sprintf('%s(%s) is deprecated since Symfony 2.6 and will be removed in 3.0. Use Definition::setFactory() instead.', __METHOD__, $factoryService), E_USER_DEPRECATED); + } + $this->factoryService = $factoryService; return $this; @@ -203,11 +216,14 @@ class Definition * * @return string|null The factory service id * - * @api - * @deprecated Deprecated since version 2.6, to be removed in 3.0. + * @deprecated since version 2.6, to be removed in 3.0. */ - public function getFactoryService() + public function getFactoryService($triggerDeprecationError = true) { + if ($triggerDeprecationError) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.6 and will be removed in 3.0.', E_USER_DEPRECATED); + } + return $this->factoryService; } @@ -216,9 +232,7 @@ class Definition * * @param string $class The service class * - * @return Definition The current instance - * - * @api + * @return $this */ public function setClass($class) { @@ -231,8 +245,6 @@ class Definition * Gets the service class. * * @return string|null The service class - * - * @api */ public function getClass() { @@ -242,11 +254,7 @@ class Definition /** * Sets the arguments to pass to the service constructor/factory method. * - * @param array $arguments An array of arguments - * - * @return Definition The current instance - * - * @api + * @return $this */ public function setArguments(array $arguments) { @@ -256,7 +264,9 @@ class Definition } /** - * @api + * Sets the properties to define when creating the service. + * + * @return $this */ public function setProperties(array $properties) { @@ -266,7 +276,9 @@ class Definition } /** - * @api + * Gets the properties to define when creating the service. + * + * @return array */ public function getProperties() { @@ -274,7 +286,12 @@ class Definition } /** - * @api + * Sets a specific property. + * + * @param string $name + * @param mixed $value + * + * @return $this */ public function setProperty($name, $value) { @@ -288,9 +305,7 @@ class Definition * * @param mixed $argument An argument * - * @return Definition The current instance - * - * @api + * @return $this */ public function addArgument($argument) { @@ -300,21 +315,23 @@ class Definition } /** - * Sets a specific argument. + * Replaces a specific argument. * * @param int $index * @param mixed $argument * - * @return Definition The current instance + * @return $this * * @throws OutOfBoundsException When the replaced argument does not exist - * - * @api */ public function replaceArgument($index, $argument) { - if ($index < 0 || $index > count($this->arguments) - 1) { - throw new OutOfBoundsException(sprintf('The index "%d" is not in the range [0, %d].', $index, count($this->arguments) - 1)); + if (0 === \count($this->arguments)) { + throw new OutOfBoundsException('Cannot replace arguments if none have been configured yet.'); + } + + if ($index < 0 || $index > \count($this->arguments) - 1) { + throw new OutOfBoundsException(sprintf('The index "%d" is not in the range [0, %d].', $index, \count($this->arguments) - 1)); } $this->arguments[$index] = $argument; @@ -326,8 +343,6 @@ class Definition * Gets the arguments to pass to the service constructor/factory method. * * @return array The array of arguments - * - * @api */ public function getArguments() { @@ -342,13 +357,11 @@ class Definition * @return mixed The argument value * * @throws OutOfBoundsException When the argument does not exist - * - * @api */ public function getArgument($index) { - if ($index < 0 || $index > count($this->arguments) - 1) { - throw new OutOfBoundsException(sprintf('The index "%d" is not in the range [0, %d].', $index, count($this->arguments) - 1)); + if ($index < 0 || $index > \count($this->arguments) - 1) { + throw new OutOfBoundsException(sprintf('The index "%d" is not in the range [0, %d].', $index, \count($this->arguments) - 1)); } return $this->arguments[$index]; @@ -357,11 +370,7 @@ class Definition /** * Sets the methods to call after service initialization. * - * @param array $calls An array of method calls - * - * @return Definition The current instance - * - * @api + * @return $this */ public function setMethodCalls(array $calls = array()) { @@ -379,16 +388,14 @@ class Definition * @param string $method The method name to call * @param array $arguments An array of arguments to pass to the method call * - * @return Definition The current instance + * @return $this * * @throws InvalidArgumentException on empty $method param - * - * @api */ public function addMethodCall($method, array $arguments = array()) { if (empty($method)) { - throw new InvalidArgumentException(sprintf('Method name cannot be empty.')); + throw new InvalidArgumentException('Method name cannot be empty.'); } $this->calls[] = array($method, $arguments); @@ -400,9 +407,7 @@ class Definition * * @param string $method The method name to remove * - * @return Definition The current instance - * - * @api + * @return $this */ public function removeMethodCall($method) { @@ -422,8 +427,6 @@ class Definition * @param string $method The method name to search for * * @return bool - * - * @api */ public function hasMethodCall($method) { @@ -440,8 +443,6 @@ class Definition * Gets the methods to call after service initialization. * * @return array An array of method calls - * - * @api */ public function getMethodCalls() { @@ -451,11 +452,7 @@ class Definition /** * Sets tags for this definition. * - * @param array $tags - * - * @return Definition the current instance - * - * @api + * @return $this */ public function setTags(array $tags) { @@ -468,8 +465,6 @@ class Definition * Returns all tags. * * @return array An array of tags - * - * @api */ public function getTags() { @@ -482,8 +477,6 @@ class Definition * @param string $name The tag name * * @return array An array of attributes - * - * @api */ public function getTag($name) { @@ -496,9 +489,7 @@ class Definition * @param string $name The tag name * @param array $attributes An array of attributes * - * @return Definition The current instance - * - * @api + * @return $this */ public function addTag($name, array $attributes = array()) { @@ -513,8 +504,6 @@ class Definition * @param string $name * * @return bool - * - * @api */ public function hasTag($name) { @@ -526,13 +515,11 @@ class Definition * * @param string $name The tag name * - * @return Definition + * @return $this */ public function clearTag($name) { - if (isset($this->tags[$name])) { - unset($this->tags[$name]); - } + unset($this->tags[$name]); return $this; } @@ -540,9 +527,7 @@ class Definition /** * Clears the tags for this definition. * - * @return Definition The current instance - * - * @api + * @return $this */ public function clearTags() { @@ -556,9 +541,7 @@ class Definition * * @param string $file A full pathname to include * - * @return Definition The current instance - * - * @api + * @return $this */ public function setFile($file) { @@ -571,25 +554,55 @@ class Definition * Gets the file to require before creating the service. * * @return string|null The full pathname to include - * - * @api */ public function getFile() { return $this->file; } + /** + * Sets if the service must be shared or not. + * + * @param bool $shared Whether the service must be shared or not + * + * @return $this + */ + public function setShared($shared) + { + $this->shared = (bool) $shared; + + return $this; + } + + /** + * Whether this service is shared. + * + * @return bool + */ + public function isShared() + { + return $this->shared; + } + /** * Sets the scope of the service. * * @param string $scope Whether the service must be shared or not * - * @return Definition The current instance + * @return $this * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ - public function setScope($scope) + public function setScope($scope, $triggerDeprecationError = true) { + if ($triggerDeprecationError) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + } + + if (ContainerInterface::SCOPE_PROTOTYPE === $scope) { + $this->setShared(false); + } + $this->scope = $scope; return $this; @@ -600,10 +613,14 @@ class Definition * * @return string * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ - public function getScope() + public function getScope($triggerDeprecationError = true) { + if ($triggerDeprecationError) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + } + return $this->scope; } @@ -612,9 +629,7 @@ class Definition * * @param bool $boolean * - * @return Definition The current instance - * - * @api + * @return $this */ public function setPublic($boolean) { @@ -627,8 +642,6 @@ class Definition * Whether this service is public facing. * * @return bool - * - * @api */ public function isPublic() { @@ -640,12 +653,16 @@ class Definition * * @param bool $boolean * - * @return Definition The current instance + * @return $this * - * @api + * @deprecated since version 2.7, will be removed in 3.0. */ - public function setSynchronized($boolean) + public function setSynchronized($boolean, $triggerDeprecationError = true) { + if ($triggerDeprecationError) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.7 and will be removed in 3.0.', E_USER_DEPRECATED); + } + $this->synchronized = (bool) $boolean; return $this; @@ -656,10 +673,14 @@ class Definition * * @return bool * - * @api + * @deprecated since version 2.7, will be removed in 3.0. */ - public function isSynchronized() + public function isSynchronized($triggerDeprecationError = true) { + if ($triggerDeprecationError) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.7 and will be removed in 3.0.', E_USER_DEPRECATED); + } + return $this->synchronized; } @@ -668,7 +689,7 @@ class Definition * * @param bool $lazy * - * @return Definition The current instance + * @return $this */ public function setLazy($lazy) { @@ -693,9 +714,7 @@ class Definition * * @param bool $boolean * - * @return Definition the current instance - * - * @api + * @return $this */ public function setSynthetic($boolean) { @@ -709,8 +728,6 @@ class Definition * container, but dynamically injected. * * @return bool - * - * @api */ public function isSynthetic() { @@ -723,9 +740,7 @@ class Definition * * @param bool $boolean * - * @return Definition the current instance - * - * @api + * @return $this */ public function setAbstract($boolean) { @@ -739,22 +754,71 @@ class Definition * template for other definitions. * * @return bool - * - * @api */ public function isAbstract() { return $this->abstract; } + /** + * Whether this definition is deprecated, that means it should not be called + * anymore. + * + * @param bool $status + * @param string $template Template message to use if the definition is deprecated + * + * @return $this + * + * @throws InvalidArgumentException when the message template is invalid + */ + public function setDeprecated($status = true, $template = null) + { + if (null !== $template) { + if (preg_match('#[\r\n]|\*/#', $template)) { + throw new InvalidArgumentException('Invalid characters found in deprecation template.'); + } + + if (false === strpos($template, '%service_id%')) { + throw new InvalidArgumentException('The deprecation template must contain the "%service_id%" placeholder.'); + } + + $this->deprecationTemplate = $template; + } + + $this->deprecated = (bool) $status; + + return $this; + } + + /** + * Whether this definition is deprecated, that means it should not be called + * anymore. + * + * @return bool + */ + public function isDeprecated() + { + return $this->deprecated; + } + + /** + * Message to use if this definition is deprecated. + * + * @param string $id Service id relying on this definition + * + * @return string + */ + public function getDeprecationMessage($id) + { + return str_replace('%service_id%', $id, $this->deprecationTemplate ?: self::$defaultDeprecationTemplate); + } + /** * Sets a configurator to call after the service is fully initialized. * * @param callable $callable A PHP callable * - * @return Definition The current instance - * - * @api + * @return $this */ public function setConfigurator($callable) { @@ -767,11 +831,101 @@ class Definition * Gets the configurator to call after the service is fully initialized. * * @return callable|null The PHP callable to call - * - * @api */ public function getConfigurator() { return $this->configurator; } + + /** + * Sets types that will default to this definition. + * + * @param string[] $types + * + * @return $this + */ + public function setAutowiringTypes(array $types) + { + $this->autowiringTypes = array(); + + foreach ($types as $type) { + $this->autowiringTypes[$type] = true; + } + + return $this; + } + + /** + * Is the definition autowired? + * + * @return bool + */ + public function isAutowired() + { + return $this->autowired; + } + + /** + * Enables/disables autowiring. + * + * @param bool $autowired + * + * @return $this + */ + public function setAutowired($autowired) + { + $this->autowired = $autowired; + + return $this; + } + + /** + * Gets autowiring types that will default to this definition. + * + * @return string[] + */ + public function getAutowiringTypes() + { + return array_keys($this->autowiringTypes); + } + + /** + * Adds a type that will default to this definition. + * + * @param string $type + * + * @return $this + */ + public function addAutowiringType($type) + { + $this->autowiringTypes[$type] = true; + + return $this; + } + + /** + * Removes a type. + * + * @param string $type + * + * @return $this + */ + public function removeAutowiringType($type) + { + unset($this->autowiringTypes[$type]); + + return $this; + } + + /** + * Will this definition default for the given type? + * + * @param string $type + * + * @return bool + */ + public function hasAutowiringType($type) + { + return isset($this->autowiringTypes[$type]); + } } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/DefinitionDecorator.php b/civicrm/vendor/symfony/dependency-injection/DefinitionDecorator.php similarity index 83% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/DefinitionDecorator.php rename to civicrm/vendor/symfony/dependency-injection/DefinitionDecorator.php index f5a1485a5f33a756377e0dbfa574e0cdd1371fa4..44e9c0f7d4653a0905903f7cb2b16c683128d91b 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/DefinitionDecorator.php +++ b/civicrm/vendor/symfony/dependency-injection/DefinitionDecorator.php @@ -18,8 +18,6 @@ use Symfony\Component\DependencyInjection\Exception\OutOfBoundsException; * This definition decorates another definition. * * @author Johannes M. Schmitt <schmittjoh@gmail.com> - * - * @api */ class DefinitionDecorator extends Definition { @@ -27,11 +25,7 @@ class DefinitionDecorator extends Definition private $changes = array(); /** - * Constructor. - * - * @param string $parent The id of Definition instance to decorate. - * - * @api + * @param string $parent The id of Definition instance to decorate */ public function __construct($parent) { @@ -44,8 +38,6 @@ class DefinitionDecorator extends Definition * Returns the Definition being decorated. * * @return string - * - * @api */ public function getParent() { @@ -56,8 +48,6 @@ class DefinitionDecorator extends Definition * Returns all changes tracked for the Definition object. * * @return array An array of changes for this Definition - * - * @api */ public function getChanges() { @@ -66,8 +56,6 @@ class DefinitionDecorator extends Definition /** * {@inheritdoc} - * - * @api */ public function setClass($class) { @@ -88,8 +76,6 @@ class DefinitionDecorator extends Definition /** * {@inheritdoc} - * - * @api */ public function setFactoryClass($class) { @@ -100,8 +86,6 @@ class DefinitionDecorator extends Definition /** * {@inheritdoc} - * - * @api */ public function setFactoryMethod($method) { @@ -112,20 +96,16 @@ class DefinitionDecorator extends Definition /** * {@inheritdoc} - * - * @api */ - public function setFactoryService($service) + public function setFactoryService($service, $triggerDeprecationError = true) { $this->changes['factory_service'] = true; - return parent::setFactoryService($service); + return parent::setFactoryService($service, $triggerDeprecationError); } /** * {@inheritdoc} - * - * @api */ public function setConfigurator($callable) { @@ -136,8 +116,6 @@ class DefinitionDecorator extends Definition /** * {@inheritdoc} - * - * @api */ public function setFile($file) { @@ -148,8 +126,6 @@ class DefinitionDecorator extends Definition /** * {@inheritdoc} - * - * @api */ public function setPublic($boolean) { @@ -160,8 +136,6 @@ class DefinitionDecorator extends Definition /** * {@inheritdoc} - * - * @api */ public function setLazy($boolean) { @@ -173,11 +147,31 @@ class DefinitionDecorator extends Definition /** * {@inheritdoc} */ - public function setDecoratedService($id, $renamedId = null) + public function setDecoratedService($id, $renamedId = null, $priority = 0) { $this->changes['decorated_service'] = true; - return parent::setDecoratedService($id, $renamedId); + return parent::setDecoratedService($id, $renamedId, $priority); + } + + /** + * {@inheritdoc} + */ + public function setDeprecated($boolean = true, $template = null) + { + $this->changes['deprecated'] = true; + + return parent::setDeprecated($boolean, $template); + } + + /** + * {@inheritdoc} + */ + public function setAutowired($autowired) + { + $this->changes['autowire'] = true; + + return parent::setAutowired($autowired); } /** @@ -191,8 +185,6 @@ class DefinitionDecorator extends Definition * @return mixed The argument value * * @throws OutOfBoundsException When the argument does not exist - * - * @api */ public function getArgument($index) { @@ -200,7 +192,7 @@ class DefinitionDecorator extends Definition return $this->arguments['index_'.$index]; } - $lastIndex = count(array_filter(array_keys($this->arguments), 'is_int')) - 1; + $lastIndex = \count(array_filter(array_keys($this->arguments), 'is_int')) - 1; if ($index < 0 || $index > $lastIndex) { throw new OutOfBoundsException(sprintf('The index "%d" is not in the range [0, %d].', $index, $lastIndex)); @@ -220,15 +212,13 @@ class DefinitionDecorator extends Definition * @param int $index * @param mixed $value * - * @return DefinitionDecorator the current instance + * @return $this * * @throws InvalidArgumentException when $index isn't an integer - * - * @api */ public function replaceArgument($index, $value) { - if (!is_int($index)) { + if (!\is_int($index)) { throw new InvalidArgumentException('$index must be an integer.'); } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/Dumper.php b/civicrm/vendor/symfony/dependency-injection/Dumper/Dumper.php similarity index 82% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/Dumper.php rename to civicrm/vendor/symfony/dependency-injection/Dumper/Dumper.php index 98924014ad0db2d30393e733b8307f497cb05168..e7407b0e2a8bf7fe2a1bdadfab942b74976ac3e3 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/Dumper.php +++ b/civicrm/vendor/symfony/dependency-injection/Dumper/Dumper.php @@ -17,20 +17,11 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; * Dumper is the abstract class for all built-in dumpers. * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ abstract class Dumper implements DumperInterface { protected $container; - /** - * Constructor. - * - * @param ContainerBuilder $container The service container to dump - * - * @api - */ public function __construct(ContainerBuilder $container) { $this->container = $container; diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/DumperInterface.php b/civicrm/vendor/symfony/dependency-injection/Dumper/DumperInterface.php similarity index 95% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/DumperInterface.php rename to civicrm/vendor/symfony/dependency-injection/Dumper/DumperInterface.php index ba146f61c0dde3a461de70d68a354c148ae7d63f..dd001e4ed080c4441bf25b3af568b325ba0088b2 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/DumperInterface.php +++ b/civicrm/vendor/symfony/dependency-injection/Dumper/DumperInterface.php @@ -15,8 +15,6 @@ namespace Symfony\Component\DependencyInjection\Dumper; * DumperInterface is the interface implemented by service container dumper classes. * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ interface DumperInterface { @@ -26,8 +24,6 @@ interface DumperInterface * @param array $options An array of options * * @return string The representation of the service container - * - * @api */ public function dump(array $options = array()); } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/GraphvizDumper.php b/civicrm/vendor/symfony/dependency-injection/Dumper/GraphvizDumper.php similarity index 90% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/GraphvizDumper.php rename to civicrm/vendor/symfony/dependency-injection/Dumper/GraphvizDumper.php index 5f35a1e5bb116f1aacffc9122cda273ce7de08c9..dfb0dee19325f79c46631f8173230cffe1920bbc 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/GraphvizDumper.php +++ b/civicrm/vendor/symfony/dependency-injection/Dumper/GraphvizDumper.php @@ -11,13 +11,13 @@ namespace Symfony\Component\DependencyInjection\Dumper; +use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; -use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\Parameter; -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag; +use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\Scope; /** @@ -54,8 +54,6 @@ class GraphvizDumper extends Dumper * * node.definition: The default options for services that are defined via service definition instances * * node.missing: The default options for missing services * - * @param array $options An array of options - * * @return string The dot representation of the service container */ public function dump(array $options = array()) @@ -130,13 +128,13 @@ class GraphvizDumper extends Dumper * * @return array An array of edges */ - private function findEdges($id, $arguments, $required, $name) + private function findEdges($id, array $arguments, $required, $name) { $edges = array(); foreach ($arguments as $argument) { if ($argument instanceof Parameter) { $argument = $this->container->hasParameter($argument) ? $this->container->getParameter($argument) : null; - } elseif (is_string($argument) && preg_match('/^%([^%]+)%$/', $argument, $match)) { + } elseif (\is_string($argument) && preg_match('/^%([^%]+)%$/', $argument, $match)) { $argument = $this->container->hasParameter($match[1]) ? $this->container->getParameter($match[1]) : null; } @@ -146,7 +144,7 @@ class GraphvizDumper extends Dumper } $edges[] = array('name' => $name, 'required' => $required, 'to' => $argument); - } elseif (is_array($argument)) { + } elseif (\is_array($argument)) { $edges = array_merge($edges, $this->findEdges($id, $argument, $required, $name)); } } @@ -166,14 +164,18 @@ class GraphvizDumper extends Dumper $container = $this->cloneContainer(); foreach ($container->getDefinitions() as $id => $definition) { - $className = $definition->getClass(); + $class = $definition->getClass(); + + if ('\\' === substr($class, 0, 1)) { + $class = substr($class, 1); + } try { - $className = $this->container->getParameterBag()->resolveValue($className); + $class = $this->container->getParameterBag()->resolveValue($class); } catch (ParameterNotFoundException $e) { } - $nodes[$id] = array('class' => str_replace('\\', '\\\\', $className), 'attributes' => array_merge($this->options['node.definition'], array('style' => ContainerInterface::SCOPE_PROTOTYPE !== $definition->getScope() ? 'filled' : 'dotted'))); + $nodes[$id] = array('class' => str_replace('\\', '\\\\', $class), 'attributes' => array_merge($this->options['node.definition'], array('style' => $definition->isShared() && ContainerInterface::SCOPE_PROTOTYPE !== $definition->getScope(false) ? 'filled' : 'dotted'))); $container->setDefinition($id, new Definition('stdClass')); } @@ -185,7 +187,7 @@ class GraphvizDumper extends Dumper } if (!$container->hasDefinition($id)) { - $class = ('service_container' === $id) ? get_class($this->container) : get_class($service); + $class = ('service_container' === $id) ? \get_class($this->container) : \get_class($service); $nodes[$id] = array('class' => str_replace('\\', '\\\\', $class), 'attributes' => $this->options['node.instance']); } } @@ -201,7 +203,7 @@ class GraphvizDumper extends Dumper $container->setDefinitions($this->container->getDefinitions()); $container->setAliases($this->container->getAliases()); $container->setResources($this->container->getResources()); - foreach ($this->container->getScopes() as $scope => $parentScope) { + foreach ($this->container->getScopes(false) as $scope => $parentScope) { $container->addScope(new Scope($scope, $parentScope)); } foreach ($this->container->getExtensions() as $extension) { @@ -242,7 +244,7 @@ class GraphvizDumper extends Dumper * * @return string A comma separated list of attributes */ - private function addAttributes($attributes) + private function addAttributes(array $attributes) { $code = array(); foreach ($attributes as $k => $v) { @@ -259,7 +261,7 @@ class GraphvizDumper extends Dumper * * @return string A space separated list of options */ - private function addOptions($options) + private function addOptions(array $options) { $code = array(); foreach ($options as $k => $v) { diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php b/civicrm/vendor/symfony/dependency-injection/Dumper/PhpDumper.php similarity index 77% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php rename to civicrm/vendor/symfony/dependency-injection/Dumper/PhpDumper.php index df3e50ece8e32ad9f00db92741fd67b63a207f4d..fc8092f4a34ec6c5c18da4787b7759027d5bab6d 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php +++ b/civicrm/vendor/symfony/dependency-injection/Dumper/PhpDumper.php @@ -11,43 +11,38 @@ namespace Symfony\Component\DependencyInjection\Dumper; -use Symfony\Component\DependencyInjection\Variable; -use Symfony\Component\DependencyInjection\Definition; -use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Container; +use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\DependencyInjection\Reference; -use Symfony\Component\DependencyInjection\Parameter; +use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use Symfony\Component\DependencyInjection\Exception\RuntimeException; use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException; +use Symfony\Component\DependencyInjection\ExpressionLanguage; use Symfony\Component\DependencyInjection\LazyProxy\PhpDumper\DumperInterface as ProxyDumper; use Symfony\Component\DependencyInjection\LazyProxy\PhpDumper\NullDumper; -use Symfony\Component\DependencyInjection\ExpressionLanguage; +use Symfony\Component\DependencyInjection\Parameter; +use Symfony\Component\DependencyInjection\Reference; +use Symfony\Component\DependencyInjection\Variable; use Symfony\Component\ExpressionLanguage\Expression; use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface; +use Symfony\Component\HttpKernel\Kernel; /** * PhpDumper dumps a service container as a PHP class. * * @author Fabien Potencier <fabien@symfony.com> * @author Johannes M. Schmitt <schmittjoh@gmail.com> - * - * @api */ class PhpDumper extends Dumper { /** * Characters that might appear in the generated variable name as first character. - * - * @var string */ const FIRST_CHARS = 'abcdefghijklmnopqrstuvwxyz'; /** * Characters that might appear in the generated variable name as any but the first character. - * - * @var string */ const NON_FIRST_CHARS = 'abcdefghijklmnopqrstuvwxyz0123456789_'; @@ -59,6 +54,7 @@ class PhpDumper extends Dumper private $expressionLanguage; private $targetDirRegex; private $targetDirMaxMatches; + private $docStar; /** * @var ExpressionFunctionProviderInterface[] @@ -66,14 +62,12 @@ class PhpDumper extends Dumper private $expressionLanguageProviders = array(); /** - * @var \Symfony\Component\DependencyInjection\LazyProxy\PhpDumper\DumperInterface + * @var ProxyDumper */ private $proxyDumper; /** * {@inheritdoc} - * - * @api */ public function __construct(ContainerBuilder $container) { @@ -84,8 +78,6 @@ class PhpDumper extends Dumper /** * Sets the dumper to be used when dumping proxies in the generated container. - * - * @param ProxyDumper $proxyDumper */ public function setProxyDumper(ProxyDumper $proxyDumper) { @@ -101,11 +93,7 @@ class PhpDumper extends Dumper * * base_class: The base class name * * namespace: The class namespace * - * @param array $options An array of options - * * @return string A PHP class representing of the service container - * - * @api */ public function dump(array $options = array()) { @@ -114,15 +102,17 @@ class PhpDumper extends Dumper 'class' => 'ProjectServiceContainer', 'base_class' => 'Container', 'namespace' => '', + 'debug' => true, ), $options); + $this->docStar = $options['debug'] ? '*' : ''; - if (!empty($options['file']) && is_dir($dir = dirname($options['file']))) { + if (!empty($options['file']) && is_dir($dir = \dirname($options['file']))) { // Build a regexp where the first root dirs are mandatory, // but every other sub-dir is optional up to the full path in $dir // Mandate at least 2 root dirs and not more that 5 optional dirs. - $dir = explode(DIRECTORY_SEPARATOR, realpath($dir)); - $i = count($dir); + $dir = explode(\DIRECTORY_SEPARATOR, realpath($dir)); + $i = \count($dir); if (3 <= $i) { $regex = ''; @@ -130,11 +120,11 @@ class PhpDumper extends Dumper $this->targetDirMaxMatches = $i - $lastOptionalDir; while (--$i >= $lastOptionalDir) { - $regex = sprintf('(%s%s)?', preg_quote(DIRECTORY_SEPARATOR.$dir[$i], '#'), $regex); + $regex = sprintf('(%s%s)?', preg_quote(\DIRECTORY_SEPARATOR.$dir[$i], '#'), $regex); } do { - $regex = preg_quote(DIRECTORY_SEPARATOR.$dir[$i], '#').$regex; + $regex = preg_quote(\DIRECTORY_SEPARATOR.$dir[$i], '#').$regex; } while (0 < --$i); $this->targetDirRegex = '#'.preg_quote($dir[0], '#').$regex.'#'; @@ -146,6 +136,7 @@ class PhpDumper extends Dumper if ($this->container->isFrozen()) { $code .= $this->addFrozenConstructor(); $code .= $this->addFrozenCompile(); + $code .= $this->addIsFrozenMethod(); } else { $code .= $this->addConstructor(); } @@ -239,9 +230,15 @@ class PhpDumper extends Dumper array($this->getProxyDumper(), 'isProxyCandidate') ); $code = ''; + $strip = '' === $this->docStar && method_exists('Symfony\Component\HttpKernel\Kernel', 'stripComments'); foreach ($definitions as $definition) { - $code .= "\n".$this->getProxyDumper()->getProxyCode($definition); + $proxyCode = "\n".$this->getProxyDumper()->getProxyCode($definition); + if ($strip) { + $proxyCode = "<?php\n".$proxyCode; + $proxyCode = substr(Kernel::stripComments($proxyCode), 5); + } + $code .= $proxyCode; } return $code; @@ -250,12 +247,9 @@ class PhpDumper extends Dumper /** * Generates the require_once statement for service includes. * - * @param string $id The service id - * @param Definition $definition - * * @return string */ - private function addServiceInclude($id, $definition) + private function addServiceInclude(Definition $definition) { $template = " require_once %s;\n"; $code = ''; @@ -288,7 +282,7 @@ class PhpDumper extends Dumper * @throws RuntimeException When the factory definition is incomplete * @throws ServiceCircularReferenceException When a circular reference is detected */ - private function addServiceInlinedDefinitions($id, $definition) + private function addServiceInlinedDefinitions($id, Definition $definition) { $code = ''; $variableMap = $this->definitionVariables; @@ -330,9 +324,9 @@ class PhpDumper extends Dumper $code .= $this->addNewInstance($id, $sDefinition, '$'.$name, ' = '); if (!$this->hasReference($id, $sDefinition->getMethodCalls(), true) && !$this->hasReference($id, $sDefinition->getProperties(), true)) { - $code .= $this->addServiceMethodCalls(null, $sDefinition, $name); - $code .= $this->addServiceProperties(null, $sDefinition, $name); - $code .= $this->addServiceConfigurator(null, $sDefinition, $name); + $code .= $this->addServiceProperties($sDefinition, $name); + $code .= $this->addServiceMethodCalls($sDefinition, $name); + $code .= $this->addServiceConfigurator($sDefinition, $name); } $code .= "\n"; @@ -350,7 +344,7 @@ class PhpDumper extends Dumper * * @return string */ - private function addServiceReturn($id, $definition) + private function addServiceReturn($id, Definition $definition) { if ($this->isSimpleInstance($id, $definition)) { return " }\n"; @@ -370,11 +364,11 @@ class PhpDumper extends Dumper * @throws InvalidArgumentException * @throws RuntimeException */ - private function addServiceInstance($id, $definition) + private function addServiceInstance($id, Definition $definition) { $class = $this->dumpValue($definition->getClass()); - if (0 === strpos($class, "'") && !preg_match('/^\'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(\\\{2}[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)*\'$/', $class)) { + if (0 === strpos($class, "'") && !preg_match('/^\'(?:\\\{2})?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?:\\\{2}[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)*\'$/', $class)) { throw new InvalidArgumentException(sprintf('"%s" is not a valid class name for the "%s" service.', $class, $id)); } @@ -382,9 +376,9 @@ class PhpDumper extends Dumper $isProxyCandidate = $this->getProxyDumper()->isProxyCandidate($definition); $instantiation = ''; - if (!$isProxyCandidate && ContainerInterface::SCOPE_CONTAINER === $definition->getScope()) { + if (!$isProxyCandidate && $definition->isShared() && ContainerInterface::SCOPE_CONTAINER === $definition->getScope(false)) { $instantiation = "\$this->services['$id'] = ".($simple ? '' : '$instance'); - } elseif (!$isProxyCandidate && ContainerInterface::SCOPE_PROTOTYPE !== $scope = $definition->getScope()) { + } elseif (!$isProxyCandidate && $definition->isShared() && ContainerInterface::SCOPE_PROTOTYPE !== $scope = $definition->getScope(false)) { $instantiation = "\$this->services['$id'] = \$this->scopedServices['$scope']['$id'] = ".($simple ? '' : '$instance'); } elseif (!$simple) { $instantiation = '$instance'; @@ -414,7 +408,7 @@ class PhpDumper extends Dumper * * @return bool */ - private function isSimpleInstance($id, $definition) + private function isSimpleInstance($id, Definition $definition) { foreach (array_merge(array($definition), $this->getInlinedDefinitions($definition)) as $sDefinition) { if ($definition !== $sDefinition && !$this->hasReference($id, $sDefinition->getMethodCalls())) { @@ -432,13 +426,12 @@ class PhpDumper extends Dumper /** * Adds method calls to a service definition. * - * @param string $id * @param Definition $definition * @param string $variableName * * @return string */ - private function addServiceMethodCalls($id, $definition, $variableName = 'instance') + private function addServiceMethodCalls(Definition $definition, $variableName = 'instance') { $calls = ''; foreach ($definition->getMethodCalls() as $call) { @@ -453,7 +446,7 @@ class PhpDumper extends Dumper return $calls; } - private function addServiceProperties($id, $definition, $variableName = 'instance') + private function addServiceProperties(Definition $definition, $variableName = 'instance') { $code = ''; foreach ($definition->getProperties() as $name => $value) { @@ -473,7 +466,7 @@ class PhpDumper extends Dumper * * @throws ServiceCircularReferenceException when the container contains a circular reference */ - private function addServiceInlinedDefinitionsSetup($id, $definition) + private function addServiceInlinedDefinitionsSetup($id, Definition $definition) { $this->referenceVariables[$id] = new Variable('instance'); @@ -496,9 +489,9 @@ class PhpDumper extends Dumper } $name = (string) $this->definitionVariables->offsetGet($iDefinition); - $code .= $this->addServiceMethodCalls(null, $iDefinition, $name); - $code .= $this->addServiceProperties(null, $iDefinition, $name); - $code .= $this->addServiceConfigurator(null, $iDefinition, $name); + $code .= $this->addServiceProperties($iDefinition, $name); + $code .= $this->addServiceMethodCalls($iDefinition, $name); + $code .= $this->addServiceConfigurator($iDefinition, $name); } if ('' !== $code) { @@ -511,19 +504,18 @@ class PhpDumper extends Dumper /** * Adds configurator definition. * - * @param string $id * @param Definition $definition * @param string $variableName * * @return string */ - private function addServiceConfigurator($id, $definition, $variableName = 'instance') + private function addServiceConfigurator(Definition $definition, $variableName = 'instance') { if (!$callable = $definition->getConfigurator()) { return ''; } - if (is_array($callable)) { + if (\is_array($callable)) { if ($callable[0] instanceof Reference || ($callable[0] instanceof Definition && $this->definitionVariables->contains($callable[0]))) { return sprintf(" %s->%s(\$%s);\n", $this->dumpValue($callable[0]), $callable[1], $variableName); @@ -531,7 +523,7 @@ class PhpDumper extends Dumper $class = $this->dumpValue($callable[0]); // If the class is a string we can optimize call_user_func away - if (strpos($class, "'") === 0) { + if (0 === strpos($class, "'")) { return sprintf(" %s::%s(\$%s);\n", $this->dumpLiteralClass($class), $callable[1], $variableName); } @@ -549,7 +541,7 @@ class PhpDumper extends Dumper * * @return string */ - private function addService($id, $definition) + private function addService($id, Definition $definition) { $this->definitionVariables = new \SplObjectStorage(); $this->referenceVariables = array(); @@ -560,60 +552,50 @@ class PhpDumper extends Dumper if ($definition->isSynthetic()) { $return[] = '@throws RuntimeException always since this service is expected to be injected dynamically'; } elseif ($class = $definition->getClass()) { - $return[] = sprintf('@return %s A %s instance.', 0 === strpos($class, '%') ? 'object' : '\\'.$class, $class); + $return[] = sprintf(0 === strpos($class, '%') ? '@return object A %1$s instance' : '@return \%s', ltrim($class, '\\')); } elseif ($definition->getFactory()) { $factory = $definition->getFactory(); - if (is_string($factory)) { - $return[] = sprintf('@return object An instance returned by %s().', $factory); - } elseif (is_array($factory) && (is_string($factory[0]) || $factory[0] instanceof Definition || $factory[0] instanceof Reference)) { - if (is_string($factory[0]) || $factory[0] instanceof Reference) { - $return[] = sprintf('@return object An instance returned by %s::%s().', (string) $factory[0], $factory[1]); + if (\is_string($factory)) { + $return[] = sprintf('@return object An instance returned by %s()', $factory); + } elseif (\is_array($factory) && (\is_string($factory[0]) || $factory[0] instanceof Definition || $factory[0] instanceof Reference)) { + if (\is_string($factory[0]) || $factory[0] instanceof Reference) { + $return[] = sprintf('@return object An instance returned by %s::%s()', (string) $factory[0], $factory[1]); } elseif ($factory[0] instanceof Definition) { - $return[] = sprintf('@return object An instance returned by %s::%s().', $factory[0]->getClass(), $factory[1]); + $return[] = sprintf('@return object An instance returned by %s::%s()', $factory[0]->getClass(), $factory[1]); } } - } elseif ($definition->getFactoryClass()) { - $return[] = sprintf('@return object An instance returned by %s::%s().', $definition->getFactoryClass(), $definition->getFactoryMethod()); - } elseif ($definition->getFactoryService()) { - $return[] = sprintf('@return object An instance returned by %s::%s().', $definition->getFactoryService(), $definition->getFactoryMethod()); + } elseif ($definition->getFactoryClass(false)) { + $return[] = sprintf('@return object An instance returned by %s::%s()', $definition->getFactoryClass(false), $definition->getFactoryMethod(false)); + } elseif ($definition->getFactoryService(false)) { + $return[] = sprintf('@return object An instance returned by %s::%s()', $definition->getFactoryService(false), $definition->getFactoryMethod(false)); } - $scope = $definition->getScope(); - if (!in_array($scope, array(ContainerInterface::SCOPE_CONTAINER, ContainerInterface::SCOPE_PROTOTYPE))) { - if ($return && 0 === strpos($return[count($return) - 1], '@return')) { + $scope = $definition->getScope(false); + if (!\in_array($scope, array(ContainerInterface::SCOPE_CONTAINER, ContainerInterface::SCOPE_PROTOTYPE))) { + if ($return && 0 === strpos($return[\count($return) - 1], '@return')) { $return[] = ''; } $return[] = sprintf("@throws InactiveScopeException when the '%s' service is requested while the '%s' scope is not active", $id, $scope); } - $return = implode("\n * ", $return); - - $doc = ''; - if (ContainerInterface::SCOPE_PROTOTYPE !== $scope) { - $doc .= <<<EOF + if ($definition->isDeprecated()) { + if ($return && 0 === strpos($return[\count($return) - 1], '@return')) { + $return[] = ''; + } - * - * This service is shared. - * This method always returns the same instance of the service. -EOF; + $return[] = sprintf('@deprecated %s', $definition->getDeprecationMessage($id)); } - if (!$definition->isPublic()) { - $doc .= <<<EOF + $return = str_replace("\n * \n", "\n *\n", implode("\n * ", $return)); - * - * This service is private. - * If you want to be able to request this service from the container directly, - * make it public, otherwise you might end up with broken code. -EOF; - } + $shared = $definition->isShared() && ContainerInterface::SCOPE_PROTOTYPE !== $scope ? ' shared' : ''; + $public = $definition->isPublic() ? 'public' : 'private'; + $autowired = $definition->isAutowired() ? ' autowired' : ''; if ($definition->isLazy()) { $lazyInitialization = '$lazyLoad = true'; - $lazyInitializationDoc = "\n * @param bool \$lazyLoad whether to try lazy-loading the service with a proxy\n *"; } else { $lazyInitialization = ''; - $lazyInitializationDoc = ''; } // with proxies, for 5.3.3 compatibility, the getter must be public to be accessible to the initializer @@ -621,9 +603,9 @@ EOF; $visibility = $isProxyCandidate ? 'public' : 'protected'; $code = <<<EOF - /** - * Gets the '$id' service.$doc - *$lazyInitializationDoc + /*{$this->docStar} + * Gets the $public '$id'$shared$autowired service. + * * $return */ {$visibility} function get{$this->camelize($id)}Service($lazyInitialization) @@ -633,7 +615,7 @@ EOF; $code .= $isProxyCandidate ? $this->getProxyDumper()->getProxyFactoryCode($definition, $id) : ''; - if (!in_array($scope, array(ContainerInterface::SCOPE_CONTAINER, ContainerInterface::SCOPE_PROTOTYPE))) { + if (!\in_array($scope, array(ContainerInterface::SCOPE_CONTAINER, ContainerInterface::SCOPE_PROTOTYPE))) { $code .= <<<EOF if (!isset(\$this->scopedServices['$scope'])) { throw new InactiveScopeException('$id', '$scope'); @@ -646,15 +628,19 @@ EOF; if ($definition->isSynthetic()) { $code .= sprintf(" throw new RuntimeException('You have requested a synthetic service (\"%s\"). The DIC does not know how to construct this service.');\n }\n", $id); } else { + if ($definition->isDeprecated()) { + $code .= sprintf(" @trigger_error(%s, E_USER_DEPRECATED);\n\n", var_export($definition->getDeprecationMessage($id), true)); + } + $code .= - $this->addServiceInclude($id, $definition). + $this->addServiceInclude($definition). $this->addServiceLocalTempVariables($id, $definition). $this->addServiceInlinedDefinitions($id, $definition). $this->addServiceInstance($id, $definition). $this->addServiceInlinedDefinitionsSetup($id, $definition). - $this->addServiceMethodCalls($id, $definition). - $this->addServiceProperties($id, $definition). - $this->addServiceConfigurator($id, $definition). + $this->addServiceProperties($definition). + $this->addServiceMethodCalls($definition). + $this->addServiceConfigurator($definition). $this->addServiceReturn($id, $definition) ; } @@ -695,13 +681,19 @@ EOF; * @param Definition $definition A Definition instance * * @return string|null + * + * @deprecated since version 2.7, will be removed in 3.0. */ private function addServiceSynchronizer($id, Definition $definition) { - if (!$definition->isSynchronized()) { + if (!$definition->isSynchronized(false)) { return; } + if ('request' !== $id) { + @trigger_error('Synchronized services were deprecated in version 2.7 and won\'t work anymore in 3.0.', E_USER_DEPRECATED); + } + $code = ''; foreach ($this->container->getDefinitions() as $definitionId => $definition) { foreach ($definition->getMethodCalls() as $call) { @@ -731,7 +723,7 @@ EOF; return <<<EOF - /** + /*{$this->docStar} * Updates the '$id' service. */ protected function synchronize{$this->camelize($id)}Service() @@ -752,7 +744,11 @@ EOF; if (null !== $definition->getFactory()) { $callable = $definition->getFactory(); - if (is_array($callable)) { + if (\is_array($callable)) { + if (!preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $callable[1])) { + throw new RuntimeException(sprintf('Cannot dump definition because of invalid factory method (%s)', $callable[1] ?: 'n/a')); + } + if ($callable[0] instanceof Reference || ($callable[0] instanceof Definition && $this->definitionVariables->contains($callable[0]))) { return sprintf(" $return{$instantiation}%s->%s(%s);\n", $this->dumpValue($callable[0]), $callable[1], $arguments ? implode(', ', $arguments) : ''); @@ -760,7 +756,7 @@ EOF; $class = $this->dumpValue($callable[0]); // If the class is a string we can optimize call_user_func away - if (strpos($class, "'") === 0) { + if (0 === strpos($class, "'")) { return sprintf(" $return{$instantiation}%s::%s(%s);\n", $this->dumpLiteralClass($class), $callable[1], $arguments ? implode(', ', $arguments) : ''); } @@ -768,20 +764,20 @@ EOF; } return sprintf(" $return{$instantiation}\\%s(%s);\n", $callable, $arguments ? implode(', ', $arguments) : ''); - } elseif (null !== $definition->getFactoryMethod()) { - if (null !== $definition->getFactoryClass()) { - $class = $this->dumpValue($definition->getFactoryClass()); + } elseif (null !== $definition->getFactoryMethod(false)) { + if (null !== $definition->getFactoryClass(false)) { + $class = $this->dumpValue($definition->getFactoryClass(false)); // If the class is a string we can optimize call_user_func away - if (strpos($class, "'") === 0) { - return sprintf(" $return{$instantiation}%s::%s(%s);\n", $this->dumpLiteralClass($class), $definition->getFactoryMethod(), $arguments ? implode(', ', $arguments) : ''); + if (0 === strpos($class, "'")) { + return sprintf(" $return{$instantiation}%s::%s(%s);\n", $this->dumpLiteralClass($class), $definition->getFactoryMethod(false), $arguments ? implode(', ', $arguments) : ''); } - return sprintf(" $return{$instantiation}call_user_func(array(%s, '%s')%s);\n", $this->dumpValue($definition->getFactoryClass()), $definition->getFactoryMethod(), $arguments ? ', '.implode(', ', $arguments) : ''); + return sprintf(" $return{$instantiation}call_user_func(array(%s, '%s')%s);\n", $this->dumpValue($definition->getFactoryClass(false)), $definition->getFactoryMethod(false), $arguments ? ', '.implode(', ', $arguments) : ''); } - if (null !== $definition->getFactoryService()) { - return sprintf(" $return{$instantiation}%s->%s(%s);\n", $this->getServiceCall($definition->getFactoryService()), $definition->getFactoryMethod(), implode(', ', $arguments)); + if (null !== $definition->getFactoryService(false)) { + return sprintf(" $return{$instantiation}%s->%s(%s);\n", $this->getServiceCall($definition->getFactoryService(false)), $definition->getFactoryMethod(false), implode(', ', $arguments)); } throw new RuntimeException(sprintf('Factory method requires a factory service or factory class in service definition for %s', $id)); @@ -806,7 +802,7 @@ EOF; private function startClass($class, $baseClass, $namespace) { $bagClass = $this->container->isFrozen() ? 'use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag;' : 'use Symfony\Component\DependencyInjection\ParameterBag\\ParameterBag;'; - $namespaceLine = $namespace ? "namespace $namespace;\n" : ''; + $namespaceLine = $namespace ? "\nnamespace $namespace;\n" : ''; return <<<EOF <?php @@ -819,9 +815,7 @@ use Symfony\Component\DependencyInjection\Exception\LogicException; use Symfony\Component\DependencyInjection\Exception\RuntimeException; $bagClass -/** - * $class. - * +/*{$this->docStar} * This class has been auto-generated * by the Symfony Dependency Injection Component. */ @@ -845,25 +839,22 @@ EOF; $code = <<<EOF - /** - * Constructor. - */ public function __construct() {{$targetDirs} parent::__construct($arguments); EOF; - if (count($scopes = $this->container->getScopes()) > 0) { + if (\count($scopes = $this->container->getScopes(false)) > 0) { $code .= "\n"; $code .= ' $this->scopes = '.$this->dumpValue($scopes).";\n"; - $code .= ' $this->scopeChildren = '.$this->dumpValue($this->container->getScopeChildren()).";\n"; + $code .= ' $this->scopeChildren = '.$this->dumpValue($this->container->getScopeChildren(false)).";\n"; } $code .= $this->addMethodMap(); $code .= $this->addAliases(); - $code .= <<<EOF + $code .= <<<'EOF' } EOF; @@ -882,9 +873,6 @@ EOF; $code = <<<EOF - /** - * Constructor. - */ public function __construct() {{$targetDirs} EOF; @@ -893,17 +881,17 @@ EOF; $code .= "\n \$this->parameters = \$this->getDefaultParameters();\n"; } - $code .= <<<EOF + $code .= <<<'EOF' - \$this->services = - \$this->scopedServices = - \$this->scopeStacks = array(); + $this->services = + $this->scopedServices = + $this->scopeStacks = array(); EOF; $code .= "\n"; - if (count($scopes = $this->container->getScopes()) > 0) { + if (\count($scopes = $this->container->getScopes(false)) > 0) { $code .= ' $this->scopes = '.$this->dumpValue($scopes).";\n"; - $code .= ' $this->scopeChildren = '.$this->dumpValue($this->container->getScopeChildren()).";\n"; + $code .= ' $this->scopeChildren = '.$this->dumpValue($this->container->getScopeChildren(false)).";\n"; } else { $code .= " \$this->scopes = array();\n"; $code .= " \$this->scopeChildren = array();\n"; @@ -912,7 +900,7 @@ EOF; $code .= $this->addMethodMap(); $code .= $this->addAliases(); - $code .= <<<EOF + $code .= <<<'EOF' } EOF; @@ -929,7 +917,7 @@ EOF; { return <<<EOF - /** + /*{$this->docStar} * {@inheritdoc} */ public function compile() @@ -937,6 +925,26 @@ EOF; throw new LogicException('You cannot compile a dumped frozen container.'); } +EOF; + } + + /** + * Adds the isFrozen method for a frozen container. + * + * @return string + */ + private function addIsFrozenMethod() + { + return <<<EOF + + /*{$this->docStar} + * {@inheritdoc} + */ + public function isFrozen() + { + return true; + } + EOF; } @@ -968,11 +976,7 @@ EOF; private function addAliases() { if (!$aliases = $this->container->getAliases()) { - if ($this->container->isFrozen()) { - return "\n \$this->aliases = array();\n"; - } else { - return ''; - } + return $this->container->isFrozen() ? "\n \$this->aliases = array();\n" : ''; } $code = " \$this->aliases = array(\n"; @@ -1003,36 +1007,36 @@ EOF; $code = ''; if ($this->container->isFrozen()) { - $code .= <<<EOF + $code .= <<<'EOF' /** * {@inheritdoc} */ - public function getParameter(\$name) + public function getParameter($name) { - \$name = strtolower(\$name); + $name = strtolower($name); - if (!(isset(\$this->parameters[\$name]) || array_key_exists(\$name, \$this->parameters))) { - throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', \$name)); + if (!(isset($this->parameters[$name]) || array_key_exists($name, $this->parameters))) { + throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name)); } - return \$this->parameters[\$name]; + return $this->parameters[$name]; } /** * {@inheritdoc} */ - public function hasParameter(\$name) + public function hasParameter($name) { - \$name = strtolower(\$name); + $name = strtolower($name); - return isset(\$this->parameters[\$name]) || array_key_exists(\$name, \$this->parameters); + return isset($this->parameters[$name]) || array_key_exists($name, $this->parameters); } /** * {@inheritdoc} */ - public function setParameter(\$name, \$value) + public function setParameter($name, $value) { throw new LogicException('Impossible to call set() on a frozen ParameterBag.'); } @@ -1042,19 +1046,22 @@ EOF; */ public function getParameterBag() { - if (null === \$this->parameterBag) { - \$this->parameterBag = new FrozenParameterBag(\$this->parameters); + if (null === $this->parameterBag) { + $this->parameterBag = new FrozenParameterBag($this->parameters); } - return \$this->parameterBag; + return $this->parameterBag; } EOF; + if ('' === $this->docStar) { + $code = str_replace('/**', '/*', $code); + } } $code .= <<<EOF - /** + /*{$this->docStar} * Gets the default parameters. * * @return array An array of the default parameters @@ -1080,11 +1087,11 @@ EOF; * * @throws InvalidArgumentException */ - private function exportParameters($parameters, $path = '', $indent = 12) + private function exportParameters(array $parameters, $path = '', $indent = 12) { $php = array(); foreach ($parameters as $key => $value) { - if (is_array($value)) { + if (\is_array($value)) { $value = $this->exportParameters($value, $path.'/'.$key, $indent + 4); } elseif ($value instanceof Variable) { throw new InvalidArgumentException(sprintf('You cannot dump a container with parameters that contain variable references. Variable "%s" found in "%s".', $value, $path.'/'.$key)); @@ -1111,7 +1118,7 @@ EOF; */ private function endClass() { - return <<<EOF + return <<<'EOF' } EOF; @@ -1144,15 +1151,11 @@ EOF; /** * Builds service calls from arguments. - * - * @param array $arguments - * @param array &$calls By reference - * @param array &$behavior By reference */ private function getServiceCallsFromArguments(array $arguments, array &$calls, array &$behavior) { foreach ($arguments as $argument) { - if (is_array($argument)) { + if (\is_array($argument)) { $this->getServiceCallsFromArguments($argument, $calls, $behavior); } elseif ($argument instanceof Reference) { $id = (string) $argument; @@ -1174,8 +1177,6 @@ EOF; /** * Returns the inline definition. * - * @param Definition $definition - * * @return array */ private function getInlinedDefinitions(Definition $definition) @@ -1200,15 +1201,13 @@ EOF; /** * Gets the definition from arguments. * - * @param array $arguments - * * @return array */ private function getDefinitionsFromArguments(array $arguments) { $definitions = array(); foreach ($arguments as $argument) { - if (is_array($argument)) { + if (\is_array($argument)) { $definitions = array_merge($definitions, $this->getDefinitionsFromArguments($argument)); } elseif ($argument instanceof Definition) { $definitions = array_merge( @@ -1235,7 +1234,7 @@ EOF; private function hasReference($id, array $arguments, $deep = false, array &$visited = array()) { foreach ($arguments as $argument) { - if (is_array($argument)) { + if (\is_array($argument)) { if ($this->hasReference($id, $argument, $deep, $visited)) { return true; } @@ -1245,10 +1244,17 @@ EOF; return true; } - if ($deep && !isset($visited[$argumentId])) { + if ($deep && !isset($visited[$argumentId]) && 'service_container' !== $argumentId) { $visited[$argumentId] = true; $service = $this->container->getDefinition($argumentId); + + // if the proxy manager is enabled, disable searching for references in lazy services, + // as these services will be instantiated lazily and don't have direct related references. + if ($service->isLazy() && !$this->getProxyDumper() instanceof NullDumper) { + continue; + } + $arguments = array_merge($service->getMethodCalls(), $service->getArguments(), $service->getProperties()); if ($this->hasReference($id, $arguments, $deep, $visited)) { @@ -1273,7 +1279,7 @@ EOF; */ private function dumpValue($value, $interpolate = true) { - if (is_array($value)) { + if (\is_array($value)) { $code = array(); foreach ($value as $k => $v) { $code[] = sprintf('%s => %s', $this->dumpValue($k, $interpolate), $this->dumpValue($v, $interpolate)); @@ -1284,9 +1290,12 @@ EOF; if (null !== $this->definitionVariables && $this->definitionVariables->contains($value)) { return $this->dumpValue($this->definitionVariables->offsetGet($value), $interpolate); } - if (count($value->getMethodCalls()) > 0) { + if ($value->getMethodCalls()) { throw new RuntimeException('Cannot dump definitions which have method calls.'); } + if ($value->getProperties()) { + throw new RuntimeException('Cannot dump definitions which have properties.'); + } if (null !== $value->getConfigurator()) { throw new RuntimeException('Cannot dump definitions which have a configurator.'); } @@ -1299,17 +1308,21 @@ EOF; if (null !== $value->getFactory()) { $factory = $value->getFactory(); - if (is_string($factory)) { + if (\is_string($factory)) { return sprintf('\\%s(%s)', $factory, implode(', ', $arguments)); } - if (is_array($factory)) { - if (is_string($factory[0])) { - return sprintf('\\%s::%s(%s)', $factory[0], $factory[1], implode(', ', $arguments)); + if (\is_array($factory)) { + if (!preg_match('/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/', $factory[1])) { + throw new RuntimeException(sprintf('Cannot dump definition because of invalid factory method (%s)', $factory[1] ?: 'n/a')); + } + + if (\is_string($factory[0])) { + return sprintf('%s::%s(%s)', $this->dumpLiteralClass($this->dumpValue($factory[0])), $factory[1], implode(', ', $arguments)); } if ($factory[0] instanceof Definition) { - return sprintf("call_user_func(array(%s, '%s')%s)", $this->dumpValue($factory[0]), $factory[1], count($arguments) > 0 ? ', '.implode(', ', $arguments) : ''); + return sprintf("call_user_func(array(%s, '%s')%s)", $this->dumpValue($factory[0]), $factory[1], \count($arguments) > 0 ? ', '.implode(', ', $arguments) : ''); } if ($factory[0] instanceof Reference) { @@ -1320,28 +1333,24 @@ EOF; throw new RuntimeException('Cannot dump definition because of invalid factory'); } - if (null !== $value->getFactoryMethod()) { - if (null !== $value->getFactoryClass()) { - return sprintf("call_user_func(array(%s, '%s')%s)", $this->dumpValue($value->getFactoryClass()), $value->getFactoryMethod(), count($arguments) > 0 ? ', '.implode(', ', $arguments) : ''); - } elseif (null !== $value->getFactoryService()) { - $service = $this->dumpValue($value->getFactoryService()); + if (null !== $value->getFactoryMethod(false)) { + if (null !== $value->getFactoryClass(false)) { + return sprintf("call_user_func(array(%s, '%s')%s)", $this->dumpValue($value->getFactoryClass(false)), $value->getFactoryMethod(false), \count($arguments) > 0 ? ', '.implode(', ', $arguments) : ''); + } elseif (null !== $value->getFactoryService(false)) { + $service = $this->dumpValue($value->getFactoryService(false)); - return sprintf('%s->%s(%s)', 0 === strpos($service, '$') ? sprintf('$this->get(%s)', $service) : $this->getServiceCall($value->getFactoryService()), $value->getFactoryMethod(), implode(', ', $arguments)); - } else { - throw new RuntimeException('Cannot dump definitions which have factory method without factory service or factory class.'); + return sprintf('%s->%s(%s)', 0 === strpos($service, '$') ? sprintf('$this->get(%s)', $service) : $this->getServiceCall($value->getFactoryService(false)), $value->getFactoryMethod(false), implode(', ', $arguments)); } + + throw new RuntimeException('Cannot dump definitions which have factory method without factory service or factory class.'); } $class = $value->getClass(); if (null === $class) { throw new RuntimeException('Cannot dump definitions which have no class nor factory.'); } - $class = $this->dumpValue($class); - if (false !== strpos($class, '$')) { - throw new RuntimeException('Cannot dump definitions which have a variable class name.'); - } - return sprintf('new \\%s(%s)', substr(str_replace('\\\\', '\\', $class), 1, -1), implode(', ', $arguments)); + return sprintf('new %s(%s)', $this->dumpLiteralClass($this->dumpValue($class)), implode(', ', $arguments)); } elseif ($value instanceof Variable) { return '$'.$value; } elseif ($value instanceof Reference) { @@ -1354,7 +1363,7 @@ EOF; return $this->getExpressionLanguage()->compile((string) $value, array('this' => 'container')); } elseif ($value instanceof Parameter) { return $this->dumpParameter($value); - } elseif (true === $interpolate && is_string($value)) { + } elseif (true === $interpolate && \is_string($value)) { if (preg_match('/^%([^%]+)%$/', $value, $match)) { // we do this to deal with non string values (Boolean, integer, ...) // the preg_replace_callback converts them to strings @@ -1369,11 +1378,11 @@ EOF; return $code; } - } elseif (is_object($value) || is_resource($value)) { + } elseif (\is_object($value) || \is_resource($value)) { throw new RuntimeException('Unable to dump a service container if a parameter is an object or a resource.'); - } else { - return $this->export($value); } + + return $this->export($value); } /** @@ -1382,10 +1391,21 @@ EOF; * @param string $class * * @return string + * + * @throws RuntimeException */ private function dumpLiteralClass($class) { - return '\\'.substr(str_replace('\\\\', '\\', $class), 1, -1); + if (false !== strpos($class, '$')) { + throw new RuntimeException('Cannot dump definitions which have a variable class name.'); + } + if (0 !== strpos($class, "'") || !preg_match('/^\'(?:\\\{2})?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?:\\\{2}[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)*\'$/', $class)) { + throw new RuntimeException(sprintf('Cannot dump definition because of invalid class name (%s)', $class ?: 'n/a')); + } + + $class = substr(str_replace('\\\\', '\\', $class), 1, -1); + + return 0 === strpos($class, '\\') ? $class : '\\'.$class; } /** @@ -1405,12 +1425,15 @@ EOF; } /** - * @deprecated Deprecated since 2.6.2, to be removed in 3.0. Use Symfony\Component\DependencyInjection\ContainerBuilder::addExpressionLanguageProvider instead. + * @deprecated since version 2.6.2, to be removed in 3.0. + * Use \Symfony\Component\DependencyInjection\ContainerBuilder::addExpressionLanguageProvider instead. * * @param ExpressionFunctionProviderInterface $provider */ public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.6.2 and will be removed in 3.0. Use the Symfony\Component\DependencyInjection\ContainerBuilder::addExpressionLanguageProvider method instead.', E_USER_DEPRECATED); + $this->expressionLanguageProviders[] = $provider; } @@ -1424,19 +1447,19 @@ EOF; */ private function getServiceCall($id, Reference $reference = null) { + while ($this->container->hasAlias($id)) { + $id = (string) $this->container->getAlias($id); + } + if ('service_container' === $id) { return '$this'; } if (null !== $reference && ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE !== $reference->getInvalidBehavior()) { return sprintf('$this->get(\'%s\', ContainerInterface::NULL_ON_INVALID_REFERENCE)', $id); - } else { - if ($this->container->hasAlias($id)) { - $id = (string) $this->container->getAlias($id); - } - - return sprintf('$this->get(\'%s\')', $id); } + + return sprintf('$this->get(\'%s\')', $id); } /** @@ -1467,9 +1490,9 @@ EOF; private function getNextVariableName() { $firstChars = self::FIRST_CHARS; - $firstCharsLength = strlen($firstChars); + $firstCharsLength = \strlen($firstChars); $nonFirstChars = self::NON_FIRST_CHARS; - $nonFirstCharsLength = strlen($nonFirstChars); + $nonFirstCharsLength = \strlen($nonFirstChars); while (true) { $name = ''; @@ -1489,7 +1512,7 @@ EOF; ++$this->variableCount; // check that the name is not reserved - if (in_array($name, $this->reservedVariables, true)) { + if (\in_array($name, $this->reservedVariables, true)) { continue; } @@ -1529,13 +1552,13 @@ EOF; private function export($value) { - if (null !== $this->targetDirRegex && is_string($value) && preg_match($this->targetDirRegex, $value, $matches, PREG_OFFSET_CAPTURE)) { + if (null !== $this->targetDirRegex && \is_string($value) && preg_match($this->targetDirRegex, $value, $matches, PREG_OFFSET_CAPTURE)) { $prefix = $matches[0][1] ? var_export(substr($value, 0, $matches[0][1]), true).'.' : ''; - $suffix = $matches[0][1] + strlen($matches[0][0]); + $suffix = $matches[0][1] + \strlen($matches[0][0]); $suffix = isset($value[$suffix]) ? '.'.var_export(substr($value, $suffix), true) : ''; $dirname = '__DIR__'; - if (0 < $offset = 1 + $this->targetDirMaxMatches - count($matches)) { + if (0 < $offset = 1 + $this->targetDirMaxMatches - \count($matches)) { $dirname = sprintf('$this->targetDirs[%d]', $offset); } @@ -1546,6 +1569,13 @@ EOF; return $dirname; } + if (\is_string($value) && false !== strpos($value, "\n")) { + $cleanParts = explode("\n", $value); + $cleanParts = array_map(function ($part) { return var_export($part, true); }, $cleanParts); + + return implode('."\n".', $cleanParts); + } + return var_export($value, true); } } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php b/civicrm/vendor/symfony/dependency-injection/Dumper/XmlDumper.php similarity index 77% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php rename to civicrm/vendor/symfony/dependency-injection/Dumper/XmlDumper.php index 5fed552ea98cdc8bcbd0b2bd9e3ec631ba81c8fb..5a85d67ddcb8d21915b19b7aec898272977bc08c 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php +++ b/civicrm/vendor/symfony/dependency-injection/Dumper/XmlDumper.php @@ -11,12 +11,12 @@ namespace Symfony\Component\DependencyInjection\Dumper; +use Symfony\Component\DependencyInjection\Alias; use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\DependencyInjection\Parameter; -use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\Definition; -use Symfony\Component\DependencyInjection\Alias; use Symfony\Component\DependencyInjection\Exception\RuntimeException; +use Symfony\Component\DependencyInjection\Parameter; +use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\ExpressionLanguage\Expression; /** @@ -24,8 +24,6 @@ use Symfony\Component\ExpressionLanguage\Expression; * * @author Fabien Potencier <fabien@symfony.com> * @author Martin Hasoň <martin.hason@gmail.com> - * - * @api */ class XmlDumper extends Dumper { @@ -37,11 +35,7 @@ class XmlDumper extends Dumper /** * Dumps the service container as an XML string. * - * @param array $options An array of options - * * @return string An xml string representing of the service container - * - * @api */ public function dump(array $options = array()) { @@ -62,11 +56,6 @@ class XmlDumper extends Dumper return $xml; } - /** - * Adds parameters. - * - * @param \DOMElement $parent - */ private function addParameters(\DOMElement $parent) { $data = $this->container->getParameterBag()->all(); @@ -83,18 +72,12 @@ class XmlDumper extends Dumper $this->convertParameters($data, 'parameter', $parameters); } - /** - * Adds method calls. - * - * @param array $methodcalls - * @param \DOMElement $parent - */ private function addMethodCalls(array $methodcalls, \DOMElement $parent) { foreach ($methodcalls as $methodcall) { $call = $this->document->createElement('call'); $call->setAttribute('method', $methodcall[0]); - if (count($methodcall[1])) { + if (\count($methodcall[1])) { $this->convertParameters($methodcall[1], 'argument', $call); } $parent->appendChild($call); @@ -114,19 +97,26 @@ class XmlDumper extends Dumper if (null !== $id) { $service->setAttribute('id', $id); } - if ($definition->getClass()) { - $service->setAttribute('class', $definition->getClass()); + if ($class = $definition->getClass()) { + if ('\\' === substr($class, 0, 1)) { + $class = substr($class, 1); + } + + $service->setAttribute('class', $class); + } + if ($definition->getFactoryMethod(false)) { + $service->setAttribute('factory-method', $definition->getFactoryMethod(false)); } - if ($definition->getFactoryMethod()) { - $service->setAttribute('factory-method', $definition->getFactoryMethod()); + if ($definition->getFactoryClass(false)) { + $service->setAttribute('factory-class', $definition->getFactoryClass(false)); } - if ($definition->getFactoryClass()) { - $service->setAttribute('factory-class', $definition->getFactoryClass()); + if ($definition->getFactoryService(false)) { + $service->setAttribute('factory-service', $definition->getFactoryService(false)); } - if ($definition->getFactoryService()) { - $service->setAttribute('factory-service', $definition->getFactoryService()); + if (!$definition->isShared()) { + $service->setAttribute('shared', 'false'); } - if (ContainerInterface::SCOPE_CONTAINER !== $scope = $definition->getScope()) { + if (ContainerInterface::SCOPE_CONTAINER !== $scope = $definition->getScope(false)) { $service->setAttribute('scope', $scope); } if (!$definition->isPublic()) { @@ -135,18 +125,21 @@ class XmlDumper extends Dumper if ($definition->isSynthetic()) { $service->setAttribute('synthetic', 'true'); } - if ($definition->isSynchronized()) { + if ($definition->isSynchronized(false)) { $service->setAttribute('synchronized', 'true'); } if ($definition->isLazy()) { $service->setAttribute('lazy', 'true'); } if (null !== $decorated = $definition->getDecoratedService()) { - list($decorated, $renamedId) = $decorated; + list($decorated, $renamedId, $priority) = $decorated; $service->setAttribute('decorates', $decorated); if (null !== $renamedId) { $service->setAttribute('decoration-inner-name', $renamedId); } + if (0 !== $priority) { + $service->setAttribute('decoration-priority', $priority); + } } foreach ($definition->getTags() as $name => $tags) { @@ -178,7 +171,11 @@ class XmlDumper extends Dumper if ($callable = $definition->getFactory()) { $factory = $this->document->createElement('factory'); - if (is_array($callable)) { + + if (\is_array($callable) && $callable[0] instanceof Definition) { + $this->addService($callable[0], null, $factory); + $factory->setAttribute('method', $callable[1]); + } elseif (\is_array($callable)) { $factory->setAttribute($callable[0] instanceof Reference ? 'service' : 'class', $callable[0]); $factory->setAttribute('method', $callable[1]); } else { @@ -187,9 +184,35 @@ class XmlDumper extends Dumper $service->appendChild($factory); } + if ($definition->isDeprecated()) { + $deprecated = $this->document->createElement('deprecated'); + $deprecated->appendChild($this->document->createTextNode($definition->getDeprecationMessage('%service_id%'))); + + $service->appendChild($deprecated); + } + + if ($definition->isAutowired()) { + $service->setAttribute('autowire', 'true'); + } + + foreach ($definition->getAutowiringTypes() as $autowiringTypeValue) { + $autowiringType = $this->document->createElement('autowiring-type'); + $autowiringType->appendChild($this->document->createTextNode($autowiringTypeValue)); + + $service->appendChild($autowiringType); + } + + if ($definition->isAbstract()) { + $service->setAttribute('abstract', 'true'); + } + if ($callable = $definition->getConfigurator()) { $configurator = $this->document->createElement('configurator'); - if (is_array($callable)) { + + if (\is_array($callable) && $callable[0] instanceof Definition) { + $this->addService($callable[0], null, $configurator); + $configurator->setAttribute('method', $callable[1]); + } elseif (\is_array($callable)) { $configurator->setAttribute($callable[0] instanceof Reference ? 'service' : 'class', $callable[0]); $configurator->setAttribute('method', $callable[1]); } else { @@ -219,11 +242,6 @@ class XmlDumper extends Dumper $parent->appendChild($service); } - /** - * Adds services. - * - * @param \DOMElement $parent - */ private function addServices(\DOMElement $parent) { $definitions = $this->container->getDefinitions(); @@ -254,28 +272,28 @@ class XmlDumper extends Dumper * @param \DOMElement $parent * @param string $keyAttribute */ - private function convertParameters($parameters, $type, \DOMElement $parent, $keyAttribute = 'key') + private function convertParameters(array $parameters, $type, \DOMElement $parent, $keyAttribute = 'key') { - $withKeys = array_keys($parameters) !== range(0, count($parameters) - 1); + $withKeys = array_keys($parameters) !== range(0, \count($parameters) - 1); foreach ($parameters as $key => $value) { $element = $this->document->createElement($type); if ($withKeys) { $element->setAttribute($keyAttribute, $key); } - if (is_array($value)) { + if (\is_array($value)) { $element->setAttribute('type', 'collection'); $this->convertParameters($value, $type, $element, 'key'); } elseif ($value instanceof Reference) { $element->setAttribute('type', 'service'); $element->setAttribute('id', (string) $value); $behaviour = $value->getInvalidBehavior(); - if ($behaviour == ContainerInterface::NULL_ON_INVALID_REFERENCE) { + if (ContainerInterface::NULL_ON_INVALID_REFERENCE == $behaviour) { $element->setAttribute('on-invalid', 'null'); - } elseif ($behaviour == ContainerInterface::IGNORE_ON_INVALID_REFERENCE) { + } elseif (ContainerInterface::IGNORE_ON_INVALID_REFERENCE == $behaviour) { $element->setAttribute('on-invalid', 'ignore'); } - if (!$value->isStrict()) { + if (!$value->isStrict(false)) { $element->setAttribute('strict', 'false'); } } elseif ($value instanceof Definition) { @@ -286,7 +304,7 @@ class XmlDumper extends Dumper $text = $this->document->createTextNode(self::phpToXml((string) $value)); $element->appendChild($text); } else { - if (in_array($value, array('null', 'true', 'false'), true)) { + if (\in_array($value, array('null', 'true', 'false'), true)) { $element->setAttribute('type', 'string'); } $text = $this->document->createTextNode(self::phpToXml($value)); @@ -299,17 +317,15 @@ class XmlDumper extends Dumper /** * Escapes arguments. * - * @param array $arguments - * * @return array */ - private function escape($arguments) + private function escape(array $arguments) { $args = array(); foreach ($arguments as $k => $v) { - if (is_array($v)) { + if (\is_array($v)) { $args[$k] = $this->escape($v); - } elseif (is_string($v)) { + } elseif (\is_string($v)) { $args[$k] = str_replace('%', '%%', $v); } else { $args[$k] = $v; @@ -339,7 +355,7 @@ class XmlDumper extends Dumper return 'false'; case $value instanceof Parameter: return '%'.$value.'%'; - case is_object($value) || is_resource($value): + case \is_object($value) || \is_resource($value): throw new RuntimeException('Unable to dump a service container if a parameter is an object or a resource.'); default: return (string) $value; diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php b/civicrm/vendor/symfony/dependency-injection/Dumper/YamlDumper.php similarity index 73% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php rename to civicrm/vendor/symfony/dependency-injection/Dumper/YamlDumper.php index 9ec32a7f161d28f78cf349d18f05a979d1a85c4a..35d1218e253108fc48f415a9db34112a333743a9 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Dumper/YamlDumper.php +++ b/civicrm/vendor/symfony/dependency-injection/Dumper/YamlDumper.php @@ -11,21 +11,19 @@ namespace Symfony\Component\DependencyInjection\Dumper; -use Symfony\Component\Yaml\Dumper as YmlDumper; use Symfony\Component\DependencyInjection\Alias; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Definition; +use Symfony\Component\DependencyInjection\Exception\RuntimeException; use Symfony\Component\DependencyInjection\Parameter; use Symfony\Component\DependencyInjection\Reference; -use Symfony\Component\DependencyInjection\Exception\RuntimeException; use Symfony\Component\ExpressionLanguage\Expression; +use Symfony\Component\Yaml\Dumper as YmlDumper; /** * YamlDumper dumps a service container as a YAML string. * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ class YamlDumper extends Dumper { @@ -34,11 +32,7 @@ class YamlDumper extends Dumper /** * Dumps the service container as an YAML string. * - * @param array $options An array of options - * * @return string A YAML string representing of the service container - * - * @api */ public function dump(array $options = array()) { @@ -61,11 +55,15 @@ class YamlDumper extends Dumper * * @return string */ - private function addService($id, $definition) + private function addService($id, Definition $definition) { $code = " $id:\n"; - if ($definition->getClass()) { - $code .= sprintf(" class: %s\n", $definition->getClass()); + if ($class = $definition->getClass()) { + if ('\\' === substr($class, 0, 1)) { + $class = substr($class, 1); + } + + $code .= sprintf(" class: %s\n", $this->dumper->dump($class)); } if (!$definition->isPublic()) { @@ -89,31 +87,51 @@ class YamlDumper extends Dumper } if ($definition->getFile()) { - $code .= sprintf(" file: %s\n", $definition->getFile()); + $code .= sprintf(" file: %s\n", $this->dumper->dump($definition->getFile())); } if ($definition->isSynthetic()) { - $code .= sprintf(" synthetic: true\n"); + $code .= " synthetic: true\n"; } - if ($definition->isSynchronized()) { - $code .= sprintf(" synchronized: true\n"); + if ($definition->isSynchronized(false)) { + $code .= " synchronized: true\n"; } - if ($definition->getFactoryClass()) { - $code .= sprintf(" factory_class: %s\n", $definition->getFactoryClass()); + if ($definition->isDeprecated()) { + $code .= sprintf(" deprecated: %s\n", $this->dumper->dump($definition->getDeprecationMessage('%service_id%'))); + } + + if ($definition->isAutowired()) { + $code .= " autowire: true\n"; + } + + $autowiringTypesCode = ''; + foreach ($definition->getAutowiringTypes() as $autowiringType) { + $autowiringTypesCode .= sprintf(" - %s\n", $this->dumper->dump($autowiringType)); + } + if ($autowiringTypesCode) { + $code .= sprintf(" autowiring_types:\n%s", $autowiringTypesCode); + } + + if ($definition->getFactoryClass(false)) { + $code .= sprintf(" factory_class: %s\n", $this->dumper->dump($definition->getFactoryClass(false))); + } + + if ($definition->isAbstract()) { + $code .= " abstract: true\n"; } if ($definition->isLazy()) { - $code .= sprintf(" lazy: true\n"); + $code .= " lazy: true\n"; } - if ($definition->getFactoryMethod()) { - $code .= sprintf(" factory_method: %s\n", $definition->getFactoryMethod()); + if ($definition->getFactoryMethod(false)) { + $code .= sprintf(" factory_method: %s\n", $this->dumper->dump($definition->getFactoryMethod(false))); } - if ($definition->getFactoryService()) { - $code .= sprintf(" factory_service: %s\n", $definition->getFactoryService()); + if ($definition->getFactoryService(false)) { + $code .= sprintf(" factory_service: %s\n", $this->dumper->dump($definition->getFactoryService(false))); } if ($definition->getArguments()) { @@ -128,16 +146,23 @@ class YamlDumper extends Dumper $code .= sprintf(" calls:\n%s\n", $this->dumper->dump($this->dumpValue($definition->getMethodCalls()), 1, 12)); } - if (ContainerInterface::SCOPE_CONTAINER !== $scope = $definition->getScope()) { - $code .= sprintf(" scope: %s\n", $scope); + if (!$definition->isShared()) { + $code .= " shared: false\n"; + } + + if (ContainerInterface::SCOPE_CONTAINER !== $scope = $definition->getScope(false)) { + $code .= sprintf(" scope: %s\n", $this->dumper->dump($scope)); } if (null !== $decorated = $definition->getDecoratedService()) { - list($decorated, $renamedId) = $decorated; + list($decorated, $renamedId, $priority) = $decorated; $code .= sprintf(" decorates: %s\n", $decorated); if (null !== $renamedId) { $code .= sprintf(" decoration_inner_name: %s\n", $renamedId); } + if (0 !== $priority) { + $code .= sprintf(" decoration_priority: %s\n", $priority); + } } if ($callable = $definition->getFactory()) { @@ -159,13 +184,13 @@ class YamlDumper extends Dumper * * @return string */ - private function addServiceAlias($alias, $id) + private function addServiceAlias($alias, Alias $id) { if ($id->isPublic()) { - return sprintf(" %s: @%s\n", $alias, $id); - } else { - return sprintf(" %s:\n alias: %s\n public: false", $alias, $id); + return sprintf(" %s: '@%s'\n", $alias, $id); } + + return sprintf(" %s:\n alias: %s\n public: false\n", $alias, $id); } /** @@ -212,7 +237,7 @@ class YamlDumper extends Dumper } /** - * Dumps callable to YAML format + * Dumps callable to YAML format. * * @param callable $callable * @@ -220,7 +245,7 @@ class YamlDumper extends Dumper */ private function dumpCallable($callable) { - if (is_array($callable)) { + if (\is_array($callable)) { if ($callable[0] instanceof Reference) { $callable = array($this->getServiceCall((string) $callable[0], $callable[0]), $callable[1]); } else { @@ -242,7 +267,7 @@ class YamlDumper extends Dumper */ private function dumpValue($value) { - if (is_array($value)) { + if (\is_array($value)) { $code = array(); foreach ($value as $k => $v) { $code[$k] = $this->dumpValue($v); @@ -255,7 +280,7 @@ class YamlDumper extends Dumper return $this->getParameterCall((string) $value); } elseif ($value instanceof Expression) { return $this->getExpressionCall((string) $value); - } elseif (is_object($value) || is_resource($value)) { + } elseif (\is_object($value) || \is_resource($value)) { throw new RuntimeException('Unable to dump a service container if a parameter is an object or a resource.'); } @@ -304,13 +329,13 @@ class YamlDumper extends Dumper * * @return array */ - private function prepareParameters($parameters, $escape = true) + private function prepareParameters(array $parameters, $escape = true) { $filtered = array(); foreach ($parameters as $key => $value) { - if (is_array($value)) { + if (\is_array($value)) { $value = $this->prepareParameters($value, $escape); - } elseif ($value instanceof Reference || is_string($value) && 0 === strpos($value, '@')) { + } elseif ($value instanceof Reference || \is_string($value) && 0 === strpos($value, '@')) { $value = '@'.$value; } @@ -323,17 +348,15 @@ class YamlDumper extends Dumper /** * Escapes arguments. * - * @param array $arguments - * * @return array */ - private function escape($arguments) + private function escape(array $arguments) { $args = array(); foreach ($arguments as $k => $v) { - if (is_array($v)) { + if (\is_array($v)) { $args[$k] = $this->escape($v); - } elseif (is_string($v)) { + } elseif (\is_string($v)) { $args[$k] = str_replace('%', '%%', $v); } else { $args[$k] = $v; diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/BadMethodCallException.php b/civicrm/vendor/symfony/dependency-injection/Exception/BadMethodCallException.php similarity index 100% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/BadMethodCallException.php rename to civicrm/vendor/symfony/dependency-injection/Exception/BadMethodCallException.php diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ExceptionInterface.php b/civicrm/vendor/symfony/dependency-injection/Exception/ExceptionInterface.php similarity index 100% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ExceptionInterface.php rename to civicrm/vendor/symfony/dependency-injection/Exception/ExceptionInterface.php diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/InactiveScopeException.php b/civicrm/vendor/symfony/dependency-injection/Exception/InactiveScopeException.php similarity index 100% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/InactiveScopeException.php rename to civicrm/vendor/symfony/dependency-injection/Exception/InactiveScopeException.php diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/InvalidArgumentException.php b/civicrm/vendor/symfony/dependency-injection/Exception/InvalidArgumentException.php similarity index 100% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/InvalidArgumentException.php rename to civicrm/vendor/symfony/dependency-injection/Exception/InvalidArgumentException.php diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/LogicException.php b/civicrm/vendor/symfony/dependency-injection/Exception/LogicException.php similarity index 100% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/LogicException.php rename to civicrm/vendor/symfony/dependency-injection/Exception/LogicException.php diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/OutOfBoundsException.php b/civicrm/vendor/symfony/dependency-injection/Exception/OutOfBoundsException.php similarity index 100% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/OutOfBoundsException.php rename to civicrm/vendor/symfony/dependency-injection/Exception/OutOfBoundsException.php diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ParameterCircularReferenceException.php b/civicrm/vendor/symfony/dependency-injection/Exception/ParameterCircularReferenceException.php similarity index 100% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ParameterCircularReferenceException.php rename to civicrm/vendor/symfony/dependency-injection/Exception/ParameterCircularReferenceException.php diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ParameterNotFoundException.php b/civicrm/vendor/symfony/dependency-injection/Exception/ParameterNotFoundException.php similarity index 97% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ParameterNotFoundException.php rename to civicrm/vendor/symfony/dependency-injection/Exception/ParameterNotFoundException.php index b529f0fe83d229800ed97938f1d264c666756607..1d97830f4a9ba571d2928489fab331fa271ac17c 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ParameterNotFoundException.php +++ b/civicrm/vendor/symfony/dependency-injection/Exception/ParameterNotFoundException.php @@ -24,8 +24,6 @@ class ParameterNotFoundException extends InvalidArgumentException private $alternatives; /** - * Constructor. - * * @param string $key The requested parameter key * @param string $sourceId The service id that references the non-existent parameter * @param string $sourceKey The parameter key that references the non-existent parameter @@ -55,7 +53,7 @@ class ParameterNotFoundException extends InvalidArgumentException } if ($this->alternatives) { - if (1 == count($this->alternatives)) { + if (1 == \count($this->alternatives)) { $this->message .= ' Did you mean this: "'; } else { $this->message .= ' Did you mean one of these: "'; diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/RuntimeException.php b/civicrm/vendor/symfony/dependency-injection/Exception/RuntimeException.php similarity index 100% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/RuntimeException.php rename to civicrm/vendor/symfony/dependency-injection/Exception/RuntimeException.php diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ScopeCrossingInjectionException.php b/civicrm/vendor/symfony/dependency-injection/Exception/ScopeCrossingInjectionException.php similarity index 100% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ScopeCrossingInjectionException.php rename to civicrm/vendor/symfony/dependency-injection/Exception/ScopeCrossingInjectionException.php diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ScopeWideningInjectionException.php b/civicrm/vendor/symfony/dependency-injection/Exception/ScopeWideningInjectionException.php similarity index 100% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ScopeWideningInjectionException.php rename to civicrm/vendor/symfony/dependency-injection/Exception/ScopeWideningInjectionException.php diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ServiceCircularReferenceException.php b/civicrm/vendor/symfony/dependency-injection/Exception/ServiceCircularReferenceException.php similarity index 100% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ServiceCircularReferenceException.php rename to civicrm/vendor/symfony/dependency-injection/Exception/ServiceCircularReferenceException.php diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ServiceNotFoundException.php b/civicrm/vendor/symfony/dependency-injection/Exception/ServiceNotFoundException.php similarity index 96% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ServiceNotFoundException.php rename to civicrm/vendor/symfony/dependency-injection/Exception/ServiceNotFoundException.php index e65da506bb5151b77e51cd771635ad6577276895..620ed98e68e76742ea35acab81b0d3983fae4deb 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Exception/ServiceNotFoundException.php +++ b/civicrm/vendor/symfony/dependency-injection/Exception/ServiceNotFoundException.php @@ -30,7 +30,7 @@ class ServiceNotFoundException extends InvalidArgumentException } if ($alternatives) { - if (1 == count($alternatives)) { + if (1 == \count($alternatives)) { $msg .= ' Did you mean this: "'; } else { $msg .= ' Did you mean one of these: "'; diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ExpressionLanguage.php b/civicrm/vendor/symfony/dependency-injection/ExpressionLanguage.php similarity index 100% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ExpressionLanguage.php rename to civicrm/vendor/symfony/dependency-injection/ExpressionLanguage.php diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ExpressionLanguageProvider.php b/civicrm/vendor/symfony/dependency-injection/ExpressionLanguageProvider.php similarity index 100% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ExpressionLanguageProvider.php rename to civicrm/vendor/symfony/dependency-injection/ExpressionLanguageProvider.php diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Extension/ConfigurationExtensionInterface.php b/civicrm/vendor/symfony/dependency-injection/Extension/ConfigurationExtensionInterface.php similarity index 84% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Extension/ConfigurationExtensionInterface.php rename to civicrm/vendor/symfony/dependency-injection/Extension/ConfigurationExtensionInterface.php index 705ba38ec9ccc1d946d9ae0c9285a2495b0a58c0..c3bd8423ba64715df6fb5c03b67f182e568e7183 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Extension/ConfigurationExtensionInterface.php +++ b/civicrm/vendor/symfony/dependency-injection/Extension/ConfigurationExtensionInterface.php @@ -11,8 +11,8 @@ namespace Symfony\Component\DependencyInjection\Extension; -use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\Config\Definition\ConfigurationInterface; +use Symfony\Component\DependencyInjection\ContainerBuilder; /** * ConfigurationExtensionInterface is the interface implemented by container extension classes. @@ -24,9 +24,6 @@ interface ConfigurationExtensionInterface /** * Returns extension configuration. * - * @param array $config An array of configuration values - * @param ContainerBuilder $container A ContainerBuilder instance - * * @return ConfigurationInterface|null The configuration or null */ public function getConfiguration(array $config, ContainerBuilder $container); diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Extension/Extension.php b/civicrm/vendor/symfony/dependency-injection/Extension/Extension.php similarity index 87% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Extension/Extension.php rename to civicrm/vendor/symfony/dependency-injection/Extension/Extension.php index f8e058bafd9004a0255e01cfdf414946eb9cde39..b56a2ccff00ca8a4bd368b28feebb6058f4eef78 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Extension/Extension.php +++ b/civicrm/vendor/symfony/dependency-injection/Extension/Extension.php @@ -11,13 +11,13 @@ namespace Symfony\Component\DependencyInjection\Extension; +use Symfony\Component\Config\Definition\ConfigurationInterface; +use Symfony\Component\Config\Definition\Processor; +use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\DependencyInjection\Container; +use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Exception\BadMethodCallException; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; -use Symfony\Component\Config\Resource\FileResource; -use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\Config\Definition\Processor; -use Symfony\Component\Config\Definition\ConfigurationInterface; /** * Provides useful features shared by many extensions. @@ -27,9 +27,7 @@ use Symfony\Component\Config\Definition\ConfigurationInterface; abstract class Extension implements ExtensionInterface, ConfigurationExtensionInterface { /** - * Returns the base path for the XSD files. - * - * @return string The XSD base path + * {@inheritdoc} */ public function getXsdValidationBasePath() { @@ -37,9 +35,7 @@ abstract class Extension implements ExtensionInterface, ConfigurationExtensionIn } /** - * Returns the namespace to be used for this extension (XML namespace). - * - * @return string The XML namespace + * {@inheritdoc} */ public function getNamespace() { @@ -68,8 +64,8 @@ abstract class Extension implements ExtensionInterface, ConfigurationExtensionIn */ public function getAlias() { - $className = get_class($this); - if (substr($className, -9) != 'Extension') { + $className = \get_class($this); + if ('Extension' != substr($className, -9)) { throw new BadMethodCallException('This extension does not follow the naming convention; you must overwrite the getAlias() method.'); } $classBaseName = substr(strrchr($className, '\\'), 1, -9); @@ -91,9 +87,7 @@ abstract class Extension implements ExtensionInterface, ConfigurationExtensionIn $container->addResource(new FileResource($r->getFileName())); if (!method_exists($class, '__construct')) { - $configuration = new $class(); - - return $configuration; + return new $class(); } } } @@ -106,9 +100,6 @@ abstract class Extension implements ExtensionInterface, ConfigurationExtensionIn } /** - * @param ContainerBuilder $container - * @param array $config - * * @return bool Whether the configuration is enabled * * @throws InvalidArgumentException When the config is not enableable diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Extension/ExtensionInterface.php b/civicrm/vendor/symfony/dependency-injection/Extension/ExtensionInterface.php similarity index 80% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Extension/ExtensionInterface.php rename to civicrm/vendor/symfony/dependency-injection/Extension/ExtensionInterface.php index 424f02088e311c5437824e239211dfb1e9c07bff..18de31272f32273d5a3fced54b8be2f398d56e9a 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Extension/ExtensionInterface.php +++ b/civicrm/vendor/symfony/dependency-injection/Extension/ExtensionInterface.php @@ -17,29 +17,20 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; * ExtensionInterface is the interface implemented by container extension classes. * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ interface ExtensionInterface { /** * Loads a specific configuration. * - * @param array $config An array of configuration values - * @param ContainerBuilder $container A ContainerBuilder instance - * * @throws \InvalidArgumentException When provided tag is not defined in this extension - * - * @api */ - public function load(array $config, ContainerBuilder $container); + public function load(array $configs, ContainerBuilder $container); /** * Returns the namespace to be used for this extension (XML namespace). * * @return string The XML namespace - * - * @api */ public function getNamespace(); @@ -47,8 +38,6 @@ interface ExtensionInterface * Returns the base path for the XSD files. * * @return string The XSD base path - * - * @api */ public function getXsdValidationBasePath(); @@ -58,8 +47,6 @@ interface ExtensionInterface * This alias is also the mandatory prefix to use when using YAML. * * @return string The alias - * - * @api */ public function getAlias(); } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Extension/PrependExtensionInterface.php b/civicrm/vendor/symfony/dependency-injection/Extension/PrependExtensionInterface.php similarity index 91% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Extension/PrependExtensionInterface.php rename to civicrm/vendor/symfony/dependency-injection/Extension/PrependExtensionInterface.php index c666bdbcf8d45236f6c7b52a880464961114ff67..5bd18d79feac91086b9f19cf3be99c8c76cc30d3 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Extension/PrependExtensionInterface.php +++ b/civicrm/vendor/symfony/dependency-injection/Extension/PrependExtensionInterface.php @@ -17,8 +17,6 @@ interface PrependExtensionInterface { /** * Allow an extension to prepend the extension configurations. - * - * @param ContainerBuilder $container */ public function prepend(ContainerBuilder $container); } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/IntrospectableContainerInterface.php b/civicrm/vendor/symfony/dependency-injection/IntrospectableContainerInterface.php similarity index 90% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/IntrospectableContainerInterface.php rename to civicrm/vendor/symfony/dependency-injection/IntrospectableContainerInterface.php index e630a1edc656177b8ab3ff979a5540531e728f28..4aa0059992e5b5ce9e8f8f6967399ff96165899d 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/IntrospectableContainerInterface.php +++ b/civicrm/vendor/symfony/dependency-injection/IntrospectableContainerInterface.php @@ -16,6 +16,8 @@ namespace Symfony\Component\DependencyInjection; * for containers, allowing logic to be implemented based on a Container's state. * * @author Evan Villemez <evillemez@gmail.com> + * + * @deprecated since version 2.8, to be merged with ContainerInterface in 3.0. */ interface IntrospectableContainerInterface extends ContainerInterface { diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/LICENSE b/civicrm/vendor/symfony/dependency-injection/LICENSE similarity index 96% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/LICENSE rename to civicrm/vendor/symfony/dependency-injection/LICENSE index 43028bc600f26ec5599ab339d83cd70f70dfcdab..21d7fb9e2f29b50caca3a76f0647e94e2cc8ddc1 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/LICENSE +++ b/civicrm/vendor/symfony/dependency-injection/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2004-2015 Fabien Potencier +Copyright (c) 2004-2018 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/dependency-injection/Symfony/Component/DependencyInjection/LazyProxy/Instantiator/InstantiatorInterface.php b/civicrm/vendor/symfony/dependency-injection/LazyProxy/Instantiator/InstantiatorInterface.php similarity index 72% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/LazyProxy/Instantiator/InstantiatorInterface.php rename to civicrm/vendor/symfony/dependency-injection/LazyProxy/Instantiator/InstantiatorInterface.php index a8dd5252ed28562d5f641c3fa329eee073743a58..417ab908a39c67e5bd9a5a1cbc7a243dd7ec0321 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/LazyProxy/Instantiator/InstantiatorInterface.php +++ b/civicrm/vendor/symfony/dependency-injection/LazyProxy/Instantiator/InstantiatorInterface.php @@ -25,11 +25,10 @@ interface InstantiatorInterface /** * Instantiates a proxy object. * - * @param ContainerInterface $container the container from which the service is being requested - * @param Definition $definition the definition of the requested service - * @param string $id identifier of the requested service - * @param callable $realInstantiator zero-argument callback that is capable of producing the real - * service instance + * @param ContainerInterface $container The container from which the service is being requested + * @param Definition $definition The definition of the requested service + * @param string $id Identifier of the requested service + * @param callable $realInstantiator Zero-argument callback that is capable of producing the real service instance * * @return object */ diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/LazyProxy/Instantiator/RealServiceInstantiator.php b/civicrm/vendor/symfony/dependency-injection/LazyProxy/Instantiator/RealServiceInstantiator.php similarity index 94% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/LazyProxy/Instantiator/RealServiceInstantiator.php rename to civicrm/vendor/symfony/dependency-injection/LazyProxy/Instantiator/RealServiceInstantiator.php index cad9320039b14d918e07ea7897cc5cd1b73c3186..3b0b57ef0f6b9edab6eb039f45e9bd83cebc027d 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/LazyProxy/Instantiator/RealServiceInstantiator.php +++ b/civicrm/vendor/symfony/dependency-injection/LazyProxy/Instantiator/RealServiceInstantiator.php @@ -28,6 +28,6 @@ class RealServiceInstantiator implements InstantiatorInterface */ public function instantiateProxy(ContainerInterface $container, Definition $definition, $id, $realInstantiator) { - return call_user_func($realInstantiator); + return \call_user_func($realInstantiator); } } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/LazyProxy/PhpDumper/DumperInterface.php b/civicrm/vendor/symfony/dependency-injection/LazyProxy/PhpDumper/DumperInterface.php similarity index 88% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/LazyProxy/PhpDumper/DumperInterface.php rename to civicrm/vendor/symfony/dependency-injection/LazyProxy/PhpDumper/DumperInterface.php index 878d965b1c39de6216cfe3fa970d98cafa54655d..502c72abafc26ed3af03d7cc08714f396a6644c4 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/LazyProxy/PhpDumper/DumperInterface.php +++ b/civicrm/vendor/symfony/dependency-injection/LazyProxy/PhpDumper/DumperInterface.php @@ -23,8 +23,6 @@ interface DumperInterface /** * Inspects whether the given definitions should produce proxy instantiation logic in the dumped container. * - * @param Definition $definition - * * @return bool */ public function isProxyCandidate(Definition $definition); @@ -33,7 +31,7 @@ interface DumperInterface * Generates the code to be used to instantiate a proxy in the dumped factory code. * * @param Definition $definition - * @param string $id service identifier + * @param string $id Service identifier * * @return string */ @@ -42,8 +40,6 @@ interface DumperInterface /** * Generates the code for the lazy proxy. * - * @param Definition $definition - * * @return string */ public function getProxyCode(Definition $definition); diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/LazyProxy/PhpDumper/NullDumper.php b/civicrm/vendor/symfony/dependency-injection/LazyProxy/PhpDumper/NullDumper.php similarity index 100% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/LazyProxy/PhpDumper/NullDumper.php rename to civicrm/vendor/symfony/dependency-injection/LazyProxy/PhpDumper/NullDumper.php diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/ClosureLoader.php b/civicrm/vendor/symfony/dependency-injection/Loader/ClosureLoader.php similarity index 85% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/ClosureLoader.php rename to civicrm/vendor/symfony/dependency-injection/Loader/ClosureLoader.php index a5b4e5ad240e5f0df7ad6bb5cc23d46bc97f1e2a..183cacc4d61f4eb6a8fed0d430815a10479bc856 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/ClosureLoader.php +++ b/civicrm/vendor/symfony/dependency-injection/Loader/ClosureLoader.php @@ -11,8 +11,8 @@ namespace Symfony\Component\DependencyInjection\Loader; -use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\Config\Loader\Loader; +use Symfony\Component\DependencyInjection\ContainerBuilder; /** * ClosureLoader loads service definitions from a PHP closure. @@ -25,11 +25,6 @@ class ClosureLoader extends Loader { private $container; - /** - * Constructor. - * - * @param ContainerBuilder $container A ContainerBuilder instance - */ public function __construct(ContainerBuilder $container) { $this->container = $container; @@ -40,7 +35,7 @@ class ClosureLoader extends Loader */ public function load($resource, $type = null) { - call_user_func($resource, $this->container); + \call_user_func($resource, $this->container); } /** diff --git a/civicrm/vendor/symfony/dependency-injection/Loader/DirectoryLoader.php b/civicrm/vendor/symfony/dependency-injection/Loader/DirectoryLoader.php new file mode 100644 index 0000000000000000000000000000000000000000..05a3ba2b5c3a9f88b6642b1be21c17baa6e72bd3 --- /dev/null +++ b/civicrm/vendor/symfony/dependency-injection/Loader/DirectoryLoader.php @@ -0,0 +1,56 @@ +<?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\Component\DependencyInjection\Loader; + +use Symfony\Component\Config\Resource\DirectoryResource; + +/** + * DirectoryLoader is a recursive loader to go through directories. + * + * @author Sebastien Lavoie <seb@wemakecustom.com> + */ +class DirectoryLoader extends FileLoader +{ + /** + * {@inheritdoc} + */ + public function load($file, $type = null) + { + $file = rtrim($file, '/'); + $path = $this->locator->locate($file); + $this->container->addResource(new DirectoryResource($path)); + + foreach (scandir($path) as $dir) { + if ('.' !== $dir[0]) { + if (is_dir($path.'/'.$dir)) { + $dir .= '/'; // append / to allow recursion + } + + $this->setCurrentDir($path); + + $this->import($dir, null, false, $path); + } + } + } + + /** + * {@inheritdoc} + */ + public function supports($resource, $type = null) + { + if ('directory' === $type) { + return true; + } + + return null === $type && \is_string($resource) && '/' === substr($resource, -1); + } +} diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/FileLoader.php b/civicrm/vendor/symfony/dependency-injection/Loader/FileLoader.php similarity index 82% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/FileLoader.php rename to civicrm/vendor/symfony/dependency-injection/Loader/FileLoader.php index d71eecf74156f6496601d71581102ee5257f7876..9fc297bab41e6daf58d970813f9347ca0203955f 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/FileLoader.php +++ b/civicrm/vendor/symfony/dependency-injection/Loader/FileLoader.php @@ -11,9 +11,9 @@ namespace Symfony\Component\DependencyInjection\Loader; -use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\Config\Loader\FileLoader as BaseFileLoader; use Symfony\Component\Config\FileLocatorInterface; +use Symfony\Component\Config\Loader\FileLoader as BaseFileLoader; +use Symfony\Component\DependencyInjection\ContainerBuilder; /** * FileLoader is the abstract class used by all built-in loaders that are file based. @@ -24,12 +24,6 @@ abstract class FileLoader extends BaseFileLoader { protected $container; - /** - * Constructor. - * - * @param ContainerBuilder $container A ContainerBuilder instance - * @param FileLocatorInterface $locator A FileLocator instance - */ public function __construct(ContainerBuilder $container, FileLocatorInterface $locator) { $this->container = $container; diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/IniFileLoader.php b/civicrm/vendor/symfony/dependency-injection/Loader/IniFileLoader.php similarity index 88% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/IniFileLoader.php rename to civicrm/vendor/symfony/dependency-injection/Loader/IniFileLoader.php index 16ddf87f851123aa1087c61c715e599c3adf20e0..fa8cbbf2875fd41229928b63b62674090233d68f 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/IniFileLoader.php +++ b/civicrm/vendor/symfony/dependency-injection/Loader/IniFileLoader.php @@ -35,7 +35,7 @@ class IniFileLoader extends FileLoader throw new InvalidArgumentException(sprintf('The "%s" file is not valid.', $resource)); } - if (isset($result['parameters']) && is_array($result['parameters'])) { + if (isset($result['parameters']) && \is_array($result['parameters'])) { foreach ($result['parameters'] as $key => $value) { $this->container->setParameter($key, $value); } @@ -47,6 +47,6 @@ class IniFileLoader extends FileLoader */ public function supports($resource, $type = null) { - return is_string($resource) && 'ini' === pathinfo($resource, PATHINFO_EXTENSION); + return \is_string($resource) && 'ini' === pathinfo($resource, PATHINFO_EXTENSION); } } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/PhpFileLoader.php b/civicrm/vendor/symfony/dependency-injection/Loader/PhpFileLoader.php similarity index 89% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/PhpFileLoader.php rename to civicrm/vendor/symfony/dependency-injection/Loader/PhpFileLoader.php index 08c1d9af4f653ddc11a395677a8ecfa23fceb848..c52bd8c98ccae918e295debcdbdf11d23605951e 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/PhpFileLoader.php +++ b/civicrm/vendor/symfony/dependency-injection/Loader/PhpFileLoader.php @@ -33,7 +33,7 @@ class PhpFileLoader extends FileLoader $loader = $this; $path = $this->locator->locate($resource); - $this->setCurrentDir(dirname($path)); + $this->setCurrentDir(\dirname($path)); $this->container->addResource(new FileResource($path)); include $path; @@ -44,6 +44,6 @@ class PhpFileLoader extends FileLoader */ public function supports($resource, $type = null) { - return is_string($resource) && 'php' === pathinfo($resource, PATHINFO_EXTENSION); + return \is_string($resource) && 'php' === pathinfo($resource, PATHINFO_EXTENSION); } } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php b/civicrm/vendor/symfony/dependency-injection/Loader/XmlFileLoader.php similarity index 74% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php rename to civicrm/vendor/symfony/dependency-injection/Loader/XmlFileLoader.php index 22d1e82961c075b1bbcf887ce8a6849e158f541b..82b578bec9dbaa885d640547cd3f098e58869005 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php +++ b/civicrm/vendor/symfony/dependency-injection/Loader/XmlFileLoader.php @@ -13,13 +13,13 @@ namespace Symfony\Component\DependencyInjection\Loader; use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\Config\Util\XmlUtils; -use Symfony\Component\DependencyInjection\DefinitionDecorator; -use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Alias; +use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Definition; -use Symfony\Component\DependencyInjection\Reference; +use Symfony\Component\DependencyInjection\DefinitionDecorator; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use Symfony\Component\DependencyInjection\Exception\RuntimeException; +use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\ExpressionLanguage\Expression; /** @@ -63,7 +63,7 @@ class XmlFileLoader extends FileLoader */ public function supports($resource, $type = null) { - return is_string($resource) && 'xml' === pathinfo($resource, PATHINFO_EXTENSION); + return \is_string($resource) && 'xml' === pathinfo($resource, PATHINFO_EXTENSION); } /** @@ -93,8 +93,9 @@ class XmlFileLoader extends FileLoader return; } + $defaultDirectory = \dirname($file); foreach ($imports as $import) { - $this->setCurrentDir(dirname($file)); + $this->setCurrentDir($defaultDirectory); $this->import($import->getAttribute('resource'), null, (bool) XmlUtils::phpize($import->getAttribute('ignore-errors')), $file); } } @@ -115,25 +116,28 @@ class XmlFileLoader extends FileLoader } foreach ($services as $service) { - $this->parseDefinition((string) $service->getAttribute('id'), $service, $file); + if (null !== $definition = $this->parseDefinition($service, $file)) { + $this->container->setDefinition((string) $service->getAttribute('id'), $definition); + } } } /** * Parses an individual Definition. * - * @param string $id * @param \DOMElement $service * @param string $file + * + * @return Definition|null */ - private function parseDefinition($id, \DOMElement $service, $file) + private function parseDefinition(\DOMElement $service, $file) { if ($alias = $service->getAttribute('alias')) { $public = true; if ($publicAttr = $service->getAttribute('public')) { $public = XmlUtils::phpize($publicAttr); } - $this->container->setAlias($id, new Alias($alias, $public)); + $this->container->setAlias((string) $service->getAttribute('id'), new Alias($alias, $public)); return; } @@ -144,17 +148,48 @@ class XmlFileLoader extends FileLoader $definition = new Definition(); } - foreach (array('class', 'scope', 'public', 'factory-class', 'factory-method', 'factory-service', 'synthetic', 'synchronized', 'lazy', 'abstract') as $key) { + foreach (array('class', 'shared', 'public', 'factory-class', 'factory-method', 'factory-service', 'synthetic', 'lazy', 'abstract') as $key) { if ($value = $service->getAttribute($key)) { + if (\in_array($key, array('factory-class', 'factory-method', 'factory-service'))) { + @trigger_error(sprintf('The "%s" attribute of service "%s" in file "%s" is deprecated since Symfony 2.6 and will be removed in 3.0. Use the "factory" element instead.', $key, (string) $service->getAttribute('id'), $file), E_USER_DEPRECATED); + } $method = 'set'.str_replace('-', '', $key); $definition->$method(XmlUtils::phpize($value)); } } + if ($value = $service->getAttribute('autowire')) { + $definition->setAutowired(XmlUtils::phpize($value)); + } + + if ($value = $service->getAttribute('scope')) { + $triggerDeprecation = 'request' !== (string) $service->getAttribute('id'); + + if ($triggerDeprecation) { + @trigger_error(sprintf('The "scope" attribute of service "%s" in file "%s" is deprecated since Symfony 2.8 and will be removed in 3.0.', (string) $service->getAttribute('id'), $file), E_USER_DEPRECATED); + } + + $definition->setScope(XmlUtils::phpize($value), false); + } + + if ($value = $service->getAttribute('synchronized')) { + $triggerDeprecation = 'request' !== (string) $service->getAttribute('id'); + + if ($triggerDeprecation) { + @trigger_error(sprintf('The "synchronized" attribute of service "%s" in file "%s" is deprecated since Symfony 2.7 and will be removed in 3.0.', (string) $service->getAttribute('id'), $file), E_USER_DEPRECATED); + } + + $definition->setSynchronized(XmlUtils::phpize($value), $triggerDeprecation); + } + if ($files = $this->getChildren($service, 'file')) { $definition->setFile($files[0]->nodeValue); } + if ($deprecated = $this->getChildren($service, 'deprecated')) { + $definition->setDeprecated(true, $deprecated[0]->nodeValue ?: null); + } + $definition->setArguments($this->getArgumentsAsPhp($service, 'argument')); $definition->setProperties($this->getArgumentsAsPhp($service, 'property')); @@ -163,7 +198,11 @@ class XmlFileLoader extends FileLoader if ($function = $factory->getAttribute('function')) { $definition->setFactory($function); } else { - if ($childService = $factory->getAttribute('service')) { + $factoryService = $this->getChildren($factory, 'service'); + + if (isset($factoryService[0])) { + $class = $this->parseDefinition($factoryService[0], $file); + } elseif ($childService = $factory->getAttribute('service')) { $class = new Reference($childService, ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE, false); } else { $class = $factory->getAttribute('class'); @@ -178,7 +217,11 @@ class XmlFileLoader extends FileLoader if ($function = $configurator->getAttribute('function')) { $definition->setConfigurator($function); } else { - if ($childService = $configurator->getAttribute('service')) { + $configuratorService = $this->getChildren($configurator, 'service'); + + if (isset($configuratorService[0])) { + $class = $this->parseDefinition($configuratorService[0], $file); + } elseif ($childService = $configurator->getAttribute('service')) { $class = new Reference($childService, ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE, false); } else { $class = $configurator->getAttribute('class'); @@ -206,19 +249,28 @@ class XmlFileLoader extends FileLoader $parameters[$name] = XmlUtils::phpize($node->nodeValue); } + if ('' === $tag->getAttribute('name')) { + throw new InvalidArgumentException(sprintf('The tag name for service "%s" in %s must be a non-empty string.', (string) $service->getAttribute('id'), $file)); + } + $definition->addTag($tag->getAttribute('name'), $parameters); } + foreach ($this->getChildren($service, 'autowiring-type') as $type) { + $definition->addAutowiringType($type->textContent); + } + if ($value = $service->getAttribute('decorates')) { $renameId = $service->hasAttribute('decoration-inner-name') ? $service->getAttribute('decoration-inner-name') : null; - $definition->setDecoratedService($value, $renameId); + $priority = $service->hasAttribute('decoration-priority') ? $service->getAttribute('decoration-priority') : 0; + $definition->setDecoratedService($value, $renameId, $priority); } - $this->container->setDefinition($id, $definition); + return $definition; } /** - * Parses a XML file to a \DOMDocument + * Parses a XML file to a \DOMDocument. * * @param string $file Path to a file * @@ -263,6 +315,10 @@ class XmlFileLoader extends FileLoader if ($services = $this->getChildren($node, 'service')) { $definitions[$id] = array($services[0], $file, false); $services[0]->setAttribute('id', $id); + + // anonymous services are always private + // we could not use the constant false here, because of XML parsing + $services[0]->setAttribute('public', 'false'); } } } @@ -273,11 +329,7 @@ class XmlFileLoader extends FileLoader // give it a unique name $id = sprintf('%s_%d', hash('sha256', $file), ++$count); $node->setAttribute('id', $id); - - if ($services = $this->getChildren($node, 'service')) { - $definitions[$id] = array($node, $file, true); - $services[0]->setAttribute('id', $id); - } + $definitions[$id] = array($node, $file, true); } } @@ -286,18 +338,18 @@ class XmlFileLoader extends FileLoader foreach ($definitions as $id => $def) { list($domElement, $file, $wild) = $def; - // anonymous services are always private - // we could not use the constant false here, because of XML parsing - $domElement->setAttribute('public', 'false'); - - $this->parseDefinition($id, $domElement, $file); + if (null !== $definition = $this->parseDefinition($domElement, $file)) { + $this->container->setDefinition($id, $definition); + } if (true === $wild) { $tmpDomElement = new \DOMElement('_services', null, self::NS); $domElement->parentNode->replaceChild($tmpDomElement, $domElement); $tmpDomElement->setAttribute('id', $id); } else { - $domElement->parentNode->removeChild($domElement); + if (null !== $domElement->parentNode) { + $domElement->parentNode->removeChild($domElement); + } } } } @@ -319,21 +371,22 @@ class XmlFileLoader extends FileLoader $arg->setAttribute('key', $arg->getAttribute('name')); } - if (!$arg->hasAttribute('key')) { - $key = !$arguments ? 0 : max(array_keys($arguments)) + 1; - } else { - $key = $arg->getAttribute('key'); - } - - // parameter keys are case insensitive - if ('parameter' == $name && $lowercase) { - $key = strtolower($key); - } - // this is used by DefinitionDecorator to overwrite a specific // argument of the parent definition if ($arg->hasAttribute('index')) { $key = 'index_'.$arg->getAttribute('index'); + } elseif (!$arg->hasAttribute('key')) { + // Append an empty argument, then fetch its key to overwrite it later + $arguments[] = null; + $keys = array_keys($arguments); + $key = array_pop($keys); + } else { + $key = $arg->getAttribute('key'); + + // parameter keys are case insensitive + if ('parameter' == $name && $lowercase) { + $key = strtolower($key); + } } switch ($arg->getAttribute('type')) { @@ -364,7 +417,7 @@ class XmlFileLoader extends FileLoader $arguments[$key] = $arg->nodeValue; break; case 'constant': - $arguments[$key] = constant($arg->nodeValue); + $arguments[$key] = \constant(trim($arg->nodeValue)); break; default: $arguments[$key] = XmlUtils::phpize($arg->nodeValue); @@ -375,7 +428,7 @@ class XmlFileLoader extends FileLoader } /** - * Get child elements by name + * Get child elements by name. * * @param \DOMNode $node * @param mixed $name @@ -386,7 +439,7 @@ class XmlFileLoader extends FileLoader { $children = array(); foreach ($node->childNodes as $child) { - if ($child instanceof \DOMElement && $child->localName === $name && $child->namespaceURI === self::NS) { + if ($child instanceof \DOMElement && $child->localName === $name && self::NS === $child->namespaceURI) { $children[] = $child; } } @@ -409,7 +462,7 @@ class XmlFileLoader extends FileLoader if ($element = $dom->documentElement->getAttributeNS('http://www.w3.org/2001/XMLSchema-instance', 'schemaLocation')) { $items = preg_split('/\s+/', $element); - for ($i = 0, $nb = count($items); $i < $nb; $i += 2) { + for ($i = 0, $nb = \count($items); $i < $nb; $i += 2) { if (!$this->container->hasExtension($items[$i])) { continue; } @@ -418,7 +471,7 @@ class XmlFileLoader extends FileLoader $path = str_replace($extension->getNamespace(), str_replace('\\', '/', $extension->getXsdValidationBasePath()).'/', $items[$i + 1]); if (!is_file($path)) { - throw new RuntimeException(sprintf('Extension "%s" references a non-existent XSD file "%s"', get_class($extension), $path)); + throw new RuntimeException(sprintf('Extension "%s" references a non-existent XSD file "%s"', \get_class($extension), $path)); } $schemaLocations[$items[$i]] = $path; @@ -430,16 +483,20 @@ class XmlFileLoader extends FileLoader $imports = ''; foreach ($schemaLocations as $namespace => $location) { $parts = explode('/', $location); + $locationstart = 'file:///'; if (0 === stripos($location, 'phar://')) { $tmpfile = tempnam(sys_get_temp_dir(), 'sf2'); if ($tmpfile) { copy($location, $tmpfile); $tmpfiles[] = $tmpfile; $parts = explode('/', str_replace('\\', '/', $tmpfile)); + } else { + array_shift($parts); + $locationstart = 'phar:///'; } } - $drive = '\\' === DIRECTORY_SEPARATOR ? array_shift($parts).'/' : ''; - $location = 'file:///'.$drive.implode('/', array_map('rawurlencode', $parts)); + $drive = '\\' === \DIRECTORY_SEPARATOR ? array_shift($parts).'/' : ''; + $location = $locationstart.$drive.implode('/', array_map('rawurlencode', $parts)); $imports .= sprintf(' <xsd:import namespace="%s" schemaLocation="%s" />'."\n", $namespace, $location); } @@ -457,7 +514,9 @@ $imports EOF ; + $disableEntities = libxml_disable_entity_loader(false); $valid = @$dom->schemaValidateSource($source); + libxml_disable_entity_loader($disableEntities); foreach ($tmpfiles as $tmpfile) { @unlink($tmpfile); @@ -503,12 +562,12 @@ EOF private function loadFromExtensions(\DOMDocument $xml) { foreach ($xml->documentElement->childNodes as $node) { - if (!$node instanceof \DOMElement || $node->namespaceURI === self::NS) { + if (!$node instanceof \DOMElement || self::NS === $node->namespaceURI) { continue; } $values = static::convertDomElementToArray($node); - if (!is_array($values)) { + if (!\is_array($values)) { $values = array(); } @@ -517,7 +576,7 @@ EOF } /** - * Converts a \DomElement object to a PHP array. + * Converts a \DOMElement object to a PHP array. * * The following rules applies during the conversion: * @@ -531,11 +590,11 @@ EOF * * * The nested-tags are converted to keys (<foo><foo>bar</foo></foo>) * - * @param \DomElement $element A \DomElement instance + * @param \DOMElement $element A \DOMElement instance * * @return array A PHP array */ - public static function convertDomElementToArray(\DomElement $element) + public static function convertDomElementToArray(\DOMElement $element) { return XmlUtils::convertDomElementToArray($element); } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php b/civicrm/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php similarity index 67% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php rename to civicrm/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php index 3bbe958ada5658e123d0bd1c16b1da7c7e141623..51bc768c0fed87d51258aedaf90b4f615accd881 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php +++ b/civicrm/vendor/symfony/dependency-injection/Loader/YamlFileLoader.php @@ -11,16 +11,17 @@ namespace Symfony\Component\DependencyInjection\Loader; -use Symfony\Component\DependencyInjection\DefinitionDecorator; +use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\DependencyInjection\Alias; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Definition; -use Symfony\Component\DependencyInjection\Reference; +use Symfony\Component\DependencyInjection\DefinitionDecorator; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use Symfony\Component\DependencyInjection\Exception\RuntimeException; -use Symfony\Component\Config\Resource\FileResource; -use Symfony\Component\Yaml\Parser as YamlParser; +use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\ExpressionLanguage\Expression; +use Symfony\Component\Yaml\Exception\ParseException; +use Symfony\Component\Yaml\Parser as YamlParser; /** * YamlFileLoader loads YAML files service definitions. @@ -54,7 +55,7 @@ class YamlFileLoader extends FileLoader // parameters if (isset($content['parameters'])) { - if (!is_array($content['parameters'])) { + if (!\is_array($content['parameters'])) { throw new InvalidArgumentException(sprintf('The "parameters" key should contain an array in %s. Check your YAML syntax.', $resource)); } @@ -75,7 +76,7 @@ class YamlFileLoader extends FileLoader */ public function supports($resource, $type = null) { - return is_string($resource) && in_array(pathinfo($resource, PATHINFO_EXTENSION), array('yml', 'yaml'), true); + return \is_string($resource) && \in_array(pathinfo($resource, PATHINFO_EXTENSION), array('yml', 'yaml'), true); } /** @@ -84,22 +85,23 @@ class YamlFileLoader extends FileLoader * @param array $content * @param string $file */ - private function parseImports($content, $file) + private function parseImports(array $content, $file) { if (!isset($content['imports'])) { return; } - if (!is_array($content['imports'])) { + if (!\is_array($content['imports'])) { throw new InvalidArgumentException(sprintf('The "imports" key should contain an array in %s. Check your YAML syntax.', $file)); } + $defaultDirectory = \dirname($file); foreach ($content['imports'] as $import) { - if (!is_array($import)) { + if (!\is_array($import)) { throw new InvalidArgumentException(sprintf('The values in the "imports" key should be arrays in %s. Check your YAML syntax.', $file)); } - $this->setCurrentDir(dirname($file)); + $this->setCurrentDir($defaultDirectory); $this->import($import['resource'], null, isset($import['ignore_errors']) ? (bool) $import['ignore_errors'] : false, $file); } } @@ -110,13 +112,13 @@ class YamlFileLoader extends FileLoader * @param array $content * @param string $file */ - private function parseDefinitions($content, $file) + private function parseDefinitions(array $content, $file) { if (!isset($content['services'])) { return; } - if (!is_array($content['services'])) { + if (!\is_array($content['services'])) { throw new InvalidArgumentException(sprintf('The "services" key should contain an array in %s. Check your YAML syntax.', $file)); } @@ -128,22 +130,22 @@ class YamlFileLoader extends FileLoader /** * Parses a definition. * - * @param string $id - * @param array $service - * @param string $file + * @param string $id + * @param array|string $service + * @param string $file * * @throws InvalidArgumentException When tags are invalid */ private function parseDefinition($id, $service, $file) { - if (is_string($service) && 0 === strpos($service, '@')) { + if (\is_string($service) && 0 === strpos($service, '@')) { $this->container->setAlias($id, substr($service, 1)); return; } - if (!is_array($service)) { - throw new InvalidArgumentException(sprintf('A service definition must be an array or a string starting with "@" but %s found for service "%s" in %s. Check your YAML syntax.', gettype($service), $id, $file)); + if (!\is_array($service)) { + throw new InvalidArgumentException(sprintf('A service definition must be an array or a string starting with "@" but %s found for service "%s" in %s. Check your YAML syntax.', \gettype($service), $id, $file)); } if (isset($service['alias'])) { @@ -163,8 +165,15 @@ class YamlFileLoader extends FileLoader $definition->setClass($service['class']); } + if (isset($service['shared'])) { + $definition->setShared($service['shared']); + } + if (isset($service['scope'])) { - $definition->setScope($service['scope']); + if ('request' !== $id) { + @trigger_error(sprintf('The "scope" key of service "%s" in file "%s" is deprecated since Symfony 2.8 and will be removed in 3.0.', $id, $file), E_USER_DEPRECATED); + } + $definition->setScope($service['scope'], false); } if (isset($service['synthetic'])) { @@ -172,7 +181,8 @@ class YamlFileLoader extends FileLoader } if (isset($service['synchronized'])) { - $definition->setSynchronized($service['synchronized']); + @trigger_error(sprintf('The "synchronized" key of service "%s" in file "%s" is deprecated since Symfony 2.7 and will be removed in 3.0.', $id, $file), E_USER_DEPRECATED); + $definition->setSynchronized($service['synchronized'], 'request' !== $id); } if (isset($service['lazy'])) { @@ -187,9 +197,13 @@ class YamlFileLoader extends FileLoader $definition->setAbstract($service['abstract']); } + if (array_key_exists('deprecated', $service)) { + $definition->setDeprecated(true, $service['deprecated']); + } + if (isset($service['factory'])) { - if (is_string($service['factory'])) { - if (strpos($service['factory'], ':') !== false && strpos($service['factory'], '::') === false) { + if (\is_string($service['factory'])) { + if (false !== strpos($service['factory'], ':') && false === strpos($service['factory'], '::')) { $parts = explode(':', $service['factory']); $definition->setFactory(array($this->resolveServices('@'.$parts[0]), $parts[1])); } else { @@ -201,14 +215,17 @@ class YamlFileLoader extends FileLoader } if (isset($service['factory_class'])) { + @trigger_error(sprintf('The "factory_class" key of service "%s" in file "%s" is deprecated since Symfony 2.6 and will be removed in 3.0. Use "factory" instead.', $id, $file), E_USER_DEPRECATED); $definition->setFactoryClass($service['factory_class']); } if (isset($service['factory_method'])) { + @trigger_error(sprintf('The "factory_method" key of service "%s" in file "%s" is deprecated since Symfony 2.6 and will be removed in 3.0. Use "factory" instead.', $id, $file), E_USER_DEPRECATED); $definition->setFactoryMethod($service['factory_method']); } if (isset($service['factory_service'])) { + @trigger_error(sprintf('The "factory_service" key of service "%s" in file "%s" is deprecated since Symfony 2.6 and will be removed in 3.0. Use "factory" instead.', $id, $file), E_USER_DEPRECATED); $definition->setFactoryService($service['factory_service']); } @@ -225,7 +242,7 @@ class YamlFileLoader extends FileLoader } if (isset($service['configurator'])) { - if (is_string($service['configurator'])) { + if (\is_string($service['configurator'])) { $definition->setConfigurator($service['configurator']); } else { $definition->setConfigurator(array($this->resolveServices($service['configurator'][0]), $service['configurator'][1])); @@ -233,23 +250,30 @@ class YamlFileLoader extends FileLoader } if (isset($service['calls'])) { - if (!is_array($service['calls'])) { + if (!\is_array($service['calls'])) { throw new InvalidArgumentException(sprintf('Parameter "calls" must be an array for service "%s" in %s. Check your YAML syntax.', $id, $file)); } foreach ($service['calls'] as $call) { - $args = isset($call[1]) ? $this->resolveServices($call[1]) : array(); - $definition->addMethodCall($call[0], $args); + if (isset($call['method'])) { + $method = $call['method']; + $args = isset($call['arguments']) ? $this->resolveServices($call['arguments']) : array(); + } else { + $method = $call[0]; + $args = isset($call[1]) ? $this->resolveServices($call[1]) : array(); + } + + $definition->addMethodCall($method, $args); } } if (isset($service['tags'])) { - if (!is_array($service['tags'])) { + if (!\is_array($service['tags'])) { throw new InvalidArgumentException(sprintf('Parameter "tags" must be an array for service "%s" in %s. Check your YAML syntax.', $id, $file)); } foreach ($service['tags'] as $tag) { - if (!is_array($tag)) { + if (!\is_array($tag)) { throw new InvalidArgumentException(sprintf('A "tags" entry must be an array for service "%s" in %s. Check your YAML syntax.', $id, $file)); } @@ -257,6 +281,10 @@ class YamlFileLoader extends FileLoader throw new InvalidArgumentException(sprintf('A "tags" entry is missing a "name" key for service "%s" in %s.', $id, $file)); } + if (!\is_string($tag['name']) || '' === $tag['name']) { + throw new InvalidArgumentException(sprintf('The tag name for service "%s" in %s must be a non-empty string.', $id, $file)); + } + $name = $tag['name']; unset($tag['name']); @@ -271,8 +299,35 @@ class YamlFileLoader extends FileLoader } if (isset($service['decorates'])) { + if ('' !== $service['decorates'] && '@' === $service['decorates'][0]) { + throw new InvalidArgumentException(sprintf('The value of the "decorates" option for the "%s" service must be the id of the service without the "@" prefix (replace "%s" with "%s").', $id, $service['decorates'], substr($service['decorates'], 1))); + } + $renameId = isset($service['decoration_inner_name']) ? $service['decoration_inner_name'] : null; - $definition->setDecoratedService($service['decorates'], $renameId); + $priority = isset($service['decoration_priority']) ? $service['decoration_priority'] : 0; + $definition->setDecoratedService($service['decorates'], $renameId, $priority); + } + + if (isset($service['autowire'])) { + $definition->setAutowired($service['autowire']); + } + + if (isset($service['autowiring_types'])) { + if (\is_string($service['autowiring_types'])) { + $definition->addAutowiringType($service['autowiring_types']); + } else { + if (!\is_array($service['autowiring_types'])) { + throw new InvalidArgumentException(sprintf('Parameter "autowiring_types" must be a string or an array for service "%s" in %s. Check your YAML syntax.', $id, $file)); + } + + foreach ($service['autowiring_types'] as $autowiringType) { + if (!\is_string($autowiringType)) { + throw new InvalidArgumentException(sprintf('A "autowiring_types" attribute must be of type string for service "%s" in %s. Check your YAML syntax.', $id, $file)); + } + + $definition->addAutowiringType($autowiringType); + } + } } $this->container->setDefinition($id, $definition); @@ -298,14 +353,20 @@ class YamlFileLoader extends FileLoader } if (!file_exists($file)) { - throw new InvalidArgumentException(sprintf('The service file "%s" is not valid.', $file)); + throw new InvalidArgumentException(sprintf('The file "%s" does not exist.', $file)); } if (null === $this->yamlParser) { $this->yamlParser = new YamlParser(); } - return $this->validate($this->yamlParser->parse(file_get_contents($file)), $file); + try { + $configuration = $this->yamlParser->parse(file_get_contents($file)); + } catch (ParseException $e) { + throw new InvalidArgumentException(sprintf('The file "%s" does not contain valid YAML.', $file), 0, $e); + } + + return $this->validate($configuration, $file); } /** @@ -324,12 +385,12 @@ class YamlFileLoader extends FileLoader return $content; } - if (!is_array($content)) { + if (!\is_array($content)) { throw new InvalidArgumentException(sprintf('The service file "%s" is not valid. It should contain an array. Check your YAML syntax.', $file)); } foreach ($content as $namespace => $data) { - if (in_array($namespace, array('imports', 'parameters', 'services'))) { + if (\in_array($namespace, array('imports', 'parameters', 'services'))) { continue; } @@ -357,11 +418,11 @@ class YamlFileLoader extends FileLoader */ private function resolveServices($value) { - if (is_array($value)) { + if (\is_array($value)) { $value = array_map(array($this, 'resolveServices'), $value); - } elseif (is_string($value) && 0 === strpos($value, '@=')) { + } elseif (\is_string($value) && 0 === strpos($value, '@=')) { return new Expression(substr($value, 2)); - } elseif (is_string($value) && 0 === strpos($value, '@')) { + } elseif (\is_string($value) && 0 === strpos($value, '@')) { if (0 === strpos($value, '@@')) { $value = substr($value, 1); $invalidBehavior = null; @@ -390,17 +451,15 @@ class YamlFileLoader extends FileLoader /** * Loads from Extensions. - * - * @param array $content */ - private function loadFromExtensions($content) + private function loadFromExtensions(array $content) { foreach ($content as $namespace => $values) { - if (in_array($namespace, array('imports', 'parameters', 'services'))) { + if (\in_array($namespace, array('imports', 'parameters', 'services'))) { continue; } - if (!is_array($values)) { + if (!\is_array($values) && null !== $values) { $values = array(); } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd b/civicrm/vendor/symfony/dependency-injection/Loader/schema/dic/services/services-1.0.xsd similarity index 81% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd rename to civicrm/vendor/symfony/dependency-injection/Loader/schema/dic/services/services-1.0.xsd index 966f4de07fe4302520b2f67f295645ffb96a47e7..a8d7cf88df8f5cd8cdca202846a9e0e6aa709dfe 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd +++ b/civicrm/vendor/symfony/dependency-injection/Loader/schema/dic/services/services-1.0.xsd @@ -24,14 +24,28 @@ ]]></xsd:documentation> </xsd:annotation> <xsd:sequence> - <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> - <xsd:element name="imports" type="imports" minOccurs="0" maxOccurs="1" /> - <xsd:element name="parameters" type="parameters" minOccurs="0" maxOccurs="1" /> - <xsd:element name="services" type="services" minOccurs="0" maxOccurs="1" /> - <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> + <xsd:group ref="foreign" /> + <xsd:sequence minOccurs="0"> + <xsd:element name="imports" type="imports" /> + <xsd:group ref="foreign" /> + </xsd:sequence> + <xsd:sequence minOccurs="0"> + <xsd:element name="parameters" type="parameters" /> + <xsd:group ref="foreign" /> + </xsd:sequence> + <xsd:sequence minOccurs="0"> + <xsd:element name="services" type="services" /> + <xsd:group ref="foreign" /> + </xsd:sequence> </xsd:sequence> </xsd:complexType> + <xsd:group name="foreign"> + <xsd:sequence> + <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:group> + <xsd:complexType name="services"> <xsd:annotation> <xsd:documentation><![CDATA[ @@ -65,6 +79,9 @@ </xsd:complexType> <xsd:complexType name="callable"> + <xsd:choice minOccurs="0" maxOccurs="1"> + <xsd:element name="service" type="service" minOccurs="0" maxOccurs="1" /> + </xsd:choice> <xsd:attribute name="id" type="xsd:string" /> <xsd:attribute name="service" type="xsd:string" /> <xsd:attribute name="class" type="xsd:string" /> @@ -78,12 +95,15 @@ <xsd:element name="argument" type="argument" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="configurator" type="callable" minOccurs="0" maxOccurs="1" /> <xsd:element name="factory" type="callable" minOccurs="0" maxOccurs="1" /> + <xsd:element name="deprecated" type="xsd:string" minOccurs="0" maxOccurs="1" /> <xsd:element name="call" type="call" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="tag" type="tag" minOccurs="0" maxOccurs="unbounded" /> <xsd:element name="property" type="property" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="autowiring-type" type="xsd:string" minOccurs="0" maxOccurs="unbounded" /> </xsd:choice> <xsd:attribute name="id" type="xsd:string" /> <xsd:attribute name="class" type="xsd:string" /> + <xsd:attribute name="shared" type="boolean" /> <xsd:attribute name="scope" type="xsd:string" /> <xsd:attribute name="public" type="boolean" /> <xsd:attribute name="synthetic" type="boolean" /> @@ -97,10 +117,12 @@ <xsd:attribute name="parent" type="xsd:string" /> <xsd:attribute name="decorates" type="xsd:string" /> <xsd:attribute name="decoration-inner-name" type="xsd:string" /> + <xsd:attribute name="decoration-priority" type="xsd:integer" /> + <xsd:attribute name="autowire" type="boolean" /> </xsd:complexType> <xsd:complexType name="tag"> - <xsd:attribute name="name" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" use="required" /> <xsd:anyAttribute namespace="##any" processContents="lax" /> </xsd:complexType> @@ -123,35 +145,34 @@ </xsd:complexType> <xsd:complexType name="property" mixed="true"> - <xsd:choice minOccurs="0" maxOccurs="1"> - <xsd:element name="property" type="property" minOccurs="0" maxOccurs="unbounded" /> + <xsd:choice minOccurs="0"> + <xsd:element name="property" type="property" maxOccurs="unbounded" /> <xsd:element name="service" type="service" /> </xsd:choice> <xsd:attribute name="type" type="argument_type" /> <xsd:attribute name="id" type="xsd:string" /> <xsd:attribute name="key" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> - <xsd:attribute name="on-invalid" type="xsd:string" /> + <xsd:attribute name="on-invalid" type="invalid_sequence" /> <xsd:attribute name="strict" type="boolean" /> </xsd:complexType> <xsd:complexType name="argument" mixed="true"> - <xsd:choice maxOccurs="unbounded"> - <xsd:element name="argument" type="argument" minOccurs="0" maxOccurs="unbounded" /> + <xsd:choice minOccurs="0"> + <xsd:element name="argument" type="argument" maxOccurs="unbounded" /> <xsd:element name="service" type="service" /> </xsd:choice> <xsd:attribute name="type" type="argument_type" /> <xsd:attribute name="id" type="xsd:string" /> <xsd:attribute name="key" type="xsd:string" /> <xsd:attribute name="index" type="xsd:integer" /> - <xsd:attribute name="on-invalid" type="xsd:string" /> + <xsd:attribute name="on-invalid" type="invalid_sequence" /> <xsd:attribute name="strict" type="boolean" /> </xsd:complexType> - <xsd:complexType name="call" mixed="true"> - <xsd:choice maxOccurs="unbounded"> - <xsd:element name="argument" type="argument" minOccurs="0" maxOccurs="unbounded" /> - <xsd:element name="service" type="service" /> + <xsd:complexType name="call"> + <xsd:choice minOccurs="0"> + <xsd:element name="argument" type="argument" maxOccurs="unbounded" /> </xsd:choice> <xsd:attribute name="method" type="xsd:string" /> </xsd:complexType> diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Parameter.php b/civicrm/vendor/symfony/dependency-injection/Parameter.php similarity index 91% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Parameter.php rename to civicrm/vendor/symfony/dependency-injection/Parameter.php index 7ba8c3a630361c0ea6f3f190de941c9207768645..cac6f6c4c2264d653e614db308b9f01ebeac0e36 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Parameter.php +++ b/civicrm/vendor/symfony/dependency-injection/Parameter.php @@ -15,16 +15,12 @@ namespace Symfony\Component\DependencyInjection; * Parameter represents a parameter reference. * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ class Parameter { private $id; /** - * Constructor. - * * @param string $id The parameter key */ public function __construct($id) @@ -33,8 +29,6 @@ class Parameter } /** - * __toString. - * * @return string The parameter key */ public function __toString() diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ParameterBag/FrozenParameterBag.php b/civicrm/vendor/symfony/dependency-injection/ParameterBag/FrozenParameterBag.php similarity index 92% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ParameterBag/FrozenParameterBag.php rename to civicrm/vendor/symfony/dependency-injection/ParameterBag/FrozenParameterBag.php index 3ea6d9636ba2604af0bc8cb9302621349bb7eacb..ad65ad960f527b866a12f8f2527fe529e07a874e 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ParameterBag/FrozenParameterBag.php +++ b/civicrm/vendor/symfony/dependency-injection/ParameterBag/FrozenParameterBag.php @@ -17,22 +17,16 @@ use Symfony\Component\DependencyInjection\Exception\LogicException; * Holds read-only parameters. * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ class FrozenParameterBag extends ParameterBag { /** - * Constructor. - * * For performance reasons, the constructor assumes that * all keys are already lowercased. * * This is always the case when used internally. * * @param array $parameters An array of parameters - * - * @api */ public function __construct(array $parameters = array()) { @@ -42,8 +36,6 @@ class FrozenParameterBag extends ParameterBag /** * {@inheritdoc} - * - * @api */ public function clear() { @@ -52,8 +44,6 @@ class FrozenParameterBag extends ParameterBag /** * {@inheritdoc} - * - * @api */ public function add(array $parameters) { @@ -62,8 +52,6 @@ class FrozenParameterBag extends ParameterBag /** * {@inheritdoc} - * - * @api */ public function set($name, $value) { @@ -72,8 +60,6 @@ class FrozenParameterBag extends ParameterBag /** * {@inheritdoc} - * - * @api */ public function remove($name) { diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php b/civicrm/vendor/symfony/dependency-injection/ParameterBag/ParameterBag.php similarity index 84% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php rename to civicrm/vendor/symfony/dependency-injection/ParameterBag/ParameterBag.php index e4f4da19d1d851b6a577d36208573dbedbb0de64..c17029b3ef85175bf2ec6a50fd9ae69ea2365823 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php +++ b/civicrm/vendor/symfony/dependency-injection/ParameterBag/ParameterBag.php @@ -11,16 +11,14 @@ namespace Symfony\Component\DependencyInjection\ParameterBag; -use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; use Symfony\Component\DependencyInjection\Exception\ParameterCircularReferenceException; +use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; use Symfony\Component\DependencyInjection\Exception\RuntimeException; /** * Holds parameters. * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ class ParameterBag implements ParameterBagInterface { @@ -28,11 +26,7 @@ class ParameterBag implements ParameterBagInterface protected $resolved = false; /** - * Constructor. - * * @param array $parameters An array of parameters - * - * @api */ public function __construct(array $parameters = array()) { @@ -41,8 +35,6 @@ class ParameterBag implements ParameterBagInterface /** * Clears all parameters. - * - * @api */ public function clear() { @@ -53,8 +45,6 @@ class ParameterBag implements ParameterBagInterface * Adds parameters to the service container parameters. * * @param array $parameters An array of parameters - * - * @api */ public function add(array $parameters) { @@ -64,11 +54,7 @@ class ParameterBag implements ParameterBagInterface } /** - * Gets the service container parameters. - * - * @return array An array of parameters - * - * @api + * {@inheritdoc} */ public function all() { @@ -76,15 +62,7 @@ class ParameterBag implements ParameterBagInterface } /** - * Gets a service container parameter. - * - * @param string $name The parameter name - * - * @return mixed The parameter value - * - * @throws ParameterNotFoundException if the parameter is not defined - * - * @api + * {@inheritdoc} */ public function get($name) { @@ -98,7 +76,7 @@ class ParameterBag implements ParameterBagInterface $alternatives = array(); foreach ($this->parameters as $key => $parameterValue) { $lev = levenshtein($name, $key); - if ($lev <= strlen($name) / 3 || false !== strpos($key, $name)) { + if ($lev <= \strlen($name) / 3 || false !== strpos($key, $name)) { $alternatives[] = $key; } } @@ -114,8 +92,6 @@ class ParameterBag implements ParameterBagInterface * * @param string $name The parameter name * @param mixed $value The parameter value - * - * @api */ public function set($name, $value) { @@ -123,13 +99,7 @@ class ParameterBag implements ParameterBagInterface } /** - * Returns true if a parameter name is defined. - * - * @param string $name The parameter name - * - * @return bool true if the parameter name is defined, false otherwise - * - * @api + * {@inheritdoc} */ public function has($name) { @@ -140,8 +110,6 @@ class ParameterBag implements ParameterBagInterface * Removes a parameter. * * @param string $name The parameter name - * - * @api */ public function remove($name) { @@ -149,7 +117,7 @@ class ParameterBag implements ParameterBagInterface } /** - * Replaces parameter placeholders (%name%) by their values for all parameters. + * {@inheritdoc} */ public function resolve() { @@ -183,11 +151,11 @@ class ParameterBag implements ParameterBagInterface * * @throws ParameterNotFoundException if a placeholder references a parameter that does not exist * @throws ParameterCircularReferenceException if a circular reference if detected - * @throws RuntimeException when a given parameter has a type problem. + * @throws RuntimeException when a given parameter has a type problem */ public function resolveValue($value, array $resolving = array()) { - if (is_array($value)) { + if (\is_array($value)) { $args = array(); foreach ($value as $k => $v) { $args[$this->resolveValue($k, $resolving)] = $this->resolveValue($v, $resolving); @@ -196,7 +164,7 @@ class ParameterBag implements ParameterBagInterface return $args; } - if (!is_string($value)) { + if (!\is_string($value)) { return $value; } @@ -213,7 +181,7 @@ class ParameterBag implements ParameterBagInterface * * @throws ParameterNotFoundException if a placeholder references a parameter that does not exist * @throws ParameterCircularReferenceException if a circular reference if detected - * @throws RuntimeException when a given parameter has a type problem. + * @throws RuntimeException when a given parameter has a type problem */ public function resolveString($value, array $resolving = array()) { @@ -247,8 +215,8 @@ class ParameterBag implements ParameterBagInterface $resolved = $self->get($key); - if (!is_string($resolved) && !is_numeric($resolved)) { - throw new RuntimeException(sprintf('A string value must be composed of strings and/or numbers, but found parameter "%s" of type %s inside string value "%s".', $key, gettype($resolved), $value)); + if (!\is_string($resolved) && !is_numeric($resolved)) { + throw new RuntimeException(sprintf('A string value must be composed of strings and/or numbers, but found parameter "%s" of type %s inside string value "%s".', $key, \gettype($resolved), $value)); } $resolved = (string) $resolved; @@ -268,11 +236,11 @@ class ParameterBag implements ParameterBagInterface */ public function escapeValue($value) { - if (is_string($value)) { + if (\is_string($value)) { return str_replace('%', '%%', $value); } - if (is_array($value)) { + if (\is_array($value)) { $result = array(); foreach ($value as $k => $v) { $result[$k] = $this->escapeValue($v); @@ -284,13 +252,16 @@ class ParameterBag implements ParameterBagInterface return $value; } + /** + * {@inheritdoc} + */ public function unescapeValue($value) { - if (is_string($value)) { + if (\is_string($value)) { return str_replace('%%', '%', $value); } - if (is_array($value)) { + if (\is_array($value)) { $result = array(); foreach ($value as $k => $v) { $result[$k] = $this->unescapeValue($v); diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ParameterBag/ParameterBagInterface.php b/civicrm/vendor/symfony/dependency-injection/ParameterBag/ParameterBagInterface.php similarity index 89% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ParameterBag/ParameterBagInterface.php rename to civicrm/vendor/symfony/dependency-injection/ParameterBag/ParameterBagInterface.php index 96003547b69fb986bf8718f6ab8951e7a1b40d60..3291b373deb9008c4da554857ffbd74a40972194 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ParameterBag/ParameterBagInterface.php +++ b/civicrm/vendor/symfony/dependency-injection/ParameterBag/ParameterBagInterface.php @@ -11,21 +11,20 @@ namespace Symfony\Component\DependencyInjection\ParameterBag; +use Symfony\Component\DependencyInjection\Exception\LogicException; use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException; /** * ParameterBagInterface. * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ interface ParameterBagInterface { /** * Clears all parameters. * - * @api + * @throws LogicException if the ParameterBagInterface can not be cleared */ public function clear(); @@ -34,7 +33,7 @@ interface ParameterBagInterface * * @param array $parameters An array of parameters * - * @api + * @throws LogicException if the parameter can not be added */ public function add(array $parameters); @@ -42,8 +41,6 @@ interface ParameterBagInterface * Gets the service container parameters. * * @return array An array of parameters - * - * @api */ public function all(); @@ -55,8 +52,6 @@ interface ParameterBagInterface * @return mixed The parameter value * * @throws ParameterNotFoundException if the parameter is not defined - * - * @api */ public function get($name); @@ -66,7 +61,7 @@ interface ParameterBagInterface * @param string $name The parameter name * @param mixed $value The parameter value * - * @api + * @throws LogicException if the parameter can not be set */ public function set($name, $value); @@ -76,8 +71,6 @@ interface ParameterBagInterface * @param string $name The parameter name * * @return bool true if the parameter name is defined, false otherwise - * - * @api */ public function has($name); diff --git a/civicrm/vendor/symfony/dependency-injection/README.md b/civicrm/vendor/symfony/dependency-injection/README.md new file mode 100644 index 0000000000000000000000000000000000000000..932647f94a903d62ac6297c5d9acc638f6c9261a --- /dev/null +++ b/civicrm/vendor/symfony/dependency-injection/README.md @@ -0,0 +1,14 @@ +DependencyInjection Component +============================= + +The DependencyInjection component allows you to standardize and centralize the +way objects are constructed in your application. + +Resources +--------- + + * [Documentation](https://symfony.com/doc/current/components/dependency_injection/index.html) + * [Contributing](https://symfony.com/doc/current/contributing/index.html) + * [Report issues](https://github.com/symfony/symfony/issues) and + [send Pull Requests](https://github.com/symfony/symfony/pulls) + in the [main Symfony repository](https://github.com/symfony/symfony) diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Reference.php b/civicrm/vendor/symfony/dependency-injection/Reference.php similarity index 78% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Reference.php rename to civicrm/vendor/symfony/dependency-injection/Reference.php index 88084880f80c46649191c29be98cc8cf6bdc8ef6..869dfae1bc029d41a0b8e0fc684c26c2faaab400 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Reference.php +++ b/civicrm/vendor/symfony/dependency-injection/Reference.php @@ -15,8 +15,6 @@ namespace Symfony\Component\DependencyInjection; * Reference represents a service reference. * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ class Reference { @@ -25,7 +23,7 @@ class Reference private $strict; /** - * Constructor. + * Note: The $strict parameter is deprecated since version 2.8 and will be removed in 3.0. * * @param string $id The service identifier * @param int $invalidBehavior The behavior when the service does not exist @@ -41,8 +39,6 @@ class Reference } /** - * __toString. - * * @return string The service identifier */ public function __toString() @@ -64,9 +60,15 @@ class Reference * Returns true when this Reference is strict. * * @return bool + * + * @deprecated since version 2.8, to be removed in 3.0. */ - public function isStrict() + public function isStrict($triggerDeprecationError = true) { + if ($triggerDeprecationError) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + } + return $this->strict; } } diff --git a/civicrm/vendor/symfony/dependency-injection/ResettableContainerInterface.php b/civicrm/vendor/symfony/dependency-injection/ResettableContainerInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..b74e676245714878541ec7a2a3fcf167630c4773 --- /dev/null +++ b/civicrm/vendor/symfony/dependency-injection/ResettableContainerInterface.php @@ -0,0 +1,31 @@ +<?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\Component\DependencyInjection; + +/** + * ResettableContainerInterface defines additional resetting functionality + * for containers, allowing to release shared services when the container is + * not needed anymore. + * + * @author Christophe Coevoet <stof@notk.org> + */ +interface ResettableContainerInterface extends ContainerInterface +{ + /** + * Resets shared services from the container. + * + * The container is not intended to be used again after being reset in a normal workflow. This method is + * meant as a way to release references for ref-counting. + * A subsequent call to ContainerInterface::get will recreate a new instance of the shared service. + */ + public function reset(); +} diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Scope.php b/civicrm/vendor/symfony/dependency-injection/Scope.php similarity index 89% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Scope.php rename to civicrm/vendor/symfony/dependency-injection/Scope.php index 161229e44bc5801ac81be7584d5ada2f8bb120ac..b0b8ed6c2e5164d7973850dd3d9850373cdc21c4 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Scope.php +++ b/civicrm/vendor/symfony/dependency-injection/Scope.php @@ -16,33 +16,24 @@ namespace Symfony\Component\DependencyInjection; * * @author Johannes M. Schmitt <schmittjoh@gmail.com> * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ class Scope implements ScopeInterface { private $name; private $parentName; - /** - * @api - */ public function __construct($name, $parentName = ContainerInterface::SCOPE_CONTAINER) { $this->name = $name; $this->parentName = $parentName; } - /** - * @api - */ public function getName() { return $this->name; } - /** - * @api - */ public function getParentName() { return $this->parentName; diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ScopeInterface.php b/civicrm/vendor/symfony/dependency-injection/ScopeInterface.php similarity index 88% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ScopeInterface.php rename to civicrm/vendor/symfony/dependency-injection/ScopeInterface.php index 81ac67cc4d57ef447e4f11a85a30cab83e95fb2c..11b10973994adf337bcd1e9e67339d2b6f2971c9 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ScopeInterface.php +++ b/civicrm/vendor/symfony/dependency-injection/ScopeInterface.php @@ -16,17 +16,11 @@ namespace Symfony\Component\DependencyInjection; * * @author Johannes M. Schmitt <schmittjoh@gmail.com> * - * @api + * @deprecated since version 2.8, to be removed in 3.0. */ interface ScopeInterface { - /** - * @api - */ public function getName(); - /** - * @api - */ public function getParentName(); } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/SimpleXMLElement.php b/civicrm/vendor/symfony/dependency-injection/SimpleXMLElement.php similarity index 92% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/SimpleXMLElement.php rename to civicrm/vendor/symfony/dependency-injection/SimpleXMLElement.php index 2e20b6cf31b7332f4293a04607211ae7058fc011..bb985ace4f48dba542b043563d8c2501b4eb3d6e 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/SimpleXMLElement.php +++ b/civicrm/vendor/symfony/dependency-injection/SimpleXMLElement.php @@ -11,6 +11,8 @@ namespace Symfony\Component\DependencyInjection; +@trigger_error('The '.__NAMESPACE__.'\SimpleXMLElement class is deprecated since Symfony 2.5 and will be removed in 3.0.', E_USER_DEPRECATED); + use Symfony\Component\Config\Util\XmlUtils; use Symfony\Component\ExpressionLanguage\Expression; @@ -19,7 +21,7 @@ use Symfony\Component\ExpressionLanguage\Expression; * * @author Fabien Potencier <fabien@symfony.com> * - * @deprecated Deprecated since version 2.5, to be removed in 3.0. + * @deprecated since version 2.5, to be removed in 3.0. */ class SimpleXMLElement extends \SimpleXMLElement { @@ -90,7 +92,7 @@ class SimpleXMLElement extends \SimpleXMLElement $arguments[$key] = (string) $arg; break; case 'constant': - $arguments[$key] = constant((string) $arg); + $arguments[$key] = \constant((string) $arg); break; default: $arguments[$key] = self::phpize($arg); diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php b/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php deleted file mode 100644 index 972d708c593c9b2db0b62ca1b105087a60096c39..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.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. - */ - -namespace Symfony\Component\DependencyInjection\Compiler; - -use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; -use Symfony\Component\DependencyInjection\Reference; - -/** - * Replaces aliases with actual service definitions, effectively removing these - * aliases. - * - * @author Johannes M. Schmitt <schmittjoh@gmail.com> - */ -class ReplaceAliasByActualDefinitionPass implements CompilerPassInterface -{ - private $compiler; - private $formatter; - private $sourceId; - - /** - * Process the Container to replace aliases with service definitions. - * - * @param ContainerBuilder $container - * - * @throws InvalidArgumentException if the service definition does not exist - */ - public function process(ContainerBuilder $container) - { - $this->compiler = $container->getCompiler(); - $this->formatter = $this->compiler->getLoggingFormatter(); - - foreach ($container->getAliases() as $id => $alias) { - $aliasId = (string) $alias; - - try { - $definition = $container->getDefinition($aliasId); - } catch (InvalidArgumentException $e) { - throw new InvalidArgumentException(sprintf('Unable to replace alias "%s" with "%s".', $alias, $id), null, $e); - } - - if ($definition->isPublic()) { - continue; - } - - $definition->setPublic(true); - $container->setDefinition($id, $definition); - $container->removeDefinition($aliasId); - - $this->updateReferences($container, $aliasId, $id); - - // we have to restart the process due to concurrent modification of - // the container - $this->process($container); - - break; - } - } - - /** - * Updates references to remove aliases. - * - * @param ContainerBuilder $container The container - * @param string $currentId The alias identifier being replaced - * @param string $newId The id of the service the alias points to - */ - private function updateReferences($container, $currentId, $newId) - { - foreach ($container->getAliases() as $id => $alias) { - if ($currentId === (string) $alias) { - $container->setAlias($id, $newId); - } - } - - foreach ($container->getDefinitions() as $id => $definition) { - $this->sourceId = $id; - - $definition->setArguments( - $this->updateArgumentReferences($definition->getArguments(), $currentId, $newId) - ); - - $definition->setMethodCalls( - $this->updateArgumentReferences($definition->getMethodCalls(), $currentId, $newId) - ); - - $definition->setProperties( - $this->updateArgumentReferences($definition->getProperties(), $currentId, $newId) - ); - } - } - - /** - * Updates argument references. - * - * @param array $arguments An array of Arguments - * @param string $currentId The alias identifier - * @param string $newId The identifier the alias points to - * - * @return array - */ - private function updateArgumentReferences(array $arguments, $currentId, $newId) - { - foreach ($arguments as $k => $argument) { - if (is_array($argument)) { - $arguments[$k] = $this->updateArgumentReferences($argument, $currentId, $newId); - } elseif ($argument instanceof Reference) { - if ($currentId === (string) $argument) { - $arguments[$k] = new Reference($newId, $argument->getInvalidBehavior()); - $this->compiler->addLogMessage($this->formatter->formatUpdateReference($this, $this->sourceId, $currentId, $newId)); - } - } - } - - return $arguments; - } -} diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/README.md b/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/README.md deleted file mode 100644 index 19a1142ae24d805a0d6dc076d2bee7c9827821fd..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/README.md +++ /dev/null @@ -1,80 +0,0 @@ -DependencyInjection Component -============================= - -DependencyInjection manages your services via a robust and flexible Dependency -Injection Container. - -Here is a simple example that shows how to register services and parameters: - -```php -use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\DependencyInjection\Reference; - -$sc = new ContainerBuilder(); -$sc - ->register('foo', '%foo.class%') - ->addArgument(new Reference('bar')) -; -$sc->setParameter('foo.class', 'Foo'); - -$sc->get('foo'); -``` - -Method Calls (Setter Injection): - -```php -$sc = new ContainerBuilder(); - -$sc - ->register('bar', '%bar.class%') - ->addMethodCall('setFoo', array(new Reference('foo'))) -; -$sc->setParameter('bar.class', 'Bar'); - -$sc->get('bar'); -``` - -Factory Class: - -If your service is retrieved by calling a static method: - -```php -$sc = new ContainerBuilder(); - -$sc - ->register('bar', '%bar.class%') - ->setFactory(array('%bar.class%', 'getInstance')) - ->addArgument('Aarrg!!!') -; -$sc->setParameter('bar.class', 'Bar'); - -$sc->get('bar'); -``` - -File Include: - -For some services, especially those that are difficult or impossible to -autoload, you may need the container to include a file before -instantiating your class. - -```php -$sc = new ContainerBuilder(); - -$sc - ->register('bar', '%bar.class%') - ->setFile('/path/to/file') - ->addArgument('Aarrg!!!') -; -$sc->setParameter('bar.class', 'Bar'); - -$sc->get('bar'); -``` - -Resources ---------- - -You can run the unit tests with the following command: - - $ cd path/to/Symfony/Component/DependencyInjection/ - $ composer install - $ phpunit diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/TaggedContainerInterface.php b/civicrm/vendor/symfony/dependency-injection/TaggedContainerInterface.php similarity index 95% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/TaggedContainerInterface.php rename to civicrm/vendor/symfony/dependency-injection/TaggedContainerInterface.php index 3b4881703ccd00ba6ce8cbe25e83ea0546d5c4dc..90b297fff2f37c86f159cec17ccb4025155ac2d4 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/TaggedContainerInterface.php +++ b/civicrm/vendor/symfony/dependency-injection/TaggedContainerInterface.php @@ -15,8 +15,6 @@ namespace Symfony\Component\DependencyInjection; * TaggedContainerInterface is the interface implemented when a container knows how to deals with tags. * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ interface TaggedContainerInterface extends ContainerInterface { @@ -26,8 +24,6 @@ interface TaggedContainerInterface extends ContainerInterface * @param string $name The tag name * * @return array An array of tags - * - * @api */ public function findTaggedServiceIds($name); } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Variable.php b/civicrm/vendor/symfony/dependency-injection/Variable.php similarity index 86% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Variable.php rename to civicrm/vendor/symfony/dependency-injection/Variable.php index e50235607ec8f4f5c60705dfa442f2208bf9994f..9654ee4ddc6d8a60d03120883538be03698d421e 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Variable.php +++ b/civicrm/vendor/symfony/dependency-injection/Variable.php @@ -29,8 +29,6 @@ class Variable private $name; /** - * Constructor. - * * @param string $name */ public function __construct($name) @@ -38,11 +36,6 @@ class Variable $this->name = $name; } - /** - * Converts the object to a string. - * - * @return string - */ public function __toString() { return $this->name; diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/composer.json b/civicrm/vendor/symfony/dependency-injection/composer.json similarity index 65% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/composer.json rename to civicrm/vendor/symfony/dependency-injection/composer.json index ea30a46309cbce116068252dd3e98f75ae43178c..2506690ca6997dd80e73ee9ecadbe4d1beb7f78e 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/composer.json +++ b/civicrm/vendor/symfony/dependency-injection/composer.json @@ -16,13 +16,12 @@ } ], "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, "require-dev": { - "symfony/phpunit-bridge": "~2.7", - "symfony/yaml": "~2.1", - "symfony/config": "~2.2", - "symfony/expression-language": "~2.6" + "symfony/yaml": "~2.3.42|~2.7.14|~2.8.7|~3.0.7", + "symfony/config": "~2.2|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0" }, "conflict": { "symfony/expression-language": "<2.6" @@ -30,16 +29,19 @@ "suggest": { "symfony/yaml": "", "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them" }, "autoload": { - "psr-0": { "Symfony\\Component\\DependencyInjection\\": "" } + "psr-4": { "Symfony\\Component\\DependencyInjection\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, - "target-dir": "Symfony/Component/DependencyInjection", "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } } } diff --git a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/phpunit.xml.dist b/civicrm/vendor/symfony/dependency-injection/phpunit.xml.dist similarity index 93% rename from civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/phpunit.xml.dist rename to civicrm/vendor/symfony/dependency-injection/phpunit.xml.dist index 17a217226da3d177f8acae20b4571e32f02d2888..781f767d544821f256ee397137545cdd18a93c5d 100644 --- a/civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/phpunit.xml.dist +++ b/civicrm/vendor/symfony/dependency-injection/phpunit.xml.dist @@ -5,10 +5,13 @@ backupGlobals="false" colors="true" bootstrap="vendor/autoload.php" + failOnRisky="true" + failOnWarning="true" > <php> <ini name="error_reporting" value="-1" /> </php> + <testsuites> <testsuite name="Symfony DependencyInjection Component Test Suite"> <directory>./Tests/</directory> diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/CHANGELOG.md b/civicrm/vendor/symfony/event-dispatcher/CHANGELOG.md similarity index 100% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/CHANGELOG.md rename to civicrm/vendor/symfony/event-dispatcher/CHANGELOG.md diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/ContainerAwareEventDispatcher.php b/civicrm/vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php similarity index 84% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/ContainerAwareEventDispatcher.php rename to civicrm/vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php index 76f0e387762a38da24688e2831ea6f450b837d97..4dcede7e7381b5066ad7837618968f45f25a04e2 100644 --- a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/ContainerAwareEventDispatcher.php +++ b/civicrm/vendor/symfony/event-dispatcher/ContainerAwareEventDispatcher.php @@ -23,32 +23,18 @@ use Symfony\Component\DependencyInjection\ContainerInterface; */ class ContainerAwareEventDispatcher extends EventDispatcher { - /** - * The container from where services are loaded. - * - * @var ContainerInterface - */ private $container; /** * The service IDs of the event listeners and subscribers. - * - * @var array */ private $listenerIds = array(); /** * The services registered as listeners. - * - * @var array */ private $listeners = array(); - /** - * Constructor. - * - * @param ContainerInterface $container A ContainerInterface instance - */ public function __construct(ContainerInterface $container) { $this->container = $container; @@ -68,7 +54,7 @@ class ContainerAwareEventDispatcher extends EventDispatcher */ public function addListenerService($eventName, $callback, $priority = 0) { - if (!is_array($callback) || 2 !== count($callback)) { + if (!\is_array($callback) || 2 !== \count($callback)) { throw new \InvalidArgumentException('Expected an array("service", "method") argument'); } @@ -81,7 +67,7 @@ class ContainerAwareEventDispatcher extends EventDispatcher if (isset($this->listenerIds[$eventName])) { foreach ($this->listenerIds[$eventName] as $i => $args) { - list($serviceId, $method, $priority) = $args; + list($serviceId, $method) = $args; $key = $serviceId.'.'.$method; if (isset($this->listeners[$eventName][$key]) && $listener === array($this->listeners[$eventName][$key], $method)) { unset($this->listeners[$eventName][$key]); @@ -100,12 +86,12 @@ class ContainerAwareEventDispatcher extends EventDispatcher } /** - * @see EventDispatcherInterface::hasListeners() + * {@inheritdoc} */ public function hasListeners($eventName = null) { if (null === $eventName) { - return (bool) count($this->listenerIds) || (bool) count($this->listeners); + return $this->listenerIds || $this->listeners || parent::hasListeners(); } if (isset($this->listenerIds[$eventName])) { @@ -116,7 +102,7 @@ class ContainerAwareEventDispatcher extends EventDispatcher } /** - * @see EventDispatcherInterface::getListeners() + * {@inheritdoc} */ public function getListeners($eventName = null) { @@ -131,6 +117,16 @@ class ContainerAwareEventDispatcher extends EventDispatcher return parent::getListeners($eventName); } + /** + * {@inheritdoc} + */ + public function getListenerPriority($eventName, $listener) + { + $this->lazyLoad($eventName); + + return parent::getListenerPriority($eventName, $listener); + } + /** * Adds a service as event subscriber. * @@ -140,9 +136,9 @@ class ContainerAwareEventDispatcher extends EventDispatcher public function addSubscriberService($serviceId, $class) { foreach ($class::getSubscribedEvents() as $eventName => $params) { - if (is_string($params)) { + if (\is_string($params)) { $this->listenerIds[$eventName][] = array($serviceId, $params, 0); - } elseif (is_string($params[0])) { + } elseif (\is_string($params[0])) { $this->listenerIds[$eventName][] = array($serviceId, $params[0], isset($params[1]) ? $params[1] : 0); } else { foreach ($params as $listener) { @@ -152,21 +148,6 @@ class ContainerAwareEventDispatcher extends EventDispatcher } } - /** - * {@inheritdoc} - * - * Lazily loads listeners for this event from the dependency injection - * container. - * - * @throws \InvalidArgumentException if the service is not defined - */ - public function dispatch($eventName, Event $event = null) - { - $this->lazyLoad($eventName); - - return parent::dispatch($eventName, $event); - } - public function getContainer() { return $this->container; @@ -190,7 +171,7 @@ class ContainerAwareEventDispatcher extends EventDispatcher $key = $serviceId.'.'.$method; if (!isset($this->listeners[$eventName][$key])) { $this->addListener($eventName, array($listener, $method), $priority); - } elseif ($listener !== $this->listeners[$eventName][$key]) { + } elseif ($this->listeners[$eventName][$key] !== $listener) { parent::removeListener($eventName, array($this->listeners[$eventName][$key], $method)); $this->addListener($eventName, array($listener, $method), $priority); } diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Debug/TraceableEventDispatcher.php b/civicrm/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php similarity index 83% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Debug/TraceableEventDispatcher.php rename to civicrm/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php index e51aa2fafc0cb85a4ecf722090f48bcebee8d390..53d7c5d51a8f6d6127e5e06bed2ebf48bd0bcf42 100644 --- a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Debug/TraceableEventDispatcher.php +++ b/civicrm/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php @@ -11,11 +11,11 @@ namespace Symfony\Component\EventDispatcher\Debug; +use Psr\Log\LoggerInterface; +use Symfony\Component\EventDispatcher\Event; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\EventDispatcher\Event; use Symfony\Component\Stopwatch\Stopwatch; -use Psr\Log\LoggerInterface; /** * Collects some data about event listeners. @@ -33,13 +33,6 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface private $dispatcher; private $wrappedListeners; - /** - * Constructor. - * - * @param EventDispatcherInterface $dispatcher An EventDispatcherInterface instance - * @param Stopwatch $stopwatch A Stopwatch instance - * @param LoggerInterface $logger A LoggerInterface instance - */ public function __construct(EventDispatcherInterface $dispatcher, Stopwatch $stopwatch, LoggerInterface $logger = null) { $this->dispatcher = $dispatcher; @@ -99,6 +92,18 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface return $this->dispatcher->getListeners($eventName); } + /** + * {@inheritdoc} + */ + public function getListenerPriority($eventName, $listener) + { + if (!method_exists($this->dispatcher, 'getListenerPriority')) { + return 0; + } + + return $this->dispatcher->getListenerPriority($eventName, $listener); + } + /** * {@inheritdoc} */ @@ -116,6 +121,10 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface $event = new Event(); } + if (null !== $this->logger && $event->isPropagationStopped()) { + $this->logger->debug(sprintf('The "%s" event is already stopped. No listeners have been called.', $eventName)); + } + $this->preProcess($eventName); $this->preDispatch($eventName, $event); @@ -158,7 +167,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface $allListeners = $this->getListeners(); } catch (\Exception $e) { if (null !== $this->logger) { - $this->logger->info(sprintf('An exception was thrown while getting the uncalled listeners (%s)', $e->getMessage()), array('exception' => $e)); + $this->logger->info('An exception was thrown while getting the uncalled listeners.', array('exception' => $e)); } // unable to retrieve the uncalled listeners @@ -186,6 +195,8 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface } } + uasort($notCalled, array($this, 'sortListenersByPriority')); + return $notCalled; } @@ -199,7 +210,7 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface */ public function __call($method, $arguments) { - return call_user_func_array(array($this->dispatcher, $method), $arguments); + return \call_user_func_array(array($this->dispatcher, $method), $arguments); } /** @@ -225,12 +236,12 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface private function preProcess($eventName) { foreach ($this->dispatcher->getListeners($eventName) as $listener) { - $this->dispatcher->removeListener($eventName, $listener); $info = $this->getListenerInfo($listener, $eventName); $name = isset($info['class']) ? $info['class'] : $info['type']; $wrappedListener = new WrappedListener($listener, $name, $this->stopwatch, $this); $this->wrappedListeners[$eventName][] = $wrappedListener; - $this->dispatcher->addListener($eventName, $wrappedListener); + $this->dispatcher->removeListener($eventName, $listener); + $this->dispatcher->addListener($eventName, $wrappedListener, $info['priority']); } } @@ -243,8 +254,9 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface continue; } // Unwrap listener + $priority = $this->getListenerPriority($eventName, $listener); $this->dispatcher->removeListener($eventName, $listener); - $this->dispatcher->addListener($eventName, $listener->getWrappedListener()); + $this->dispatcher->addListener($eventName, $listener->getWrappedListener(), $priority); $info = $this->getListenerInfo($listener->getWrappedListener(), $eventName); if ($listener->wasCalled()) { @@ -285,13 +297,20 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface { $info = array( 'event' => $eventName, + 'priority' => $this->getListenerPriority($eventName, $listener), ); + + // unwrap for correct listener info + if ($listener instanceof WrappedListener) { + $listener = $listener->getWrappedListener(); + } + if ($listener instanceof \Closure) { $info += array( 'type' => 'Closure', 'pretty' => 'closure', ); - } elseif (is_string($listener)) { + } elseif (\is_string($listener)) { try { $r = new \ReflectionFunction($listener); $file = $r->getFileName(); @@ -307,11 +326,11 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface 'line' => $line, 'pretty' => $listener, ); - } elseif (is_array($listener) || (is_object($listener) && is_callable($listener))) { - if (!is_array($listener)) { + } elseif (\is_array($listener) || (\is_object($listener) && \is_callable($listener))) { + if (!\is_array($listener)) { $listener = array($listener, '__invoke'); } - $class = is_object($listener[0]) ? get_class($listener[0]) : $listener[0]; + $class = \is_object($listener[0]) ? \get_class($listener[0]) : $listener[0]; try { $r = new \ReflectionMethod($class, $listener[1]); $file = $r->getFileName(); @@ -332,4 +351,25 @@ class TraceableEventDispatcher implements TraceableEventDispatcherInterface return $info; } + + private function sortListenersByPriority($a, $b) + { + if (\is_int($a['priority']) && !\is_int($b['priority'])) { + return 1; + } + + if (!\is_int($a['priority']) && \is_int($b['priority'])) { + return -1; + } + + if ($a['priority'] === $b['priority']) { + return 0; + } + + if ($a['priority'] > $b['priority']) { + return -1; + } + + return 1; + } } diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Debug/TraceableEventDispatcherInterface.php b/civicrm/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php similarity index 100% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Debug/TraceableEventDispatcherInterface.php rename to civicrm/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcherInterface.php diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Debug/WrappedListener.php b/civicrm/vendor/symfony/event-dispatcher/Debug/WrappedListener.php similarity index 94% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Debug/WrappedListener.php rename to civicrm/vendor/symfony/event-dispatcher/Debug/WrappedListener.php index e16627d6ad91bd29a2be0bbf74e824d4b4a9e84f..1552af02d8ed608dbff2c7af8255aa0f307ceb70 100644 --- a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Debug/WrappedListener.php +++ b/civicrm/vendor/symfony/event-dispatcher/Debug/WrappedListener.php @@ -11,9 +11,9 @@ namespace Symfony\Component\EventDispatcher\Debug; -use Symfony\Component\Stopwatch\Stopwatch; use Symfony\Component\EventDispatcher\Event; use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\Stopwatch\Stopwatch; /** * @author Fabien Potencier <fabien@symfony.com> @@ -58,7 +58,7 @@ class WrappedListener $e = $this->stopwatch->start($this->name, 'event_listener'); - call_user_func($this->listener, $event, $eventName, $this->dispatcher ?: $dispatcher); + \call_user_func($this->listener, $event, $eventName, $this->dispatcher ?: $dispatcher); if ($e->isStarted()) { $e->stop(); diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/DependencyInjection/RegisterListenersPass.php b/civicrm/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php similarity index 94% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/DependencyInjection/RegisterListenersPass.php rename to civicrm/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php index 7e74a37aafdbd8ef10af7fec5743cbd2f963e640..5a94ae82b3bd4342a5394b56cce608e1bb87fb65 100644 --- a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/DependencyInjection/RegisterListenersPass.php +++ b/civicrm/vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php @@ -11,32 +11,19 @@ namespace Symfony\Component\EventDispatcher\DependencyInjection; -use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; +use Symfony\Component\DependencyInjection\ContainerBuilder; /** * Compiler pass to register tagged services for an event dispatcher. */ class RegisterListenersPass implements CompilerPassInterface { - /** - * @var string - */ protected $dispatcherService; - - /** - * @var string - */ protected $listenerTag; - - /** - * @var string - */ protected $subscriberTag; /** - * Constructor. - * * @param string $dispatcherService Service name of the event dispatcher in processed container * @param string $listenerTag Tag name used for listener * @param string $subscriberTag Tag name used for subscribers @@ -97,10 +84,13 @@ class RegisterListenersPass implements CompilerPassInterface // We must assume that the class value has been correctly filled, even if the service is created by a factory $class = $container->getParameterBag()->resolveValue($def->getClass()); - - $refClass = new \ReflectionClass($class); $interface = 'Symfony\Component\EventDispatcher\EventSubscriberInterface'; - if (!$refClass->implementsInterface($interface)) { + + if (!is_subclass_of($class, $interface)) { + if (!class_exists($class, false)) { + throw new \InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); + } + throw new \InvalidArgumentException(sprintf('Service "%s" must implement interface "%s".', $id, $interface)); } diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Event.php b/civicrm/vendor/symfony/event-dispatcher/Event.php similarity index 77% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Event.php rename to civicrm/vendor/symfony/event-dispatcher/Event.php index dc39b05d524e709daf31bc1487db4cf638871b68..320919ae2faae6022f2a67be1351808332312840 100644 --- a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/Event.php +++ b/civicrm/vendor/symfony/event-dispatcher/Event.php @@ -24,8 +24,6 @@ namespace Symfony\Component\EventDispatcher; * @author Jonathan Wage <jonwage@gmail.com> * @author Roman Borschel <roman@code-factory.org> * @author Bernhard Schussek <bschussek@gmail.com> - * - * @api */ class Event { @@ -35,7 +33,7 @@ class Event private $propagationStopped = false; /** - * @var EventDispatcher Dispatcher that dispatched this event + * @var EventDispatcherInterface Dispatcher that dispatched this event */ private $dispatcher; @@ -49,9 +47,7 @@ class Event * * @see Event::stopPropagation() * - * @return bool Whether propagation was already stopped for this event. - * - * @api + * @return bool Whether propagation was already stopped for this event */ public function isPropagationStopped() { @@ -64,8 +60,6 @@ class Event * If multiple event listeners are connected to the same event, no * further event listener will be triggered once any trigger calls * stopPropagation(). - * - * @api */ public function stopPropagation() { @@ -77,9 +71,7 @@ class Event * * @param EventDispatcherInterface $dispatcher * - * @deprecated Deprecated in 2.4, to be removed in 3.0. The event dispatcher is passed to the listener call. - * - * @api + * @deprecated since version 2.4, to be removed in 3.0. The event dispatcher is passed to the listener call. */ public function setDispatcher(EventDispatcherInterface $dispatcher) { @@ -91,12 +83,12 @@ class Event * * @return EventDispatcherInterface * - * @deprecated Deprecated in 2.4, to be removed in 3.0. The event dispatcher is passed to the listener call. - * - * @api + * @deprecated since version 2.4, to be removed in 3.0. The event dispatcher is passed to the listener call. */ public function getDispatcher() { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.4 and will be removed in 3.0. The event dispatcher instance can be received in the listener call instead.', E_USER_DEPRECATED); + return $this->dispatcher; } @@ -105,23 +97,21 @@ class Event * * @return string * - * @deprecated Deprecated in 2.4, to be removed in 3.0. The event name is passed to the listener call. - * - * @api + * @deprecated since version 2.4, to be removed in 3.0. The event name is passed to the listener call. */ public function getName() { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.4 and will be removed in 3.0. The event name can be received in the listener call instead.', E_USER_DEPRECATED); + return $this->name; } /** * Sets the event's name property. * - * @param string $name The event name. - * - * @deprecated Deprecated in 2.4, to be removed in 3.0. The event name is passed to the listener call. + * @param string $name The event name * - * @api + * @deprecated since version 2.4, to be removed in 3.0. The event name is passed to the listener call. */ public function setName($name) { diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php b/civicrm/vendor/symfony/event-dispatcher/EventDispatcher.php similarity index 73% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php rename to civicrm/vendor/symfony/event-dispatcher/EventDispatcher.php index 46c11100b34167cec63da4ff5a21b4f135ae94aa..b41b98e554e0d9de70cc54cc6df10942f06c20ad 100644 --- a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcher.php +++ b/civicrm/vendor/symfony/event-dispatcher/EventDispatcher.php @@ -24,8 +24,6 @@ namespace Symfony\Component\EventDispatcher; * @author Fabien Potencier <fabien@symfony.com> * @author Jordi Boggiano <j.boggiano@seld.be> * @author Jordan Alliot <jordan.alliot@gmail.com> - * - * @api */ class EventDispatcher implements EventDispatcherInterface { @@ -33,9 +31,7 @@ class EventDispatcher implements EventDispatcherInterface private $sorted = array(); /** - * @see EventDispatcherInterface::dispatch() - * - * @api + * {@inheritdoc} */ public function dispatch($eventName, Event $event = null) { @@ -46,21 +42,23 @@ class EventDispatcher implements EventDispatcherInterface $event->setDispatcher($this); $event->setName($eventName); - if (!isset($this->listeners[$eventName])) { - return $event; + if ($listeners = $this->getListeners($eventName)) { + $this->doDispatch($listeners, $eventName, $event); } - $this->doDispatch($this->getListeners($eventName), $eventName, $event); - return $event; } /** - * @see EventDispatcherInterface::getListeners() + * {@inheritdoc} */ public function getListeners($eventName = null) { if (null !== $eventName) { + if (!isset($this->listeners[$eventName])) { + return array(); + } + if (!isset($this->sorted[$eventName])) { $this->sortListeners($eventName); } @@ -78,17 +76,38 @@ class EventDispatcher implements EventDispatcherInterface } /** - * @see EventDispatcherInterface::hasListeners() + * Gets the listener priority for a specific event. + * + * Returns null if the event or the listener does not exist. + * + * @param string $eventName The name of the event + * @param callable $listener The listener + * + * @return int|null The event listener priority + */ + public function getListenerPriority($eventName, $listener) + { + if (!isset($this->listeners[$eventName])) { + return; + } + + foreach ($this->listeners[$eventName] as $priority => $listeners) { + if (false !== \in_array($listener, $listeners, true)) { + return $priority; + } + } + } + + /** + * {@inheritdoc} */ public function hasListeners($eventName = null) { - return (bool) count($this->getListeners($eventName)); + return (bool) $this->getListeners($eventName); } /** - * @see EventDispatcherInterface::addListener() - * - * @api + * {@inheritdoc} */ public function addListener($eventName, $listener, $priority = 0) { @@ -97,7 +116,7 @@ class EventDispatcher implements EventDispatcherInterface } /** - * @see EventDispatcherInterface::removeListener() + * {@inheritdoc} */ public function removeListener($eventName, $listener) { @@ -113,16 +132,14 @@ class EventDispatcher implements EventDispatcherInterface } /** - * @see EventDispatcherInterface::addSubscriber() - * - * @api + * {@inheritdoc} */ public function addSubscriber(EventSubscriberInterface $subscriber) { foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { - if (is_string($params)) { + if (\is_string($params)) { $this->addListener($eventName, array($subscriber, $params)); - } elseif (is_string($params[0])) { + } elseif (\is_string($params[0])) { $this->addListener($eventName, array($subscriber, $params[0]), isset($params[1]) ? $params[1] : 0); } else { foreach ($params as $listener) { @@ -133,17 +150,17 @@ class EventDispatcher implements EventDispatcherInterface } /** - * @see EventDispatcherInterface::removeSubscriber() + * {@inheritdoc} */ public function removeSubscriber(EventSubscriberInterface $subscriber) { foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { - if (is_array($params) && is_array($params[0])) { + if (\is_array($params) && \is_array($params[0])) { foreach ($params as $listener) { $this->removeListener($eventName, array($subscriber, $listener[0])); } } else { - $this->removeListener($eventName, array($subscriber, is_string($params) ? $params : $params[0])); + $this->removeListener($eventName, array($subscriber, \is_string($params) ? $params : $params[0])); } } } @@ -154,32 +171,28 @@ class EventDispatcher implements EventDispatcherInterface * This method can be overridden to add functionality that is executed * for each listener. * - * @param callable[] $listeners The event listeners. - * @param string $eventName The name of the event to dispatch. - * @param Event $event The event object to pass to the event handlers/listeners. + * @param callable[] $listeners The event listeners + * @param string $eventName The name of the event to dispatch + * @param Event $event The event object to pass to the event handlers/listeners */ protected function doDispatch($listeners, $eventName, Event $event) { foreach ($listeners as $listener) { - call_user_func($listener, $event, $eventName, $this); if ($event->isPropagationStopped()) { break; } + \call_user_func($listener, $event, $eventName, $this); } } /** * Sorts the internal list of listeners for the given event by priority. * - * @param string $eventName The name of the event. + * @param string $eventName The name of the event */ private function sortListeners($eventName) { - $this->sorted[$eventName] = array(); - - if (isset($this->listeners[$eventName])) { - krsort($this->listeners[$eventName]); - $this->sorted[$eventName] = call_user_func_array('array_merge', $this->listeners[$eventName]); - } + krsort($this->listeners[$eventName]); + $this->sorted[$eventName] = \call_user_func_array('array_merge', $this->listeners[$eventName]); } } diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcherInterface.php b/civicrm/vendor/symfony/event-dispatcher/EventDispatcherInterface.php similarity index 89% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcherInterface.php rename to civicrm/vendor/symfony/event-dispatcher/EventDispatcherInterface.php index 9d9fc4d44c47973d2c201b8c5b16ffc0c9b6cb3a..60160a90e00ae8a1c02545f0d0209e0711cdfd36 100644 --- a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventDispatcherInterface.php +++ b/civicrm/vendor/symfony/event-dispatcher/EventDispatcherInterface.php @@ -17,8 +17,6 @@ namespace Symfony\Component\EventDispatcher; * manager. * * @author Bernhard Schussek <bschussek@gmail.com> - * - * @api */ interface EventDispatcherInterface { @@ -28,12 +26,10 @@ interface EventDispatcherInterface * @param string $eventName The name of the event to dispatch. The name of * the event is the name of the method that is * invoked on listeners. - * @param Event $event The event to pass to the event handlers/listeners. - * If not supplied, an empty Event instance is created. + * @param Event $event The event to pass to the event handlers/listeners + * If not supplied, an empty Event instance is created * * @return Event - * - * @api */ public function dispatch($eventName, Event $event = null); @@ -44,8 +40,6 @@ interface EventDispatcherInterface * @param callable $listener The listener * @param int $priority The higher this value, the earlier an event * listener will be triggered in the chain (defaults to 0) - * - * @api */ public function addListener($eventName, $listener, $priority = 0); @@ -54,10 +48,6 @@ interface EventDispatcherInterface * * The subscriber is asked for all the events he is * interested in and added as a listener for these events. - * - * @param EventSubscriberInterface $subscriber The subscriber. - * - * @api */ public function addSubscriber(EventSubscriberInterface $subscriber); @@ -69,11 +59,6 @@ interface EventDispatcherInterface */ public function removeListener($eventName, $listener); - /** - * Removes an event subscriber. - * - * @param EventSubscriberInterface $subscriber The subscriber - */ public function removeSubscriber(EventSubscriberInterface $subscriber); /** diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventSubscriberInterface.php b/civicrm/vendor/symfony/event-dispatcher/EventSubscriberInterface.php similarity index 96% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventSubscriberInterface.php rename to civicrm/vendor/symfony/event-dispatcher/EventSubscriberInterface.php index ff7e305cd5880d9155dfdb8342aa88af2ebec610..8af778919bab71042d545f5f225fde02fa81845d 100644 --- a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/EventSubscriberInterface.php +++ b/civicrm/vendor/symfony/event-dispatcher/EventSubscriberInterface.php @@ -21,8 +21,6 @@ namespace Symfony\Component\EventDispatcher; * @author Jonathan Wage <jonwage@gmail.com> * @author Roman Borschel <roman@code-factory.org> * @author Bernhard Schussek <bschussek@gmail.com> - * - * @api */ interface EventSubscriberInterface { @@ -40,11 +38,9 @@ interface EventSubscriberInterface * * * array('eventName' => 'methodName') * * array('eventName' => array('methodName', $priority)) - * * array('eventName' => array(array('methodName1', $priority), array('methodName2')) + * * array('eventName' => array(array('methodName1', $priority), array('methodName2'))) * * @return array The event names to listen to - * - * @api */ public static function getSubscribedEvents(); } diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/GenericEvent.php b/civicrm/vendor/symfony/event-dispatcher/GenericEvent.php similarity index 73% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/GenericEvent.php rename to civicrm/vendor/symfony/event-dispatcher/GenericEvent.php index a8955ca42fe7f3f3f0d10630acb89461c9d0028b..95c99408de20f3ee779c1f44a009f56903adbace 100644 --- a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/GenericEvent.php +++ b/civicrm/vendor/symfony/event-dispatcher/GenericEvent.php @@ -20,25 +20,14 @@ namespace Symfony\Component\EventDispatcher; */ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate { - /** - * Event subject. - * - * @var mixed usually object or callable - */ protected $subject; - - /** - * Array of arguments. - * - * @var array - */ protected $arguments; /** * Encapsulate an event with $subject and $args. * - * @param mixed $subject The subject of the event, usually an object. - * @param array $arguments Arguments to store in the event. + * @param mixed $subject The subject of the event, usually an object or a callable + * @param array $arguments Arguments to store in the event */ public function __construct($subject = null, array $arguments = array()) { @@ -49,7 +38,7 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate /** * Getter for subject property. * - * @return mixed $subject The observer subject. + * @return mixed $subject The observer subject */ public function getSubject() { @@ -59,11 +48,11 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate /** * Get argument by key. * - * @param string $key Key. + * @param string $key Key * - * @throws \InvalidArgumentException If key is not found. + * @return mixed Contents of array key * - * @return mixed Contents of array key. + * @throws \InvalidArgumentException if key is not found */ public function getArgument($key) { @@ -71,16 +60,16 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate return $this->arguments[$key]; } - throw new \InvalidArgumentException(sprintf('%s not found in %s', $key, $this->getName())); + throw new \InvalidArgumentException(sprintf('Argument "%s" not found.', $key)); } /** * Add argument to event. * - * @param string $key Argument name. - * @param mixed $value Value. + * @param string $key Argument name + * @param mixed $value Value * - * @return GenericEvent + * @return $this */ public function setArgument($key, $value) { @@ -102,9 +91,9 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate /** * Set args property. * - * @param array $args Arguments. + * @param array $args Arguments * - * @return GenericEvent + * @return $this */ public function setArguments(array $args = array()) { @@ -116,7 +105,7 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate /** * Has argument. * - * @param string $key Key of arguments array. + * @param string $key Key of arguments array * * @return bool */ @@ -128,11 +117,11 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate /** * ArrayAccess for argument getter. * - * @param string $key Array key. - * - * @throws \InvalidArgumentException If key does not exist in $this->args. + * @param string $key Array key * * @return mixed + * + * @throws \InvalidArgumentException if key does not exist in $this->args */ public function offsetGet($key) { @@ -142,8 +131,8 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate /** * ArrayAccess for argument setter. * - * @param string $key Array key to set. - * @param mixed $value Value. + * @param string $key Array key to set + * @param mixed $value Value */ public function offsetSet($key, $value) { @@ -153,7 +142,7 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate /** * ArrayAccess for unset argument. * - * @param string $key Array key. + * @param string $key Array key */ public function offsetUnset($key) { @@ -165,7 +154,7 @@ class GenericEvent extends Event implements \ArrayAccess, \IteratorAggregate /** * ArrayAccess has argument. * - * @param string $key Array key. + * @param string $key Array key * * @return bool */ diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/ImmutableEventDispatcher.php b/civicrm/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php similarity index 89% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/ImmutableEventDispatcher.php rename to civicrm/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php index 7ef9ece75718f09751dc1fc1e3285c162f1c1436..b3cf56c502dba3a7f80fea3241b766024348c3d7 100644 --- a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/ImmutableEventDispatcher.php +++ b/civicrm/vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php @@ -18,18 +18,8 @@ namespace Symfony\Component\EventDispatcher; */ class ImmutableEventDispatcher implements EventDispatcherInterface { - /** - * The proxied dispatcher. - * - * @var EventDispatcherInterface - */ private $dispatcher; - /** - * Creates an unmodifiable proxy for an event dispatcher. - * - * @param EventDispatcherInterface $dispatcher The proxied event dispatcher. - */ public function __construct(EventDispatcherInterface $dispatcher) { $this->dispatcher = $dispatcher; @@ -83,6 +73,14 @@ class ImmutableEventDispatcher implements EventDispatcherInterface return $this->dispatcher->getListeners($eventName); } + /** + * {@inheritdoc} + */ + public function getListenerPriority($eventName, $listener) + { + return $this->dispatcher->getListenerPriority($eventName, $listener); + } + /** * {@inheritdoc} */ diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/LICENSE b/civicrm/vendor/symfony/event-dispatcher/LICENSE similarity index 96% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/LICENSE rename to civicrm/vendor/symfony/event-dispatcher/LICENSE index 43028bc600f26ec5599ab339d83cd70f70dfcdab..21d7fb9e2f29b50caca3a76f0647e94e2cc8ddc1 100644 --- a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/LICENSE +++ b/civicrm/vendor/symfony/event-dispatcher/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2004-2015 Fabien Potencier +Copyright (c) 2004-2018 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/event-dispatcher/README.md b/civicrm/vendor/symfony/event-dispatcher/README.md new file mode 100644 index 0000000000000000000000000000000000000000..185c3fecf8fee623ac3b03005fd32ec302147bd4 --- /dev/null +++ b/civicrm/vendor/symfony/event-dispatcher/README.md @@ -0,0 +1,15 @@ +EventDispatcher Component +========================= + +The EventDispatcher component provides tools that allow your application +components to communicate with each other by dispatching events and listening to +them. + +Resources +--------- + + * [Documentation](https://symfony.com/doc/current/components/event_dispatcher/index.html) + * [Contributing](https://symfony.com/doc/current/contributing/index.html) + * [Report issues](https://github.com/symfony/symfony/issues) and + [send Pull Requests](https://github.com/symfony/symfony/pulls) + in the [main Symfony repository](https://github.com/symfony/symfony) diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/README.md b/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/README.md deleted file mode 100644 index 8031f4dd3f194960991e14bf3099b422b959396e..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/README.md +++ /dev/null @@ -1,27 +0,0 @@ -EventDispatcher Component -========================= - -The Symfony EventDispatcher component implements the Mediator pattern in a -simple and effective way to make your projects truly extensible. - -```php -use Symfony\Component\EventDispatcher\EventDispatcher; -use Symfony\Component\EventDispatcher\Event; - -$dispatcher = new EventDispatcher(); - -$dispatcher->addListener('event_name', function (Event $event) { - // ... -}); - -$dispatcher->dispatch('event_name'); -``` - -Resources ---------- - -You can run the unit tests with the following command: - - $ cd path/to/Symfony/Component/EventDispatcher/ - $ composer install - $ phpunit diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/composer.json b/civicrm/vendor/symfony/event-dispatcher/composer.json similarity index 65% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/composer.json rename to civicrm/vendor/symfony/event-dispatcher/composer.json index 1b1bd39ac9c5a3f302f89ce7503444928cfbfd5d..14fc24ba22a0a5b30e647d9caebd2ec5466ee672 100644 --- a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/composer.json +++ b/civicrm/vendor/symfony/event-dispatcher/composer.json @@ -16,14 +16,13 @@ } ], "require": { - "php": ">=5.3.3" + "php": ">=5.3.9" }, "require-dev": { - "symfony/phpunit-bridge": "~2.7", - "symfony/dependency-injection": "~2.6", - "symfony/expression-language": "~2.6", - "symfony/config": "~2.0,>=2.0.5", - "symfony/stopwatch": "~2.3", + "symfony/dependency-injection": "~2.6|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/config": "^2.0.5|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0", "psr/log": "~1.0" }, "suggest": { @@ -31,13 +30,15 @@ "symfony/http-kernel": "" }, "autoload": { - "psr-0": { "Symfony\\Component\\EventDispatcher\\": "" } + "psr-4": { "Symfony\\Component\\EventDispatcher\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, - "target-dir": "Symfony/Component/EventDispatcher", "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } } } diff --git a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/phpunit.xml.dist b/civicrm/vendor/symfony/event-dispatcher/phpunit.xml.dist similarity index 93% rename from civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/phpunit.xml.dist rename to civicrm/vendor/symfony/event-dispatcher/phpunit.xml.dist index b14fde575007da470d9fd7cecb4e90d03c7c80f8..b3ad1bdf5a8e3344357ea623024e7fdfe18b3d8f 100644 --- a/civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/phpunit.xml.dist +++ b/civicrm/vendor/symfony/event-dispatcher/phpunit.xml.dist @@ -5,10 +5,13 @@ backupGlobals="false" colors="true" bootstrap="vendor/autoload.php" + failOnRisky="true" + failOnWarning="true" > <php> <ini name="error_reporting" value="-1" /> </php> + <testsuites> <testsuite name="Symfony EventDispatcher Component Test Suite"> <directory>./Tests/</directory> diff --git a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/CHANGELOG.md b/civicrm/vendor/symfony/filesystem/CHANGELOG.md similarity index 83% rename from civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/CHANGELOG.md rename to civicrm/vendor/symfony/filesystem/CHANGELOG.md index a4c0479f7d9a7630725357d07fcf00303456f3c6..aee6e804b0d0279d67f374affcf1d1852cafebdf 100644 --- a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/CHANGELOG.md +++ b/civicrm/vendor/symfony/filesystem/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +2.8.0 +----- + + * added tempnam() a stream aware version of PHP's native tempnam() + 2.6.0 ----- diff --git a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Exception/ExceptionInterface.php b/civicrm/vendor/symfony/filesystem/Exception/ExceptionInterface.php similarity index 97% rename from civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Exception/ExceptionInterface.php rename to civicrm/vendor/symfony/filesystem/Exception/ExceptionInterface.php index c212e664d487a2af651705db58bf2570f78edf6f..8f4f10aac70925334ddb7a14ab3ee79cd19de680 100644 --- a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Exception/ExceptionInterface.php +++ b/civicrm/vendor/symfony/filesystem/Exception/ExceptionInterface.php @@ -15,8 +15,6 @@ namespace Symfony\Component\Filesystem\Exception; * Exception interface for all exceptions thrown by the component. * * @author Romain Neutron <imprec@gmail.com> - * - * @api */ interface ExceptionInterface { diff --git a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Exception/FileNotFoundException.php b/civicrm/vendor/symfony/filesystem/Exception/FileNotFoundException.php similarity index 94% rename from civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Exception/FileNotFoundException.php rename to civicrm/vendor/symfony/filesystem/Exception/FileNotFoundException.php index 15533db408966bc3d97f2525c2ffadd190c201b4..bcc8fe81fcef4159ef6042cb1bd023109f7e26c6 100644 --- a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Exception/FileNotFoundException.php +++ b/civicrm/vendor/symfony/filesystem/Exception/FileNotFoundException.php @@ -12,7 +12,7 @@ namespace Symfony\Component\Filesystem\Exception; /** - * Exception class thrown when a file couldn't be found + * Exception class thrown when a file couldn't be found. * * @author Fabien Potencier <fabien@symfony.com> * @author Christian Gärtner <christiangaertner.film@googlemail.com> diff --git a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Exception/IOException.php b/civicrm/vendor/symfony/filesystem/Exception/IOException.php similarity index 98% rename from civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Exception/IOException.php rename to civicrm/vendor/symfony/filesystem/Exception/IOException.php index f68a8202c84efcc79b297d7e7084f4c062f1c1bc..144e0e602bdfe15d9ba0268b3c55e775f058f8ab 100644 --- a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Exception/IOException.php +++ b/civicrm/vendor/symfony/filesystem/Exception/IOException.php @@ -17,8 +17,6 @@ namespace Symfony\Component\Filesystem\Exception; * @author Romain Neutron <imprec@gmail.com> * @author Christian Gärtner <christiangaertner.film@googlemail.com> * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ class IOException extends \RuntimeException implements IOExceptionInterface { diff --git a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Exception/IOExceptionInterface.php b/civicrm/vendor/symfony/filesystem/Exception/IOExceptionInterface.php similarity index 87% rename from civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Exception/IOExceptionInterface.php rename to civicrm/vendor/symfony/filesystem/Exception/IOExceptionInterface.php index c88c763173c4a20be6a1cc38b5b92cc19015102a..c11965a4247ee4811f7ee38b78bc792f76acc08b 100644 --- a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Exception/IOExceptionInterface.php +++ b/civicrm/vendor/symfony/filesystem/Exception/IOExceptionInterface.php @@ -19,9 +19,9 @@ namespace Symfony\Component\Filesystem\Exception; interface IOExceptionInterface extends ExceptionInterface { /** - * Returns the associated path for the exception + * Returns the associated path for the exception. * - * @return string The path. + * @return string The path */ public function getPath(); } diff --git a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Filesystem.php b/civicrm/vendor/symfony/filesystem/Filesystem.php similarity index 51% rename from civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Filesystem.php rename to civicrm/vendor/symfony/filesystem/Filesystem.php index 00e4d33f7ac59c1e3cc872f8953e8a44287df784..5df92e733d366959fe35266413500893c62e4384 100644 --- a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/Filesystem.php +++ b/civicrm/vendor/symfony/filesystem/Filesystem.php @@ -11,8 +11,8 @@ namespace Symfony\Component\Filesystem; -use Symfony\Component\Filesystem\Exception\IOException; use Symfony\Component\Filesystem\Exception\FileNotFoundException; +use Symfony\Component\Filesystem\Exception\IOException; /** * Provides basic utility to manipulate the file system. @@ -21,30 +21,33 @@ use Symfony\Component\Filesystem\Exception\FileNotFoundException; */ class Filesystem { + private static $lastError; + /** * Copies a file. * - * This method only copies the file if the origin file is newer than the target file. - * - * By default, if the target already exists, it is not overridden. + * If the target file is older than the origin file, it's always overwritten. + * If the target file is newer, it is overwritten only when the + * $overwriteNewerFiles option is set to true. * - * @param string $originFile The original filename - * @param string $targetFile The target filename - * @param bool $override Whether to override an existing file or not + * @param string $originFile The original filename + * @param string $targetFile The target filename + * @param bool $overwriteNewerFiles If true, target files newer than origin files are overwritten * * @throws FileNotFoundException When originFile doesn't exist * @throws IOException When copy fails */ - public function copy($originFile, $targetFile, $override = false) + public function copy($originFile, $targetFile, $overwriteNewerFiles = false) { - if (stream_is_local($originFile) && !is_file($originFile)) { + $originIsLocal = stream_is_local($originFile) || 0 === stripos($originFile, 'file://'); + if ($originIsLocal && !is_file($originFile)) { throw new FileNotFoundException(sprintf('Failed to copy "%s" because file does not exist.', $originFile), 0, null, $originFile); } - $this->mkdir(dirname($targetFile)); + $this->mkdir(\dirname($targetFile)); $doCopy = true; - if (!$override && null === parse_url($originFile, PHP_URL_HOST) && is_file($targetFile)) { + if (!$overwriteNewerFiles && null === parse_url($originFile, PHP_URL_HOST) && is_file($targetFile)) { $doCopy = filemtime($originFile) > filemtime($targetFile); } @@ -68,8 +71,13 @@ class Filesystem throw new IOException(sprintf('Failed to copy "%s" to "%s".', $originFile, $targetFile), 0, null, $originFile); } - if (stream_is_local($originFile) && $bytesCopied !== filesize($originFile)) { - throw new IOException(sprintf('Failed to copy the whole content of "%s" to "%s %g bytes copied".', $originFile, $targetFile, $bytesCopied), 0, null, $originFile); + if ($originIsLocal) { + // Like `cp`, preserve executable permission bits + @chmod($targetFile, fileperms($targetFile) | (fileperms($originFile) & 0111)); + + if ($bytesCopied !== $bytesOrigin = filesize($originFile)) { + throw new IOException(sprintf('Failed to copy the whole content of "%s" to "%s" (%g of %g bytes copied).', $originFile, $targetFile, $bytesCopied, $bytesOrigin), 0, null, $originFile); + } } } } @@ -77,8 +85,8 @@ class Filesystem /** * Creates a directory recursively. * - * @param string|array|\Traversable $dirs The directory path - * @param int $mode The directory mode + * @param string|iterable $dirs The directory path + * @param int $mode The directory mode * * @throws IOException On any directory creation failure */ @@ -89,12 +97,11 @@ class Filesystem continue; } - if (true !== @mkdir($dir, $mode, true)) { - $error = error_get_last(); + if (!self::box('mkdir', $dir, $mode, true)) { if (!is_dir($dir)) { // The directory was not created by a concurrent process. Let's throw an exception with a developer friendly error message if we have one - if ($error) { - throw new IOException(sprintf('Failed to create "%s": %s.', $dir, $error['message']), 0, null, $dir); + if (self::$lastError) { + throw new IOException(sprintf('Failed to create "%s": %s.', $dir, self::$lastError), 0, null, $dir); } throw new IOException(sprintf('Failed to create "%s"', $dir), 0, null, $dir); } @@ -105,13 +112,19 @@ class Filesystem /** * Checks the existence of files or directories. * - * @param string|array|\Traversable $files A filename, an array of files, or a \Traversable instance to check + * @param string|iterable $files A filename, an array of files, or a \Traversable instance to check * * @return bool true if the file exists, false otherwise */ public function exists($files) { + $maxPathLength = PHP_MAXPATHLEN - 2; + foreach ($this->toIterator($files) as $file) { + if (\strlen($file) > $maxPathLength) { + throw new IOException(sprintf('Could not check if file exist because path length exceeds %d characters.', $maxPathLength), 0, null, $file); + } + if (!file_exists($file)) { return false; } @@ -123,9 +136,9 @@ class Filesystem /** * Sets access and modification time of file. * - * @param string|array|\Traversable $files A filename, an array of files, or a \Traversable instance to create - * @param int $time The touch time as a Unix timestamp - * @param int $atime The access time as a Unix timestamp + * @param string|iterable $files A filename, an array of files, or a \Traversable instance to create + * @param int $time The touch time as a Unix timestamp + * @param int $atime The access time as a Unix timestamp * * @throws IOException When touch fails */ @@ -142,36 +155,32 @@ class Filesystem /** * Removes files or directories. * - * @param string|array|\Traversable $files A filename, an array of files, or a \Traversable instance to remove + * @param string|iterable $files A filename, an array of files, or a \Traversable instance to remove * * @throws IOException When removal fails */ public function remove($files) { - $files = iterator_to_array($this->toIterator($files)); + if ($files instanceof \Traversable) { + $files = iterator_to_array($files, false); + } elseif (!\is_array($files)) { + $files = array($files); + } $files = array_reverse($files); foreach ($files as $file) { - if (!file_exists($file) && !is_link($file)) { - continue; - } - - if (is_dir($file) && !is_link($file)) { - $this->remove(new \FilesystemIterator($file)); - - if (true !== @rmdir($file)) { - throw new IOException(sprintf('Failed to remove directory "%s".', $file), 0, null, $file); + if (is_link($file)) { + // See https://bugs.php.net/52176 + if (!(self::box('unlink', $file) || '\\' !== \DIRECTORY_SEPARATOR || self::box('rmdir', $file)) && file_exists($file)) { + throw new IOException(sprintf('Failed to remove symlink "%s": %s.', $file, self::$lastError)); } - } else { - // https://bugs.php.net/bug.php?id=52176 - if ('\\' === DIRECTORY_SEPARATOR && is_dir($file)) { - if (true !== @rmdir($file)) { - throw new IOException(sprintf('Failed to remove file "%s".', $file), 0, null, $file); - } - } else { - if (true !== @unlink($file)) { - throw new IOException(sprintf('Failed to remove file "%s".', $file), 0, null, $file); - } + } elseif (is_dir($file)) { + $this->remove(new \FilesystemIterator($file, \FilesystemIterator::CURRENT_AS_PATHNAME | \FilesystemIterator::SKIP_DOTS)); + + if (!self::box('rmdir', $file) && file_exists($file)) { + throw new IOException(sprintf('Failed to remove directory "%s": %s.', $file, self::$lastError)); } + } elseif (!self::box('unlink', $file) && file_exists($file)) { + throw new IOException(sprintf('Failed to remove file "%s": %s.', $file, self::$lastError)); } } } @@ -179,31 +188,31 @@ class Filesystem /** * Change mode for an array of files or directories. * - * @param string|array|\Traversable $files A filename, an array of files, or a \Traversable instance to change mode - * @param int $mode The new mode (octal) - * @param int $umask The mode mask (octal) - * @param bool $recursive Whether change the mod recursively or not + * @param string|iterable $files A filename, an array of files, or a \Traversable instance to change mode + * @param int $mode The new mode (octal) + * @param int $umask The mode mask (octal) + * @param bool $recursive Whether change the mod recursively or not * * @throws IOException When the change fail */ public function chmod($files, $mode, $umask = 0000, $recursive = false) { foreach ($this->toIterator($files) as $file) { - if ($recursive && is_dir($file) && !is_link($file)) { - $this->chmod(new \FilesystemIterator($file), $mode, $umask, true); - } if (true !== @chmod($file, $mode & ~$umask)) { throw new IOException(sprintf('Failed to chmod file "%s".', $file), 0, null, $file); } + if ($recursive && is_dir($file) && !is_link($file)) { + $this->chmod(new \FilesystemIterator($file), $mode, $umask, true); + } } } /** * Change the owner of an array of files or directories. * - * @param string|array|\Traversable $files A filename, an array of files, or a \Traversable instance to change owner - * @param string $user The new owner user name - * @param bool $recursive Whether change the owner recursively or not + * @param string|iterable $files A filename, an array of files, or a \Traversable instance to change owner + * @param string $user The new owner user name + * @param bool $recursive Whether change the owner recursively or not * * @throws IOException When the change fail */ @@ -213,7 +222,7 @@ class Filesystem if ($recursive && is_dir($file) && !is_link($file)) { $this->chown(new \FilesystemIterator($file), $user, true); } - if (is_link($file) && function_exists('lchown')) { + if (is_link($file) && \function_exists('lchown')) { if (true !== @lchown($file, $user)) { throw new IOException(sprintf('Failed to chown file "%s".', $file), 0, null, $file); } @@ -228,9 +237,9 @@ class Filesystem /** * Change the group of an array of files or directories. * - * @param string|array|\Traversable $files A filename, an array of files, or a \Traversable instance to change group - * @param string $group The group name - * @param bool $recursive Whether change the group recursively or not + * @param string|iterable $files A filename, an array of files, or a \Traversable instance to change group + * @param string $group The group name + * @param bool $recursive Whether change the group recursively or not * * @throws IOException When the change fail */ @@ -240,8 +249,8 @@ class Filesystem if ($recursive && is_dir($file) && !is_link($file)) { $this->chgrp(new \FilesystemIterator($file), $group, true); } - if (is_link($file) && function_exists('lchgrp')) { - if (true !== @lchgrp($file, $group) || (defined('HHVM_VERSION') && !posix_getgrnam($group))) { + if (is_link($file) && \function_exists('lchgrp')) { + if (true !== @lchgrp($file, $group) || (\defined('HHVM_VERSION') && !posix_getgrnam($group))) { throw new IOException(sprintf('Failed to chgrp file "%s".', $file), 0, null, $file); } } else { @@ -265,15 +274,42 @@ class Filesystem public function rename($origin, $target, $overwrite = false) { // we check that target does not exist - if (!$overwrite && is_readable($target)) { + if (!$overwrite && $this->isReadable($target)) { throw new IOException(sprintf('Cannot rename because the target "%s" already exists.', $target), 0, null, $target); } if (true !== @rename($origin, $target)) { + if (is_dir($origin)) { + // See https://bugs.php.net/bug.php?id=54097 & http://php.net/manual/en/function.rename.php#113943 + $this->mirror($origin, $target, null, array('override' => $overwrite, 'delete' => $overwrite)); + $this->remove($origin); + + return; + } throw new IOException(sprintf('Cannot rename "%s" to "%s".', $origin, $target), 0, null, $target); } } + /** + * Tells whether a file exists and is readable. + * + * @param string $filename Path to the file + * + * @return bool + * + * @throws IOException When windows path is longer than 258 characters + */ + private function isReadable($filename) + { + $maxPathLength = PHP_MAXPATHLEN - 2; + + if (\strlen($filename) > $maxPathLength) { + throw new IOException(sprintf('Could not check if file is readable because path length exceeds %d characters.', $maxPathLength), 0, null, $filename); + } + + return is_readable($filename); + } + /** * Creates a symbolic link or copy a directory. * @@ -285,32 +321,33 @@ class Filesystem */ public function symlink($originDir, $targetDir, $copyOnWindows = false) { - if ('\\' === DIRECTORY_SEPARATOR && $copyOnWindows) { - $this->mirror($originDir, $targetDir); + if ('\\' === \DIRECTORY_SEPARATOR) { + $originDir = strtr($originDir, '/', '\\'); + $targetDir = strtr($targetDir, '/', '\\'); - return; + if ($copyOnWindows) { + $this->mirror($originDir, $targetDir); + + return; + } } - $this->mkdir(dirname($targetDir)); + $this->mkdir(\dirname($targetDir)); - $ok = false; if (is_link($targetDir)) { - if (readlink($targetDir) != $originDir) { - $this->remove($targetDir); - } else { - $ok = true; + if (readlink($targetDir) === $originDir) { + return; } + $this->remove($targetDir); } - if (!$ok && true !== @symlink($originDir, $targetDir)) { - $report = error_get_last(); - if (is_array($report)) { - if ('\\' === DIRECTORY_SEPARATOR && false !== strpos($report['message'], 'error code(1314)')) { - throw new IOException('Unable to create symlink due to error code 1314: \'A required privilege is not held by the client\'. Do you have the required Administrator-rights?'); + if (!self::box('symlink', $originDir, $targetDir)) { + if (null !== self::$lastError) { + if ('\\' === \DIRECTORY_SEPARATOR && false !== strpos(self::$lastError, 'error code(1314)')) { + throw new IOException('Unable to create symlink due to error code 1314: \'A required privilege is not held by the client\'. Do you have the required Administrator-rights?', 0, null, $targetDir); } - throw new IOException(sprintf('Failed to create symbolic link from "%s" to "%s".', $originDir, $targetDir), 0, null, $targetDir); } - throw new IOException(sprintf('Failed to create symbolic link from %s to %s', $originDir, $targetDir)); + throw new IOException(sprintf('Failed to create symbolic link from "%s" to "%s".', $originDir, $targetDir), 0, null, $targetDir); } } @@ -325,15 +362,43 @@ class Filesystem public function makePathRelative($endPath, $startPath) { // Normalize separators on Windows - if ('\\' === DIRECTORY_SEPARATOR) { - $endPath = strtr($endPath, '\\', '/'); - $startPath = strtr($startPath, '\\', '/'); + if ('\\' === \DIRECTORY_SEPARATOR) { + $endPath = str_replace('\\', '/', $endPath); + $startPath = str_replace('\\', '/', $startPath); } + $stripDriveLetter = function ($path) { + if (\strlen($path) > 2 && ':' === $path[1] && '/' === $path[2] && ctype_alpha($path[0])) { + return substr($path, 2); + } + + return $path; + }; + + $endPath = $stripDriveLetter($endPath); + $startPath = $stripDriveLetter($startPath); + // Split the paths into arrays $startPathArr = explode('/', trim($startPath, '/')); $endPathArr = explode('/', trim($endPath, '/')); + $normalizePathArray = function ($pathSegments, $absolute) { + $result = array(); + + foreach ($pathSegments as $segment) { + if ('..' === $segment && ($absolute || \count($result))) { + array_pop($result); + } elseif ('.' !== $segment) { + $result[] = $segment; + } + } + + return $result; + }; + + $startPathArr = $normalizePathArray($startPathArr, static::isAbsolutePath($startPath)); + $endPathArr = $normalizePathArray($endPathArr, static::isAbsolutePath($endPath)); + // Find for which directory the common path stops $index = 0; while (isset($startPathArr[$index]) && isset($endPathArr[$index]) && $startPathArr[$index] === $endPathArr[$index]) { @@ -341,12 +406,16 @@ class Filesystem } // Determine how deep the start path is relative to the common path (ie, "web/bundles" = 2 levels) - $depth = count($startPathArr) - $index; + if (1 === \count($startPathArr) && '' === $startPathArr[0]) { + $depth = 0; + } else { + $depth = \count($startPathArr) - $index; + } // Repeated "../" for each level need to reach the common path $traverser = str_repeat('../', $depth); - $endPathRemainder = implode('/', array_slice($endPathArr, $index)); + $endPathRemainder = implode('/', \array_slice($endPathArr, $index)); // Construct $endPath from traversing to the common path, then to the remaining $endPath $relativePath = $traverser.('' !== $endPathRemainder ? $endPathRemainder.'/' : ''); @@ -357,13 +426,18 @@ class Filesystem /** * Mirrors a directory to another. * + * Copies files and directories from the origin directory into the target directory. By default: + * + * - existing files in the target directory will be overwritten, except if they are newer (see the `override` option) + * - files in the target directory that do not exist in the source directory will not be deleted (see the `delete` option) + * * @param string $originDir The origin directory * @param string $targetDir The target directory - * @param \Traversable $iterator A Traversable instance + * @param \Traversable $iterator Iterator that filters which files and directories to copy * @param array $options An array of boolean options * Valid options are: - * - $options['override'] Whether to override an existing file on copy or not (see copy()) - * - $options['copy_on_windows'] Whether to copy files instead of links on Windows (see symlink()) + * - $options['override'] If true, target files newer than origin files are overwritten (see copy(), defaults to false) + * - $options['copy_on_windows'] Whether to copy files instead of links on Windows (see symlink(), defaults to false) * - $options['delete'] Whether to delete files that are not in the source directory (defaults to false) * * @throws IOException When file type is unknown @@ -372,6 +446,7 @@ class Filesystem { $targetDir = rtrim($targetDir, '/\\'); $originDir = rtrim($originDir, '/\\'); + $originDirLen = \strlen($originDir); // Iterate in destination folder to remove obsolete entries if ($this->exists($targetDir) && isset($options['delete']) && $options['delete']) { @@ -380,8 +455,9 @@ class Filesystem $flags = \FilesystemIterator::SKIP_DOTS; $deleteIterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($targetDir, $flags), \RecursiveIteratorIterator::CHILD_FIRST); } + $targetDirLen = \strlen($targetDir); foreach ($deleteIterator as $file) { - $origin = str_replace($targetDir, $originDir, $file->getPathname()); + $origin = $originDir.substr($file->getPathname(), $targetDirLen); if (!$this->exists($origin)) { $this->remove($file); } @@ -403,10 +479,10 @@ class Filesystem } foreach ($iterator as $file) { - $target = str_replace($originDir, $targetDir, $file->getPathname()); + $target = $targetDir.substr($file->getPathname(), $originDirLen); if ($copyOnWindows) { - if (is_link($file) || is_file($file)) { + if (is_file($file)) { $this->copy($file, $target, isset($options['override']) ? $options['override'] : false); } elseif (is_dir($file)) { $this->mkdir($target); @@ -415,7 +491,7 @@ class Filesystem } } else { if (is_link($file)) { - $this->symlink($file->getRealPath(), $target); + $this->symlink($file->getLinkTarget(), $target); } elseif (is_dir($file)) { $this->mkdir($target); } elseif (is_file($file)) { @@ -436,45 +512,106 @@ class Filesystem */ public function isAbsolutePath($file) { - return (strspn($file, '/\\', 0, 1) - || (strlen($file) > 3 && ctype_alpha($file[0]) - && substr($file, 1, 1) === ':' - && (strspn($file, '/\\', 2, 1)) + return strspn($file, '/\\', 0, 1) + || (\strlen($file) > 3 && ctype_alpha($file[0]) + && ':' === substr($file, 1, 1) + && strspn($file, '/\\', 2, 1) ) || null !== parse_url($file, PHP_URL_SCHEME) - ); + ; + } + + /** + * Creates a temporary file with support for custom stream wrappers. + * + * @param string $dir The directory where the temporary filename will be created + * @param string $prefix The prefix of the generated temporary filename + * Note: Windows uses only the first three characters of prefix + * + * @return string The new temporary filename (with path), or throw an exception on failure + */ + public function tempnam($dir, $prefix) + { + list($scheme, $hierarchy) = $this->getSchemeAndHierarchy($dir); + + // If no scheme or scheme is "file" or "gs" (Google Cloud) create temp file in local filesystem + if (null === $scheme || 'file' === $scheme || 'gs' === $scheme) { + $tmpFile = @tempnam($hierarchy, $prefix); + + // If tempnam failed or no scheme return the filename otherwise prepend the scheme + if (false !== $tmpFile) { + if (null !== $scheme && 'gs' !== $scheme) { + return $scheme.'://'.$tmpFile; + } + + return $tmpFile; + } + + throw new IOException('A temporary file could not be created.'); + } + + // Loop until we create a valid temp file or have reached 10 attempts + for ($i = 0; $i < 10; ++$i) { + // Create a unique filename + $tmpFile = $dir.'/'.$prefix.uniqid(mt_rand(), true); + + // Use fopen instead of file_exists as some streams do not support stat + // Use mode 'x+' to atomically check existence and create to avoid a TOCTOU vulnerability + $handle = @fopen($tmpFile, 'x+'); + + // If unsuccessful restart the loop + if (false === $handle) { + continue; + } + + // Close the file if it was successfully opened + @fclose($handle); + + return $tmpFile; + } + + throw new IOException('A temporary file could not be created.'); } /** * Atomically dumps content into a file. * - * @param string $filename The file to be written to. - * @param string $content The data to write into the file. + * @param string $filename The file to be written to + * @param string $content The data to write into the file * @param null|int $mode The file mode (octal). If null, file permissions are not modified * Deprecated since version 2.3.12, to be removed in 3.0. * - * @throws IOException If the file cannot be written to. + * @throws IOException if the file cannot be written to */ public function dumpFile($filename, $content, $mode = 0666) { - $dir = dirname($filename); + $dir = \dirname($filename); if (!is_dir($dir)) { $this->mkdir($dir); - } elseif (!is_writable($dir)) { + } + + if (!is_writable($dir)) { throw new IOException(sprintf('Unable to write to the "%s" directory.', $dir), 0, null, $dir); } - $tmpFile = tempnam($dir, basename($filename)); + $tmpFile = $this->tempnam($dir, basename($filename)); if (false === @file_put_contents($tmpFile, $content)) { throw new IOException(sprintf('Failed to write file "%s".', $filename), 0, null, $filename); } - $this->rename($tmpFile, $filename, true); if (null !== $mode) { - $this->chmod($filename, $mode); + if (\func_num_args() > 2) { + @trigger_error('Support for modifying file permissions is deprecated since Symfony 2.3.12 and will be removed in 3.0.', E_USER_DEPRECATED); + } + + $this->chmod($tmpFile, $mode); + } elseif (file_exists($filename)) { + @chmod($tmpFile, fileperms($filename)); } + + $this->rename($tmpFile, $filename, true); } /** @@ -485,9 +622,48 @@ class Filesystem private function toIterator($files) { if (!$files instanceof \Traversable) { - $files = new \ArrayObject(is_array($files) ? $files : array($files)); + $files = new \ArrayObject(\is_array($files) ? $files : array($files)); } return $files; } + + /** + * Gets a 2-tuple of scheme (may be null) and hierarchical part of a filename (e.g. file:///tmp -> array(file, tmp)). + * + * @param string $filename The filename to be parsed + * + * @return array The filename scheme and hierarchical part + */ + private function getSchemeAndHierarchy($filename) + { + $components = explode('://', $filename, 2); + + return 2 === \count($components) ? array($components[0], $components[1]) : array(null, $components[0]); + } + + private static function box($func) + { + self::$lastError = null; + \set_error_handler(__CLASS__.'::handleError'); + try { + $result = \call_user_func_array($func, \array_slice(\func_get_args(), 1)); + \restore_error_handler(); + + return $result; + } catch (\Throwable $e) { + } catch (\Exception $e) { + } + \restore_error_handler(); + + throw $e; + } + + /** + * @internal + */ + public static function handleError($type, $msg) + { + self::$lastError = $msg; + } } diff --git a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/LICENSE b/civicrm/vendor/symfony/filesystem/LICENSE similarity index 96% rename from civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/LICENSE rename to civicrm/vendor/symfony/filesystem/LICENSE index 43028bc600f26ec5599ab339d83cd70f70dfcdab..21d7fb9e2f29b50caca3a76f0647e94e2cc8ddc1 100644 --- a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/LICENSE +++ b/civicrm/vendor/symfony/filesystem/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2004-2015 Fabien Potencier +Copyright (c) 2004-2018 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/filesystem/Symfony/Component/Filesystem/LockHandler.php b/civicrm/vendor/symfony/filesystem/LockHandler.php similarity index 73% rename from civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/LockHandler.php rename to civicrm/vendor/symfony/filesystem/LockHandler.php index 59d35ec92883ebd4f18195d9989df48ec53eabbe..6d85c51b8cb4ce4dbd31c738c941a9048820a06d 100644 --- a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/LockHandler.php +++ b/civicrm/vendor/symfony/filesystem/LockHandler.php @@ -32,8 +32,9 @@ class LockHandler private $handle; /** - * @param string $name The lock name - * @param string|null $lockPath The directory to store the lock. Default values will use temporary directory + * @param string $name The lock name + * @param string|null $lockPath The directory to store the lock. Default values will use temporary directory + * * @throws IOException If the lock directory could not be created or is not writable */ public function __construct($name, $lockPath = null) @@ -53,10 +54,12 @@ class LockHandler } /** - * Lock the resource + * Lock the resource. + * + * @param bool $blocking Wait until the lock is released + * + * @return bool Returns true if the lock was acquired, false otherwise * - * @param bool $blocking wait until the lock is released - * @return bool Returns true if the lock was acquired, false otherwise * @throws IOException If the lock file could not be created or opened */ public function lock($blocking = false) @@ -65,24 +68,25 @@ class LockHandler return true; } - // Silence both userland and native PHP error handlers - $errorLevel = error_reporting(0); - set_error_handler('var_dump', 0); + $error = null; + + // Silence error reporting + set_error_handler(function ($errno, $msg) use (&$error) { + $error = $msg; + }); - if (!$this->handle = fopen($this->file, 'r')) { + if (!$this->handle = fopen($this->file, 'r+') ?: fopen($this->file, 'r')) { if ($this->handle = fopen($this->file, 'x')) { - chmod($this->file, 0444); - } elseif (!$this->handle = fopen($this->file, 'r')) { + chmod($this->file, 0666); + } elseif (!$this->handle = fopen($this->file, 'r+') ?: fopen($this->file, 'r')) { usleep(100); // Give some time for chmod() to complete - $this->handle = fopen($this->file, 'r'); + $this->handle = fopen($this->file, 'r+') ?: fopen($this->file, 'r'); } } restore_error_handler(); - error_reporting($errorLevel); if (!$this->handle) { - $error = error_get_last(); - throw new IOException($error['message'], 0, null, $this->file); + throw new IOException($error, 0, null, $this->file); } // On Windows, even if PHP doc says the contrary, LOCK_NB works, see @@ -98,7 +102,7 @@ class LockHandler } /** - * Release the resource + * Release the resource. */ public function release() { diff --git a/civicrm/vendor/symfony/filesystem/README.md b/civicrm/vendor/symfony/filesystem/README.md new file mode 100644 index 0000000000000000000000000000000000000000..877ab3543f32d0f60ee2508e799d21b0c4538b24 --- /dev/null +++ b/civicrm/vendor/symfony/filesystem/README.md @@ -0,0 +1,13 @@ +Filesystem Component +==================== + +The Filesystem component provides basic utilities for the filesystem. + +Resources +--------- + + * [Documentation](https://symfony.com/doc/current/components/filesystem/index.html) + * [Contributing](https://symfony.com/doc/current/contributing/index.html) + * [Report issues](https://github.com/symfony/symfony/issues) and + [send Pull Requests](https://github.com/symfony/symfony/pulls) + in the [main Symfony repository](https://github.com/symfony/symfony) diff --git a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/README.md b/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/README.md deleted file mode 100644 index df09f93dce72add67f5418497eff5f49037fcbde..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/README.md +++ /dev/null @@ -1,47 +0,0 @@ -Filesystem Component -==================== - -Filesystem provides basic utility to manipulate the file system: - -```php -<?php - -use Symfony\Component\Filesystem\Filesystem; - -$filesystem = new Filesystem(); - -$filesystem->copy($originFile, $targetFile, $override = false); - -$filesystem->mkdir($dirs, $mode = 0777); - -$filesystem->touch($files, $time = null, $atime = null); - -$filesystem->remove($files); - -$filesystem->exists($files); - -$filesystem->chmod($files, $mode, $umask = 0000, $recursive = false); - -$filesystem->chown($files, $user, $recursive = false); - -$filesystem->chgrp($files, $group, $recursive = false); - -$filesystem->rename($origin, $target); - -$filesystem->symlink($originDir, $targetDir, $copyOnWindows = false); - -$filesystem->makePathRelative($endPath, $startPath); - -$filesystem->mirror($originDir, $targetDir, \Traversable $iterator = null, $options = array()); - -$filesystem->isAbsolutePath($file); -``` - -Resources ---------- - -You can run the unit tests with the following command: - - $ cd path/to/Symfony/Component/Filesystem/ - $ composer install - $ phpunit diff --git a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/composer.json b/civicrm/vendor/symfony/filesystem/composer.json similarity index 70% rename from civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/composer.json rename to civicrm/vendor/symfony/filesystem/composer.json index 1b844fce9e8ccf7bc21cf687e27883dbe9a11ffb..3a2db520b6687346a692906d3df3075e3b3cd3c3 100644 --- a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/composer.json +++ b/civicrm/vendor/symfony/filesystem/composer.json @@ -16,19 +16,19 @@ } ], "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" }, "autoload": { - "psr-0": { "Symfony\\Component\\Filesystem\\": "" } + "psr-4": { "Symfony\\Component\\Filesystem\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, - "target-dir": "Symfony/Component/Filesystem", "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } } } diff --git a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/phpunit.xml.dist b/civicrm/vendor/symfony/filesystem/phpunit.xml.dist similarity index 87% rename from civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/phpunit.xml.dist rename to civicrm/vendor/symfony/filesystem/phpunit.xml.dist index 32444185a1edc521672abce14c0d8ed4daeb30b4..7bba6fc2f0dad9f453fd23f233880eca77dd8c15 100644 --- a/civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/phpunit.xml.dist +++ b/civicrm/vendor/symfony/filesystem/phpunit.xml.dist @@ -5,10 +5,13 @@ backupGlobals="false" colors="true" bootstrap="vendor/autoload.php" + failOnRisky="true" + failOnWarning="true" > <php> <ini name="error_reporting" value="-1" /> </php> + <testsuites> <testsuite name="Symfony Filesystem Component Test Suite"> <directory>./Tests/</directory> @@ -20,6 +23,7 @@ <directory>./</directory> <exclude> <directory>./Tests</directory> + <directory>./vendor</directory> </exclude> </whitelist> </filter> diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/AbstractAdapter.php b/civicrm/vendor/symfony/finder/Adapter/AbstractAdapter.php similarity index 94% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/AbstractAdapter.php rename to civicrm/vendor/symfony/finder/Adapter/AbstractAdapter.php index 4ddd913174f9d841f8a1a8fe41cd848a879493cd..1a1647c31734b21d71d6cf4ac79fee008d6ef449 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/AbstractAdapter.php +++ b/civicrm/vendor/symfony/finder/Adapter/AbstractAdapter.php @@ -11,10 +11,14 @@ namespace Symfony\Component\Finder\Adapter; +@trigger_error('The '.__NAMESPACE__.'\AbstractAdapter class is deprecated since Symfony 2.8 and will be removed in 3.0. Use directly the Finder class instead.', E_USER_DEPRECATED); + /** * Interface for finder engine implementations. * * @author Jean-François Simon <contact@jfsimon.fr> + * + * @deprecated since 2.8, to be removed in 3.0. Use Finder instead. */ abstract class AbstractAdapter implements AdapterInterface { diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/AbstractFindAdapter.php b/civicrm/vendor/symfony/finder/Adapter/AbstractFindAdapter.php similarity index 94% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/AbstractFindAdapter.php rename to civicrm/vendor/symfony/finder/Adapter/AbstractFindAdapter.php index 244301a739e298a4b7287795320370da88232dbe..ef458695b551c3937bcb7840b0f3f5b1db648e55 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/AbstractFindAdapter.php +++ b/civicrm/vendor/symfony/finder/Adapter/AbstractFindAdapter.php @@ -11,29 +11,27 @@ namespace Symfony\Component\Finder\Adapter; +@trigger_error('The '.__NAMESPACE__.'\AbstractFindAdapter class is deprecated since Symfony 2.8 and will be removed in 3.0. Use directly the Finder class instead.', E_USER_DEPRECATED); + +use Symfony\Component\Finder\Comparator\DateComparator; +use Symfony\Component\Finder\Comparator\NumberComparator; use Symfony\Component\Finder\Exception\AccessDeniedException; -use Symfony\Component\Finder\Iterator; -use Symfony\Component\Finder\Shell\Shell; use Symfony\Component\Finder\Expression\Expression; +use Symfony\Component\Finder\Iterator; use Symfony\Component\Finder\Shell\Command; -use Symfony\Component\Finder\Comparator\NumberComparator; -use Symfony\Component\Finder\Comparator\DateComparator; +use Symfony\Component\Finder\Shell\Shell; /** * Shell engine implementation using GNU find command. * * @author Jean-François Simon <contact@jfsimon.fr> + * + * @deprecated since 2.8, to be removed in 3.0. Use Finder instead. */ abstract class AbstractFindAdapter extends AbstractAdapter { - /** - * @var Shell - */ protected $shell; - /** - * Constructor. - */ public function __construct() { $this->shell = new Shell(); @@ -79,7 +77,7 @@ abstract class AbstractFindAdapter extends AbstractAdapter $this->buildDatesFiltering($find, $this->dates); $useGrep = $this->shell->testCommand('grep') && $this->shell->testCommand('xargs'); - $useSort = is_int($this->sort) && $this->shell->testCommand('sort') && $this->shell->testCommand('cut'); + $useSort = \is_int($this->sort) && $this->shell->testCommand('sort') && $this->shell->testCommand('cut'); if ($useGrep && ($this->contains || $this->notContains)) { $grep = $command->ins('grep'); @@ -94,7 +92,7 @@ abstract class AbstractFindAdapter extends AbstractAdapter $command->setErrorHandler( $this->ignoreUnreadableDirs // If directory is unreadable and finder is set to ignore it, `stderr` is ignored. - ? function ($stderr) { return; } + ? function ($stderr) { } : function ($stderr) { throw new AccessDeniedException($stderr); } ); @@ -151,7 +149,7 @@ abstract class AbstractFindAdapter extends AbstractAdapter */ private function buildNamesFiltering(Command $command, array $names, $not = false) { - if (0 === count($names)) { + if (0 === \count($names)) { return; } @@ -199,7 +197,7 @@ abstract class AbstractFindAdapter extends AbstractAdapter */ private function buildPathsFiltering(Command $command, $dir, array $paths, $not = false) { - if (0 === count($paths)) { + if (0 === \count($paths)) { return; } @@ -216,7 +214,7 @@ abstract class AbstractFindAdapter extends AbstractAdapter // Fixes 'not search' regex problems. if ($expr->isRegex()) { $regex = $expr->getRegex(); - $regex->prepend($regex->hasStartFlag() ? preg_quote($dir).DIRECTORY_SEPARATOR : '.*')->setEndJoker(!$regex->hasEndFlag()); + $regex->prepend($regex->hasStartFlag() ? preg_quote($dir).\DIRECTORY_SEPARATOR : '.*')->setEndJoker(!$regex->hasEndFlag()); } else { $expr->prepend('*')->append('*'); } diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/AdapterInterface.php b/civicrm/vendor/symfony/finder/Adapter/AdapterInterface.php similarity index 62% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/AdapterInterface.php rename to civicrm/vendor/symfony/finder/Adapter/AdapterInterface.php index bdc3a938701c9376c6e2b7a1ebd5d6c25cc7729f..8d8fb0749a6b4e753214507df079dbead6671209 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/AdapterInterface.php +++ b/civicrm/vendor/symfony/finder/Adapter/AdapterInterface.php @@ -13,111 +13,91 @@ namespace Symfony\Component\Finder\Adapter; /** * @author Jean-François Simon <contact@jfsimon.fr> + * + * @deprecated since 2.8, to be removed in 3.0. */ interface AdapterInterface { /** * @param bool $followLinks * - * @return AdapterInterface Current instance + * @return $this */ public function setFollowLinks($followLinks); /** * @param int $mode * - * @return AdapterInterface Current instance + * @return $this */ public function setMode($mode); /** - * @param array $exclude - * - * @return AdapterInterface Current instance + * @return $this */ public function setExclude(array $exclude); /** - * @param array $depths - * - * @return AdapterInterface Current instance + * @return $this */ public function setDepths(array $depths); /** - * @param array $names - * - * @return AdapterInterface Current instance + * @return $this */ public function setNames(array $names); /** - * @param array $notNames - * - * @return AdapterInterface Current instance + * @return $this */ public function setNotNames(array $notNames); /** - * @param array $contains - * - * @return AdapterInterface Current instance + * @return $this */ public function setContains(array $contains); /** - * @param array $notContains - * - * @return AdapterInterface Current instance + * @return $this */ public function setNotContains(array $notContains); /** - * @param array $sizes - * - * @return AdapterInterface Current instance + * @return $this */ public function setSizes(array $sizes); /** - * @param array $dates - * - * @return AdapterInterface Current instance + * @return $this */ public function setDates(array $dates); /** - * @param array $filters - * - * @return AdapterInterface Current instance + * @return $this */ public function setFilters(array $filters); /** * @param \Closure|int $sort * - * @return AdapterInterface Current instance + * @return $this */ public function setSort($sort); /** - * @param array $paths - * - * @return AdapterInterface Current instance + * @return $this */ public function setPath(array $paths); /** - * @param array $notPaths - * - * @return AdapterInterface Current instance + * @return $this */ public function setNotPath(array $notPaths); /** * @param bool $ignore * - * @return AdapterInterface Current instance + * @return $this */ public function ignoreUnreadableDirs($ignore = true); diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/BsdFindAdapter.php b/civicrm/vendor/symfony/finder/Adapter/BsdFindAdapter.php similarity index 87% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/BsdFindAdapter.php rename to civicrm/vendor/symfony/finder/Adapter/BsdFindAdapter.php index 4a25baeb6fd18b898f64e620e558fa03786c6b5e..f6e4303d0085c096a3ce97a2a25d105c78ccddaa 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/BsdFindAdapter.php +++ b/civicrm/vendor/symfony/finder/Adapter/BsdFindAdapter.php @@ -11,15 +11,19 @@ namespace Symfony\Component\Finder\Adapter; -use Symfony\Component\Finder\Shell\Shell; -use Symfony\Component\Finder\Shell\Command; -use Symfony\Component\Finder\Iterator\SortableIterator; +@trigger_error('The '.__NAMESPACE__.'\BsdFindAdapter class is deprecated since Symfony 2.8 and will be removed in 3.0. Use directly the Finder class instead.', E_USER_DEPRECATED); + use Symfony\Component\Finder\Expression\Expression; +use Symfony\Component\Finder\Iterator\SortableIterator; +use Symfony\Component\Finder\Shell\Command; +use Symfony\Component\Finder\Shell\Shell; /** * Shell engine implementation using BSD find command. * * @author Jean-François Simon <contact@jfsimon.fr> + * + * @deprecated since 2.8, to be removed in 3.0. Use Finder instead. */ class BsdFindAdapter extends AbstractFindAdapter { @@ -36,7 +40,7 @@ class BsdFindAdapter extends AbstractFindAdapter */ protected function canBeUsed() { - return in_array($this->shell->getType(), array(Shell::TYPE_BSD, Shell::TYPE_DARWIN)) && parent::canBeUsed(); + return \in_array($this->shell->getType(), array(Shell::TYPE_BSD, Shell::TYPE_DARWIN)) && parent::canBeUsed(); } /** diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/GnuFindAdapter.php b/civicrm/vendor/symfony/finder/Adapter/GnuFindAdapter.php similarity index 89% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/GnuFindAdapter.php rename to civicrm/vendor/symfony/finder/Adapter/GnuFindAdapter.php index 0fbf48ffa40f46003b20b63fccf6127fa07561ac..140c5665c9ae931b03b2a15570313a29b1ee9c98 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/GnuFindAdapter.php +++ b/civicrm/vendor/symfony/finder/Adapter/GnuFindAdapter.php @@ -11,15 +11,19 @@ namespace Symfony\Component\Finder\Adapter; -use Symfony\Component\Finder\Shell\Shell; -use Symfony\Component\Finder\Shell\Command; -use Symfony\Component\Finder\Iterator\SortableIterator; +@trigger_error('The '.__NAMESPACE__.'\GnuFindAdapter class is deprecated since Symfony 2.8 and will be removed in 3.0. Use directly the Finder class instead.', E_USER_DEPRECATED); + use Symfony\Component\Finder\Expression\Expression; +use Symfony\Component\Finder\Iterator\SortableIterator; +use Symfony\Component\Finder\Shell\Command; +use Symfony\Component\Finder\Shell\Shell; /** * Shell engine implementation using GNU find command. * * @author Jean-François Simon <contact@jfsimon.fr> + * + * @deprecated since 2.8, to be removed in 3.0. Use Finder instead. */ class GnuFindAdapter extends AbstractFindAdapter { @@ -72,7 +76,7 @@ class GnuFindAdapter extends AbstractFindAdapter */ protected function canBeUsed() { - return $this->shell->getType() === Shell::TYPE_UNIX && parent::canBeUsed(); + return Shell::TYPE_UNIX === $this->shell->getType() && parent::canBeUsed(); } /** diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/PhpAdapter.php b/civicrm/vendor/symfony/finder/Adapter/PhpAdapter.php similarity index 84% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/PhpAdapter.php rename to civicrm/vendor/symfony/finder/Adapter/PhpAdapter.php index 378a26acdad1414791121d8a7adca8e8cd385706..c2fb66cf5ef57208fe56f9ef5a16d4e8dad8bfaf 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Adapter/PhpAdapter.php +++ b/civicrm/vendor/symfony/finder/Adapter/PhpAdapter.php @@ -11,12 +11,16 @@ namespace Symfony\Component\Finder\Adapter; +@trigger_error('The '.__NAMESPACE__.'\PhpAdapter class is deprecated since Symfony 2.8 and will be removed in 3.0. Use directly the Finder class instead.', E_USER_DEPRECATED); + use Symfony\Component\Finder\Iterator; /** * PHP finder engine implementation. * * @author Jean-François Simon <contact@jfsimon.fr> + * + * @deprecated since 2.8, to be removed in 3.0. Use Finder instead. */ class PhpAdapter extends AbstractAdapter { @@ -31,10 +35,13 @@ class PhpAdapter extends AbstractAdapter $flags |= \RecursiveDirectoryIterator::FOLLOW_SYMLINKS; } - $iterator = new \RecursiveIteratorIterator( - new Iterator\RecursiveDirectoryIterator($dir, $flags, $this->ignoreUnreadableDirs), - \RecursiveIteratorIterator::SELF_FIRST - ); + $iterator = new Iterator\RecursiveDirectoryIterator($dir, $flags, $this->ignoreUnreadableDirs); + + if ($this->exclude) { + $iterator = new Iterator\ExcludeDirectoryFilterIterator($iterator, $this->exclude); + } + + $iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST); if ($this->minDepth > 0 || $this->maxDepth < PHP_INT_MAX) { $iterator = new Iterator\DepthRangeFilterIterator($iterator, $this->minDepth, $this->maxDepth); @@ -44,10 +51,6 @@ class PhpAdapter extends AbstractAdapter $iterator = new Iterator\FileTypeFilterIterator($iterator, $this->mode); } - if ($this->exclude) { - $iterator = new Iterator\ExcludeDirectoryFilterIterator($iterator, $this->exclude); - } - if ($this->names || $this->notNames) { $iterator = new Iterator\FilenameFilterIterator($iterator, $this->names, $this->notNames); } @@ -68,15 +71,15 @@ class PhpAdapter extends AbstractAdapter $iterator = new Iterator\CustomFilterIterator($iterator, $this->filters); } + if ($this->paths || $this->notPaths) { + $iterator = new Iterator\PathFilterIterator($iterator, $this->paths, $this->notPaths); + } + if ($this->sort) { $iteratorAggregate = new Iterator\SortableIterator($iterator, $this->sort); $iterator = $iteratorAggregate->getIterator(); } - if ($this->paths || $this->notPaths) { - $iterator = new Iterator\PathFilterIterator($iterator, $this->paths, $this->notPaths); - } - return $iterator; } diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/CHANGELOG.md b/civicrm/vendor/symfony/finder/CHANGELOG.md similarity index 95% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/CHANGELOG.md rename to civicrm/vendor/symfony/finder/CHANGELOG.md index f1dd7d526b28808fd8ea0a761f55569a924816ee..a45c20825f5fc2b4ac841933da2e18a3ff10ad8e 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/CHANGELOG.md +++ b/civicrm/vendor/symfony/finder/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +2.8.0 +----- + + * deprecated adapters and related classes + 2.5.0 ----- * added support for GLOB_BRACE in the paths passed to Finder::in() diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Comparator/Comparator.php b/civicrm/vendor/symfony/finder/Comparator/Comparator.php similarity index 96% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Comparator/Comparator.php rename to civicrm/vendor/symfony/finder/Comparator/Comparator.php index 4f5e1ffe1239fb47e9df2e4352b2de0231459d4d..ea37566df8887da2fa67fe19f8edad058c56140e 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Comparator/Comparator.php +++ b/civicrm/vendor/symfony/finder/Comparator/Comparator.php @@ -64,7 +64,7 @@ class Comparator $operator = '=='; } - if (!in_array($operator, array('>', '<', '>=', '<=', '==', '!='))) { + if (!\in_array($operator, array('>', '<', '>=', '<=', '==', '!='))) { throw new \InvalidArgumentException(sprintf('Invalid operator "%s".', $operator)); } diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Comparator/DateComparator.php b/civicrm/vendor/symfony/finder/Comparator/DateComparator.php similarity index 98% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Comparator/DateComparator.php rename to civicrm/vendor/symfony/finder/Comparator/DateComparator.php index 8b7746badbe99329e9b376065feed29d0d8f2a3f..3de43ef4b8ddb757ee0d977d1679175c349e63e1 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Comparator/DateComparator.php +++ b/civicrm/vendor/symfony/finder/Comparator/DateComparator.php @@ -19,8 +19,6 @@ namespace Symfony\Component\Finder\Comparator; class DateComparator extends Comparator { /** - * Constructor. - * * @param string $test A comparison string * * @throws \InvalidArgumentException If the test is not understood diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Comparator/NumberComparator.php b/civicrm/vendor/symfony/finder/Comparator/NumberComparator.php similarity index 97% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Comparator/NumberComparator.php rename to civicrm/vendor/symfony/finder/Comparator/NumberComparator.php index 4b5b5ba8380ce961f4f20f7fb408d9b8b4940e04..f62c0e5740f69f51d4d7b315faa55b0ac5bc6270 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Comparator/NumberComparator.php +++ b/civicrm/vendor/symfony/finder/Comparator/NumberComparator.php @@ -35,9 +35,7 @@ namespace Symfony\Component\Finder\Comparator; class NumberComparator extends Comparator { /** - * Constructor. - * - * @param string $test A comparison string + * @param string|int $test A comparison string or an integer * * @throws \InvalidArgumentException If the test is not understood */ diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Exception/AccessDeniedException.php b/civicrm/vendor/symfony/finder/Exception/AccessDeniedException.php similarity index 100% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Exception/AccessDeniedException.php rename to civicrm/vendor/symfony/finder/Exception/AccessDeniedException.php diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Exception/AdapterFailureException.php b/civicrm/vendor/symfony/finder/Exception/AdapterFailureException.php similarity index 84% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Exception/AdapterFailureException.php rename to civicrm/vendor/symfony/finder/Exception/AdapterFailureException.php index 15fa22147d837bc6610b6b4ea592d2e9ffedf2d5..594940a47ed10f238b08e3c5f21c1a8e2071f4d0 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Exception/AdapterFailureException.php +++ b/civicrm/vendor/symfony/finder/Exception/AdapterFailureException.php @@ -11,18 +11,19 @@ namespace Symfony\Component\Finder\Exception; +@trigger_error('The '.__NAMESPACE__.'\AdapterFailureException class is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + use Symfony\Component\Finder\Adapter\AdapterInterface; /** * Base exception for all adapter failures. * * @author Jean-François Simon <contact@jfsimon.fr> + * + * @deprecated since 2.8, to be removed in 3.0. */ class AdapterFailureException extends \RuntimeException implements ExceptionInterface { - /** - * @var \Symfony\Component\Finder\Adapter\AdapterInterface - */ private $adapter; /** diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Exception/ExceptionInterface.php b/civicrm/vendor/symfony/finder/Exception/ExceptionInterface.php similarity index 100% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Exception/ExceptionInterface.php rename to civicrm/vendor/symfony/finder/Exception/ExceptionInterface.php diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Exception/OperationNotPermitedException.php b/civicrm/vendor/symfony/finder/Exception/OperationNotPermitedException.php similarity index 66% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Exception/OperationNotPermitedException.php rename to civicrm/vendor/symfony/finder/Exception/OperationNotPermitedException.php index 3663112259c4d0df65e4537068eaf4faf6de2d27..4c668582cb5e9fd557020d7d9c694f33ed78cd99 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Exception/OperationNotPermitedException.php +++ b/civicrm/vendor/symfony/finder/Exception/OperationNotPermitedException.php @@ -11,8 +11,12 @@ namespace Symfony\Component\Finder\Exception; +@trigger_error('The '.__NAMESPACE__.'\OperationNotPermitedException class is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + /** * @author Jean-François Simon <contact@jfsimon.fr> + * + * @deprecated since 2.8, to be removed in 3.0. */ class OperationNotPermitedException extends AdapterFailureException { diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Exception/ShellCommandFailureException.php b/civicrm/vendor/symfony/finder/Exception/ShellCommandFailureException.php similarity index 81% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Exception/ShellCommandFailureException.php rename to civicrm/vendor/symfony/finder/Exception/ShellCommandFailureException.php index 2658f6a508fb573ba2b16eac41c7171e086340f3..db85e682d91117c02eb6f5412e9e2378394feed0 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Exception/ShellCommandFailureException.php +++ b/civicrm/vendor/symfony/finder/Exception/ShellCommandFailureException.php @@ -11,24 +11,20 @@ namespace Symfony\Component\Finder\Exception; +@trigger_error('The '.__NAMESPACE__.'\ShellCommandFailureException class is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + use Symfony\Component\Finder\Adapter\AdapterInterface; use Symfony\Component\Finder\Shell\Command; /** * @author Jean-François Simon <contact@jfsimon.fr> + * + * @deprecated since 2.8, to be removed in 3.0. */ class ShellCommandFailureException extends AdapterFailureException { - /** - * @var Command - */ private $command; - /** - * @param AdapterInterface $adapter - * @param Command $command - * @param \Exception|null $previous - */ public function __construct(AdapterInterface $adapter, Command $command, \Exception $previous = null) { $this->command = $command; diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Expression/Expression.php b/civicrm/vendor/symfony/finder/Expression/Expression.php similarity index 94% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Expression/Expression.php rename to civicrm/vendor/symfony/finder/Expression/Expression.php index 900260751ee4eff97115092de3e942a2961f0715..e83c771609dca69fe8ebc1d67a5fe515e9eeb4aa 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Expression/Expression.php +++ b/civicrm/vendor/symfony/finder/Expression/Expression.php @@ -11,6 +11,8 @@ namespace Symfony\Component\Finder\Expression; +@trigger_error('The '.__NAMESPACE__.'\Expression class is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + /** * @author Jean-François Simon <contact@jfsimon.fr> */ @@ -27,7 +29,7 @@ class Expression implements ValueInterface /** * @param string $expr * - * @return Expression + * @return self */ public static function create($expr) { @@ -123,9 +125,9 @@ class Expression implements ValueInterface } /** - * @throws \LogicException - * * @return Glob + * + * @throws \LogicException */ public function getGlob() { diff --git a/civicrm/vendor/symfony/finder/Expression/Glob.php b/civicrm/vendor/symfony/finder/Expression/Glob.php new file mode 100644 index 0000000000000000000000000000000000000000..e80578ecef9dfd8184787af37fb24103f6c576b1 --- /dev/null +++ b/civicrm/vendor/symfony/finder/Expression/Glob.php @@ -0,0 +1,108 @@ +<?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\Component\Finder\Expression; + +@trigger_error('The '.__NAMESPACE__.'\Glob class is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + +use Symfony\Component\Finder\Glob as FinderGlob; + +/** + * @author Jean-François Simon <contact@jfsimon.fr> + */ +class Glob implements ValueInterface +{ + private $pattern; + + /** + * @param string $pattern + */ + public function __construct($pattern) + { + $this->pattern = $pattern; + } + + /** + * {@inheritdoc} + */ + public function render() + { + return $this->pattern; + } + + /** + * {@inheritdoc} + */ + public function renderPattern() + { + return $this->pattern; + } + + /** + * {@inheritdoc} + */ + public function getType() + { + return Expression::TYPE_GLOB; + } + + /** + * {@inheritdoc} + */ + public function isCaseSensitive() + { + return true; + } + + /** + * {@inheritdoc} + */ + public function prepend($expr) + { + $this->pattern = $expr.$this->pattern; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function append($expr) + { + $this->pattern .= $expr; + + return $this; + } + + /** + * Tests if glob is expandable ("*.{a,b}" syntax). + * + * @return bool + */ + public function isExpandable() + { + return false !== strpos($this->pattern, '{') + && false !== strpos($this->pattern, '}'); + } + + /** + * @param bool $strictLeadingDot + * @param bool $strictWildcardSlash + * + * @return Regex + */ + public function toRegex($strictLeadingDot = true, $strictWildcardSlash = true) + { + $regex = FinderGlob::toRegex($this->pattern, $strictLeadingDot, $strictWildcardSlash, ''); + + return new Regex($regex); + } +} diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Expression/Regex.php b/civicrm/vendor/symfony/finder/Expression/Regex.php similarity index 93% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Expression/Regex.php rename to civicrm/vendor/symfony/finder/Expression/Regex.php index a249fc2546dacb2352ceb71ff479eaf01715430b..2f1ab3db03fc40abdc3d757e057781673fb8b91c 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Expression/Regex.php +++ b/civicrm/vendor/symfony/finder/Expression/Regex.php @@ -11,6 +11,8 @@ namespace Symfony\Component\Finder\Expression; +@trigger_error('The '.__NAMESPACE__.'\Regex class is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + /** * @author Jean-François Simon <contact@jfsimon.fr> */ @@ -28,7 +30,7 @@ class Regex implements ValueInterface private $pattern; /** - * @var array + * @var string */ private $options; @@ -55,7 +57,7 @@ class Regex implements ValueInterface /** * @param string $expr * - * @return Regex + * @return self * * @throws \InvalidArgumentException */ @@ -67,8 +69,8 @@ class Regex implements ValueInterface if ( ($start === $end && !preg_match('/[*?[:alnum:] \\\\]/', $start)) - || ($start === '{' && $end === '}') - || ($start === '(' && $end === ')') + || ('{' === $start && '}' === $end) + || ('(' === $start && ')' === $end) ) { return new self(substr($m[1], 1, -1), $m[2], $end); } @@ -173,7 +175,7 @@ class Regex implements ValueInterface /** * @param string $option * - * @return Regex + * @return $this */ public function addOption($option) { @@ -187,7 +189,7 @@ class Regex implements ValueInterface /** * @param string $option * - * @return Regex + * @return $this */ public function removeOption($option) { @@ -199,7 +201,7 @@ class Regex implements ValueInterface /** * @param bool $startFlag * - * @return Regex + * @return $this */ public function setStartFlag($startFlag) { @@ -219,7 +221,7 @@ class Regex implements ValueInterface /** * @param bool $endFlag * - * @return Regex + * @return $this */ public function setEndFlag($endFlag) { @@ -239,7 +241,7 @@ class Regex implements ValueInterface /** * @param bool $startJoker * - * @return Regex + * @return $this */ public function setStartJoker($startJoker) { @@ -259,7 +261,7 @@ class Regex implements ValueInterface /** * @param bool $endJoker * - * @return Regex + * @return $this */ public function setEndJoker($endJoker) { @@ -277,9 +279,7 @@ class Regex implements ValueInterface } /** - * @param array $replacement - * - * @return Regex + * @return $this */ public function replaceJokers($replacement) { diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Expression/ValueInterface.php b/civicrm/vendor/symfony/finder/Expression/ValueInterface.php similarity index 84% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Expression/ValueInterface.php rename to civicrm/vendor/symfony/finder/Expression/ValueInterface.php index 34ce0e7ce499242c4c24d56dbc8682c3fb2b16e3..08ede1422ecdf24a4889873317b43c809010090d 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Expression/ValueInterface.php +++ b/civicrm/vendor/symfony/finder/Expression/ValueInterface.php @@ -11,6 +11,8 @@ namespace Symfony\Component\Finder\Expression; +@trigger_error('The '.__NAMESPACE__.'\ValueInterface interface is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + /** * @author Jean-François Simon <contact@jfsimon.fr> */ @@ -47,14 +49,14 @@ interface ValueInterface /** * @param string $expr * - * @return ValueInterface + * @return $this */ public function prepend($expr); /** * @param string $expr * - * @return ValueInterface + * @return $this */ public function append($expr); } diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Finder.php b/civicrm/vendor/symfony/finder/Finder.php similarity index 74% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Finder.php rename to civicrm/vendor/symfony/finder/Finder.php index 70ef47c8214e6e1bf6de23f6bc761d263d28ec8e..007b68867532bef2a088d6189e8a4985507769e8 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Finder.php +++ b/civicrm/vendor/symfony/finder/Finder.php @@ -12,8 +12,8 @@ namespace Symfony\Component\Finder; use Symfony\Component\Finder\Adapter\AdapterInterface; -use Symfony\Component\Finder\Adapter\GnuFindAdapter; use Symfony\Component\Finder\Adapter\BsdFindAdapter; +use Symfony\Component\Finder\Adapter\GnuFindAdapter; use Symfony\Component\Finder\Adapter\PhpAdapter; use Symfony\Component\Finder\Comparator\DateComparator; use Symfony\Component\Finder\Comparator\NumberComparator; @@ -39,8 +39,6 @@ use Symfony\Component\Finder\Iterator\SortableIterator; * $finder = Finder::create()->files()->name('*.php')->in(__DIR__); * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ class Finder implements \IteratorAggregate, \Countable { @@ -62,34 +60,22 @@ class Finder implements \IteratorAggregate, \Countable private $iterators = array(); private $contains = array(); private $notContains = array(); - private $adapters = array(); + private $adapters = null; private $paths = array(); private $notPaths = array(); private $ignoreUnreadableDirs = false; private static $vcsPatterns = array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg'); - /** - * Constructor. - */ public function __construct() { $this->ignore = static::IGNORE_VCS_FILES | static::IGNORE_DOT_FILES; - - $this - ->addAdapter(new GnuFindAdapter()) - ->addAdapter(new BsdFindAdapter()) - ->addAdapter(new PhpAdapter(), -50) - ->setAdapter('php') - ; } /** * Creates a new Finder. * - * @return Finder A new Finder instance - * - * @api + * @return static */ public static function create() { @@ -102,10 +88,16 @@ class Finder implements \IteratorAggregate, \Countable * @param AdapterInterface $adapter An adapter instance * @param int $priority Highest is selected first * - * @return Finder The current Finder instance + * @return $this + * + * @deprecated since 2.8, to be removed in 3.0. */ public function addAdapter(AdapterInterface $adapter, $priority = 0) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + + $this->initDefaultAdapters(); + $this->adapters[$adapter->getName()] = array( 'adapter' => $adapter, 'priority' => $priority, @@ -118,10 +110,16 @@ class Finder implements \IteratorAggregate, \Countable /** * Sets the selected adapter to the best one according to the current platform the code is run on. * - * @return Finder The current Finder instance + * @return $this + * + * @deprecated since 2.8, to be removed in 3.0. */ public function useBestAdapter() { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + + $this->initDefaultAdapters(); + $this->resetAdapterSelection(); return $this->sortAdapters(); @@ -132,12 +130,18 @@ class Finder implements \IteratorAggregate, \Countable * * @param string $name * + * @return $this + * * @throws \InvalidArgumentException * - * @return Finder The current Finder instance + * @deprecated since 2.8, to be removed in 3.0. */ public function setAdapter($name) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + + $this->initDefaultAdapters(); + if (!isset($this->adapters[$name])) { throw new \InvalidArgumentException(sprintf('Adapter "%s" does not exist.', $name)); } @@ -151,10 +155,14 @@ class Finder implements \IteratorAggregate, \Countable /** * Removes all adapters registered in the finder. * - * @return Finder The current Finder instance + * @return $this + * + * @deprecated since 2.8, to be removed in 3.0. */ public function removeAdapters() { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + $this->adapters = array(); return $this; @@ -164,9 +172,15 @@ class Finder implements \IteratorAggregate, \Countable * Returns registered adapters ordered by priority without extra information. * * @return AdapterInterface[] + * + * @deprecated since 2.8, to be removed in 3.0. */ public function getAdapters() { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + + $this->initDefaultAdapters(); + return array_values(array_map(function (array $adapter) { return $adapter['adapter']; }, $this->adapters)); @@ -175,9 +189,7 @@ class Finder implements \IteratorAggregate, \Countable /** * Restricts the matching to directories only. * - * @return Finder The current Finder instance - * - * @api + * @return $this */ public function directories() { @@ -189,9 +201,7 @@ class Finder implements \IteratorAggregate, \Countable /** * Restricts the matching to files only. * - * @return Finder The current Finder instance - * - * @api + * @return $this */ public function files() { @@ -208,14 +218,12 @@ class Finder implements \IteratorAggregate, \Countable * $finder->depth('> 1') // the Finder will start matching at level 1. * $finder->depth('< 3') // the Finder will descend at most 3 levels of directories below the starting point. * - * @param int $level The depth level expression + * @param string|int $level The depth level expression * - * @return Finder The current Finder instance + * @return $this * * @see DepthRangeFilterIterator * @see NumberComparator - * - * @api */ public function depth($level) { @@ -236,13 +244,11 @@ class Finder implements \IteratorAggregate, \Countable * * @param string $date A date range string * - * @return Finder The current Finder instance + * @return $this * * @see strtotime * @see DateRangeFilterIterator * @see DateComparator - * - * @api */ public function date($date) { @@ -262,11 +268,9 @@ class Finder implements \IteratorAggregate, \Countable * * @param string $pattern A pattern (a regexp, a glob, or a string) * - * @return Finder The current Finder instance + * @return $this * * @see FilenameFilterIterator - * - * @api */ public function name($pattern) { @@ -280,11 +284,9 @@ class Finder implements \IteratorAggregate, \Countable * * @param string $pattern A pattern (a regexp, a glob, or a string) * - * @return Finder The current Finder instance + * @return $this * * @see FilenameFilterIterator - * - * @api */ public function notName($pattern) { @@ -303,7 +305,7 @@ class Finder implements \IteratorAggregate, \Countable * * @param string $pattern A pattern (string or regexp) * - * @return Finder The current Finder instance + * @return $this * * @see FilecontentFilterIterator */ @@ -324,7 +326,7 @@ class Finder implements \IteratorAggregate, \Countable * * @param string $pattern A pattern (string or regexp) * - * @return Finder The current Finder instance + * @return $this * * @see FilecontentFilterIterator */ @@ -347,7 +349,7 @@ class Finder implements \IteratorAggregate, \Countable * * @param string $pattern A pattern (a regexp or a string) * - * @return Finder The current Finder instance + * @return $this * * @see FilenameFilterIterator */ @@ -370,7 +372,7 @@ class Finder implements \IteratorAggregate, \Countable * * @param string $pattern A pattern (a regexp or a string) * - * @return Finder The current Finder instance + * @return $this * * @see FilenameFilterIterator */ @@ -388,14 +390,12 @@ class Finder implements \IteratorAggregate, \Countable * $finder->size('<= 1Ki'); * $finder->size(4); * - * @param string $size A size range string + * @param string|int $size A size range string or an integer * - * @return Finder The current Finder instance + * @return $this * * @see SizeRangeFilterIterator * @see NumberComparator - * - * @api */ public function size($size) { @@ -407,13 +407,15 @@ class Finder implements \IteratorAggregate, \Countable /** * Excludes directories. * + * Directories passed as argument must be relative to the ones defined with the `in()` method. For example: + * + * $finder->in(__DIR__)->exclude('ruby'); + * * @param string|array $dirs A directory path or an array of directories * - * @return Finder The current Finder instance + * @return $this * * @see ExcludeDirectoryFilterIterator - * - * @api */ public function exclude($dirs) { @@ -425,13 +427,13 @@ class Finder implements \IteratorAggregate, \Countable /** * Excludes "hidden" directories and files (starting with a dot). * + * This option is enabled by default. + * * @param bool $ignoreDotFiles Whether to exclude "hidden" files or not * - * @return Finder The current Finder instance + * @return $this * * @see ExcludeDirectoryFilterIterator - * - * @api */ public function ignoreDotFiles($ignoreDotFiles) { @@ -447,13 +449,13 @@ class Finder implements \IteratorAggregate, \Countable /** * Forces the finder to ignore version control directories. * + * This option is enabled by default. + * * @param bool $ignoreVCS Whether to exclude VCS files or not * - * @return Finder The current Finder instance + * @return $this * * @see ExcludeDirectoryFilterIterator - * - * @api */ public function ignoreVCS($ignoreVCS) { @@ -489,13 +491,9 @@ class Finder implements \IteratorAggregate, \Countable * * This can be slow as all the matching files and directories must be retrieved for comparison. * - * @param \Closure $closure An anonymous function - * - * @return Finder The current Finder instance + * @return $this * * @see SortableIterator - * - * @api */ public function sort(\Closure $closure) { @@ -509,11 +507,9 @@ class Finder implements \IteratorAggregate, \Countable * * This can be slow as all the matching files and directories must be retrieved for comparison. * - * @return Finder The current Finder instance + * @return $this * * @see SortableIterator - * - * @api */ public function sortByName() { @@ -527,11 +523,9 @@ class Finder implements \IteratorAggregate, \Countable * * This can be slow as all the matching files and directories must be retrieved for comparison. * - * @return Finder The current Finder instance + * @return $this * * @see SortableIterator - * - * @api */ public function sortByType() { @@ -547,11 +541,9 @@ class Finder implements \IteratorAggregate, \Countable * * This can be slow as all the matching files and directories must be retrieved for comparison. * - * @return Finder The current Finder instance + * @return $this * * @see SortableIterator - * - * @api */ public function sortByAccessedTime() { @@ -569,11 +561,9 @@ class Finder implements \IteratorAggregate, \Countable * * This can be slow as all the matching files and directories must be retrieved for comparison. * - * @return Finder The current Finder instance + * @return $this * * @see SortableIterator - * - * @api */ public function sortByChangedTime() { @@ -589,11 +579,9 @@ class Finder implements \IteratorAggregate, \Countable * * This can be slow as all the matching files and directories must be retrieved for comparison. * - * @return Finder The current Finder instance + * @return $this * * @see SortableIterator - * - * @api */ public function sortByModifiedTime() { @@ -608,13 +596,9 @@ class Finder implements \IteratorAggregate, \Countable * The anonymous function receives a \SplFileInfo and must return false * to remove files. * - * @param \Closure $closure An anonymous function - * - * @return Finder The current Finder instance + * @return $this * * @see CustomFilterIterator - * - * @api */ public function filter(\Closure $closure) { @@ -626,9 +610,7 @@ class Finder implements \IteratorAggregate, \Countable /** * Forces the following of symlinks. * - * @return Finder The current Finder instance - * - * @api + * @return $this */ public function followLinks() { @@ -644,7 +626,7 @@ class Finder implements \IteratorAggregate, \Countable * * @param bool $ignore * - * @return Finder The current Finder instance + * @return $this */ public function ignoreUnreadableDirs($ignore = true) { @@ -658,11 +640,9 @@ class Finder implements \IteratorAggregate, \Countable * * @param string|array $dirs A directory path or an array of directories * - * @return Finder The current Finder instance + * @return $this * * @throws \InvalidArgumentException if one of the directories does not exist - * - * @api */ public function in($dirs) { @@ -670,9 +650,9 @@ class Finder implements \IteratorAggregate, \Countable foreach ((array) $dirs as $dir) { if (is_dir($dir)) { - $resolvedDirs[] = $dir; - } elseif ($glob = glob($dir, (defined('GLOB_BRACE') ? GLOB_BRACE : 0) | GLOB_ONLYDIR)) { - $resolvedDirs = array_merge($resolvedDirs, $glob); + $resolvedDirs[] = $this->normalizeDir($dir); + } elseif ($glob = glob($dir, (\defined('GLOB_BRACE') ? GLOB_BRACE : 0) | GLOB_ONLYDIR)) { + $resolvedDirs = array_merge($resolvedDirs, array_map(array($this, 'normalizeDir'), $glob)); } else { throw new \InvalidArgumentException(sprintf('The "%s" directory does not exist.', $dir)); } @@ -688,17 +668,17 @@ class Finder implements \IteratorAggregate, \Countable * * This method implements the IteratorAggregate interface. * - * @return \Iterator An iterator + * @return \Iterator|SplFileInfo[] An iterator * * @throws \LogicException if the in() method has not been called */ public function getIterator() { - if (0 === count($this->dirs) && 0 === count($this->iterators)) { + if (0 === \count($this->dirs) && 0 === \count($this->iterators)) { throw new \LogicException('You must call one of in() or append() methods before iterating over a Finder.'); } - if (1 === count($this->dirs) && 0 === count($this->iterators)) { + if (1 === \count($this->dirs) && 0 === \count($this->iterators)) { return $this->searchInDirectory($this->dirs[0]); } @@ -721,9 +701,9 @@ class Finder implements \IteratorAggregate, \Countable * * @param mixed $iterator * - * @return Finder The finder + * @return $this * - * @throws \InvalidArgumentException When the given argument is not iterable. + * @throws \InvalidArgumentException when the given argument is not iterable */ public function append($iterator) { @@ -731,7 +711,7 @@ class Finder implements \IteratorAggregate, \Countable $this->iterators[] = $iterator->getIterator(); } elseif ($iterator instanceof \Iterator) { $this->iterators[] = $iterator; - } elseif ($iterator instanceof \Traversable || is_array($iterator)) { + } elseif ($iterator instanceof \Traversable || \is_array($iterator)) { $it = new \ArrayIterator(); foreach ($iterator as $file) { $it->append($file instanceof \SplFileInfo ? $file : new \SplFileInfo($file)); @@ -755,7 +735,7 @@ class Finder implements \IteratorAggregate, \Countable } /** - * @return Finder The current Finder instance + * @return $this */ private function sortAdapters() { @@ -774,8 +754,6 @@ class Finder implements \IteratorAggregate, \Countable * @param $dir * * @return \Iterator - * - * @throws \RuntimeException When none of the adapters are supported */ private function searchInDirectory($dir) { @@ -787,23 +765,96 @@ class Finder implements \IteratorAggregate, \Countable $this->notPaths[] = '#(^|/)\..+(/|$)#'; } - foreach ($this->adapters as $adapter) { - if ($adapter['adapter']->isSupported()) { - try { - return $this - ->buildAdapter($adapter['adapter']) - ->searchInDirectory($dir); - } catch (ExceptionInterface $e) { + if ($this->adapters) { + foreach ($this->adapters as $adapter) { + if ($adapter['adapter']->isSupported()) { + try { + return $this + ->buildAdapter($adapter['adapter']) + ->searchInDirectory($dir); + } catch (ExceptionInterface $e) { + } } } } - throw new \RuntimeException('No supported adapter found.'); + $minDepth = 0; + $maxDepth = PHP_INT_MAX; + + foreach ($this->depths as $comparator) { + switch ($comparator->getOperator()) { + case '>': + $minDepth = $comparator->getTarget() + 1; + break; + case '>=': + $minDepth = $comparator->getTarget(); + break; + case '<': + $maxDepth = $comparator->getTarget() - 1; + break; + case '<=': + $maxDepth = $comparator->getTarget(); + break; + default: + $minDepth = $maxDepth = $comparator->getTarget(); + } + } + + $flags = \RecursiveDirectoryIterator::SKIP_DOTS; + + if ($this->followLinks) { + $flags |= \RecursiveDirectoryIterator::FOLLOW_SYMLINKS; + } + + $iterator = new Iterator\RecursiveDirectoryIterator($dir, $flags, $this->ignoreUnreadableDirs); + + if ($this->exclude) { + $iterator = new Iterator\ExcludeDirectoryFilterIterator($iterator, $this->exclude); + } + + $iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST); + + if ($minDepth > 0 || $maxDepth < PHP_INT_MAX) { + $iterator = new Iterator\DepthRangeFilterIterator($iterator, $minDepth, $maxDepth); + } + + if ($this->mode) { + $iterator = new Iterator\FileTypeFilterIterator($iterator, $this->mode); + } + + if ($this->names || $this->notNames) { + $iterator = new Iterator\FilenameFilterIterator($iterator, $this->names, $this->notNames); + } + + if ($this->contains || $this->notContains) { + $iterator = new Iterator\FilecontentFilterIterator($iterator, $this->contains, $this->notContains); + } + + if ($this->sizes) { + $iterator = new Iterator\SizeRangeFilterIterator($iterator, $this->sizes); + } + + if ($this->dates) { + $iterator = new Iterator\DateRangeFilterIterator($iterator, $this->dates); + } + + if ($this->filters) { + $iterator = new Iterator\CustomFilterIterator($iterator, $this->filters); + } + + if ($this->paths || $this->notPaths) { + $iterator = new Iterator\PathFilterIterator($iterator, $this->paths, $this->notPaths); + } + + if ($this->sort) { + $iteratorAggregate = new Iterator\SortableIterator($iterator, $this->sort); + $iterator = $iteratorAggregate->getIterator(); + } + + return $iterator; } /** - * @param AdapterInterface $adapter - * * @return AdapterInterface */ private function buildAdapter(AdapterInterface $adapter) @@ -837,4 +888,29 @@ class Finder implements \IteratorAggregate, \Countable return $properties; }, $this->adapters); } + + private function initDefaultAdapters() + { + if (null === $this->adapters) { + $this->adapters = array(); + $this + ->addAdapter(new GnuFindAdapter()) + ->addAdapter(new BsdFindAdapter()) + ->addAdapter(new PhpAdapter(), -50) + ->setAdapter('php') + ; + } + } + + /** + * Normalizes given directory names by removing trailing slashes. + * + * @param string $dir + * + * @return string + */ + private function normalizeDir($dir) + { + return rtrim($dir, '/'.\DIRECTORY_SEPARATOR); + } } diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Glob.php b/civicrm/vendor/symfony/finder/Glob.php similarity index 89% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Glob.php rename to civicrm/vendor/symfony/finder/Glob.php index fedcc5e708ece4cb1a7bc1ba76d0533ab31e3a5c..2e56cf2800511492fa16b88ae75bef60fdb291ce 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Glob.php +++ b/civicrm/vendor/symfony/finder/Glob.php @@ -41,16 +41,17 @@ class Glob * @param string $glob The glob pattern * @param bool $strictLeadingDot * @param bool $strictWildcardSlash + * @param string $delimiter Optional delimiter * * @return string regex The regexp */ - public static function toRegex($glob, $strictLeadingDot = true, $strictWildcardSlash = true) + public static function toRegex($glob, $strictLeadingDot = true, $strictWildcardSlash = true, $delimiter = '#') { $firstByte = true; $escaping = false; $inCurlies = 0; $regex = ''; - $sizeGlob = strlen($glob); + $sizeGlob = \strlen($glob); for ($i = 0; $i < $sizeGlob; ++$i) { $car = $glob[$i]; if ($firstByte) { @@ -65,7 +66,7 @@ class Glob $firstByte = true; } - if ('.' === $car || '(' === $car || ')' === $car || '|' === $car || '+' === $car || '^' === $car || '$' === $car) { + if ($delimiter === $car || '.' === $car || '(' === $car || ')' === $car || '|' === $car || '+' === $car || '^' === $car || '$' === $car) { $regex .= "\\$car"; } elseif ('*' === $car) { $regex .= $escaping ? '\\*' : ($strictWildcardSlash ? '[^/]*' : '.*'); @@ -98,6 +99,6 @@ class Glob $escaping = false; } - return '#^'.$regex.'$#'; + return $delimiter.'^'.$regex.'$'.$delimiter; } } diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/CustomFilterIterator.php b/civicrm/vendor/symfony/finder/Iterator/CustomFilterIterator.php similarity index 83% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/CustomFilterIterator.php rename to civicrm/vendor/symfony/finder/Iterator/CustomFilterIterator.php index 24b15d97adf902c143adb57c8750b0b490486090..6666e07ec54bba96f73bc46fd4d756bf2ac4e6ae 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/CustomFilterIterator.php +++ b/civicrm/vendor/symfony/finder/Iterator/CustomFilterIterator.php @@ -24,17 +24,15 @@ class CustomFilterIterator extends FilterIterator private $filters = array(); /** - * Constructor. - * - * @param \Iterator $iterator The Iterator to filter - * @param array $filters An array of PHP callbacks + * @param \Iterator $iterator The Iterator to filter + * @param callable[] $filters An array of PHP callbacks * * @throws \InvalidArgumentException */ public function __construct(\Iterator $iterator, array $filters) { foreach ($filters as $filter) { - if (!is_callable($filter)) { + if (!\is_callable($filter)) { throw new \InvalidArgumentException('Invalid PHP callback.'); } } @@ -53,7 +51,7 @@ class CustomFilterIterator extends FilterIterator $fileinfo = $this->current(); foreach ($this->filters as $filter) { - if (false === call_user_func($filter, $fileinfo)) { + if (false === \call_user_func($filter, $fileinfo)) { return false; } } diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/DateRangeFilterIterator.php b/civicrm/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php similarity index 94% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/DateRangeFilterIterator.php rename to civicrm/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php index 4d5ef9a4bc4317b3b012dd124da7e58f1be15871..b01e5e3f5d8857c4e9a43b7b3afcac9aa6d3ce33 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/DateRangeFilterIterator.php +++ b/civicrm/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php @@ -23,8 +23,6 @@ class DateRangeFilterIterator extends FilterIterator private $comparators = array(); /** - * Constructor. - * * @param \Iterator $iterator The Iterator to filter * @param DateComparator[] $comparators An array of DateComparator instances */ @@ -44,7 +42,7 @@ class DateRangeFilterIterator extends FilterIterator { $fileinfo = $this->current(); - if (!file_exists($fileinfo->getRealPath())) { + if (!file_exists($fileinfo->getPathname())) { return false; } diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/DepthRangeFilterIterator.php b/civicrm/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php similarity index 97% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/DepthRangeFilterIterator.php rename to civicrm/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php index f78c71ed415cc4a009e26cbca091837f23430a37..ce9d3aa73a13e5da737ff629bc85caa78b38e7a7 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/DepthRangeFilterIterator.php +++ b/civicrm/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php @@ -21,8 +21,6 @@ class DepthRangeFilterIterator extends FilterIterator private $minDepth = 0; /** - * Constructor. - * * @param \RecursiveIteratorIterator $iterator The Iterator to filter * @param int $minDepth The min depth * @param int $maxDepth The max depth diff --git a/civicrm/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php b/civicrm/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php new file mode 100644 index 0000000000000000000000000000000000000000..c57128c278492d8526539bc1442d4f96aac680c7 --- /dev/null +++ b/civicrm/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php @@ -0,0 +1,84 @@ +<?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\Component\Finder\Iterator; + +/** + * ExcludeDirectoryFilterIterator filters out directories. + * + * @author Fabien Potencier <fabien@symfony.com> + */ +class ExcludeDirectoryFilterIterator extends FilterIterator implements \RecursiveIterator +{ + private $iterator; + private $isRecursive; + private $excludedDirs = array(); + private $excludedPattern; + + /** + * @param \Iterator $iterator The Iterator to filter + * @param array $directories An array of directories to exclude + */ + public function __construct(\Iterator $iterator, array $directories) + { + $this->iterator = $iterator; + $this->isRecursive = $iterator instanceof \RecursiveIterator; + $patterns = array(); + foreach ($directories as $directory) { + $directory = rtrim($directory, '/'); + if (!$this->isRecursive || false !== strpos($directory, '/')) { + $patterns[] = preg_quote($directory, '#'); + } else { + $this->excludedDirs[$directory] = true; + } + } + if ($patterns) { + $this->excludedPattern = '#(?:^|/)(?:'.implode('|', $patterns).')(?:/|$)#'; + } + + parent::__construct($iterator); + } + + /** + * Filters the iterator values. + * + * @return bool True if the value should be kept, false otherwise + */ + public function accept() + { + if ($this->isRecursive && isset($this->excludedDirs[$this->getFilename()]) && $this->isDir()) { + return false; + } + + if ($this->excludedPattern) { + $path = $this->isDir() ? $this->current()->getRelativePathname() : $this->current()->getRelativePath(); + $path = str_replace('\\', '/', $path); + + return !preg_match($this->excludedPattern, $path); + } + + return true; + } + + public function hasChildren() + { + return $this->isRecursive && $this->iterator->hasChildren(); + } + + public function getChildren() + { + $children = new self($this->iterator->getChildren(), array()); + $children->excludedDirs = $this->excludedDirs; + $children->excludedPattern = $this->excludedPattern; + + return $children; + } +} diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FilePathsIterator.php b/civicrm/vendor/symfony/finder/Iterator/FilePathsIterator.php similarity index 86% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FilePathsIterator.php rename to civicrm/vendor/symfony/finder/Iterator/FilePathsIterator.php index 4da2f5be012e6a1fe7fc1854517a07c70b37a714..9c4e5c4aab28fcb246abe680ad0bef668ca699cc 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FilePathsIterator.php +++ b/civicrm/vendor/symfony/finder/Iterator/FilePathsIterator.php @@ -11,12 +11,16 @@ namespace Symfony\Component\Finder\Iterator; +@trigger_error('The '.__NAMESPACE__.'\FilePathsIterator class is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + use Symfony\Component\Finder\SplFileInfo; /** * Iterate over shell command result. * * @author Jean-François Simon <contact@jfsimon.fr> + * + * @deprecated since 2.8, to be removed in 3.0. */ class FilePathsIterator extends \ArrayIterator { @@ -52,7 +56,7 @@ class FilePathsIterator extends \ArrayIterator public function __construct(array $paths, $baseDir) { $this->baseDir = $baseDir; - $this->baseDirLength = strlen($baseDir); + $this->baseDirLength = \strlen($baseDir); parent::__construct($paths); } @@ -65,7 +69,7 @@ class FilePathsIterator extends \ArrayIterator */ public function __call($name, array $arguments) { - return call_user_func_array(array($this->current(), $name), $arguments); + return \call_user_func_array(array($this->current(), $name), $arguments); } /** @@ -120,7 +124,7 @@ class FilePathsIterator extends \ArrayIterator if ($this->baseDir === substr($absolutePath, 0, $this->baseDirLength)) { $this->subPathname = ltrim(substr($absolutePath, $this->baseDirLength), '/\\'); - $dir = dirname($this->subPathname); + $dir = \dirname($this->subPathname); $this->subPath = '.' === $dir ? '' : $dir; } else { $this->subPath = $this->subPathname = ''; diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FileTypeFilterIterator.php b/civicrm/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php similarity index 98% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FileTypeFilterIterator.php rename to civicrm/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php index f50fd82c345f49a80f6ab9bccab7d77891798172..e9811d4a03ee6b2a65180fd92eaa9bdab08e3ec7 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FileTypeFilterIterator.php +++ b/civicrm/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php @@ -24,8 +24,6 @@ class FileTypeFilterIterator extends FilterIterator private $mode; /** - * Constructor. - * * @param \Iterator $iterator The Iterator to filter * @param int $mode The mode (self::ONLY_FILES or self::ONLY_DIRECTORIES) */ diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FilecontentFilterIterator.php b/civicrm/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php similarity index 72% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FilecontentFilterIterator.php rename to civicrm/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php index 28cf770edefac258f935c15ad31e4938a584463b..81594b87740481b0ada8ca7114468e5687f638d0 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FilecontentFilterIterator.php +++ b/civicrm/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php @@ -41,25 +41,7 @@ class FilecontentFilterIterator extends MultiplePcreFilterIterator return false; } - // should at least not match one rule to exclude - foreach ($this->noMatchRegexps as $regex) { - if (preg_match($regex, $content)) { - return false; - } - } - - // should at least match one rule - $match = true; - if ($this->matchRegexps) { - $match = false; - foreach ($this->matchRegexps as $regex) { - if (preg_match($regex, $content)) { - return true; - } - } - } - - return $match; + return $this->isAccepted($content); } /** diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FilenameFilterIterator.php b/civicrm/vendor/symfony/finder/Iterator/FilenameFilterIterator.php similarity index 58% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FilenameFilterIterator.php rename to civicrm/vendor/symfony/finder/Iterator/FilenameFilterIterator.php index f1cd391e21e27aab306ee6fd607555d4ead988f9..e168cd8ffa798a8529bbcd02af72cabecd333c1e 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FilenameFilterIterator.php +++ b/civicrm/vendor/symfony/finder/Iterator/FilenameFilterIterator.php @@ -11,7 +11,7 @@ namespace Symfony\Component\Finder\Iterator; -use Symfony\Component\Finder\Expression\Expression; +use Symfony\Component\Finder\Glob; /** * FilenameFilterIterator filters files by patterns (a regexp, a glob, or a string). @@ -27,27 +27,7 @@ class FilenameFilterIterator extends MultiplePcreFilterIterator */ public function accept() { - $filename = $this->current()->getFilename(); - - // should at least not match one rule to exclude - foreach ($this->noMatchRegexps as $regex) { - if (preg_match($regex, $filename)) { - return false; - } - } - - // should at least match one rule - $match = true; - if ($this->matchRegexps) { - $match = false; - foreach ($this->matchRegexps as $regex) { - if (preg_match($regex, $filename)) { - return true; - } - } - } - - return $match; + return $this->isAccepted($this->current()->getFilename()); } /** @@ -62,6 +42,6 @@ class FilenameFilterIterator extends MultiplePcreFilterIterator */ protected function toRegex($str) { - return Expression::create($str)->getRegex()->render(); + return $this->isRegex($str) ? $str : Glob::toRegex($str); } } diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FilterIterator.php b/civicrm/vendor/symfony/finder/Iterator/FilterIterator.php similarity index 66% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FilterIterator.php rename to civicrm/vendor/symfony/finder/Iterator/FilterIterator.php index f4da44c4cdd59aa04f39ea629a42e180efa258b8..acb98361c96430c86a8528d0997479b40130ee44 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/FilterIterator.php +++ b/civicrm/vendor/symfony/finder/Iterator/FilterIterator.php @@ -12,9 +12,10 @@ namespace Symfony\Component\Finder\Iterator; /** - * This iterator just overrides the rewind method in order to correct a PHP bug. + * This iterator just overrides the rewind method in order to correct a PHP bug, + * which existed before version 5.5.23/5.6.7. * - * @see https://bugs.php.net/bug.php?id=49104 + * @see https://bugs.php.net/68557 * * @author Alex Bogomazov */ @@ -28,20 +29,28 @@ abstract class FilterIterator extends \FilterIterator */ public function rewind() { + if (\PHP_VERSION_ID > 50607 || (\PHP_VERSION_ID > 50523 && \PHP_VERSION_ID < 50600)) { + parent::rewind(); + + return; + } + $iterator = $this; while ($iterator instanceof \OuterIterator) { $innerIterator = $iterator->getInnerIterator(); if ($innerIterator instanceof RecursiveDirectoryIterator) { + // this condition is necessary for iterators to work properly with non-local filesystems like ftp if ($innerIterator->isRewindable()) { $innerIterator->next(); $innerIterator->rewind(); } - } elseif ($iterator->getInnerIterator() instanceof \FilesystemIterator) { - $iterator->getInnerIterator()->next(); - $iterator->getInnerIterator()->rewind(); + } elseif ($innerIterator instanceof \FilesystemIterator) { + $innerIterator->next(); + $innerIterator->rewind(); } - $iterator = $iterator->getInnerIterator(); + + $iterator = $innerIterator; } parent::rewind(); diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/MultiplePcreFilterIterator.php b/civicrm/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php similarity index 51% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/MultiplePcreFilterIterator.php rename to civicrm/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php index 068a7efbae96e565e7895e814b33680cb6fd1aee..fc8854047e3422953a85fbbdd8a08674f3d0032f 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/MultiplePcreFilterIterator.php +++ b/civicrm/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php @@ -11,8 +11,6 @@ namespace Symfony\Component\Finder\Iterator; -use Symfony\Component\Finder\Expression\Expression; - /** * MultiplePcreFilterIterator filters files using patterns (regexps, globs or strings). * @@ -24,8 +22,6 @@ abstract class MultiplePcreFilterIterator extends FilterIterator protected $noMatchRegexps = array(); /** - * Constructor. - * * @param \Iterator $iterator The Iterator to filter * @param array $matchPatterns An array of patterns that need to match * @param array $noMatchPatterns An array of patterns that need to not match @@ -43,6 +39,41 @@ abstract class MultiplePcreFilterIterator extends FilterIterator parent::__construct($iterator); } + /** + * Checks whether the string is accepted by the regex filters. + * + * If there is no regexps defined in the class, this method will accept the string. + * Such case can be handled by child classes before calling the method if they want to + * apply a different behavior. + * + * @param string $string The string to be matched against filters + * + * @return bool + */ + protected function isAccepted($string) + { + // should at least not match one rule to exclude + foreach ($this->noMatchRegexps as $regex) { + if (preg_match($regex, $string)) { + return false; + } + } + + // should at least match one rule + if ($this->matchRegexps) { + foreach ($this->matchRegexps as $regex) { + if (preg_match($regex, $string)) { + return true; + } + } + + return false; + } + + // If there is no match rules, the file is accepted + return true; + } + /** * Checks whether the string is a regex. * @@ -52,7 +83,22 @@ abstract class MultiplePcreFilterIterator extends FilterIterator */ protected function isRegex($str) { - return Expression::create($str)->isRegex(); + if (preg_match('/^(.{3,}?)[imsxuADU]*$/', $str, $m)) { + $start = substr($m[1], 0, 1); + $end = substr($m[1], -1); + + if ($start === $end) { + return !preg_match('/[*?[:alnum:] \\\\]/', $start); + } + + foreach (array(array('{', '}'), array('(', ')'), array('[', ']'), array('<', '>')) as $delimiters) { + if ($start === $delimiters[0] && $end === $delimiters[1]) { + return true; + } + } + } + + return false; } /** diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/PathFilterIterator.php b/civicrm/vendor/symfony/finder/Iterator/PathFilterIterator.php similarity index 64% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/PathFilterIterator.php rename to civicrm/vendor/symfony/finder/Iterator/PathFilterIterator.php index 2bb8ebd223a961785c538ea9a722a65e17fe0cdc..3fda557be366baa1d10e05734d138eec71402045 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/PathFilterIterator.php +++ b/civicrm/vendor/symfony/finder/Iterator/PathFilterIterator.php @@ -28,29 +28,11 @@ class PathFilterIterator extends MultiplePcreFilterIterator { $filename = $this->current()->getRelativePathname(); - if ('\\' === DIRECTORY_SEPARATOR) { - $filename = strtr($filename, '\\', '/'); + if ('\\' === \DIRECTORY_SEPARATOR) { + $filename = str_replace('\\', '/', $filename); } - // should at least not match one rule to exclude - foreach ($this->noMatchRegexps as $regex) { - if (preg_match($regex, $filename)) { - return false; - } - } - - // should at least match one rule - $match = true; - if ($this->matchRegexps) { - $match = false; - foreach ($this->matchRegexps as $regex) { - if (preg_match($regex, $filename)) { - return true; - } - } - } - - return $match; + return $this->isAccepted($filename); } /** @@ -63,7 +45,7 @@ class PathFilterIterator extends MultiplePcreFilterIterator * * Use only / as directory separator (on Windows also). * - * @param string $str Pattern: regexp or dirname. + * @param string $str Pattern: regexp or dirname * * @return string regexp corresponding to a given string or regexp */ diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/RecursiveDirectoryIterator.php b/civicrm/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php similarity index 68% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/RecursiveDirectoryIterator.php rename to civicrm/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php index af824d0e4333c9da6940e1a3f8eadc12ec9cff0d..cb2964f8f29f4d11233e2c1531e8e0f6bfdce10b 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/RecursiveDirectoryIterator.php +++ b/civicrm/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php @@ -31,9 +31,12 @@ class RecursiveDirectoryIterator extends \RecursiveDirectoryIterator */ private $rewindable; + // these 3 properties take part of the performance optimization to avoid redoing the same work in all iterations + private $rootPath; + private $subPath; + private $directorySeparator = '/'; + /** - * Constructor. - * * @param string $path * @param int $flags * @param bool $ignoreUnreadableDirs @@ -48,6 +51,10 @@ class RecursiveDirectoryIterator extends \RecursiveDirectoryIterator parent::__construct($path, $flags); $this->ignoreUnreadableDirs = $ignoreUnreadableDirs; + $this->rootPath = (string) $path; + if ('/' !== \DIRECTORY_SEPARATOR && !($flags & self::UNIX_PATHS)) { + $this->directorySeparator = \DIRECTORY_SEPARATOR; + } } /** @@ -57,7 +64,17 @@ class RecursiveDirectoryIterator extends \RecursiveDirectoryIterator */ public function current() { - return new SplFileInfo(parent::current()->getPathname(), $this->getSubPath(), $this->getSubPathname()); + // the logic here avoids redoing the same work in all iterations + + if (null === $subPathname = $this->subPath) { + $subPathname = $this->subPath = (string) $this->getSubPath(); + } + if ('' !== $subPathname) { + $subPathname .= $this->directorySeparator; + } + $subPathname .= $this->getFilename(); + + return new SplFileInfo($this->rootPath.$this->directorySeparator.$subPathname, $this->subPath, $subPathname); } /** @@ -73,6 +90,10 @@ class RecursiveDirectoryIterator extends \RecursiveDirectoryIterator if ($children instanceof self) { // parent method will call the constructor with default arguments, so unreadable dirs won't be ignored anymore $children->ignoreUnreadableDirs = $this->ignoreUnreadableDirs; + + // performance optimization to avoid redoing the same work in all children + $children->rewindable = &$this->rewindable; + $children->rootPath = $this->rootPath; } return $children; @@ -95,8 +116,10 @@ class RecursiveDirectoryIterator extends \RecursiveDirectoryIterator return; } - // @see https://bugs.php.net/bug.php?id=49104 - parent::next(); + // @see https://bugs.php.net/68557 + if (\PHP_VERSION_ID < 50523 || \PHP_VERSION_ID >= 50600 && \PHP_VERSION_ID < 50607) { + parent::next(); + } parent::rewind(); } @@ -112,6 +135,11 @@ class RecursiveDirectoryIterator extends \RecursiveDirectoryIterator return $this->rewindable; } + // workaround for an HHVM bug, should be removed when https://github.com/facebook/hhvm/issues/7281 is fixed + if ('' === $this->getPath()) { + return $this->rewindable = false; + } + if (false !== $stream = @opendir($this->getPath())) { $infos = stream_get_meta_data($stream); closedir($stream); diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/SizeRangeFilterIterator.php b/civicrm/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php similarity index 98% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/SizeRangeFilterIterator.php rename to civicrm/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php index 3d3140a6ae45abcc1249957819f743bab97f7b0a..bd1a7fb7004819273329563388d9f1eff3306b61 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/SizeRangeFilterIterator.php +++ b/civicrm/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php @@ -23,8 +23,6 @@ class SizeRangeFilterIterator extends FilterIterator private $comparators = array(); /** - * Constructor. - * * @param \Iterator $iterator The Iterator to filter * @param NumberComparator[] $comparators An array of NumberComparator instances */ diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/SortableIterator.php b/civicrm/vendor/symfony/finder/Iterator/SortableIterator.php similarity index 83% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/SortableIterator.php rename to civicrm/vendor/symfony/finder/Iterator/SortableIterator.php index b32ac8d6df4bbd1dd46f9f1b22435bd535cbcc80..53f8e31c6c4291db03ce77281bdccd416ccaef79 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/SortableIterator.php +++ b/civicrm/vendor/symfony/finder/Iterator/SortableIterator.php @@ -28,8 +28,6 @@ class SortableIterator implements \IteratorAggregate private $sort; /** - * Constructor. - * * @param \Traversable $iterator The Iterator to filter * @param int|callable $sort The sort type (SORT_BY_NAME, SORT_BY_TYPE, or a PHP callback) * @@ -41,7 +39,7 @@ class SortableIterator implements \IteratorAggregate if (self::SORT_BY_NAME === $sort) { $this->sort = function ($a, $b) { - return strcmp($a->getRealpath(), $b->getRealpath()); + return strcmp($a->getRealpath() ?: $a->getPathname(), $b->getRealpath() ?: $b->getPathname()); }; } elseif (self::SORT_BY_TYPE === $sort) { $this->sort = function ($a, $b) { @@ -51,21 +49,21 @@ class SortableIterator implements \IteratorAggregate return 1; } - return strcmp($a->getRealpath(), $b->getRealpath()); + return strcmp($a->getRealpath() ?: $a->getPathname(), $b->getRealpath() ?: $b->getPathname()); }; } elseif (self::SORT_BY_ACCESSED_TIME === $sort) { $this->sort = function ($a, $b) { - return ($a->getATime() - $b->getATime()); + return $a->getATime() - $b->getATime(); }; } elseif (self::SORT_BY_CHANGED_TIME === $sort) { $this->sort = function ($a, $b) { - return ($a->getCTime() - $b->getCTime()); + return $a->getCTime() - $b->getCTime(); }; } elseif (self::SORT_BY_MODIFIED_TIME === $sort) { $this->sort = function ($a, $b) { - return ($a->getMTime() - $b->getMTime()); + return $a->getMTime() - $b->getMTime(); }; - } elseif (is_callable($sort)) { + } elseif (\is_callable($sort)) { $this->sort = $sort; } else { throw new \InvalidArgumentException('The SortableIterator takes a PHP callable or a valid built-in sort algorithm as an argument.'); diff --git a/civicrm/vendor/symfony/finder/LICENSE b/civicrm/vendor/symfony/finder/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..21d7fb9e2f29b50caca3a76f0647e94e2cc8ddc1 --- /dev/null +++ b/civicrm/vendor/symfony/finder/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2004-2018 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 +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/finder/README.md b/civicrm/vendor/symfony/finder/README.md new file mode 100644 index 0000000000000000000000000000000000000000..0b19c752572d8e842b784e5a48c7729f95ea7485 --- /dev/null +++ b/civicrm/vendor/symfony/finder/README.md @@ -0,0 +1,14 @@ +Finder Component +================ + +The Finder component finds files and directories via an intuitive fluent +interface. + +Resources +--------- + + * [Documentation](https://symfony.com/doc/current/components/finder.html) + * [Contributing](https://symfony.com/doc/current/contributing/index.html) + * [Report issues](https://github.com/symfony/symfony/issues) and + [send Pull Requests](https://github.com/symfony/symfony/pulls) + in the [main Symfony repository](https://github.com/symfony/symfony) diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Shell/Command.php b/civicrm/vendor/symfony/finder/Shell/Command.php similarity index 85% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Shell/Command.php rename to civicrm/vendor/symfony/finder/Shell/Command.php index f8bd6a08514e9cbd24355f1ffdf40358b05cc537..8219078723476295be584fc3f278924c2f91ccaf 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Shell/Command.php +++ b/civicrm/vendor/symfony/finder/Shell/Command.php @@ -11,24 +11,17 @@ namespace Symfony\Component\Finder\Shell; +@trigger_error('The '.__NAMESPACE__.'\Command class is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + /** * @author Jean-François Simon <contact@jfsimon.fr> + * + * @deprecated since 2.8, to be removed in 3.0. */ class Command { - /** - * @var Command|null - */ private $parent; - - /** - * @var array - */ private $bits = array(); - - /** - * @var array - */ private $labels = array(); /** @@ -36,11 +29,6 @@ class Command */ private $errorHandler; - /** - * Constructor. - * - * @param Command|null $parent Parent command - */ public function __construct(Command $parent = null) { $this->parent = $parent; @@ -59,9 +47,7 @@ class Command /** * Creates a new Command instance. * - * @param Command|null $parent Parent command - * - * @return Command New Command instance + * @return self */ public static function create(Command $parent = null) { @@ -97,7 +83,7 @@ class Command * * @param string|Command $bit * - * @return Command The current Command instance + * @return $this */ public function add($bit) { @@ -111,14 +97,14 @@ class Command * * @param string|Command $bit * - * @return Command The current Command instance + * @return $this */ public function top($bit) { array_unshift($this->bits, $bit); foreach ($this->labels as $label => $index) { - $this->labels[$label] += 1; + ++$this->labels[$label]; } return $this; @@ -129,7 +115,7 @@ class Command * * @param string $arg * - * @return Command The current Command instance + * @return $this */ public function arg($arg) { @@ -143,7 +129,7 @@ class Command * * @param string $esc * - * @return Command The current Command instance + * @return $this */ public function cmd($esc) { @@ -157,7 +143,7 @@ class Command * * @param string $label The unique label * - * @return Command The current Command instance + * @return self|string * * @throws \RuntimeException If label already exists */ @@ -168,7 +154,7 @@ class Command } $this->bits[] = self::create($this); - $this->labels[$label] = count($this->bits) - 1; + $this->labels[$label] = \count($this->bits) - 1; return $this->bits[$this->labels[$label]]; } @@ -178,7 +164,7 @@ class Command * * @param string $label * - * @return Command The labeled command + * @return self|string * * @throws \RuntimeException */ @@ -194,7 +180,7 @@ class Command /** * Returns parent command (if any). * - * @return Command Parent command + * @return self * * @throws \RuntimeException If command has no parent */ @@ -214,13 +200,11 @@ class Command */ public function length() { - return count($this->bits); + return \count($this->bits); } /** - * @param \Closure $errorHandler - * - * @return Command + * @return $this */ public function setErrorHandler(\Closure $errorHandler) { @@ -283,7 +267,7 @@ class Command * @param string|Command $bit * @param int $index * - * @return Command The current Command instance + * @return $this */ public function addAtIndex($bit, $index) { diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Shell/Shell.php b/civicrm/vendor/symfony/finder/Shell/Shell.php similarity index 87% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/Shell/Shell.php rename to civicrm/vendor/symfony/finder/Shell/Shell.php index 6d7bff33b4b02ae8b5bd4c3804e10b641e1ffd1a..fa6ca4b9403fcbffed290d18fd34bfcf4a96a0a2 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Shell/Shell.php +++ b/civicrm/vendor/symfony/finder/Shell/Shell.php @@ -11,8 +11,12 @@ namespace Symfony\Component\Finder\Shell; +@trigger_error('The '.__NAMESPACE__.'\Shell class is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED); + /** * @author Jean-François Simon <contact@jfsimon.fr> + * + * @deprecated since 2.8, to be removed in 3.0. */ class Shell { @@ -50,7 +54,7 @@ class Shell */ public function testCommand($command) { - if (!function_exists('exec')) { + if (!\function_exists('exec')) { return false; } @@ -64,7 +68,7 @@ class Shell exec($testCommand.$command, $output, $code); - return 0 === $code && count($output) > 0; + return 0 === $code && \count($output) > 0; } /** diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/SplFileInfo.php b/civicrm/vendor/symfony/finder/SplFileInfo.php similarity index 86% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/SplFileInfo.php rename to civicrm/vendor/symfony/finder/SplFileInfo.php index c7fbe0219115709d883e3e6ed5469e28ef5a52db..0f4e025b22bd20362736c83160694ffd6f547c36 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/SplFileInfo.php +++ b/civicrm/vendor/symfony/finder/SplFileInfo.php @@ -22,8 +22,6 @@ class SplFileInfo extends \SplFileInfo private $relativePathname; /** - * Constructor. - * * @param string $file The file name * @param string $relativePath The relative path * @param string $relativePathname The relative path name @@ -38,6 +36,8 @@ class SplFileInfo extends \SplFileInfo /** * Returns the relative path. * + * This path does not contain the file name. + * * @return string the relative path */ public function getRelativePath() @@ -48,6 +48,8 @@ class SplFileInfo extends \SplFileInfo /** * Returns the relative path name. * + * This path contains the file name. + * * @return string the relative path name */ public function getRelativePathname() @@ -64,12 +66,11 @@ class SplFileInfo extends \SplFileInfo */ public function getContents() { - $level = error_reporting(0); + set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; }); $content = file_get_contents($this->getPathname()); - error_reporting($level); + restore_error_handler(); if (false === $content) { - $error = error_get_last(); - throw new \RuntimeException($error['message']); + throw new \RuntimeException($error); } return $content; diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Expression/Glob.php b/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Expression/Glob.php deleted file mode 100644 index a6984b82e393e9d170204c73c2ad12433ce6e349..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Expression/Glob.php +++ /dev/null @@ -1,157 +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\Component\Finder\Expression; - -/** - * @author Jean-François Simon <contact@jfsimon.fr> - */ -class Glob implements ValueInterface -{ - /** - * @var string - */ - private $pattern; - - /** - * @param string $pattern - */ - public function __construct($pattern) - { - $this->pattern = $pattern; - } - - /** - * {@inheritdoc} - */ - public function render() - { - return $this->pattern; - } - - /** - * {@inheritdoc} - */ - public function renderPattern() - { - return $this->pattern; - } - - /** - * {@inheritdoc} - */ - public function getType() - { - return Expression::TYPE_GLOB; - } - - /** - * {@inheritdoc} - */ - public function isCaseSensitive() - { - return true; - } - - /** - * {@inheritdoc} - */ - public function prepend($expr) - { - $this->pattern = $expr.$this->pattern; - - return $this; - } - - /** - * {@inheritdoc} - */ - public function append($expr) - { - $this->pattern .= $expr; - - return $this; - } - - /** - * Tests if glob is expandable ("*.{a,b}" syntax). - * - * @return bool - */ - public function isExpandable() - { - return false !== strpos($this->pattern, '{') - && false !== strpos($this->pattern, '}'); - } - - /** - * @param bool $strictLeadingDot - * @param bool $strictWildcardSlash - * - * @return Regex - */ - public function toRegex($strictLeadingDot = true, $strictWildcardSlash = true) - { - $firstByte = true; - $escaping = false; - $inCurlies = 0; - $regex = ''; - $sizeGlob = strlen($this->pattern); - for ($i = 0; $i < $sizeGlob; ++$i) { - $car = $this->pattern[$i]; - if ($firstByte) { - if ($strictLeadingDot && '.' !== $car) { - $regex .= '(?=[^\.])'; - } - - $firstByte = false; - } - - if ('/' === $car) { - $firstByte = true; - } - - if ('.' === $car || '(' === $car || ')' === $car || '|' === $car || '+' === $car || '^' === $car || '$' === $car) { - $regex .= "\\$car"; - } elseif ('*' === $car) { - $regex .= $escaping ? '\\*' : ($strictWildcardSlash ? '[^/]*' : '.*'); - } elseif ('?' === $car) { - $regex .= $escaping ? '\\?' : ($strictWildcardSlash ? '[^/]' : '.'); - } elseif ('{' === $car) { - $regex .= $escaping ? '\\{' : '('; - if (!$escaping) { - ++$inCurlies; - } - } elseif ('}' === $car && $inCurlies) { - $regex .= $escaping ? '}' : ')'; - if (!$escaping) { - --$inCurlies; - } - } elseif (',' === $car && $inCurlies) { - $regex .= $escaping ? ',' : '|'; - } elseif ('\\' === $car) { - if ($escaping) { - $regex .= '\\\\'; - $escaping = false; - } else { - $escaping = true; - } - - continue; - } else { - $regex .= $car; - } - $escaping = false; - } - - return new Regex('^'.$regex.'$'); - } -} diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/ExcludeDirectoryFilterIterator.php b/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/ExcludeDirectoryFilterIterator.php deleted file mode 100644 index 1ddde851b9c952f4f7d98496a0382bfe5eaa0c95..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/ExcludeDirectoryFilterIterator.php +++ /dev/null @@ -1,55 +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\Component\Finder\Iterator; - -/** - * ExcludeDirectoryFilterIterator filters out directories. - * - * @author Fabien Potencier <fabien@symfony.com> - */ -class ExcludeDirectoryFilterIterator extends FilterIterator -{ - private $patterns = array(); - - /** - * Constructor. - * - * @param \Iterator $iterator The Iterator to filter - * @param array $directories An array of directories to exclude - */ - public function __construct(\Iterator $iterator, array $directories) - { - foreach ($directories as $directory) { - $this->patterns[] = '#(^|/)'.preg_quote($directory, '#').'(/|$)#'; - } - - parent::__construct($iterator); - } - - /** - * Filters the iterator values. - * - * @return bool true if the value should be kept, false otherwise - */ - public function accept() - { - $path = $this->isDir() ? $this->current()->getRelativePathname() : $this->current()->getRelativePath(); - $path = strtr($path, '\\', '/'); - foreach ($this->patterns as $pattern) { - if (preg_match($pattern, $path)) { - return false; - } - } - - return true; - } -} diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/LICENSE b/civicrm/vendor/symfony/finder/Symfony/Component/Finder/LICENSE deleted file mode 100644 index 43028bc600f26ec5599ab339d83cd70f70dfcdab..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2004-2015 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 -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/finder/Symfony/Component/Finder/README.md b/civicrm/vendor/symfony/finder/Symfony/Component/Finder/README.md deleted file mode 100644 index 4fb1eca007a8c9d4d00c59d07d4136568be58b59..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/README.md +++ /dev/null @@ -1,53 +0,0 @@ -Finder Component -================ - -Finder finds files and directories via an intuitive fluent interface. - -```php -use Symfony\Component\Finder\Finder; - -$finder = new Finder(); - -$iterator = $finder - ->files() - ->name('*.php') - ->depth(0) - ->size('>= 1K') - ->in(__DIR__); - -foreach ($iterator as $file) { - print $file->getRealpath()."\n"; -} -``` - -The iterator returns instances of [Symfony\Component\Finder\SplFileInfo\SplFileInfo][1]. -Besides the build-in methods inherited from [\SplFileInfo][2] (`getPerms()`, `getSize()`, ...), -you can also use `getRelativePath()` and `getRelativePathname()`. Read the -[official documentation][3] for more information. - -But you can also use it to find files stored remotely like in this example where -we are looking for files on Amazon S3: - -```php -$s3 = new \Zend_Service_Amazon_S3($key, $secret); -$s3->registerStreamWrapper("s3"); - -$finder = new Finder(); -$finder->name('photos*')->size('< 100K')->date('since 1 hour ago'); -foreach ($finder->in('s3://bucket-name') as $file) { - print $file->getFilename()."\n"; -} -``` - -Resources ---------- - -You can run the unit tests with the following command: - - $ cd path/to/Symfony/Component/Finder/ - $ composer install - $ phpunit - -[1]: http://api.symfony.com/2.5/Symfony/Component/Finder/SplFileInfo.html -[2]: http://php.net/splfileinfo -[3]: https://symfony.com/doc/current/components/finder.html#usage diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/composer.json b/civicrm/vendor/symfony/finder/composer.json similarity index 71% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/composer.json rename to civicrm/vendor/symfony/finder/composer.json index 7740157215c717bbbe5d036738e6603b4ea93404..53dc98a9b27995398a0bf4fae542790a887e3f81 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/composer.json +++ b/civicrm/vendor/symfony/finder/composer.json @@ -16,19 +16,18 @@ } ], "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" + "php": ">=5.3.9" }, "autoload": { - "psr-0": { "Symfony\\Component\\Finder\\": "" } + "psr-4": { "Symfony\\Component\\Finder\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, - "target-dir": "Symfony/Component/Finder", "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } } } diff --git a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/phpunit.xml.dist b/civicrm/vendor/symfony/finder/phpunit.xml.dist similarity index 92% rename from civicrm/vendor/symfony/finder/Symfony/Component/Finder/phpunit.xml.dist rename to civicrm/vendor/symfony/finder/phpunit.xml.dist index bc38ccaa45d1d0cfde4dc8e27786e8e6cbd3aa21..0e1a8669beabeec3143a0db2aee668bc33dfcf4f 100644 --- a/civicrm/vendor/symfony/finder/Symfony/Component/Finder/phpunit.xml.dist +++ b/civicrm/vendor/symfony/finder/phpunit.xml.dist @@ -5,10 +5,13 @@ backupGlobals="false" colors="true" bootstrap="vendor/autoload.php" + failOnRisky="true" + failOnWarning="true" > <php> <ini name="error_reporting" value="-1" /> </php> + <testsuites> <testsuite name="Symfony Finder Component Test Suite"> <directory>./Tests/</directory> diff --git a/civicrm/vendor/symfony/polyfill-ctype/Ctype.php b/civicrm/vendor/symfony/polyfill-ctype/Ctype.php new file mode 100644 index 0000000000000000000000000000000000000000..58414dc73bd45b931b73a05a040d9ca23a61acf6 --- /dev/null +++ b/civicrm/vendor/symfony/polyfill-ctype/Ctype.php @@ -0,0 +1,227 @@ +<?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\Ctype; + +/** + * Ctype implementation through regex. + * + * @internal + * + * @author Gert de Pagter <BackEndTea@gmail.com> + */ +final class Ctype +{ + /** + * Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise. + * + * @see https://php.net/ctype-alnum + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_alnum($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z0-9]/', $text); + } + + /** + * Returns TRUE if every character in text is a letter, FALSE otherwise. + * + * @see https://php.net/ctype-alpha + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_alpha($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z]/', $text); + } + + /** + * Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise. + * + * @see https://php.net/ctype-cntrl + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_cntrl($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^\x00-\x1f\x7f]/', $text); + } + + /** + * Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise. + * + * @see https://php.net/ctype-digit + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_digit($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^0-9]/', $text); + } + + /** + * Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise. + * + * @see https://php.net/ctype-graph + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_graph($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^!-~]/', $text); + } + + /** + * Returns TRUE if every character in text is a lowercase letter. + * + * @see https://php.net/ctype-lower + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_lower($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^a-z]/', $text); + } + + /** + * Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all. + * + * @see https://php.net/ctype-print + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_print($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^ -~]/', $text); + } + + /** + * Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise. + * + * @see https://php.net/ctype-punct + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_punct($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^!-\/\:-@\[-`\{-~]/', $text); + } + + /** + * Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters. + * + * @see https://php.net/ctype-space + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_space($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^\s]/', $text); + } + + /** + * Returns TRUE if every character in text is an uppercase letter. + * + * @see https://php.net/ctype-upper + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_upper($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Z]/', $text); + } + + /** + * Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise. + * + * @see https://php.net/ctype-xdigit + * + * @param string|int $text + * + * @return bool + */ + public static function ctype_xdigit($text) + { + $text = self::convert_int_to_char_for_ctype($text); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Fa-f0-9]/', $text); + } + + /** + * Converts integers to their char versions according to normal ctype behaviour, if needed. + * + * If an integer between -128 and 255 inclusive is provided, + * it is interpreted as the ASCII value of a single character + * (negative values have 256 added in order to allow characters in the Extended ASCII range). + * Any other integer is interpreted as a string containing the decimal digits of the integer. + * + * @param string|int $int + * + * @return mixed + */ + private static function convert_int_to_char_for_ctype($int) + { + if (!\is_int($int)) { + return $int; + } + + if ($int < -128 || $int > 255) { + return (string) $int; + } + + if ($int < 0) { + $int += 256; + } + + return \chr($int); + } +} diff --git a/civicrm/vendor/symfony/polyfill-ctype/LICENSE b/civicrm/vendor/symfony/polyfill-ctype/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..ad399a798d6d268804204b9e9f431b13f51578e5 --- /dev/null +++ b/civicrm/vendor/symfony/polyfill-ctype/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2018 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 +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-ctype/README.md b/civicrm/vendor/symfony/polyfill-ctype/README.md new file mode 100644 index 0000000000000000000000000000000000000000..8add1ab0096e7e7ca60829b87266d2c5a884ac26 --- /dev/null +++ b/civicrm/vendor/symfony/polyfill-ctype/README.md @@ -0,0 +1,12 @@ +Symfony Polyfill / Ctype +======================== + +This component provides `ctype_*` functions to users who run php versions without the ctype extension. + +More information can be found in the +[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md). + +License +======= + +This library is released under the [MIT license](LICENSE). diff --git a/civicrm/vendor/symfony/polyfill-ctype/bootstrap.php b/civicrm/vendor/symfony/polyfill-ctype/bootstrap.php new file mode 100644 index 0000000000000000000000000000000000000000..14d1d0faa37151ccb47e6067f6d3e96b8207db48 --- /dev/null +++ b/civicrm/vendor/symfony/polyfill-ctype/bootstrap.php @@ -0,0 +1,26 @@ +<?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\Ctype as p; + +if (!function_exists('ctype_alnum')) { + function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); } + function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); } + function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); } + function ctype_digit($text) { return p\Ctype::ctype_digit($text); } + function ctype_graph($text) { return p\Ctype::ctype_graph($text); } + function ctype_lower($text) { return p\Ctype::ctype_lower($text); } + function ctype_print($text) { return p\Ctype::ctype_print($text); } + function ctype_punct($text) { return p\Ctype::ctype_punct($text); } + function ctype_space($text) { return p\Ctype::ctype_space($text); } + function ctype_upper($text) { return p\Ctype::ctype_upper($text); } + function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); } +} diff --git a/civicrm/vendor/symfony/polyfill-ctype/composer.json b/civicrm/vendor/symfony/polyfill-ctype/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..0504dda05bc747d6be6764199550a67ff47488c3 --- /dev/null +++ b/civicrm/vendor/symfony/polyfill-ctype/composer.json @@ -0,0 +1,31 @@ +{ + "name": "symfony/polyfill-ctype", + "type": "library", + "description": "Symfony polyfill for ctype functions", + "keywords": ["polyfill", "compatibility", "portable", "ctype"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=5.3.3" + }, + "autoload": { + "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" }, + "files": [ "bootstrap.php" ] + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + } +} diff --git a/civicrm/vendor/symfony/polyfill-iconv/Iconv.php b/civicrm/vendor/symfony/polyfill-iconv/Iconv.php new file mode 100644 index 0000000000000000000000000000000000000000..92874f506eef85c9f7224c4ed55f51ac88cd0190 --- /dev/null +++ b/civicrm/vendor/symfony/polyfill-iconv/Iconv.php @@ -0,0 +1,741 @@ +<?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\Iconv; + +/** + * iconv implementation in pure PHP, UTF-8 centric. + * + * Implemented: + * - iconv - Convert string to requested character encoding + * - iconv_mime_decode - Decodes a MIME header field + * - iconv_mime_decode_headers - Decodes multiple MIME header fields at once + * - iconv_get_encoding - Retrieve internal configuration variables of iconv extension + * - iconv_set_encoding - Set current setting for character encoding conversion + * - iconv_mime_encode - Composes a MIME header field + * - iconv_strlen - Returns the character count of string + * - iconv_strpos - Finds position of first occurrence of a needle within a haystack + * - iconv_strrpos - Finds the last occurrence of a needle within a haystack + * - iconv_substr - Cut out part of a string + * + * Charsets available for conversion are defined by files + * in the charset/ directory and by Iconv::$alias below. + * You're welcome to send back any addition you make. + * + * @author Nicolas Grekas <p@tchwork.com> + * + * @internal + */ +final class Iconv +{ + const ERROR_ILLEGAL_CHARACTER = 'iconv(): Detected an illegal character in input string'; + const ERROR_WRONG_CHARSET = 'iconv(): Wrong charset, conversion from `%s\' to `%s\' is not allowed'; + + public static $inputEncoding = 'utf-8'; + public static $outputEncoding = 'utf-8'; + public static $internalEncoding = 'utf-8'; + + private static $alias = array( + 'utf8' => 'utf-8', + 'ascii' => 'us-ascii', + 'tis-620' => 'iso-8859-11', + 'cp1250' => 'windows-1250', + 'cp1251' => 'windows-1251', + 'cp1252' => 'windows-1252', + 'cp1253' => 'windows-1253', + 'cp1254' => 'windows-1254', + 'cp1255' => 'windows-1255', + 'cp1256' => 'windows-1256', + 'cp1257' => 'windows-1257', + 'cp1258' => 'windows-1258', + 'shift-jis' => 'cp932', + 'shift_jis' => 'cp932', + 'latin1' => 'iso-8859-1', + 'latin2' => 'iso-8859-2', + 'latin3' => 'iso-8859-3', + 'latin4' => 'iso-8859-4', + 'latin5' => 'iso-8859-9', + 'latin6' => 'iso-8859-10', + 'latin7' => 'iso-8859-13', + 'latin8' => 'iso-8859-14', + 'latin9' => 'iso-8859-15', + 'latin10' => 'iso-8859-16', + 'iso8859-1' => 'iso-8859-1', + 'iso8859-2' => 'iso-8859-2', + 'iso8859-3' => 'iso-8859-3', + 'iso8859-4' => 'iso-8859-4', + 'iso8859-5' => 'iso-8859-5', + 'iso8859-6' => 'iso-8859-6', + 'iso8859-7' => 'iso-8859-7', + 'iso8859-8' => 'iso-8859-8', + 'iso8859-9' => 'iso-8859-9', + 'iso8859-10' => 'iso-8859-10', + 'iso8859-11' => 'iso-8859-11', + 'iso8859-12' => 'iso-8859-12', + 'iso8859-13' => 'iso-8859-13', + 'iso8859-14' => 'iso-8859-14', + 'iso8859-15' => 'iso-8859-15', + 'iso8859-16' => 'iso-8859-16', + 'iso_8859-1' => 'iso-8859-1', + 'iso_8859-2' => 'iso-8859-2', + 'iso_8859-3' => 'iso-8859-3', + 'iso_8859-4' => 'iso-8859-4', + 'iso_8859-5' => 'iso-8859-5', + 'iso_8859-6' => 'iso-8859-6', + 'iso_8859-7' => 'iso-8859-7', + 'iso_8859-8' => 'iso-8859-8', + 'iso_8859-9' => 'iso-8859-9', + 'iso_8859-10' => 'iso-8859-10', + 'iso_8859-11' => 'iso-8859-11', + 'iso_8859-12' => 'iso-8859-12', + 'iso_8859-13' => 'iso-8859-13', + 'iso_8859-14' => 'iso-8859-14', + 'iso_8859-15' => 'iso-8859-15', + 'iso_8859-16' => 'iso-8859-16', + 'iso88591' => 'iso-8859-1', + 'iso88592' => 'iso-8859-2', + 'iso88593' => 'iso-8859-3', + 'iso88594' => 'iso-8859-4', + 'iso88595' => 'iso-8859-5', + 'iso88596' => 'iso-8859-6', + 'iso88597' => 'iso-8859-7', + 'iso88598' => 'iso-8859-8', + 'iso88599' => 'iso-8859-9', + 'iso885910' => 'iso-8859-10', + 'iso885911' => 'iso-8859-11', + 'iso885912' => 'iso-8859-12', + 'iso885913' => 'iso-8859-13', + 'iso885914' => 'iso-8859-14', + 'iso885915' => 'iso-8859-15', + 'iso885916' => 'iso-8859-16', + ); + private static $translitMap = array(); + private static $convertMap = array(); + private static $errorHandler; + private static $lastError; + + private static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4); + private static $isValidUtf8; + + public static function iconv($inCharset, $outCharset, $str) + { + $str = (string) $str; + if ('' === $str) { + return ''; + } + + // Prepare for //IGNORE and //TRANSLIT + + $translit = $ignore = ''; + + $outCharset = strtolower($outCharset); + $inCharset = strtolower($inCharset); + + if ('' === $outCharset) { + $outCharset = 'iso-8859-1'; + } + if ('' === $inCharset) { + $inCharset = 'iso-8859-1'; + } + + do { + $loop = false; + + if ('//translit' === substr($outCharset, -10)) { + $loop = $translit = true; + $outCharset = substr($outCharset, 0, -10); + } + + if ('//ignore' === substr($outCharset, -8)) { + $loop = $ignore = true; + $outCharset = substr($outCharset, 0, -8); + } + } while ($loop); + + do { + $loop = false; + + if ('//translit' === substr($inCharset, -10)) { + $loop = true; + $inCharset = substr($inCharset, 0, -10); + } + + if ('//ignore' === substr($inCharset, -8)) { + $loop = true; + $inCharset = substr($inCharset, 0, -8); + } + } while ($loop); + + if (isset(self::$alias[ $inCharset])) { + $inCharset = self::$alias[ $inCharset]; + } + if (isset(self::$alias[$outCharset])) { + $outCharset = self::$alias[$outCharset]; + } + + // Load charset maps + + if (('utf-8' !== $inCharset && !self::loadMap('from.', $inCharset, $inMap)) + || ('utf-8' !== $outCharset && !self::loadMap('to.', $outCharset, $outMap))) { + trigger_error(sprintf(self::ERROR_WRONG_CHARSET, $inCharset, $outCharset)); + + return false; + } + + if ('utf-8' !== $inCharset) { + // Convert input to UTF-8 + $result = ''; + if (self::mapToUtf8($result, $inMap, $str, $ignore)) { + $str = $result; + } else { + $str = false; + } + self::$isValidUtf8 = true; + } else { + self::$isValidUtf8 = preg_match('//u', $str); + + if (!self::$isValidUtf8 && !$ignore) { + trigger_error(self::ERROR_ILLEGAL_CHARACTER); + + return false; + } + + if ('utf-8' === $outCharset) { + // UTF-8 validation + $str = self::utf8ToUtf8($str, $ignore); + } + } + + if ('utf-8' !== $outCharset && false !== $str) { + // Convert output to UTF-8 + $result = ''; + if (self::mapFromUtf8($result, $outMap, $str, $ignore, $translit)) { + return $result; + } + + return false; + } + + return $str; + } + + public static function iconv_mime_decode_headers($str, $mode = 0, $charset = null) + { + if (null === $charset) { + $charset = self::$internalEncoding; + } + + if (false !== strpos($str, "\r")) { + $str = strtr(str_replace("\r\n", "\n", $str), "\r", "\n"); + } + $str = explode("\n\n", $str, 2); + + $headers = array(); + + $str = preg_split('/\n(?![ \t])/', $str[0]); + foreach ($str as $str) { + $str = self::iconv_mime_decode($str, $mode, $charset); + if (false === $str) { + return false; + } + $str = explode(':', $str, 2); + + if (2 === \count($str)) { + if (isset($headers[$str[0]])) { + if (!\is_array($headers[$str[0]])) { + $headers[$str[0]] = array($headers[$str[0]]); + } + $headers[$str[0]][] = ltrim($str[1]); + } else { + $headers[$str[0]] = ltrim($str[1]); + } + } + } + + return $headers; + } + + public static function iconv_mime_decode($str, $mode = 0, $charset = null) + { + if (null === $charset) { + $charset = self::$internalEncoding; + } + if (ICONV_MIME_DECODE_CONTINUE_ON_ERROR & $mode) { + $charset .= '//IGNORE'; + } + + if (false !== strpos($str, "\r")) { + $str = strtr(str_replace("\r\n", "\n", $str), "\r", "\n"); + } + $str = preg_split('/\n(?![ \t])/', rtrim($str), 2); + $str = preg_replace('/[ \t]*\n[ \t]+/', ' ', rtrim($str[0])); + $str = preg_split('/=\?([^?]+)\?([bqBQ])\?(.*?)\?=/', $str, -1, PREG_SPLIT_DELIM_CAPTURE); + + $result = self::iconv('utf-8', $charset, $str[0]); + if (false === $result) { + return false; + } + + $i = 1; + $len = \count($str); + + while ($i < $len) { + $c = strtolower($str[$i]); + if ((ICONV_MIME_DECODE_CONTINUE_ON_ERROR & $mode) + && 'utf-8' !== $c + && !isset(self::$alias[$c]) + && !self::loadMap('from.', $c, $d)) { + $d = false; + } elseif ('B' === strtoupper($str[$i + 1])) { + $d = base64_decode($str[$i + 2]); + } else { + $d = rawurldecode(strtr(str_replace('%', '%25', $str[$i + 2]), '=_', '% ')); + } + + if (false !== $d) { + if ('' !== $d) { + if ('' === $d = self::iconv($c, $charset, $d)) { + $str[$i + 3] = substr($str[$i + 3], 1); + } else { + $result .= $d; + } + } + $d = self::iconv('utf-8', $charset, $str[$i + 3]); + if ('' !== trim($d)) { + $result .= $d; + } + } elseif (ICONV_MIME_DECODE_CONTINUE_ON_ERROR & $mode) { + $result .= "=?{$str[$i]}?{$str[$i + 1]}?{$str[$i + 2]}?={$str[$i + 3]}"; + } else { + $result = false; + break; + } + + $i += 4; + } + + return $result; + } + + public static function iconv_get_encoding($type = 'all') + { + switch ($type) { + case 'input_encoding': return self::$inputEncoding; + case 'output_encoding': return self::$outputEncoding; + case 'internal_encoding': return self::$internalEncoding; + } + + return array( + 'input_encoding' => self::$inputEncoding, + 'output_encoding' => self::$outputEncoding, + 'internal_encoding' => self::$internalEncoding, + ); + } + + public static function iconv_set_encoding($type, $charset) + { + switch ($type) { + case 'input_encoding': self::$inputEncoding = $charset; break; + case 'output_encoding': self::$outputEncoding = $charset; break; + case 'internal_encoding': self::$internalEncoding = $charset; break; + + default: return false; + } + + return true; + } + + public static function iconv_mime_encode($fieldName, $fieldValue, $pref = null) + { + if (!\is_array($pref)) { + $pref = array(); + } + + $pref += array( + 'scheme' => 'B', + 'input-charset' => self::$internalEncoding, + 'output-charset' => self::$internalEncoding, + 'line-length' => 76, + 'line-break-chars' => "\r\n", + ); + + if (preg_match('/[\x80-\xFF]/', $fieldName)) { + $fieldName = ''; + } + + $scheme = strtoupper(substr($pref['scheme'], 0, 1)); + $in = strtolower($pref['input-charset']); + $out = strtolower($pref['output-charset']); + + if ('utf-8' !== $in && false === $fieldValue = self::iconv($in, 'utf-8', $fieldValue)) { + return false; + } + + preg_match_all('/./us', $fieldValue, $chars); + + $chars = isset($chars[0]) ? $chars[0] : array(); + + $lineBreak = (int) $pref['line-length']; + $lineStart = "=?{$pref['output-charset']}?{$scheme}?"; + $lineLength = \strlen($fieldName) + 2 + \strlen($lineStart) + 2; + $lineOffset = \strlen($lineStart) + 3; + $lineData = ''; + + $fieldValue = array(); + + $Q = 'Q' === $scheme; + + foreach ($chars as $c) { + if ('utf-8' !== $out && false === $c = self::iconv('utf-8', $out, $c)) { + return false; + } + + $o = $Q + ? $c = preg_replace_callback( + '/[=_\?\x00-\x1F\x80-\xFF]/', + array(__CLASS__, 'qpByteCallback'), + $c + ) + : base64_encode($lineData.$c); + + if (isset($o[$lineBreak - $lineLength])) { + if (!$Q) { + $lineData = base64_encode($lineData); + } + $fieldValue[] = $lineStart.$lineData.'?='; + $lineLength = $lineOffset; + $lineData = ''; + } + + $lineData .= $c; + $Q && $lineLength += \strlen($c); + } + + if ('' !== $lineData) { + if (!$Q) { + $lineData = base64_encode($lineData); + } + $fieldValue[] = $lineStart.$lineData.'?='; + } + + return $fieldName.': '.implode($pref['line-break-chars'].' ', $fieldValue); + } + + public static function iconv_strlen($s, $encoding = null) + { + static $hasXml = null; + if (null === $hasXml) { + $hasXml = extension_loaded('xml'); + } + + if ($hasXml) { + return self::strlen1($s, $encoding); + } + + return self::strlen2($s, $encoding); + } + + public static function strlen1($s, $encoding = null) + { + if (null === $encoding) { + $encoding = self::$internalEncoding; + } + if (0 !== stripos($encoding, 'utf-8') && false === $s = self::iconv($encoding, 'utf-8', $s)) { + return false; + } + + return \strlen(utf8_decode($s)); + } + + public static function strlen2($s, $encoding = null) + { + if (null === $encoding) { + $encoding = self::$internalEncoding; + } + if (0 !== stripos($encoding, 'utf-8') && false === $s = self::iconv($encoding, 'utf-8', $s)) { + return false; + } + + $ulenMask = self::$ulenMask; + + $i = 0; + $j = 0; + $len = \strlen($s); + + while ($i < $len) { + $u = $s[$i] & "\xF0"; + $i += isset($ulenMask[$u]) ? $ulenMask[$u] : 1; + ++$j; + } + + return $j; + } + + public static function iconv_strpos($haystack, $needle, $offset = 0, $encoding = null) + { + if (null === $encoding) { + $encoding = self::$internalEncoding; + } + + if (0 !== stripos($encoding, 'utf-8')) { + if (false === $haystack = self::iconv($encoding, 'utf-8', $haystack)) { + return false; + } + if (false === $needle = self::iconv($encoding, 'utf-8', $needle)) { + return false; + } + } + + if ($offset = (int) $offset) { + $haystack = self::iconv_substr($haystack, $offset, 2147483647, 'utf-8'); + } + $pos = strpos($haystack, $needle); + + return false === $pos ? false : ($offset + ($pos ? self::iconv_strlen(substr($haystack, 0, $pos), 'utf-8') : 0)); + } + + public static function iconv_strrpos($haystack, $needle, $encoding = null) + { + if (null === $encoding) { + $encoding = self::$internalEncoding; + } + + if (0 !== stripos($encoding, 'utf-8')) { + if (false === $haystack = self::iconv($encoding, 'utf-8', $haystack)) { + return false; + } + if (false === $needle = self::iconv($encoding, 'utf-8', $needle)) { + return false; + } + } + + $pos = isset($needle[0]) ? strrpos($haystack, $needle) : false; + + return false === $pos ? false : self::iconv_strlen($pos ? substr($haystack, 0, $pos) : $haystack, 'utf-8'); + } + + public static function iconv_substr($s, $start, $length = 2147483647, $encoding = null) + { + if (null === $encoding) { + $encoding = self::$internalEncoding; + } + if (0 !== stripos($encoding, 'utf-8')) { + $encoding = null; + } elseif (false === $s = self::iconv($encoding, 'utf-8', $s)) { + return false; + } + + $s = (string) $s; + $slen = self::iconv_strlen($s, 'utf-8'); + $start = (int) $start; + + if (0 > $start) { + $start += $slen; + } + if (0 > $start) { + return false; + } + if ($start >= $slen) { + return false; + } + + $rx = $slen - $start; + + if (0 > $length) { + $length += $rx; + } + if (0 === $length) { + return ''; + } + if (0 > $length) { + return false; + } + + if ($length > $rx) { + $length = $rx; + } + + $rx = '/^'.($start ? self::pregOffset($start) : '').'('.self::pregOffset($length).')/u'; + + $s = preg_match($rx, $s, $s) ? $s[1] : ''; + + if (null === $encoding) { + return $s; + } + + return self::iconv('utf-8', $encoding, $s); + } + + private static function loadMap($type, $charset, &$map) + { + if (!isset(self::$convertMap[$type.$charset])) { + if (false === $map = self::getData($type.$charset)) { + if ('to.' === $type && self::loadMap('from.', $charset, $map)) { + $map = array_flip($map); + } else { + return false; + } + } + + self::$convertMap[$type.$charset] = $map; + } else { + $map = self::$convertMap[$type.$charset]; + } + + return true; + } + + private static function utf8ToUtf8($str, $ignore) + { + $ulenMask = self::$ulenMask; + $valid = self::$isValidUtf8; + + $u = $str; + $i = $j = 0; + $len = \strlen($str); + + while ($i < $len) { + if ($str[$i] < "\x80") { + $u[$j++] = $str[$i++]; + } else { + $ulen = $str[$i] & "\xF0"; + $ulen = isset($ulenMask[$ulen]) ? $ulenMask[$ulen] : 1; + $uchr = substr($str, $i, $ulen); + + if (1 === $ulen || !($valid || preg_match('/^.$/us', $uchr))) { + if ($ignore) { + ++$i; + continue; + } + + trigger_error(self::ERROR_ILLEGAL_CHARACTER); + + return false; + } else { + $i += $ulen; + } + + $u[$j++] = $uchr[0]; + + isset($uchr[1]) && 0 !== ($u[$j++] = $uchr[1]) + && isset($uchr[2]) && 0 !== ($u[$j++] = $uchr[2]) + && isset($uchr[3]) && 0 !== ($u[$j++] = $uchr[3]); + } + } + + return substr($u, 0, $j); + } + + private static function mapToUtf8(&$result, array $map, $str, $ignore) + { + $len = \strlen($str); + for ($i = 0; $i < $len; ++$i) { + if (isset($str[$i + 1], $map[$str[$i].$str[$i + 1]])) { + $result .= $map[$str[$i].$str[++$i]]; + } elseif (isset($map[$str[$i]])) { + $result .= $map[$str[$i]]; + } elseif (!$ignore) { + trigger_error(self::ERROR_ILLEGAL_CHARACTER); + + return false; + } + } + + return true; + } + + private static function mapFromUtf8(&$result, array $map, $str, $ignore, $translit) + { + $ulenMask = self::$ulenMask; + $valid = self::$isValidUtf8; + + if ($translit && !self::$translitMap) { + self::$translitMap = self::getData('translit'); + } + + $i = 0; + $len = \strlen($str); + + while ($i < $len) { + if ($str[$i] < "\x80") { + $uchr = $str[$i++]; + } else { + $ulen = $str[$i] & "\xF0"; + $ulen = isset($ulenMask[$ulen]) ? $ulenMask[$ulen] : 1; + $uchr = substr($str, $i, $ulen); + + if ($ignore && (1 === $ulen || !($valid || preg_match('/^.$/us', $uchr)))) { + ++$i; + continue; + } else { + $i += $ulen; + } + } + + if (isset($map[$uchr])) { + $result .= $map[$uchr]; + } elseif ($translit) { + if (isset(self::$translitMap[$uchr])) { + $uchr = self::$translitMap[$uchr]; + } elseif ($uchr >= "\xC3\x80") { + $uchr = \Normalizer::normalize($uchr, \Normalizer::NFD); + + if ($uchr[0] < "\x80") { + $uchr = $uchr[0]; + } elseif ($ignore) { + continue; + } else { + return false; + } + } elseif ($ignore) { + continue; + } else { + return false; + } + + $str = $uchr.substr($str, $i); + $len = \strlen($str); + $i = 0; + } elseif (!$ignore) { + return false; + } + } + + return true; + } + + private static function qpByteCallback(array $m) + { + return '='.strtoupper(dechex(\ord($m[0]))); + } + + private static function pregOffset($offset) + { + $rx = array(); + $offset = (int) $offset; + + while ($offset > 65535) { + $rx[] = '.{65535}'; + $offset -= 65535; + } + + return implode('', $rx).'.{'.$offset.'}'; + } + + private static function getData($file) + { + if (file_exists($file = __DIR__.'/Resources/charset/'.$file.'.php')) { + return require $file; + } + + return false; + } +} diff --git a/civicrm/vendor/symfony/polyfill-iconv/LICENSE b/civicrm/vendor/symfony/polyfill-iconv/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..24fa32c2e9b27aef3eac523f0042b8ab9ba81944 --- /dev/null +++ b/civicrm/vendor/symfony/polyfill-iconv/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015-2018 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 +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-iconv/README.md b/civicrm/vendor/symfony/polyfill-iconv/README.md new file mode 100644 index 0000000000000000000000000000000000000000..2421831c6b80cea0ea85e27b77cc853fbb603c09 --- /dev/null +++ b/civicrm/vendor/symfony/polyfill-iconv/README.md @@ -0,0 +1,14 @@ +Symfony Polyfill / Iconv +======================== + +This component provides a native PHP implementation of the +[php.net/iconv](http://php.net/iconv) functions +(short of [`ob_iconv_handler`](http://php.net/manual/en/function.ob-iconv-handler.php)). + +More information can be found in the +[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md). + +License +======= + +This library is released under the [MIT license](LICENSE). diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.big5.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.big5.php new file mode 100644 index 0000000000000000000000000000000000000000..b11985494d7e8c1f0f79b85be567ae696a764900 --- /dev/null +++ b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.big5.php @@ -0,0 +1,13719 @@ +<?php + +static $data = array ( + '¡@' => ' ', + '¡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' => '┌', + '¢{' => 'â”', + '¢|' => 'â””', + '¢}' => '┘', + '¢~' => 'â•', + '¢¡' => 'â•®', + '¢¢' => 'â•°', + '¢£' => '╯', + '¢¤' => 'â•', + '¢¥' => 'â•ž', + '¢¦' => '╪', + '¢§' => 'â•¡', + '¢¨' => 'â—¢', + '¢©' => 'â—£', + '¢ª' => 'â—¥', + '¢«' => 'â—¤', + '¢¬' => '╱', + '¢' => '╲', + '¢®' => '╳', + '¢¯' => 'ï¼', + '¢°' => '1', + '¢±' => 'ï¼’', + '¢²' => '3', + '¢³' => 'ï¼”', + '¢´' => '5', + '¢µ' => 'ï¼–', + '¢¶' => 'ï¼—', + '¢·' => '8', + '¢¸' => 'ï¼™', + '¢¹' => 'â… ', + '¢º' => 'â…¡', + '¢»' => 'â…¢', + '¢¼' => 'â…£', + '¢½' => 'â…¤', + '¢¾' => 'â…¥', + '¢¿' => 'â…¦', + '¢À' => 'â…§', + '¢Á' => 'â…¨', + '¢Â' => 'â…©', + '¢Ã' => '〡', + '¢Ä' => '〢', + '¢Å' => '〣', + '¢Æ' => '〤', + '¢Ç' => '〥', + '¢È' => '〦', + '¢É' => '〧', + '¢Ê' => '〨', + '¢Ë' => '〩', + '¢Ì' => '�', + '¢Í' => 'å„', + '¢Î' => '�', + '¢Ï' => 'A', + '¢Ð' => 'ï¼¢', + '¢Ñ' => 'ï¼£', + '¢Ò' => 'D', + '¢Ó' => 'ï¼¥', + '¢Ô' => 'F', + '¢Õ' => 'G', + '¢Ö' => 'H', + '¢×' => 'I', + '¢Ø' => 'J', + '¢Ù' => 'K', + '¢Ú' => 'L', + '¢Û' => 'ï¼', + '¢Ü' => 'ï¼®', + '¢Ý' => 'O', + '¢Þ' => 'ï¼°', + '¢ß' => 'ï¼±', + '¢à' => 'ï¼²', + '¢á' => 'ï¼³', + '¢â' => 'ï¼´', + '¢ã' => 'ï¼µ', + '¢ä' => 'V', + '¢å' => 'ï¼·', + '¢æ' => 'X', + '¢ç' => 'ï¼¹', + '¢è' => 'Z', + '¢é' => 'ï½', + '¢ê' => 'b', + '¢ë' => 'c', + '¢ì' => 'd', + '¢í' => 'ï½…', + '¢î' => 'f', + '¢ï' => 'g', + '¢ð' => 'h', + '¢ñ' => 'i', + '¢ò' => 'j', + '¢ó' => 'k', + '¢ô' => 'l', + '¢õ' => 'ï½', + '¢ö' => 'n', + '¢÷' => 'ï½', + '¢ø' => 'ï½', + '¢ù' => 'q', + '¢ú' => 'ï½’', + '¢û' => 's', + '¢ü' => 'ï½”', + '¢ý' => 'u', + '¢þ' => 'ï½–', + '£@' => 'ï½—', + '£A' => 'x', + '£B' => 'ï½™', + '£C' => 'z', + '£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' => 'å¦', + '©[' => 'å¤', + '©\\' => 'å¼', + '©]' => '夜', + '©^' => '奉', + '©_' => '奇', + '©`' => '奈', + '©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' => 'ç §', + '¯{' => 'ç ¸', + '¯|' => 'ç ', + '¯}' => 'ç ´', + '¯~' => 'ç ·', + '¯¡' => 'ç ¥', + '¯¢' => 'ç ', + '¯£' => 'ç ', + '¯¤' => 'ç Ÿ', + '¯¥' => 'ç ²', + '¯¦' => '祕', + '¯§' => 'ç¥', + '¯¨' => 'ç¥ ', + '¯©' => '祟', + '¯ª' => '祖', + '¯«' => '神', + '¯¬' => 'ç¥', + '¯' => '祗', + '¯®' => '祚', + '¯¯' => '秤', + '¯°' => '秣', + '¯±' => '秧', + '¯²' => '租', + '¯³' => '秦', + '¯´' => '秩', + '¯µ' => '秘', + '¯¶' => '窄', + '¯·' => '窈', + '¯¸' => 'ç«™', + '¯¹' => '笆', + '¯º' => '笑', + '¯»' => '粉', + '¯¼' => 'ç´¡', + '¯½' => 'ç´—', + '¯¾' => 'ç´‹', + '¯¿' => 'ç´Š', + '¯À' => 'ç´ ', + '¯Á' => 'ç´¢', + '¯Â' => 'ç´”', + '¯Ã' => 'ç´', + '¯Ä' => 'ç´•', + '¯Å' => 'ç´š', + '¯Æ' => 'ç´œ', + '¯Ç' => 'ç´', + '¯È' => 'ç´™', + '¯É' => 'ç´›', + '¯Ê' => '缺', + '¯Ë' => '罟', + '¯Ì' => 'ç¾”', + '¯Í' => 'ç¿…', + '¯Î' => 'ç¿', + '¯Ï' => '耆', + '¯Ð' => '耘', + '¯Ñ' => '耕', + '¯Ò' => '耙', + '¯Ó' => '耗', + '¯Ô' => '耽', + '¯Õ' => '耿', + '¯Ö' => '胱', + '¯×' => 'è„‚', + '¯Ø' => '胰', + '¯Ù' => 'è„…', + '¯Ú' => 'èƒ', + '¯Û' => '胴', + '¯Ü' => '脆', + '¯Ý' => '胸', + '¯Þ' => '胳', + '¯ß' => '脈', + '¯à' => '能', + '¯á' => 'è„Š', + '¯â' => '胼', + '¯ã' => '胯', + '¯ä' => 'è‡', + '¯å' => '臬', + '¯æ' => '舀', + '¯ç' => 'èˆ', + '¯è' => '航', + '¯é' => '舫', + '¯ê' => '舨', + '¯ë' => '般', + '¯ì' => '芻', + '¯í' => '茫', + '¯î' => 'è’', + '¯ï' => 'è”', + '¯ð' => 'èŠ', + '¯ñ' => '茸', + '¯ò' => 'è', + '¯ó' => 'è‰', + '¯ô' => '茵', + '¯õ' => '茴', + '¯ö' => 'è', + '¯÷' => '茲', + '¯ø' => '茹', + '¯ù' => '茶', + '¯ú' => '茗', + '¯û' => 'è€', + '¯ü' => '茱', + '¯ý' => '茨', + '¯þ' => 'èƒ', + '°@' => 'è™”', + '°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' => 'è·', + '¶[' => 'è·‹', + '¶\\' => 'è·š', + '¶]' => 'è·‘', + '¶^' => 'è·Œ', + '¶_' => 'è·›', + '¶`' => 'è·†', + '¶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' => 'æ…§', + '¼{' => 'æ…®', + '¼|' => 'æ…', + '¼}' => 'æ…•', + '¼~' => '憂', + '¼¡' => 'æ…¼', + '¼¢' => 'æ…°', + '¼£' => 'æ…«', + '¼¤' => 'æ…¾', + '¼¥' => '憧', + '¼¦' => 'æ†', + '¼§' => '憫', + '¼¨' => '憎', + '¼©' => '憬', + '¼ª' => '憚', + '¼«' => '憤', + '¼¬' => '憔', + '¼' => '憮', + '¼®' => '戮', + '¼¯' => 'æ‘©', + '¼°' => '摯', + '¼±' => '摹', + '¼²' => 'æ’ž', + '¼³' => 'æ’²', + '¼´' => 'æ’ˆ', + '¼µ' => 'æ’', + '¼¶' => 'æ’°', + '¼·' => 'æ’¥', + '¼¸' => 'æ’“', + '¼¹' => 'æ’•', + '¼º' => 'æ’©', + '¼»' => 'æ’’', + '¼¼' => 'æ’®', + '¼½' => 'æ’', + '¼¾' => 'æ’«', + '¼¿' => 'æ’š', + '¼À' => 'æ’¬', + '¼Á' => 'æ’™', + '¼Â' => 'æ’¢', + '¼Ã' => 'æ’³', + '¼Ä' => '敵', + '¼Å' => 'æ•·', + '¼Æ' => '數', + '¼Ç' => 'æš®', + '¼È' => 'æš«', + '¼É' => 'æš´', + '¼Ê' => 'æš±', + '¼Ë' => '樣', + '¼Ì' => '樟', + '¼Í' => '槨', + '¼Î' => 'æ¨', + '¼Ï' => '樞', + '¼Ð' => '標', + '¼Ñ' => '槽', + '¼Ò' => '模', + '¼Ó' => '樓', + '¼Ô' => '樊', + '¼Õ' => '槳', + '¼Ö' => '樂', + '¼×' => '樅', + '¼Ø' => 'æ§', + '¼Ù' => '樑', + '¼Ú' => 'æ', + '¼Û' => 'æŽ', + '¼Ü' => '殤', + '¼Ý' => '毅', + '¼Þ' => '毆', + '¼ß' => '漿', + '¼à' => 'æ½¼', + '¼á' => '澄', + '¼â' => '潑', + '¼ã' => '潦', + '¼ä' => 'æ½”', + '¼å' => '澆', + '¼æ' => 'æ½', + '¼ç' => 'æ½›', + '¼è' => '潸', + '¼é' => 'æ½®', + '¼ê' => '澎', + '¼ë' => '潺', + '¼ì' => 'æ½°', + '¼í' => '潤', + '¼î' => 'æ¾—', + '¼ï' => '潘', + '¼ð' => '滕', + '¼ñ' => '潯', + '¼ò' => 'æ½ ', + '¼ó' => '潟', + '¼ô' => '熟', + '¼õ' => '熬', + '¼ö' => '熱', + '¼÷' => '熨', + '¼ø' => '牖', + '¼ù' => '犛', + '¼ú' => 'çŽ', + '¼û' => 'ç—', + '¼ü' => 'ç‘©', + '¼ý' => 'ç’‹', + '¼þ' => 'ç’ƒ', + '½@' => '瑾', + '½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' => 'éµ', + 'Ã[' => 'éµ ', + 'Ã\\' => 'é» ', + 'Ã]' => '鼕', + 'Ã^' => '鼬', + 'Ã_' => '儳', + 'Ã`' => '嚥', + 'Ã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' => '糯', + 'Ä{' => 'ç³°', + 'Ä|' => 'è¾®', + 'Ä}' => 'ç¹½', + 'Ä~' => 'ç¹¼', + 'Ä¡' => '纂', + 'Ä¢' => '罌', + 'Ä£' => '耀', + 'Ĥ' => '臚', + 'Ä¥' => '艦', + 'Ħ' => 'è—»', + 'ħ' => 'è—¹', + 'Ĩ' => '蘑', + 'Ä©' => 'è—º', + 'Ī' => '蘆', + 'Ä«' => '蘋', + 'Ĭ' => '蘇', + 'Ä' => '蘊', + 'Ä®' => 'è ”', + 'į' => 'è •', + 'Ä°' => '襤', + 'ı' => '覺', + 'IJ' => '觸', + 'ij' => 'è°', + 'Ä´' => 'è¬', + 'ĵ' => 'è¦', + 'Ķ' => 'è¯', + 'Ä·' => 'èŸ', + 'ĸ' => 'è«', + 'Ĺ' => 'è´', + 'ĺ' => 'è´', + 'Ä»' => '躉', + 'ļ' => 'èº', + 'Ľ' => '躅', + 'ľ' => '躂', + 'Ä¿' => '醴', + 'ÄÀ' => '釋', + 'ÄÁ' => 'é˜', + 'ÄÂ' => 'éƒ', + 'ÄÃ' => 'é½', + 'ÄÄ' => 'é—¡', + 'ÄÅ' => '霰', + 'ÄÆ' => '飄', + 'ÄÇ' => '饒', + 'ÄÈ' => '饑', + 'ÄÉ' => '馨', + 'ÄÊ' => '騫', + 'ÄË' => '騰', + 'ÄÌ' => '騷', + 'ÄÍ' => '騵', + 'ÄÎ' => 'é°“', + 'ÄÏ' => 'é°', + 'ÄÐ' => 'é¹¹', + 'ÄÑ' => '麵', + 'ÄÒ' => '黨', + 'ÄÓ' => '鼯', + 'ÄÔ' => '齟', + 'ÄÕ' => 'é½£', + 'ÄÖ' => '齡', + 'Ä×' => 'å„·', + 'ÄØ' => '儸', + 'ÄÙ' => 'å›', + 'ÄÚ' => '囀', + 'ÄÛ' => '囂', + 'ÄÜ' => '夔', + 'ÄÝ' => '屬', + 'ÄÞ' => 'å·', + 'Äß' => '懼', + 'Äà' => '懾', + 'Äá' => 'æ”', + 'Äâ' => '攜', + 'Äã' => 'æ–•', + 'Ää' => '曩', + 'Äå' => 'æ«»', + 'Äæ' => '欄', + 'Äç' => '櫺', + 'Äè' => '殲', + 'Äé' => 'çŒ', + 'Äê' => '爛', + 'Äë' => '犧', + 'Äì' => 'ç“–', + 'Äí' => 'ç“”', + 'Äî' => '癩', + 'Äï' => '矓', + 'Äð' => 'ç±', + 'Äñ' => 'çº', + 'Äò' => '續', + 'Äó' => 'ç¾¼', + 'Äô' => '蘗', + 'Äõ' => 'è˜', + 'Äö' => '蘚', + 'Ä÷' => 'è £', + 'Äø' => 'è ¢', + 'Äù' => 'è ¡', + 'Äú' => 'è Ÿ', + 'Äû' => '襪', + 'Äü' => '襬', + 'Äý' => '覽', + 'Äþ' => 'è´', + 'Å@' => 'è·', + 'Å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' => 'モ', + 'Ç{' => 'ャ', + 'Ç|' => 'ヤ', + 'Ç}' => 'ュ', + 'Ç~' => 'ユ', + 'Ç¡' => 'ョ', + 'Ç¢' => 'ヨ', + 'Ç£' => 'ラ', + 'Ǥ' => 'リ', + 'Ç¥' => 'ル', + 'Ǧ' => 'レ', + 'ǧ' => 'ãƒ', + 'Ǩ' => 'ヮ', + 'Ç©' => 'ワ', + 'Ǫ' => 'ヰ', + 'Ç«' => 'ヱ', + 'Ǭ' => 'ヲ', + 'Ç' => 'ン', + 'Ç®' => 'ヴ', + 'ǯ' => 'ヵ', + 'Ç°' => 'ヶ', + 'DZ' => 'Д', + 'Dz' => 'Е', + 'dz' => 'Ð', + 'Ç´' => 'Ж', + 'ǵ' => 'З', + 'Ƕ' => 'И', + 'Ç·' => 'Й', + 'Ǹ' => 'К', + 'ǹ' => 'Л', + 'Ǻ' => 'Ðœ', + 'Ç»' => 'У', + 'Ǽ' => 'Ф', + 'ǽ' => 'Ð¥', + 'Ǿ' => 'Ц', + 'Ç¿' => 'Ч', + 'ÇÀ' => 'Ш', + 'ÇÁ' => 'Щ', + 'ÇÂ' => 'Ъ', + 'ÇÃ' => 'Ы', + 'ÇÄ' => 'Ь', + 'ÇÅ' => 'Ð', + 'ÇÆ' => 'Ю', + 'ÇÇ' => 'Я', + 'ÇÈ' => 'а', + 'ÇÉ' => 'б', + 'ÇÊ' => 'в', + 'ÇË' => 'г', + 'ÇÌ' => 'д', + 'ÇÍ' => 'е', + 'ÇÎ' => 'Ñ‘', + 'ÇÏ' => 'ж', + 'ÇÐ' => 'з', + 'ÇÑ' => 'и', + 'ÇÒ' => 'й', + 'ÇÓ' => 'к', + 'ÇÔ' => 'л', + 'ÇÕ' => 'м', + 'ÇÖ' => 'н', + 'Ç×' => 'о', + 'ÇØ' => 'п', + 'ÇÙ' => 'Ñ€', + 'ÇÚ' => 'Ñ', + 'ÇÛ' => 'Ñ‚', + 'ÇÜ' => 'у', + 'ÇÝ' => 'Ñ„', + 'ÇÞ' => 'Ñ…', + 'Çß' => 'ц', + 'Çà' => 'ч', + 'Çá' => 'ш', + 'Çâ' => 'щ', + 'Çã' => 'ÑŠ', + 'Çä' => 'Ñ‹', + 'Çå' => 'ÑŒ', + 'Çæ' => 'Ñ', + 'Çç' => 'ÑŽ', + 'Çè' => 'Ñ', + 'Çé' => 'â‘ ', + 'Çê' => 'â‘¡', + 'Çë' => 'â‘¢', + 'Çì' => 'â‘£', + 'Çí' => '⑤', + 'Çî' => 'â‘¥', + 'Çï' => '⑦', + 'Çð' => '⑧', + 'Çñ' => '⑨', + 'Çò' => 'â‘©', + 'Çó' => 'â‘´', + 'Çô' => '⑵', + 'Çõ' => '⑶', + 'Çö' => 'â‘·', + 'Ç÷' => '⑸', + 'Çø' => '⑹', + 'Çù' => '⑺', + 'Çú' => 'â‘»', + 'Çû' => '⑼', + 'Çü' => '⑽', + 'É@' => '乂', + 'É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' => '柌', + 'Ï[' => 'æž®', + 'Ï\\' => '柦', + 'Ï]' => '柛', + 'Ï^' => '柺', + 'Ï_' => '柉', + 'Ï`' => '柊', + 'Ï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' => '掮', + 'Õ{' => 'æ¼', + 'Õ|' => '掤', + 'Õ}' => '挻', + 'Õ~' => '掟', + 'Õ¡' => 'æ¸', + 'Õ¢' => '掅', + 'Õ£' => 'æŽ', + 'Õ¤' => '掑', + 'Õ¥' => 'æŽ', + 'Õ¦' => 'æ°', + 'Õ§' => 'æ•“', + 'Õ¨' => 'æ—', + 'Õ©' => '晥', + 'Õª' => '晡', + 'Õ«' => 'æ™›', + 'Õ¬' => 'æ™™', + 'Õ' => '晜', + 'Õ®' => '晢', + 'Õ¯' => '朘', + 'Õ°' => '桹', + 'Õ±' => '梇', + 'Õ²' => 'æ¢', + 'Õ³' => '梜', + 'Õ´' => 'æ¡', + 'Õµ' => 'æ¡®', + 'Õ¶' => '梮', + 'Õ·' => '梫', + 'Õ¸' => '楖', + 'Õ¹' => '桯', + 'Õº' => '梣', + 'Õ»' => '梬', + 'Õ¼' => '梩', + 'Õ½' => '桵', + 'Õ¾' => 'æ¡´', + 'Õ¿' => '梲', + 'ÕÀ' => 'æ¢', + 'ÕÁ' => 'æ¡·', + 'ÕÂ' => '梒', + 'ÕÃ' => '桼', + 'ÕÄ' => 'æ¡«', + 'ÕÅ' => '桲', + 'ÕÆ' => '梪', + 'ÕÇ' => '梀', + 'ÕÈ' => '桱', + 'ÕÉ' => '桾', + 'ÕÊ' => '梛', + 'ÕË' => '梖', + 'ÕÌ' => '梋', + 'ÕÍ' => 'æ¢ ', + 'ÕÎ' => '梉', + 'ÕÏ' => '梤', + 'ÕÐ' => '桸', + 'ÕÑ' => 'æ¡»', + 'ÕÒ' => '梑', + 'ÕÓ' => '梌', + 'ÕÔ' => '梊', + 'ÕÕ' => '桽', + 'ÕÖ' => '欶', + 'Õ×' => '欳', + 'ÕØ' => '欷', + 'ÕÙ' => '欸', + 'ÕÚ' => '殑', + 'ÕÛ' => 'æ®', + 'ÕÜ' => 'æ®', + 'ÕÝ' => '殎', + 'ÕÞ' => '殌', + 'Õß' => 'æ°ª', + 'Õà' => 'æ·€', + 'Õá' => '涫', + 'Õâ' => '涴', + 'Õã' => '涳', + 'Õä' => 'æ¹´', + 'Õå' => '涬', + 'Õæ' => 'æ·©', + 'Õç' => 'æ·¢', + 'Õè' => '涷', + 'Õé' => 'æ·¶', + 'Õê' => 'æ·”', + 'Õë' => '渀', + 'Õì' => 'æ·ˆ', + 'Õí' => 'æ· ', + 'Õî' => 'æ·Ÿ', + 'Õï' => 'æ·–', + 'Õð' => '涾', + 'Õñ' => 'æ·¥', + 'Õò' => 'æ·œ', + 'Õó' => 'æ·', + 'Õô' => 'æ·›', + 'Õõ' => 'æ·´', + 'Õö' => 'æ·Š', + 'Õ÷' => '涽', + 'Õø' => 'æ·', + 'Õù' => 'æ·°', + 'Õú' => '涺', + 'Õû' => 'æ·•', + 'Õü' => 'æ·‚', + 'Õý' => 'æ·', + 'Õþ' => 'æ·‰', + 'Ö@' => 'æ·', + 'Ö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' => '鄇', + 'Ü[' => 'é„…', + 'Ü\\' => '鄃', + 'Ü]' => 'é…¡', + 'Ü^' => 'é…¤', + 'Ü_' => 'é…Ÿ', + 'Ü`' => 'é…¢', + 'Ü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' => '漘', + 'â{' => 'æ¼»', + 'â|' => 'æ¼’', + 'â}' => 'æ»', + 'â~' => '漊', + 'â¡' => '漶', + 'â¢' => 'æ½³', + 'â£' => '滹', + 'â¤' => 'æ»®', + 'â¥' => 'æ¼', + 'â¦' => 'æ½€', + 'â§' => 'æ¼°', + 'â¨' => 'æ¼¼', + 'â©' => 'æ¼µ', + 'âª' => '滫', + 'â«' => '漇', + 'â¬' => '漎', + 'â' => '潃', + 'â®' => 'æ¼…', + 'â¯' => '滽', + 'â°' => '滶', + 'â±' => 'æ¼¹', + 'â²' => '漜', + 'â³' => '滼', + 'â´' => '漺', + 'âµ' => '漟', + 'â¶' => 'æ¼', + 'â·' => '漞', + 'â¸' => '漈', + 'â¹' => '漡', + 'âº' => '熇', + 'â»' => 'ç†', + 'â¼' => '熉', + 'â½' => '熀', + 'â¾' => '熅', + 'â¿' => '熂', + 'âÀ' => 'ç†', + 'âÁ' => 'ç…»', + 'âÂ' => '熆', + 'âÃ' => 'ç†', + 'âÄ' => '熗', + 'âÅ' => '牄', + 'âÆ' => '牓', + 'âÇ' => '犗', + 'âÈ' => '犕', + 'âÉ' => '犓', + 'âÊ' => 'çƒ', + 'âË' => 'ç', + 'âÌ' => 'ç‘', + 'âÍ' => 'çŒ', + 'âÎ' => 'ç‘¢', + 'âÏ' => '瑳', + 'âÐ' => '瑱', + 'âÑ' => '瑵', + 'âÒ' => '瑲', + 'âÓ' => '瑧', + 'âÔ' => 'ç‘®', + 'âÕ' => '甀', + 'âÖ' => '甂', + 'â×' => '甃', + 'âØ' => '畽', + 'âÙ' => 'ç–', + 'âÚ' => '瘖', + 'âÛ' => '瘈', + 'âÜ' => '瘌', + 'âÝ' => '瘕', + 'âÞ' => '瘑', + 'âß' => '瘊', + 'âà' => '瘔', + 'âá' => '皸', + 'ââ' => 'çž', + 'âã' => 'ç¼', + 'âä' => 'çž…', + 'âå' => 'çž‚', + 'âæ' => 'ç®', + 'âç' => '瞀', + 'âè' => 'ç¯', + 'âé' => 'ç¾', + 'âê' => '瞃', + 'âë' => '碲', + 'âì' => '碪', + 'âí' => '碴', + 'âî' => 'ç¢', + 'âï' => '碨', + 'âð' => '硾', + 'âñ' => '碫', + 'âò' => '碞', + 'âó' => '碥', + 'âô' => 'ç¢ ', + 'âõ' => '碬', + 'âö' => '碢', + 'â÷' => '碤', + 'âø' => '禘', + 'âù' => '禊', + 'âú' => '禋', + 'âû' => '禖', + 'âü' => '禕', + 'âý' => '禔', + 'âþ' => '禓', + 'ã@' => '禗', + 'ã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' => '嬚', + 'é[' => 'å¬ ', + 'é\\' => '嬞', + 'é]' => '寯', + 'é^' => '嶬', + 'é_' => '嶱', + 'é`' => '嶩', + 'é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' => 'é´®', + 'ï{' => 'é´¯', + 'ï|' => 'é´±', + 'ï}' => 'é´¸', + 'ï~' => 'é´°', + 'ï¡' => 'éµ…', + 'ï¢' => '鵂', + 'ï£' => '鵃', + 'ï¤' => 'é´¾', + 'ï¥' => 'é´·', + 'ï¦' => 'éµ€', + 'ï§' => 'é´½', + 'ï¨' => '翵', + 'ï©' => 'é´', + 'ïª' => '麊', + 'ï«' => '麉', + 'ï¬' => 'éº', + 'ï' => '麰', + 'ï®' => '黈', + 'ï¯' => '黚', + 'ï°' => 'é»»', + 'ï±' => '黿', + 'ï²' => '鼤', + 'ï³' => 'é¼£', + 'ï´' => 'é¼¢', + 'ïµ' => 'é½”', + 'ï¶' => 'é¾ ', + 'ï·' => '儱', + 'ï¸' => 'å„', + 'ï¹' => 'å„®', + 'ïº' => '嚘', + 'ï»' => 'åšœ', + 'ï¼' => 'åš—', + 'ï½' => 'åšš', + 'ï¾' => 'åš', + 'ï¿' => 'åš™', + 'ïÀ' => '奰', + 'ïÁ' => '嬼', + 'ïÂ' => '屩', + 'ïÃ' => '屪', + 'ïÄ' => 'å·€', + 'ïÅ' => 'å¹', + 'ïÆ' => 'å¹®', + 'ïÇ' => '懘', + 'ïÈ' => '懟', + 'ïÉ' => 'æ‡', + 'ïÊ' => '懮', + 'ïË' => '懱', + 'ïÌ' => '懪', + 'ïÍ' => '懰', + 'ïÎ' => '懫', + 'ïÏ' => '懖', + 'ïÐ' => '懩', + 'ïÑ' => 'æ“¿', + 'ïÒ' => '攄', + 'ïÓ' => '擽', + 'ïÔ' => '擸', + 'ïÕ' => 'æ”', + 'ïÖ' => '攃', + 'ï×' => '擼', + 'ïØ' => 'æ–”', + 'ïÙ' => 'æ—›', + 'ïÚ' => '曚', + 'ïÛ' => 'æ››', + 'ïÜ' => '曘', + 'ïÝ' => 'æ«…', + 'ïÞ' => '檹', + 'ïß' => '檽', + 'ïà' => 'æ«¡', + 'ïá' => '櫆', + 'ïâ' => '檺', + 'ïã' => '檶', + 'ïä' => '檷', + 'ïå' => '櫇', + 'ïæ' => '檴', + 'ïç' => 'æª', + 'ïè' => 'æž', + 'ïé' => '毉', + 'ïê' => 'æ°‹', + 'ïë' => '瀇', + 'ïì' => '瀌', + 'ïí' => 'ç€', + 'ïî' => 'ç€', + 'ïï' => '瀅', + 'ïð' => '瀔', + 'ïñ' => '瀎', + 'ïò' => 'æ¿¿', + 'ïó' => '瀀', + 'ïô' => 'æ¿»', + 'ïõ' => '瀦', + 'ïö' => '濼', + 'ï÷' => 'æ¿·', + 'ïø' => '瀊', + 'ïù' => 'çˆ', + 'ïú' => '燿', + 'ïû' => '燹', + 'ïü' => '爃', + 'ïý' => '燽', + 'ïþ' => 'ç¶', + 'ð@' => 'ç’¸', + 'ð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' => 'é…†', + 'ö[' => 'é…„', + 'ö\\' => 'é……', + 'ö]' => '醹', + 'ö^' => 'é¿', + 'ö_' => 'é»', + 'ö`' => 'é¶', + 'ö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' => 'é±µ', + 'ù{' => '鸔', + 'ù|' => '鸓', + 'ù}' => '黶', + 'ù~' => '鼊', + 'ù¡' => '龤', + 'ù¢' => 'ç¨', + 'ù£' => 'ç¥', + 'ù¤' => 'ç³·', + 'ù¥' => '虪', + 'ù¦' => 'è ¾', + 'ù§' => 'è ½', + 'ù¨' => 'è ¿', + 'ù©' => '讞', + 'ùª' => '貜', + 'ù«' => '躩', + 'ù¬' => '軉', + 'ù' => 'é‹', + 'ù®' => '顳', + 'ù¯' => 'é¡´', + 'ù°' => '飌', + 'ù±' => '饡', + 'ù²' => '馫', + 'ù³' => '驤', + 'ù´' => '驦', + 'ùµ' => '驧', + 'ù¶' => '鬤', + 'ù·' => '鸕', + 'ù¸' => '鸗', + 'ù¹' => '齈', + 'ùº' => '戇', + 'ù»' => '欞', + 'ù¼' => '爧', + 'ù½' => '虌', + 'ù¾' => '躨', + 'ù¿' => 'é’‚', + 'ùÀ' => 'é’€', + 'ùÁ' => 'é’', + 'ùÂ' => 'é©©', + 'ùÃ' => '驨', + 'ùÄ' => '鬮', + 'ùÅ' => '鸙', + 'ùÆ' => '爩', + 'ùÇ' => '虋', + 'ùÈ' => '讟', + 'ùÉ' => 'é’ƒ', + 'ùÊ' => 'é±¹', + 'ùË' => '麷', + 'ùÌ' => '癵', + 'ùÍ' => 'é©«', + 'ùÎ' => '鱺', + 'ùÏ' => 'é¸', + 'ùÐ' => 'ç©', + 'ùÑ' => 'çª', + 'ùÒ' => '麤', + 'ùÓ' => 'é½¾', + 'ùÔ' => '齉', + 'ùÕ' => '龘', +); + +$result =& $data; +unset($data); + +return $result; diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp037.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp037.php new file mode 100644 index 0000000000000000000000000000000000000000..a014e4b4595544e94b92b16655ec45eb6616c1a8 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp037.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp1006.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp1006.php new file mode 100644 index 0000000000000000000000000000000000000000..2b5e7beb9bff546a8698e3f02e3d8997d756d963 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp1006.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp1026.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp1026.php new file mode 100644 index 0000000000000000000000000000000000000000..aba455b5ec97b2e9987a607421d5b571f3cea32e Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp1026.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp424.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp424.php new file mode 100644 index 0000000000000000000000000000000000000000..e8e2370303b50cecec4043f3e0a324155eee90e5 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp424.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp437.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp437.php new file mode 100644 index 0000000000000000000000000000000000000000..e3ebb45c900d56b0e9c0f6e3345f55a5ff528ebe Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp437.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp500.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp500.php new file mode 100644 index 0000000000000000000000000000000000000000..3771c8f624117ef901a2e0a79449a865ae717aef Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp500.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp737.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp737.php new file mode 100644 index 0000000000000000000000000000000000000000..2d67d33f9ed9e1f8650061e59b0b04ee9942c21c Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp737.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp775.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp775.php new file mode 100644 index 0000000000000000000000000000000000000000..1fbc4cdc63d53747ce75c2c97bb62095362cf160 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp775.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp850.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp850.php new file mode 100644 index 0000000000000000000000000000000000000000..0b314c80bf4cb090e3973d71286a54e5d00cdf3f Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp850.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp852.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp852.php new file mode 100644 index 0000000000000000000000000000000000000000..f8c318cadeba81f8f69fed5fd262bf088e1bba19 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp852.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp855.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp855.php new file mode 100644 index 0000000000000000000000000000000000000000..48440ba1acf8727aa87bb9faa657f640dc2ec98a Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp855.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp856.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp856.php new file mode 100644 index 0000000000000000000000000000000000000000..c9cac0c35d7c8d46246383d6a092ba47f0422fbb Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp856.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp857.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp857.php new file mode 100644 index 0000000000000000000000000000000000000000..3e7770ad59374f6dff41ea47271b3e5399323c66 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp857.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp860.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp860.php new file mode 100644 index 0000000000000000000000000000000000000000..2a52d4736dcf01405af8c22f26b8db8c908431b0 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp860.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp861.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp861.php new file mode 100644 index 0000000000000000000000000000000000000000..4ba6573c397be67ff55c276c542c146876bcd4b5 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp861.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp862.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp862.php new file mode 100644 index 0000000000000000000000000000000000000000..d2a29a22844f21d17a8b9fcbf835b58c597b99c2 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp862.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp863.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp863.php new file mode 100644 index 0000000000000000000000000000000000000000..1f36b9a245ebbecc3614160c9f1c4538d0e95551 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp863.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp864.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp864.php new file mode 100644 index 0000000000000000000000000000000000000000..953e4635060777745fefbcedb6c16a49f7605388 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp864.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp865.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp865.php new file mode 100644 index 0000000000000000000000000000000000000000..2668bcc4e583f4fc5a97336648ffc0a17d767f16 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp865.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp866.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp866.php new file mode 100644 index 0000000000000000000000000000000000000000..a7b47f8f39f67571b0eb53559cc2bd10135a41e4 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp866.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp869.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp869.php new file mode 100644 index 0000000000000000000000000000000000000000..0f040548b5fb5c26eff8859380f744574ca5c0c0 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp869.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp874.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp874.php new file mode 100644 index 0000000000000000000000000000000000000000..479945691cebc26afca2bf4ff9f1b3c3da49644c Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp874.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp875.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp875.php new file mode 100644 index 0000000000000000000000000000000000000000..856164536ef82f4e77209da0e67af9350b42677b Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp875.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp932.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp932.php new file mode 100644 index 0000000000000000000000000000000000000000..0bf828ffdbfbe208e5ee725770fb17a3560e8717 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp932.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp936.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp936.php new file mode 100644 index 0000000000000000000000000000000000000000..a593d05deb2677f456f5d87d26c555034c244ac8 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp936.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp949.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp949.php new file mode 100644 index 0000000000000000000000000000000000000000..d4e99f1f4310365ba3d0a8c27678f3f720f4c6b2 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp949.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp950.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp950.php new file mode 100644 index 0000000000000000000000000000000000000000..267b190668f43dad5d1129cde15c033ed9e26597 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp950.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-1.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-1.php new file mode 100644 index 0000000000000000000000000000000000000000..d7a217c9306874e5ef39c99ac566a70c695120c4 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-1.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-10.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-10.php new file mode 100644 index 0000000000000000000000000000000000000000..d60f6473addc9e2f2663c09326734ca5a91c2315 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-10.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-11.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-11.php new file mode 100644 index 0000000000000000000000000000000000000000..d69220bff7d2555652dffb45b4e2223c11278da2 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-11.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-13.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-13.php new file mode 100644 index 0000000000000000000000000000000000000000..838783f1b57b725e0948351c02e502c0b0077cf6 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-13.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-14.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-14.php new file mode 100644 index 0000000000000000000000000000000000000000..65a48ee397f58fc7835c9f5007dd118001523bba Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-14.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-15.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-15.php new file mode 100644 index 0000000000000000000000000000000000000000..42e50e0fd412fe7dae7061749d94bb216f38235b Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-15.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-16.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-16.php new file mode 100644 index 0000000000000000000000000000000000000000..46758a6a7c968b00402fdb1f7a732b96ec3bc4fd Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-16.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-2.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-2.php new file mode 100644 index 0000000000000000000000000000000000000000..5f23f515c40cad0483fe085c94b215b720765e7d Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-2.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-3.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-3.php new file mode 100644 index 0000000000000000000000000000000000000000..b31bb83f400bd1597d5e5b1024755c27ae92eb04 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-3.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-4.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-4.php new file mode 100644 index 0000000000000000000000000000000000000000..9cbf9f37ada4790ef69d06bfd0c2d54e8eef11fd Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-4.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-5.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-5.php new file mode 100644 index 0000000000000000000000000000000000000000..fd038823053f32e5358a44934fe6fa62c5d43f67 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-5.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-6.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-6.php new file mode 100644 index 0000000000000000000000000000000000000000..ed6f72f362f7e68ceb8f5964cc783aa0e198283f Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-6.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-7.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-7.php new file mode 100644 index 0000000000000000000000000000000000000000..cf723ac686da214bb81f7ec12f1a1e039af4acf1 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-7.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-8.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-8.php new file mode 100644 index 0000000000000000000000000000000000000000..c978731a429f57aa8383c20fd27a66ddd4519af6 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-8.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-9.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-9.php new file mode 100644 index 0000000000000000000000000000000000000000..2a3e36a486511cdabe21a6bd873b37694f642d57 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-9.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.koi8-r.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.koi8-r.php new file mode 100644 index 0000000000000000000000000000000000000000..d83c2125b7ab2ec965504046f206a6ddf1aec21b Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.koi8-r.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.koi8-u.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.koi8-u.php new file mode 100644 index 0000000000000000000000000000000000000000..dbbf96be1470ea7d188775080050f13815ddba11 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.koi8-u.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.us-ascii.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.us-ascii.php new file mode 100644 index 0000000000000000000000000000000000000000..94a93b280f4c2b51d4a7903d94397cc8ced69ebe Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.us-ascii.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1250.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1250.php new file mode 100644 index 0000000000000000000000000000000000000000..d1d5e6f25c6881e279fe4d576982d1c0cdc6e4a2 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1250.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1251.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1251.php new file mode 100644 index 0000000000000000000000000000000000000000..f422a71fc7b694578cb7d7efb096c0f250385a84 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1251.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1252.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1252.php new file mode 100644 index 0000000000000000000000000000000000000000..ba6d203dcabee1831ae4ceaf3a3037340ffe7d3c Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1252.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1253.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1253.php new file mode 100644 index 0000000000000000000000000000000000000000..c04dc8f0e07da5ca7ee22429198714b47604397c Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1253.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1254.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1254.php new file mode 100644 index 0000000000000000000000000000000000000000..1cfadcf2b45b964117e92888b6cd54a1c501f1bb Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1254.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1255.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1255.php new file mode 100644 index 0000000000000000000000000000000000000000..f73cbb6ffd844dcc04e7ec63775f611166299b26 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1255.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1256.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1256.php new file mode 100644 index 0000000000000000000000000000000000000000..953704f6e5af289f97294f99980d3a2e651609bb Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1256.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1257.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1257.php new file mode 100644 index 0000000000000000000000000000000000000000..78580ece01bbaeb2477c97dbae88eafe2579e4a8 Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1257.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1258.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1258.php new file mode 100644 index 0000000000000000000000000000000000000000..de1609d85ab469a8d4fe3e139a502b66b0c10c5e Binary files /dev/null and b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1258.php differ diff --git a/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/translit.php b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/translit.php new file mode 100644 index 0000000000000000000000000000000000000000..829ea127595175645282934f798c4f5c16098ede --- /dev/null +++ b/civicrm/vendor/symfony/polyfill-iconv/Resources/charset/translit.php @@ -0,0 +1,3969 @@ +<?php + +static $data = array ( + 'µ' => 'μ', + '¼' => ' 1â„4 ', + '½' => ' 1â„2 ', + '¾' => ' 3â„4 ', + 'IJ' => 'IJ', + 'ij' => 'ij', + 'Ä¿' => 'L·', + 'Å€' => 'l·', + 'ʼn' => 'ʼn', + 'Å¿' => 's', + 'Ç„' => 'DŽ', + 'Ç…' => 'Dž', + 'dž' => 'dž', + 'LJ' => 'LJ', + 'Lj' => 'Lj', + 'lj' => 'lj', + 'ÇŠ' => 'NJ', + 'Ç‹' => 'Nj', + 'ÇŒ' => 'nj', + 'DZ' => 'DZ', + 'Dz' => 'Dz', + 'dz' => 'dz', + 'Ï' => 'β', + 'Ï‘' => 'θ', + 'Ï’' => 'Î¥', + 'Ï•' => 'φ', + 'Ï–' => 'Ï€', + 'Ï°' => 'κ', + 'ϱ' => 'Ï', + 'ϲ' => 'Ï‚', + 'Ï´' => 'Θ', + 'ϵ' => 'ε', + 'Ϲ' => 'Σ', + 'Ö‡' => 'Õ¥Ö‚', + 'Ùµ' => 'اٴ', + 'Ù¶' => 'وٴ', + 'Ù·' => 'Û‡Ù´', + 'Ù¸' => 'يٴ', + 'ำ' => 'à¹à¸²', + 'ຳ' => 'à»àº²', + 'ໜ' => 'ຫນ', + 'à»' => 'ຫມ', + 'ཷ' => 'ྲà¾', + 'ཹ' => 'ླà¾', + 'ẚ' => 'aʾ', + '․' => '.', + '‥' => '..', + '…' => '...', + '″' => '′′', + '‴' => '′′′', + '‶' => '‵‵', + '‷' => '‵‵‵', + '‼' => '!!', + 'â‡' => '??', + 'âˆ' => '?!', + 'â‰' => '!?', + 'â—' => '′′′′', + '₨' => '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', + 'â„¡' => 'TEL', + 'ℤ' => '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)', + '⨌' => '∫∫∫∫', + 'â©´' => '::=', + '⩵' => '==', + '⩶' => '===', + '⺟' => 'æ¯', + '⻳' => '龟', + 'â¼€' => '一', + 'â¼' => '丨', + '⼂' => '丶', + '⼃' => '丿', + '⼄' => 'ä¹™', + 'â¼…' => '亅', + '⼆' => '二', + '⼇' => 'äº ', + '⼈' => '人', + '⼉' => 'å„¿', + '⼊' => 'å…¥', + '⼋' => 'å…«', + '⼌' => '冂', + 'â¼' => '冖', + '⼎' => '冫', + 'â¼' => 'å‡ ', + 'â¼' => '凵', + '⼑' => '刀', + 'â¼’' => '力', + '⼓' => '勹', + 'â¼”' => '匕', + '⼕' => '匚', + 'â¼–' => '匸', + 'â¼—' => 'å', + '⼘' => 'åœ', + 'â¼™' => 'å©', + '⼚' => '厂', + 'â¼›' => '厶', + '⼜' => 'åˆ', + 'â¼' => 'å£', + '⼞' => 'å›—', + '⼟' => '土', + 'â¼ ' => '士', + '⼡' => '夂', + 'â¼¢' => '夊', + 'â¼£' => '夕', + '⼤' => '大', + 'â¼¥' => '女', + '⼦' => 'å', + '⼧' => '宀', + '⼨' => '寸', + '⼩' => 'å°', + '⼪' => 'å°¢', + '⼫' => 'å°¸', + '⼬' => 'å±®', + 'â¼' => 'å±±', + 'â¼®' => 'å·›', + '⼯' => 'å·¥', + 'â¼°' => 'å·±', + 'â¼±' => 'å·¾', + 'â¼²' => 'å¹²', + 'â¼³' => '幺', + 'â¼´' => '广', + 'â¼µ' => 'å»´', + '⼶' => '廾', + 'â¼·' => '弋', + '⼸' => '弓', + 'â¼¹' => 'å½', + '⼺' => '彡', + 'â¼»' => 'å½³', + 'â¼¼' => '心', + 'â¼½' => '戈', + 'â¼¾' => '戶', + '⼿' => '手', + 'â½€' => '支', + 'â½' => 'æ”´', + '⽂' => 'æ–‡', + '⽃' => 'æ–—', + '⽄' => 'æ–¤', + 'â½…' => 'æ–¹', + '⽆' => 'æ— ', + '⽇' => 'æ—¥', + '⽈' => 'æ›°', + '⽉' => '月', + '⽊' => '木', + '⽋' => 'æ¬ ', + '⽌' => 'æ¢', + 'â½' => 'æ¹', + '⽎' => '殳', + 'â½' => '毋', + 'â½' => '比', + '⽑' => '毛', + 'â½’' => 'æ°', + '⽓' => 'æ°”', + 'â½”' => 'æ°´', + '⽕' => 'ç«', + 'â½–' => '爪', + 'â½—' => '父', + '⽘' => '爻', + 'â½™' => '爿', + '⽚' => '片', + 'â½›' => '牙', + '⽜' => '牛', + 'â½' => '犬', + '⽞' => '玄', + '⽟' => '玉', + 'â½ ' => 'ç“œ', + '⽡' => '瓦', + 'â½¢' => '甘', + 'â½£' => '生', + '⽤' => '用', + 'â½¥' => 'ç”°', + '⽦' => 'ç–‹', + '⽧' => 'ç–’', + '⽨' => '癶', + '⽩' => '白', + '⽪' => 'çš®', + '⽫' => 'çš¿', + '⽬' => 'ç›®', + 'â½' => '矛', + 'â½®' => '矢', + '⽯' => '石', + 'â½°' => '示', + 'â½±' => '禸', + 'â½²' => '禾', + 'â½³' => 'ç©´', + 'â½´' => 'ç«‹', + 'â½µ' => '竹', + '⽶' => 'ç±³', + 'â½·' => '糸', + '⽸' => '缶', + 'â½¹' => '网', + '⽺' => '羊', + 'â½»' => 'ç¾½', + 'â½¼' => 'è€', + 'â½½' => '而', + 'â½¾' => '耒', + '⽿' => '耳', + 'â¾€' => 'è¿', + 'â¾' => '肉', + '⾂' => '臣', + '⾃' => '自', + '⾄' => '至', + 'â¾…' => '臼', + '⾆' => '舌', + '⾇' => '舛', + '⾈' => '舟', + '⾉' => '艮', + '⾊' => '色', + '⾋' => '艸', + '⾌' => 'è™', + 'â¾' => '虫', + '⾎' => 'è¡€', + 'â¾' => 'è¡Œ', + 'â¾' => 'è¡£', + '⾑' => '襾', + 'â¾’' => '見', + '⾓' => '角', + 'â¾”' => '言', + '⾕' => 'è°·', + 'â¾–' => '豆', + 'â¾—' => '豕', + '⾘' => '豸', + 'â¾™' => 'è²', + '⾚' => '赤', + 'â¾›' => 'èµ°', + '⾜' => '足', + 'â¾' => '身', + '⾞' => '車', + '⾟' => 'è¾›', + 'â¾ ' => 'è¾°', + '⾡' => 'è¾µ', + 'â¾¢' => 'é‚‘', + 'â¾£' => 'é…‰', + '⾤' => '釆', + 'â¾¥' => '里', + '⾦' => '金', + '⾧' => 'é•·', + '⾨' => 'é–€', + '⾩' => '阜', + '⾪' => '隶', + '⾫' => 'éš¹', + '⾬' => '雨', + 'â¾' => 'é‘', + 'â¾®' => 'éž', + '⾯' => 'é¢', + 'â¾°' => 'é©', + 'â¾±' => '韋', + 'â¾²' => 'éŸ', + 'â¾³' => '音', + 'â¾´' => 'é ', + 'â¾µ' => '風', + '⾶' => '飛', + 'â¾·' => '食', + '⾸' => '首', + 'â¾¹' => '香', + '⾺' => '馬', + 'â¾»' => '骨', + 'â¾¼' => '高', + 'â¾½' => 'é«Ÿ', + 'â¾¾' => '鬥', + '⾿' => '鬯', + 'â¿€' => '鬲', + 'â¿' => '鬼', + 'â¿‚' => 'éš', + '⿃' => 'é³¥', + 'â¿„' => 'é¹µ', + 'â¿…' => '鹿', + '⿆' => '麥', + '⿇' => '麻', + '⿈' => '黃', + '⿉' => 'é»', + 'â¿Š' => '黑', + 'â¿‹' => '黹', + 'â¿Œ' => '黽', + 'â¿' => '鼎', + 'â¿Ž' => '鼓', + 'â¿' => 'é¼ ', + 'â¿' => 'é¼»', + 'â¿‘' => '齊', + 'â¿’' => 'é½’', + 'â¿“' => 'é¾', + 'â¿”' => '龜', + 'â¿•' => 'é¾ ', + ' ' => ' ', + '〶' => '〒', + '〸' => 'å', + '〹' => 'å„', + '〺' => 'å…', + 'ㄱ' => 'á„€', + 'ㄲ' => 'á„', + 'ㄳ' => 'ᆪ', + 'ã„´' => 'á„‚', + 'ㄵ' => 'ᆬ', + 'ㄶ' => 'á†', + 'ã„·' => 'ᄃ', + 'ㄸ' => 'á„„', + 'ㄹ' => 'á„…', + 'ㄺ' => 'ᆰ', + 'ã„»' => 'ᆱ', + 'ㄼ' => 'ᆲ', + 'ㄽ' => 'ᆳ', + 'ㄾ' => 'ᆴ', + 'ã„¿' => 'ᆵ', + 'ã…€' => 'á„š', + 'ã…' => 'ᄆ', + 'ã…‚' => 'ᄇ', + 'ã…ƒ' => 'ᄈ', + 'ã…„' => 'á„¡', + 'ã……' => 'ᄉ', + 'ã…†' => 'á„Š', + 'ã…‡' => 'á„‹', + 'ã…ˆ' => 'á„Œ', + 'ã…‰' => 'á„', + 'ã…Š' => 'á„Ž', + 'ã…‹' => 'á„', + 'ã…Œ' => 'á„', + 'ã…' => 'á„‘', + 'ã…Ž' => 'á„’', + 'ã…' => 'á…¡', + 'ã…' => 'á…¢', + 'ã…‘' => 'á…£', + 'ã…’' => 'á…¤', + 'ã…“' => 'á…¥', + 'ã…”' => 'á…¦', + 'ã…•' => 'á…§', + 'ã…–' => 'á…¨', + 'ã…—' => 'á…©', + 'ã…˜' => 'á…ª', + 'ã…™' => 'á…«', + 'ã…š' => 'á…¬', + 'ã…›' => 'á…', + 'ã…œ' => 'á…®', + 'ã…' => 'á…¯', + 'ã…ž' => 'á…°', + 'ã…Ÿ' => 'á…±', + 'ã… ' => 'á…²', + 'ã…¡' => 'á…³', + 'ã…¢' => 'á…´', + 'ã…£' => 'á…µ', + 'ã…¤' => 'á… ', + 'ã…¥' => 'á„”', + 'ã…¦' => 'á„•', + 'ã…§' => 'ᇇ', + 'ã…¨' => 'ᇈ', + 'ã…©' => 'ᇌ', + 'ã…ª' => 'ᇎ', + 'ã…«' => 'ᇓ', + 'ã…¬' => 'ᇗ', + 'ã…' => 'ᇙ', + 'ã…®' => 'á„œ', + 'ã…¯' => 'á‡', + 'ã…°' => 'ᇟ', + 'ã…±' => 'á„', + 'ã…²' => 'á„ž', + 'ã…³' => 'á„ ', + 'ã…´' => 'á„¢', + 'ã…µ' => 'á„£', + 'ã…¶' => 'ᄧ', + 'ã…·' => 'á„©', + 'ã…¸' => 'á„«', + 'ã…¹' => 'ᄬ', + 'ã…º' => 'á„', + 'ã…»' => 'á„®', + 'ã…¼' => 'ᄯ', + 'ã…½' => 'ᄲ', + 'ã…¾' => 'ᄶ', + 'ã…¿' => 'á…€', + 'ㆀ' => 'á…‡', + 'ã†' => 'á…Œ', + 'ㆂ' => 'ᇱ', + 'ㆃ' => 'ᇲ', + 'ㆄ' => 'á…—', + 'ㆅ' => 'á…˜', + 'ㆆ' => 'á…™', + 'ㆇ' => 'ᆄ', + 'ㆈ' => 'ᆅ', + 'ㆉ' => 'ᆈ', + 'ㆊ' => 'ᆑ', + 'ㆋ' => 'ᆒ', + 'ㆌ' => 'ᆔ', + 'ã†' => 'ᆞ', + 'ㆎ' => 'ᆡ', + '㈀' => '(á„€)', + 'ãˆ' => '(á„‚)', + '㈂' => '(ᄃ)', + '㈃' => '(á„…)', + '㈄' => '(ᄆ)', + '㈅' => '(ᄇ)', + '㈆' => '(ᄉ)', + '㈇' => '(á„‹)', + '㈈' => '(á„Œ)', + '㈉' => '(á„Ž)', + '㈊' => '(á„)', + '㈋' => '(á„)', + '㈌' => '(á„‘)', + 'ãˆ' => '(á„’)', + '㈎' => '(가)', + 'ãˆ' => '(á„‚á…¡)', + 'ãˆ' => '(다)', + '㈑' => '(á„…á…¡)', + '㈒' => '(마)', + '㈓' => '(바)', + '㈔' => '(사)', + '㈕' => '(á„‹á…¡)', + '㈖' => '(자)', + '㈗' => '(á„Žá…¡)', + '㈘' => '(á„á…¡)', + '㈙' => '(á„á…¡)', + '㈚' => '(á„‘á…¡)', + '㈛' => '(á„’á…¡)', + '㈜' => '(주)', + 'ãˆ' => '(오전)', + '㈞' => '(á„‹á…©á„’á…®)', + '㈠' => '(一)', + '㈡' => '(二)', + '㈢' => '(三)', + '㈣' => '(å››)', + '㈤' => '(五)', + '㈥' => '(å…)', + '㈦' => '(七)', + '㈧' => '(å…«)', + '㈨' => '(ä¹)', + '㈩' => '(å)', + '㈪' => '(月)', + '㈫' => '(ç«)', + '㈬' => '(æ°´)', + 'ãˆ' => '(木)', + '㈮' => '(金)', + '㈯' => '(土)', + '㈰' => '(æ—¥)', + '㈱' => '(æ ª)', + '㈲' => '(有)', + '㈳' => '(社)', + '㈴' => '(å)', + '㈵' => '(特)', + '㈶' => '(財)', + '㈷' => '(ç¥)', + '㈸' => '(労)', + '㈹' => '(代)', + '㈺' => '(呼)', + '㈻' => '(å¦)', + '㈼' => '(監)', + '㈽' => '(ä¼)', + '㈾' => '(資)', + '㈿' => '(å”)', + '㉀' => '(ç¥)', + 'ã‰' => '(休)', + '㉂' => '(自)', + '㉃' => '(至)', + '㉄' => '(å•)', + '㉅' => '(å¹¼)', + '㉆' => '(æ–‡)', + '㉇' => '(ç®)', + 'ã‰' => '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', + 'ã¸' => 'dm²', + 'ã¹' => 'dm³', + 'ãº' => 'IU', + 'ã»' => 'å¹³æˆ', + 'ã¼' => 'æ˜å’Œ', + 'ã½' => '大æ£', + 'ã¾' => '明治', + 'ã¿' => 'æ ªå¼ä¼šç¤¾', + '㎀' => 'pA', + 'ãŽ' => 'nA', + '㎂' => 'μA', + '㎃' => 'mA', + '㎄' => 'kA', + '㎅' => 'KB', + '㎆' => 'MB', + '㎇' => 'GB', + '㎈' => 'cal', + '㎉' => 'kcal', + '㎊' => 'pF', + '㎋' => 'nF', + '㎌' => 'μF', + 'ãŽ' => 'μg', + '㎎' => 'mg', + 'ãŽ' => 'kg', + 'ãŽ' => 'Hz', + '㎑' => 'kHz', + '㎒' => 'MHz', + '㎓' => 'GHz', + '㎔' => 'THz', + '㎕' => 'μℓ', + '㎖' => 'mâ„“', + '㎗' => 'dâ„“', + '㎘' => 'kâ„“', + '㎙' => 'fm', + '㎚' => 'nm', + '㎛' => 'μm', + '㎜' => 'mm', + 'ãŽ' => 'cm', + '㎞' => 'km', + '㎟' => 'mm²', + '㎠' => 'cm²', + '㎡' => 'm²', + '㎢' => 'km²', + '㎣' => 'mm³', + '㎤' => 'cm³', + '㎥' => 'm³', + '㎦' => 'km³', + '㎧' => 'm∕s', + '㎨' => 'm∕s²', + '㎩' => 'Pa', + '㎪' => 'kPa', + '㎫' => 'MPa', + '㎬' => 'GPa', + 'ãŽ' => 'rad', + '㎮' => 'rad∕s', + '㎯' => 'rad∕s²', + '㎰' => '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', + 'fl' => 'fl', + 'ffi' => 'ffi', + 'ffl' => 'ffl', + 'ſt' => 'Å¿t', + 'st' => 'st', + 'ﬓ' => 'Õ´Õ¶', + 'ﬔ' => 'Õ´Õ¥', + 'ﬕ' => 'Õ´Õ«', + 'ﬖ' => 'Õ¾Õ¶', + 'ﬗ' => 'Õ´Õ', + 'ï¬ ' => '×¢', + 'ﬡ' => '×', + 'ﬢ' => 'ד', + 'ﬣ' => '×”', + 'ﬤ' => '×›', + 'ﬥ' => 'ל', + 'ﬦ' => '×', + 'ﬧ' => 'ר', + 'ﬨ' => 'ת', + '﬩' => '+', + 'ï' => '×ל', + '﹉' => '‾', + '﹊' => '‾', + '﹋' => '‾', + '﹌' => '‾', + 'ï¹' => '_', + '﹎' => '_', + 'ï¹' => '_', + 'ï¹' => ',', + '﹑' => 'ã€', + 'ï¹’' => '.', + 'ï¹”' => ';', + '﹕' => ':', + 'ï¹–' => '?', + 'ï¹—' => '!', + '﹘' => '—', + 'ï¹™' => '(', + '﹚' => ')', + 'ï¹›' => '{', + '﹜' => '}', + 'ï¹' => '〔', + '﹞' => '〕', + '﹟' => '#', + 'ï¹ ' => '&', + '﹡' => '*', + 'ï¹¢' => '+', + 'ï¹£' => '-', + '﹤' => '<', + 'ï¹¥' => '>', + '﹦' => '=', + '﹨' => '\\', + '﹩' => '$', + '﹪' => '%', + '﹫' => '@', + 'ï¼' => '!', + '"' => '"', + '#' => '#', + '$' => '$', + 'ï¼…' => '%', + '&' => '&', + ''' => '\'', + '(' => '(', + ')' => ')', + '*' => '*', + '+' => '+', + ',' => ',', + 'ï¼' => '-', + '.' => '.', + 'ï¼' => '/', + 'ï¼' => '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', + 'b' => 'b', + 'c' => 'c', + 'd' => 'd', + 'ï½…' => 'e', + 'f' => 'f', + 'g' => 'g', + 'h' => 'h', + 'i' => 'i', + 'j' => 'j', + 'k' => 'k', + 'l' => 'l', + 'ï½' => 'm', + 'n' => 'n', + 'ï½' => 'o', + 'ï½' => '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', + 'ðŸ†' => 'DJ', + '🈀' => 'ã»ã‹', + 'ðŸˆ' => 'ココ', + '🈂' => 'サ', + 'ðŸˆ' => '手', + '🈑' => 'å—', + '🈒' => 'åŒ', + '🈓' => 'デ', + '🈔' => '二', + '🈕' => '多', + '🈖' => '解', + '🈗' => '天', + '🈘' => '交', + '🈙' => 'æ˜ ', + '🈚' => 'ç„¡', + '🈛' => 'æ–™', + '🈜' => 'å‰', + 'ðŸˆ' => '後', + '🈞' => 'å†', + '🈟' => 'æ–°', + '🈠' => 'åˆ', + '🈡' => '終', + '🈢' => '生', + '🈣' => '販', + '🈤' => '声', + '🈥' => 'å¹', + '🈦' => 'æ¼”', + '🈧' => '投', + '🈨' => 'æ•', + '🈩' => '一', + '🈪' => '三', + '🈫' => 'éŠ', + '🈬' => 'å·¦', + 'ðŸˆ' => 'ä¸', + '🈮' => 'å³', + '🈯' => '指', + '🈰' => 'èµ°', + '🈱' => '打', + '🈲' => 'ç¦', + '🈳' => '空', + '🈴' => 'åˆ', + '🈵' => '満', + '🈶' => '有', + '🈷' => '月', + '🈸' => '申', + '🈹' => '割', + '🈺' => 'å–¶', + '🉀' => '〔本〕', + 'ðŸ‰' => '〔三〕', + '🉂' => '〔二〕', + '🉃' => '〔安〕', + '🉄' => '〔点〕', + '🉅' => '〔打〕', + '🉆' => '〔盗〕', + '🉇' => '〔å‹ã€•', + '🉈' => '〔敗〕', + 'ðŸ‰' => '(å¾—)', + '🉑' => '(å¯)', + '丽' => '丽', + 'ð¯ ' => '丸', + '乁' => 'ä¹', + '𠄢' => 'ð „¢', + '你' => 'ä½ ', + '侮' => 'ä¾®', + '侻' => 'ä¾»', + '倂' => '倂', + '偺' => 'åº', + '備' => 'å‚™', + '僧' => '僧', + '像' => 'åƒ', + '㒞' => 'ã’ž', + 'ð¯ ' => '𠘺', + '免' => 'å…', + 'ð¯ ' => 'å…”', + 'ð¯ ' => 'å…¤', + '具' => 'å…·', + '𠔜' => '𠔜', + '㒹' => 'ã’¹', + '內' => 'å…§', + '再' => 'å†', + '𠕋' => 'ð •‹', + '冗' => '冗', + '冤' => '冤', + '仌' => '仌', + '冬' => '冬', + '况' => '况', + '𩇟' => '𩇟', + 'ð¯ ' => '凵', + '刃' => '刃', + '㓟' => 'ã“Ÿ', + 'ð¯ ' => '刻', + '剆' => '剆', + '割' => '割', + '剷' => '剷', + '㔕' => '㔕', + '勇' => '勇', + '勉' => '勉', + '勤' => '勤', + '勺' => '勺', + '包' => '包', + '匆' => '匆', + '北' => '北', + '卉' => 'å‰', + 'ð¯ ' => 'å‘', + '博' => 'åš', + '即' => 'å³', + '卽' => 'å½', + '卿' => 'å¿', + '卿' => 'å¿', + '卿' => 'å¿', + '𠨬' => '𠨬', + '灰' => 'ç°', + '及' => 'åŠ', + '叟' => 'åŸ', + '𠭣' => 'ð £', + '叫' => 'å«', + '叱' => 'å±', + '吆' => 'å†', + '咞' => 'å’ž', + '吸' => 'å¸', + '呈' => '呈', + '周' => '周', + '咢' => 'å’¢', + 'ð¯¡' => '哶', + '唐' => 'å”', + '啓' => 'å•“', + '啣' => 'å•£', + '善' => 'å–„', + '善' => 'å–„', + '喙' => 'å–™', + '喫' => 'å–«', + '喳' => 'å–³', + '嗂' => 'å—‚', + '圖' => '圖', + '嘆' => '嘆', + 'ð¯¡' => '圗', + '噑' => '噑', + 'ð¯¡' => 'å™´', + 'ð¯¡' => '切', + '壮' => '壮', + '城' => '城', + '埴' => '埴', + '堍' => 'å ', + '型' => 'åž‹', + '堲' => 'å ²', + '報' => 'å ±', + '墬' => '墬', + '𡓤' => '𡓤', + '売' => '売', + '壷' => '壷', + '夆' => '夆', + 'ð¯¡' => '多', + '夢' => '夢', + '奢' => '奢', + '𡚨' => '𡚨', + '𡛪' => '𡛪', + '姬' => '姬', + '娛' => '娛', + '娧' => '娧', + '姘' => '姘', + '婦' => '婦', + '㛮' => 'ã›®', + '㛼' => '㛼', + '嬈' => '嬈', + '嬾' => '嬾', + '嬾' => '嬾', + '𡧈' => '𡧈', + 'ð¯¡' => '寃', + '寘' => '寘', + '寧' => '寧', + '寳' => '寳', + '𡬘' => '𡬘', + '寿' => '寿', + '将' => 'å°†', + '当' => '当', + '尢' => 'å°¢', + '㞁' => 'ãž', + '屠' => 'å± ', + '屮' => 'å±®', + '峀' => 'å³€', + '岍' => 'å²', + '𡷤' => 'ð¡·¤', + '嵃' => '嵃', + '𡷦' => 'ð¡·¦', + '嵮' => 'åµ®', + '嵫' => '嵫', + '嵼' => 'åµ¼', + 'ð¯¢' => 'å·¡', + '巢' => 'å·¢', + '㠯' => 'ã ¯', + '巽' => 'å·½', + '帨' => '帨', + '帽' => '帽', + '幩' => '幩', + '㡢' => 'ã¡¢', + '𢆃' => '𢆃', + '㡼' => '㡼', + '庰' => '庰', + '庳' => '庳', + 'ð¯¢' => '庶', + '廊' => '廊', + 'ð¯¢' => '𪎒', + 'ð¯¢' => '廾', + '𢌱' => '𢌱', + '𢌱' => '𢌱', + '舁' => 'èˆ', + '弢' => 'å¼¢', + '弢' => 'å¼¢', + '㣇' => '㣇', + '𣊸' => '𣊸', + '𦇚' => '𦇚', + '形' => 'å½¢', + '彫' => '彫', + '㣣' => '㣣', + '徚' => '徚', + 'ð¯¢' => 'å¿', + '志' => 'å¿—', + '忹' => '忹', + '悁' => 'æ‚', + '㤺' => '㤺', + '㤜' => '㤜', + '悔' => 'æ‚”', + '𢛔' => '𢛔', + '惇' => '惇', + '慈' => 'æ…ˆ', + '慌' => 'æ…Œ', + '慎' => 'æ…Ž', + '慌' => 'æ…Œ', + '慺' => 'æ…º', + '憎' => '憎', + '憲' => '憲', + 'ð¯¢' => '憤', + '憯' => '憯', + '懞' => '懞', + '懲' => '懲', + '懶' => '懶', + '成' => 'æˆ', + '戛' => '戛', + '扝' => 'æ‰', + '抱' => '抱', + '拔' => 'æ‹”', + '捐' => 'æ', + '𢬌' => '𢬌', + '挽' => '挽', + '拼' => '拼', + '捨' => 'æ¨', + '掃' => '掃', + '揤' => 'æ¤', + '𢯱' => '𢯱', + '搢' => 'æ¢', + '揅' => 'æ…', + 'ð¯£' => '掩', + '㨮' => '㨮', + '摩' => 'æ‘©', + '摾' => '摾', + '撝' => 'æ’', + '摷' => 'æ‘·', + '㩬' => '㩬', + '敏' => 'æ•', + '敬' => '敬', + '𣀊' => '𣀊', + '旣' => 'æ—£', + '書' => '書', + 'ð¯£' => '晉', + '㬙' => '㬙', + 'ð¯£' => 'æš‘', + 'ð¯£' => '㬈', + '㫤' => '㫤', + '冒' => '冒', + '冕' => '冕', + '最' => '最', + '暜' => 'æšœ', + '肭' => 'è‚', + '䏙' => 'ä™', + '朗' => '朗', + '望' => '望', + '朡' => '朡', + '杞' => 'æž', + '杓' => 'æ“', + 'ð¯£' => 'ð£ƒ', + '㭉' => 'ã‰', + '柺' => '柺', + '枅' => 'æž…', + '桒' => 'æ¡’', + '梅' => '梅', + '𣑭' => 'ð£‘', + '梎' => '梎', + '栟' => 'æ Ÿ', + '椔' => '椔', + '㮝' => 'ã®', + '楂' => '楂', + '榣' => '榣', + '槪' => '槪', + '檨' => '檨', + '𣚣' => '𣚣', + 'ð¯£' => 'æ«›', + '㰘' => 'ã°˜', + '次' => '次', + '𣢧' => '𣢧', + '歔' => 'æ”', + '㱎' => '㱎', + '歲' => 'æ²', + '殟' => '殟', + '殺' => '殺', + '殻' => 'æ®»', + '𣪍' => 'ð£ª', + '𡴋' => 'ð¡´‹', + '𣫺' => '𣫺', + '汎' => '汎', + '𣲼' => '𣲼', + '沿' => '沿', + '泍' => 'æ³', + '汧' => '汧', + '洖' => 'æ´–', + '派' => 'æ´¾', + 'ð¯¤' => 'æµ·', + '流' => 'æµ', + '浩' => '浩', + '浸' => '浸', + '涅' => '涅', + '𣴞' => '𣴞', + '洴' => 'æ´´', + '港' => '港', + '湮' => 'æ¹®', + '㴳' => 'ã´³', + '滋' => '滋', + '滇' => '滇', + 'ð¯¤' => '𣻑', + '淹' => 'æ·¹', + 'ð¯¤' => 'æ½®', + 'ð¯¤' => '𣽞', + '𣾎' => '𣾎', + '濆' => '濆', + '瀹' => '瀹', + '瀞' => '瀞', + '瀛' => '瀛', + '㶖' => '㶖', + '灊' => 'çŠ', + '災' => 'ç½', + '灷' => 'ç·', + '炭' => 'ç‚', + '𠔥' => '𠔥', + '煅' => 'ç……', + 'ð¯¤' => '𤉣', + '熜' => '熜', + '𤎫' => '𤎫', + '爨' => '爨', + '爵' => '爵', + '牐' => 'ç‰', + '𤘈' => '𤘈', + '犀' => '犀', + '犕' => '犕', + '𤜵' => '𤜵', + '𤠔' => '𤠔', + '獺' => 'çº', + '王' => '王', + '㺬' => '㺬', + '玥' => '玥', + '㺸' => '㺸', + 'ð¯¤' => '㺸', + '瑇' => '瑇', + '瑜' => 'ç‘œ', + '瑱' => '瑱', + '璅' => 'ç’…', + '瓊' => 'ç“Š', + '㼛' => 'ã¼›', + '甤' => '甤', + '𤰶' => '𤰶', + '甾' => '甾', + '𤲒' => '𤲒', + '異' => 'ç•°', + '𢆟' => '𢆟', + '瘐' => 'ç˜', + '𤾡' => '𤾡', + '𤾸' => '𤾸', + '𥁄' => 'ð¥„', + '㿼' => '㿼', + '䀈' => '䀈', + '直' => 'ç›´', + 'ð¯¥' => '𥃳', + '𥃲' => '𥃲', + '𥄙' => '𥄙', + '𥄳' => '𥄳', + '眞' => '眞', + '真' => '真', + '真' => '真', + '睊' => 'çŠ', + '䀹' => '䀹', + '瞋' => 'çž‹', + '䁆' => 'ä†', + '䂖' => 'ä‚–', + 'ð¯¥' => 'ð¥', + '硎' => 'ç¡Ž', + 'ð¯¥' => '碌', + 'ð¯¥' => '磌', + '䃣' => '䃣', + '𥘦' => '𥘦', + '祖' => '祖', + '𥚚' => '𥚚', + '𥛅' => '𥛅', + '福' => 'ç¦', + '秫' => '秫', + '䄯' => '䄯', + '穀' => 'ç©€', + '穊' => 'ç©Š', + '穏' => 'ç©', + '𥥼' => '𥥼', + 'ð¯¥' => '𥪧', + '𥪧' => '𥪧', + '竮' => 'ç«®', + '䈂' => '䈂', + '𥮫' => '𥮫', + '篆' => '篆', + '築' => '築', + '䈧' => '䈧', + '𥲀' => '𥲀', + '糒' => 'ç³’', + '䊠' => 'äŠ ', + '糨' => '糨', + '糣' => 'ç³£', + '紀' => 'ç´€', + '𥾆' => '𥾆', + '絣' => 'çµ£', + 'ð¯¥' => 'äŒ', + '緇' => 'ç·‡', + '縂' => '縂', + '繅' => 'ç¹…', + '䌴' => '䌴', + '𦈨' => '𦈨', + '𦉇' => '𦉇', + '䍙' => 'ä™', + '𦋙' => '𦋙', + '罺' => '罺', + '𦌾' => '𦌾', + '羕' => '羕', + '翺' => '翺', + '者' => '者', + '𦓚' => '𦓚', + '𦔣' => '𦔣', + '聠' => 'è ', + '𦖨' => '𦖨', + '聰' => 'è°', + '𣍟' => 'ð£Ÿ', + 'ð¯¦' => 'ä•', + '育' => '育', + '脃' => '脃', + '䐋' => 'ä‹', + '脾' => '脾', + '媵' => '媵', + '𦞧' => '𦞧', + '𦞵' => '𦞵', + '𣎓' => '𣎓', + '𣎜' => '𣎜', + '舁' => 'èˆ', + '舄' => '舄', + 'ð¯¦' => '辞', + '䑫' => 'ä‘«', + 'ð¯¦' => '芑', + 'ð¯¦' => '芋', + '芝' => 'èŠ', + '劳' => '劳', + '花' => '花', + '芳' => '芳', + '芽' => '芽', + '苦' => '苦', + '𦬼' => '𦬼', + '若' => 'è‹¥', + '茝' => 'èŒ', + '荣' => 'è£', + '莭' => 'èŽ', + '茣' => '茣', + 'ð¯¦' => '莽', + '菧' => 'è§', + '著' => 'è‘—', + '荓' => 'è“', + '菊' => 'èŠ', + '菌' => 'èŒ', + '菜' => 'èœ', + '𦰶' => '𦰶', + '𦵫' => '𦵫', + '𦳕' => '𦳕', + '䔫' => '䔫', + '蓱' => '蓱', + '蓳' => '蓳', + '蔖' => 'è”–', + '𧏊' => 'ð§Š', + '蕤' => '蕤', + 'ð¯¦' => '𦼬', + '䕝' => 'ä•', + '䕡' => 'ä•¡', + '𦾱' => '𦾱', + '𧃒' => '𧃒', + '䕫' => 'ä•«', + '虐' => 'è™', + '虜' => '虜', + '虧' => '虧', + '虩' => '虩', + '蚩' => 'èš©', + '蚈' => '蚈', + '蜎' => '蜎', + '蛢' => '蛢', + '蝹' => 'è¹', + '蜨' => '蜨', + '蝫' => 'è«', + '螆' => '螆', + '䗗' => 'ä——', + '蟡' => '蟡', + 'ð¯§' => 'è ', + '䗹' => 'ä—¹', + '衠' => 'è¡ ', + '衣' => 'è¡£', + '𧙧' => '𧙧', + '裗' => '裗', + '裞' => '裞', + '䘵' => '䘵', + '裺' => '裺', + '㒻' => 'ã’»', + '𧢮' => '𧢮', + '𧥦' => '𧥦', + 'ð¯§' => 'äš¾', + '䛇' => '䛇', + 'ð¯§' => 'èª ', + 'ð¯§' => 'è«', + '變' => '變', + '豕' => '豕', + '𧲨' => '𧲨', + '貫' => '貫', + '賁' => 'è³', + '贛' => 'è´›', + '起' => 'èµ·', + '𧼯' => '𧼯', + '𠠄' => 'ð „', + '跋' => 'è·‹', + '趼' => '趼', + '跰' => 'è·°', + 'ð¯§' => '𠣞', + '軔' => 'è»”', + '輸' => '輸', + '𨗒' => '𨗒', + '𨗭' => 'ð¨—', + '邔' => 'é‚”', + '郱' => '郱', + '鄑' => 'é„‘', + '𨜮' => '𨜮', + '鄛' => 'é„›', + '鈸' => '鈸', + '鋗' => 'é‹—', + '鋘' => '鋘', + '鉼' => '鉼', + '鏹' => 'é¹', + '鐕' => 'é•', + 'ð¯§' => '𨯺', + '開' => 'é–‹', + '䦕' => '䦕', + '閷' => 'é–·', + '𨵷' => '𨵷', + '䧦' => '䧦', + '雃' => '雃', + '嶲' => '嶲', + '霣' => '霣', + '𩅅' => 'ð©……', + '𩈚' => '𩈚', + '䩮' => 'ä©®', + '䩶' => '䩶', + '韠' => 'éŸ ', + '𩐊' => 'ð©Š', + '䪲' => '䪲', + '𩒖' => 'ð©’–', + '頋' => 'é ‹', + '頋' => 'é ‹', + '頩' => 'é ©', + 'ð¯¨' => 'ð©–¶', + '飢' => '飢', + '䬳' => '䬳', + '餩' => '餩', + '馧' => '馧', + '駂' => '駂', + '駾' => '駾', + '䯎' => '䯎', + '𩬰' => '𩬰', + '鬒' => '鬒', + '鱀' => 'é±€', + '鳽' => 'é³½', + 'ð¯¨' => '䳎', + '䳭' => 'ä³', + 'ð¯¨' => '鵧', + 'ð¯¨' => '𪃎', + '䳸' => '䳸', + '𪄅' => '𪄅', + '𪈎' => '𪈎', + '𪊑' => '𪊑', + '麻' => '麻', + '䵖' => 'äµ–', + '黹' => '黹', + '黾' => '黾', + '鼅' => 'é¼…', + '鼏' => 'é¼', + '鼖' => 'é¼–', + '鼻' => 'é¼»', + 'ð¯¨' => '𪘀', + 'Æ' => 'AE', + 'Ã' => 'D', + 'Ø' => 'O', + 'Þ' => 'TH', + 'ß' => 'ss', + 'æ' => 'ae', + 'ð' => 'd', + 'ø' => 'o', + 'þ' => 'th', + 'Ä' => 'D', + 'Ä‘' => 'd', + 'Ħ' => 'H', + 'ħ' => 'h', + 'ı' => 'i', + 'ĸ' => 'q', + 'Å' => 'L', + 'Å‚' => 'l', + 'ÅŠ' => 'N', + 'Å‹' => 'n', + 'Å’' => 'OE', + 'Å“' => 'oe', + 'Ŧ' => 'T', + 'ŧ' => 't', + 'Æ€' => 'b', + 'Æ' => 'B', + 'Æ‚' => 'B', + 'ƃ' => 'b', + 'Ƈ' => 'C', + 'ƈ' => 'c', + 'Ɖ' => 'D', + 'ÆŠ' => 'D', + 'Æ‹' => 'D', + 'ÆŒ' => 'd', + 'Æ' => 'E', + 'Æ‘' => 'F', + 'Æ’' => 'f', + 'Æ“' => 'G', + 'Æ•' => 'hv', + 'Æ–' => 'I', + 'Æ—' => 'I', + 'Ƙ' => 'K', + 'Æ™' => 'k', + 'Æš' => 'l', + 'Æ' => 'N', + 'Æž' => 'n', + 'Æ¢' => 'OI', + 'Æ£' => 'oi', + 'Ƥ' => 'P', + 'Æ¥' => 'p', + 'Æ«' => 't', + 'Ƭ' => 'T', + 'Æ' => 't', + 'Æ®' => 'T', + 'Ʋ' => 'V', + 'Ƴ' => 'Y', + 'Æ´' => 'y', + 'Ƶ' => 'Z', + 'ƶ' => 'z', + 'Ǥ' => 'G', + 'Ç¥' => 'g', + 'È¡' => 'd', + 'Ȥ' => 'Z', + 'È¥' => 'z', + 'È´' => 'l', + 'ȵ' => 'n', + 'ȶ' => 't', + 'È·' => 'j', + 'ȸ' => 'db', + 'ȹ' => 'qp', + 'Ⱥ' => 'A', + 'È»' => 'C', + 'ȼ' => 'c', + 'Ƚ' => 'L', + 'Ⱦ' => 'T', + 'È¿' => 's', + 'É€' => 'z', + 'Ƀ' => 'B', + 'É„' => 'U', + 'Ɇ' => 'E', + 'ɇ' => 'e', + 'Ɉ' => 'J', + 'ɉ' => 'j', + 'ÉŒ' => 'R', + 'É' => 'r', + 'ÉŽ' => 'Y', + 'É' => 'y', + 'É“' => 'b', + 'É•' => 'c', + 'É–' => 'd', + 'É—' => 'd', + 'É›' => 'e', + 'ÉŸ' => 'j', + 'É ' => 'g', + 'É¡' => 'g', + 'É¢' => 'G', + 'ɦ' => 'h', + 'ɧ' => 'h', + 'ɨ' => 'i', + 'ɪ' => 'I', + 'É«' => 'l', + 'ɬ' => 'l', + 'É' => 'l', + 'ɱ' => 'm', + 'ɲ' => 'n', + 'ɳ' => 'n', + 'É´' => 'N', + 'ɶ' => 'OE', + 'ɼ' => 'r', + 'ɽ' => 'r', + 'ɾ' => 'r', + 'Ê€' => 'R', + 'Ê‚' => 's', + 'ʈ' => 't', + 'ʉ' => 'u', + 'Ê‹' => 'v', + 'Ê' => 'Y', + 'Ê' => 'z', + 'Ê‘' => 'z', + 'Ê™' => 'B', + 'Ê›' => 'G', + 'Êœ' => 'H', + 'Ê' => 'j', + 'ÊŸ' => 'L', + 'Ê ' => 'q', + 'Ê£' => 'dz', + 'Ê¥' => 'dz', + 'ʦ' => 'ts', + 'ʪ' => 'ls', + 'Ê«' => 'lz', + 'á´€' => 'A', + 'á´' => 'AE', + 'á´ƒ' => 'B', + 'á´„' => 'C', + 'á´…' => 'D', + 'á´†' => 'D', + 'á´‡' => 'E', + 'á´Š' => 'J', + 'á´‹' => 'K', + 'á´Œ' => 'L', + 'á´' => 'M', + 'á´' => 'O', + 'á´˜' => 'P', + 'á´›' => 'T', + 'á´œ' => 'U', + 'á´ ' => 'V', + 'á´¡' => 'W', + 'á´¢' => 'Z', + 'ᵫ' => 'ue', + 'ᵬ' => 'b', + 'áµ' => 'd', + 'áµ®' => 'f', + 'ᵯ' => 'm', + 'áµ°' => 'n', + 'áµ±' => 'p', + 'áµ²' => 'r', + 'áµ³' => 'r', + 'áµ´' => 's', + 'áµµ' => 't', + 'ᵶ' => 'z', + 'ᵺ' => 'th', + 'áµ»' => 'I', + 'áµ½' => 'p', + 'áµ¾' => 'U', + 'ᶀ' => 'b', + 'á¶' => 'd', + 'ᶂ' => 'f', + 'ᶃ' => 'g', + 'ᶄ' => 'k', + 'ᶅ' => 'l', + 'ᶆ' => 'm', + 'ᶇ' => 'n', + 'ᶈ' => 'p', + 'ᶉ' => 'r', + 'ᶊ' => 's', + 'ᶌ' => 'v', + 'á¶' => 'x', + 'ᶎ' => 'z', + 'á¶' => 'a', + 'ᶑ' => 'd', + 'ᶒ' => 'e', + 'ᶓ' => 'e', + 'ᶖ' => 'i', + 'ᶙ' => 'u', + 'ẜ' => 's', + 'áº' => 's', + 'ẞ' => 'SS', + 'Ỻ' => 'LL', + 'á»»' => 'll', + 'Ỽ' => 'V', + 'ỽ' => 'v', + 'Ỿ' => 'Y', + 'ỿ' => 'y', + '©' => '(C)', + '®' => '(R)', + 'â‚ ' => 'CE', + 'â‚¢' => 'Cr', + 'â‚£' => 'Fr.', + '₤' => 'L.', + '₧' => 'Pts', + '₺' => 'TL', + '₹' => 'Rs', + 'â„ž' => 'Rx', + '〇' => '0', + '‘' => '\'', + '’' => '\'', + '‚' => ',', + '‛' => '\'', + '“' => '"', + 'â€' => '"', + '„' => ',,', + '‟' => '"', + '′' => '\'', + 'ã€' => '"', + '〞' => '"', + '«' => '<<', + '»' => '>>', + '‹' => '<', + '›' => '>', + 'â€' => '-', + '‑' => '-', + '‒' => '-', + '–' => '-', + '—' => '-', + '―' => '-', + '︱' => '-', + '︲' => '-', + '‖' => '||', + 'â„' => '/', + 'â…' => '[', + 'â†' => ']', + 'âŽ' => '*', + 'ã€' => ',', + '。' => '.', + '〈' => '<', + '〉' => '>', + '《' => '<<', + '》' => '>>', + '〔' => '[', + '〕' => ']', + '〘' => '[', + '〙' => ']', + '〚' => '[', + '〛' => ']', + 'ï¸' => ',', + '︑' => ',', + '︒' => '.', + '︓' => ':', + '︔' => ';', + '︕' => '!', + '︖' => '?', + '︙' => '...', + '︰' => '..', + '︵' => '(', + '︶' => ')', + '︷' => '{', + '︸' => '}', + '︹' => '[', + '︺' => ']', + '︽' => '<<', + '︾' => '>>', + '︿' => '<', + 'ï¹€' => '>', + '﹇' => '[', + '﹈' => ']', + '×' => '*', + '÷' => '/', + '−' => '-', + '∕' => '/', + '∖' => '\\', + '∣' => '|', + '∥' => '||', + '≪' => '<<', + '≫' => '>>', + '⦅' => '((', + '⦆' => '))', +); + +$result =& $data; +unset($data); + +return $result; diff --git a/civicrm/vendor/symfony/polyfill-iconv/bootstrap.php b/civicrm/vendor/symfony/polyfill-iconv/bootstrap.php new file mode 100644 index 0000000000000000000000000000000000000000..52747329d19bbd00debbd11bdbaf35da7c810338 --- /dev/null +++ b/civicrm/vendor/symfony/polyfill-iconv/bootstrap.php @@ -0,0 +1,44 @@ +<?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\Iconv as p; + +if (!function_exists('iconv')) { + define('ICONV_IMPL', 'Symfony'); + define('ICONV_VERSION', '1.0'); + define('ICONV_MIME_DECODE_STRICT', 1); + define('ICONV_MIME_DECODE_CONTINUE_ON_ERROR', 2); + + function iconv($from, $to, $s) { return p\Iconv::iconv($from, $to, $s); } + function iconv_get_encoding($type = 'all') { return p\Iconv::iconv_get_encoding($type); } + function iconv_set_encoding($type, $charset) { return p\Iconv::iconv_set_encoding($type, $charset); } + function iconv_mime_encode($name, $value, $pref = null) { return p\Iconv::iconv_mime_encode($name, $value, $pref); } + function iconv_mime_decode_headers($encodedHeaders, $mode = 0, $enc = null) { return p\Iconv::iconv_mime_decode_headers($encodedHeaders, $mode, $enc); } + + if (extension_loaded('mbstring')) { + function iconv_strlen($s, $enc = null) { null === $enc and $enc = p\Iconv::$internalEncoding; return mb_strlen($s, $enc); } + function iconv_strpos($s, $needle, $offset = 0, $enc = null) { null === $enc and $enc = p\Iconv::$internalEncoding; return mb_strpos($s, $needle, $offset, $enc); } + function iconv_strrpos($s, $needle, $enc = null) { null === $enc and $enc = p\Iconv::$internalEncoding; return mb_strrpos($s, $needle, 0, $enc); } + function iconv_substr($s, $start, $length = 2147483647, $enc = null) { null === $enc and $enc = p\Iconv::$internalEncoding; return mb_substr($s, $start, $length, $enc); } + function iconv_mime_decode($encodedHeaders, $mode = 0, $enc = null) { null === $enc and $enc = p\Iconv::$internalEncoding; return mb_decode_mimeheader($encodedHeaders, $mode, $enc); } + } else { + if (extension_loaded('xml')) { + function iconv_strlen($s, $enc = null) { return p\Iconv::strlen1($s, $enc); } + } else { + function iconv_strlen($s, $enc = null) { return p\Iconv::strlen2($s, $enc); } + } + + function iconv_strpos($s, $needle, $offset = 0, $enc = null) { return p\Iconv::iconv_strpos($s, $needle, $offset, $enc); } + function iconv_strrpos($s, $needle, $enc = null) { return p\Iconv::iconv_strrpos($s, $needle, $enc); } + function iconv_substr($s, $start, $length = 2147483647, $enc = null) { return p\Iconv::iconv_substr($s, $start, $length, $enc); } + function iconv_mime_decode($encodedHeaders, $mode = 0, $enc = null) { return p\Iconv::iconv_mime_decode($encodedHeaders, $mode, $enc); } + } +} diff --git a/civicrm/vendor/symfony/polyfill-iconv/composer.json b/civicrm/vendor/symfony/polyfill-iconv/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..816e6bd7ffe11f0c4273be2e3d472605782bb9af --- /dev/null +++ b/civicrm/vendor/symfony/polyfill-iconv/composer.json @@ -0,0 +1,34 @@ +{ + "name": "symfony/polyfill-iconv", + "type": "library", + "description": "Symfony polyfill for the Iconv extension", + "keywords": ["polyfill", "shim", "compatibility", "portable", "iconv"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=5.3.3" + }, + "autoload": { + "psr-4": { "Symfony\\Polyfill\\Iconv\\": "" }, + "files": [ "bootstrap.php" ] + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + } +} diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/CHANGELOG.md b/civicrm/vendor/symfony/process/CHANGELOG.md similarity index 100% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/CHANGELOG.md rename to civicrm/vendor/symfony/process/CHANGELOG.md diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/Exception/ExceptionInterface.php b/civicrm/vendor/symfony/process/Exception/ExceptionInterface.php similarity index 100% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/Exception/ExceptionInterface.php rename to civicrm/vendor/symfony/process/Exception/ExceptionInterface.php diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/Exception/InvalidArgumentException.php b/civicrm/vendor/symfony/process/Exception/InvalidArgumentException.php similarity index 100% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/Exception/InvalidArgumentException.php rename to civicrm/vendor/symfony/process/Exception/InvalidArgumentException.php diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/Exception/LogicException.php b/civicrm/vendor/symfony/process/Exception/LogicException.php similarity index 100% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/Exception/LogicException.php rename to civicrm/vendor/symfony/process/Exception/LogicException.php diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/Exception/ProcessFailedException.php b/civicrm/vendor/symfony/process/Exception/ProcessFailedException.php similarity index 86% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/Exception/ProcessFailedException.php rename to civicrm/vendor/symfony/process/Exception/ProcessFailedException.php index 7523a5e9cd4ea2c16390e0904968777941f3df02..328acfde5e88358313c365de13738d70a66755f1 100644 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/Exception/ProcessFailedException.php +++ b/civicrm/vendor/symfony/process/Exception/ProcessFailedException.php @@ -28,10 +28,11 @@ class ProcessFailedException extends RuntimeException throw new InvalidArgumentException('Expected a failed process, but the given process was successful.'); } - $error = sprintf('The command "%s" failed.'."\nExit Code: %s(%s)", + $error = sprintf('The command "%s" failed.'."\n\nExit Code: %s(%s)\n\nWorking directory: %s", $process->getCommandLine(), $process->getExitCode(), - $process->getExitCodeText() + $process->getExitCodeText(), + $process->getWorkingDirectory() ); if (!$process->isOutputDisabled()) { diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/Exception/ProcessTimedOutException.php b/civicrm/vendor/symfony/process/Exception/ProcessTimedOutException.php similarity index 93% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/Exception/ProcessTimedOutException.php rename to civicrm/vendor/symfony/process/Exception/ProcessTimedOutException.php index d45114696f640d9a05a4eea92ce1fa1b203d2a4a..fef4a8ae867b85c5b4728af1098891bcc00ef5a6 100644 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/Exception/ProcessTimedOutException.php +++ b/civicrm/vendor/symfony/process/Exception/ProcessTimedOutException.php @@ -45,12 +45,12 @@ class ProcessTimedOutException extends RuntimeException public function isGeneralTimeout() { - return $this->timeoutType === self::TYPE_GENERAL; + return self::TYPE_GENERAL === $this->timeoutType; } public function isIdleTimeout() { - return $this->timeoutType === self::TYPE_IDLE; + return self::TYPE_IDLE === $this->timeoutType; } public function getExceededTimeout() diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/Exception/RuntimeException.php b/civicrm/vendor/symfony/process/Exception/RuntimeException.php similarity index 100% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/Exception/RuntimeException.php rename to civicrm/vendor/symfony/process/Exception/RuntimeException.php diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/ExecutableFinder.php b/civicrm/vendor/symfony/process/ExecutableFinder.php similarity index 81% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/ExecutableFinder.php rename to civicrm/vendor/symfony/process/ExecutableFinder.php index a9c0a5c8795bf2b525a8534e008bdc740c96b271..ccfa4c09b09ae0849b21ab160ea0129ef4dba482 100644 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/ExecutableFinder.php +++ b/civicrm/vendor/symfony/process/ExecutableFinder.php @@ -23,8 +23,6 @@ class ExecutableFinder /** * Replaces default suffixes of executable. - * - * @param array $suffixes */ public function setSuffixes(array $suffixes) { @@ -56,10 +54,11 @@ class ExecutableFinder $searchPath = explode(PATH_SEPARATOR, ini_get('open_basedir')); $dirs = array(); foreach ($searchPath as $path) { - if (is_dir($path)) { + // Silencing against https://bugs.php.net/69240 + if (@is_dir($path)) { $dirs[] = $path; } else { - if (basename($path) == $name && is_executable($path)) { + if (basename($path) == $name && @is_executable($path)) { return $path; } } @@ -72,13 +71,13 @@ class ExecutableFinder } $suffixes = array(''); - if ('\\' === DIRECTORY_SEPARATOR) { + if ('\\' === \DIRECTORY_SEPARATOR) { $pathExt = getenv('PATHEXT'); - $suffixes = $pathExt ? explode(PATH_SEPARATOR, $pathExt) : $this->suffixes; + $suffixes = array_merge($pathExt ? explode(PATH_SEPARATOR, $pathExt) : $this->suffixes, $suffixes); } foreach ($suffixes as $suffix) { foreach ($dirs as $dir) { - if (is_file($file = $dir.DIRECTORY_SEPARATOR.$name.$suffix) && ('\\' === DIRECTORY_SEPARATOR || is_executable($file))) { + if (@is_file($file = $dir.\DIRECTORY_SEPARATOR.$name.$suffix) && ('\\' === \DIRECTORY_SEPARATOR || @is_executable($file))) { return $file; } } diff --git a/civicrm/vendor/symfony/process/LICENSE b/civicrm/vendor/symfony/process/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..21d7fb9e2f29b50caca3a76f0647e94e2cc8ddc1 --- /dev/null +++ b/civicrm/vendor/symfony/process/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2004-2018 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 +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/process/Symfony/Component/Process/PhpExecutableFinder.php b/civicrm/vendor/symfony/process/PhpExecutableFinder.php similarity index 68% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/PhpExecutableFinder.php rename to civicrm/vendor/symfony/process/PhpExecutableFinder.php index f8f57cc536a2532246852078ec1228552a233176..933c02b3ecc3a72f766a3975c3cf0a4dd0676617 100644 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/PhpExecutableFinder.php +++ b/civicrm/vendor/symfony/process/PhpExecutableFinder.php @@ -35,18 +35,21 @@ class PhpExecutableFinder */ public function find($includeArgs = true) { + $args = $this->findArguments(); + $args = $includeArgs && $args ? ' '.implode(' ', $args) : ''; + // HHVM support - if (defined('HHVM_VERSION')) { - return (getenv('PHP_BINARY') ?: PHP_BINARY).($includeArgs ? ' '.implode(' ', $this->findArguments()) : ''); + if (\defined('HHVM_VERSION')) { + return (getenv('PHP_BINARY') ?: PHP_BINARY).$args; } // PHP_BINARY return the current sapi executable - if (defined('PHP_BINARY') && PHP_BINARY && in_array(PHP_SAPI, array('cli', 'cli-server')) && is_file(PHP_BINARY)) { - return PHP_BINARY; + if (\defined('PHP_BINARY') && PHP_BINARY && \in_array(\PHP_SAPI, array('cli', 'cli-server', 'phpdbg'), true)) { + return PHP_BINARY.$args; } if ($php = getenv('PHP_PATH')) { - if (!is_executable($php)) { + if (!@is_executable($php)) { return false; } @@ -54,13 +57,17 @@ class PhpExecutableFinder } if ($php = getenv('PHP_PEAR_PHP_BIN')) { - if (is_executable($php)) { + if (@is_executable($php)) { return $php; } } + if (@is_executable($php = PHP_BINDIR.('\\' === \DIRECTORY_SEPARATOR ? '\\php.exe' : '/php'))) { + return $php; + } + $dirs = array(PHP_BINDIR); - if ('\\' === DIRECTORY_SEPARATOR) { + if ('\\' === \DIRECTORY_SEPARATOR) { $dirs[] = 'C:\xampp\php\\'; } @@ -76,9 +83,10 @@ class PhpExecutableFinder { $arguments = array(); - // HHVM support - if (defined('HHVM_VERSION')) { + if (\defined('HHVM_VERSION')) { $arguments[] = '--php'; + } elseif ('phpdbg' === \PHP_SAPI) { + $arguments[] = '-qrr'; } return $arguments; diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/PhpProcess.php b/civicrm/vendor/symfony/process/PhpProcess.php similarity index 54% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/PhpProcess.php rename to civicrm/vendor/symfony/process/PhpProcess.php index 6a5858748a16501677c8354f40d0bad45096cd06..6bf6bb67495b26ea9adf1b92a1415e6e553a9c8b 100644 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/PhpProcess.php +++ b/civicrm/vendor/symfony/process/PhpProcess.php @@ -21,36 +21,41 @@ use Symfony\Component\Process\Exception\RuntimeException; * print $p->getOutput()."\n"; * * @author Fabien Potencier <fabien@symfony.com> - * - * @api */ class PhpProcess extends Process { /** - * Constructor. - * - * @param string $script The PHP script to run (as a string) - * @param string $cwd The working directory - * @param array $env The environment variables - * @param int $timeout The timeout in seconds - * @param array $options An array of options for proc_open - * - * @api + * @param string $script The PHP script to run (as a string) + * @param string|null $cwd The working directory or null to use the working dir of the current PHP process + * @param array|null $env The environment variables or null to use the same environment as the current PHP process + * @param int $timeout The timeout in seconds + * @param array $options An array of options for proc_open */ - public function __construct($script, $cwd = null, array $env = array(), $timeout = 60, array $options = array()) + public function __construct($script, $cwd = null, array $env = null, $timeout = 60, array $options = array()) { $executableFinder = new PhpExecutableFinder(); if (false === $php = $executableFinder->find()) { $php = null; } + if ('phpdbg' === \PHP_SAPI) { + $file = tempnam(sys_get_temp_dir(), 'dbg'); + file_put_contents($file, $script); + register_shutdown_function('unlink', $file); + $php .= ' '.ProcessUtils::escapeArgument($file); + $script = null; + } + if ('\\' !== \DIRECTORY_SEPARATOR && null !== $php) { + // exec is mandatory to deal with sending a signal to the process + // see https://github.com/symfony/symfony/issues/5030 about prepending + // command with exec + $php = 'exec '.$php; + } parent::__construct($php, $cwd, $env, $script, $timeout, $options); } /** * Sets the path to the PHP binary to use. - * - * @api */ public function setPhpBinary($php) { diff --git a/civicrm/vendor/symfony/process/Pipes/AbstractPipes.php b/civicrm/vendor/symfony/process/Pipes/AbstractPipes.php new file mode 100644 index 0000000000000000000000000000000000000000..bd4a459c4a65d279ca36c3f67ea75d04908d9d82 --- /dev/null +++ b/civicrm/vendor/symfony/process/Pipes/AbstractPipes.php @@ -0,0 +1,150 @@ +<?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\Component\Process\Pipes; + +/** + * @author Romain Neutron <imprec@gmail.com> + * + * @internal + */ +abstract class AbstractPipes implements PipesInterface +{ + public $pipes = array(); + + private $inputBuffer = ''; + private $input; + private $blocked = true; + private $lastError; + + /** + * @param resource|null $input + */ + public function __construct($input) + { + if (\is_resource($input)) { + $this->input = $input; + } elseif (\is_string($input)) { + $this->inputBuffer = $input; + } else { + $this->inputBuffer = (string) $input; + } + } + + /** + * {@inheritdoc} + */ + public function close() + { + foreach ($this->pipes as $pipe) { + fclose($pipe); + } + $this->pipes = array(); + } + + /** + * Returns true if a system call has been interrupted. + * + * @return bool + */ + protected function hasSystemCallBeenInterrupted() + { + $lastError = $this->lastError; + $this->lastError = null; + + // stream_select returns false when the `select` system call is interrupted by an incoming signal + return null !== $lastError && false !== stripos($lastError, 'interrupted system call'); + } + + /** + * Unblocks streams. + */ + protected function unblock() + { + if (!$this->blocked) { + return; + } + + foreach ($this->pipes as $pipe) { + stream_set_blocking($pipe, 0); + } + if (null !== $this->input) { + stream_set_blocking($this->input, 0); + } + + $this->blocked = false; + } + + /** + * Writes input to stdin. + */ + protected function write() + { + if (!isset($this->pipes[0])) { + return; + } + $input = $this->input; + $r = $e = array(); + $w = array($this->pipes[0]); + + // let's have a look if something changed in streams + if (false === @stream_select($r, $w, $e, 0, 0)) { + return; + } + + foreach ($w as $stdin) { + if (isset($this->inputBuffer[0])) { + $written = fwrite($stdin, $this->inputBuffer); + $this->inputBuffer = substr($this->inputBuffer, $written); + if (isset($this->inputBuffer[0])) { + return array($this->pipes[0]); + } + } + + if ($input) { + for (;;) { + $data = fread($input, self::CHUNK_SIZE); + if (!isset($data[0])) { + break; + } + $written = fwrite($stdin, $data); + $data = substr($data, $written); + if (isset($data[0])) { + $this->inputBuffer = $data; + + return array($this->pipes[0]); + } + } + if (feof($input)) { + // no more data to read on input resource + // use an empty buffer in the next reads + $this->input = null; + } + } + } + + // no input to read on resource, buffer is empty + if (null === $this->input && !isset($this->inputBuffer[0])) { + fclose($this->pipes[0]); + unset($this->pipes[0]); + } elseif (!$w) { + return array($this->pipes[0]); + } + } + + /** + * @internal + */ + public function handleError($type, $msg) + { + $this->lastError = $msg; + } +} diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/Pipes/PipesInterface.php b/civicrm/vendor/symfony/process/Pipes/PipesInterface.php similarity index 98% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/Pipes/PipesInterface.php rename to civicrm/vendor/symfony/process/Pipes/PipesInterface.php index 09d3f61d6ec940b37262cac97f2888d8117639b1..b91c393d870e4fc7b2136ff048da33774a04667a 100644 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/Pipes/PipesInterface.php +++ b/civicrm/vendor/symfony/process/Pipes/PipesInterface.php @@ -39,10 +39,10 @@ interface PipesInterface /** * Reads data in file handles and pipes. * - * @param bool $blocking Whether to use blocking calls or not. - * @param bool $close Whether to close pipes if they've reached EOF. + * @param bool $blocking Whether to use blocking calls or not + * @param bool $close Whether to close pipes if they've reached EOF * - * @return string[] An array of read data indexed by their fd. + * @return string[] An array of read data indexed by their fd */ public function readAndWrite($blocking, $close = false); diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/Pipes/UnixPipes.php b/civicrm/vendor/symfony/process/Pipes/UnixPipes.php similarity index 52% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/Pipes/UnixPipes.php rename to civicrm/vendor/symfony/process/Pipes/UnixPipes.php index b3841031c4c4ed14a18d96c87fabbc6f42016188..935c43209d9dafdb06be58089c94559639e97962 100644 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/Pipes/UnixPipes.php +++ b/civicrm/vendor/symfony/process/Pipes/UnixPipes.php @@ -22,11 +22,8 @@ use Symfony\Component\Process\Process; */ class UnixPipes extends AbstractPipes { - /** @var bool */ private $ttyMode; - /** @var bool */ private $ptyMode; - /** @var bool */ private $disableOutput; public function __construct($ttyMode, $ptyMode, $input, $disableOutput) @@ -35,11 +32,7 @@ class UnixPipes extends AbstractPipes $this->ptyMode = (bool) $ptyMode; $this->disableOutput = (bool) $disableOutput; - if (is_resource($input)) { - $this->input = $input; - } else { - $this->inputBuffer = (string) $input; - } + parent::__construct($input); } public function __destruct() @@ -98,36 +91,17 @@ class UnixPipes extends AbstractPipes */ public function readAndWrite($blocking, $close = false) { - // only stdin is left open, job has been done ! - // we can now close it - if (1 === count($this->pipes) && array(0) === array_keys($this->pipes)) { - fclose($this->pipes[0]); - unset($this->pipes[0]); - } - - if (empty($this->pipes)) { - return array(); - } - $this->unblock(); + $w = $this->write(); - $read = array(); - - if (null !== $this->input) { - // if input is a resource, let's add it to stream_select argument to - // fill a buffer - $r = array_merge($this->pipes, array('input' => $this->input)); - } else { - $r = $this->pipes; - } - // discard read on stdin + $read = $e = array(); + $r = $this->pipes; unset($r[0]); - $w = isset($this->pipes[0]) ? array($this->pipes[0]) : null; - $e = null; - // let's have a look if something changed in streams - if (false === $n = @stream_select($r, $w, $e, 0, $blocking ? Process::TIMEOUT_PRECISION * 1E6 : 0)) { + set_error_handler(array($this, 'handleError')); + if (($r || $w) && false === stream_select($r, $w, $e, 0, $blocking ? Process::TIMEOUT_PRECISION * 1E6 : 0)) { + restore_error_handler(); // if a system call has been interrupted, forget about it, let's try again // otherwise, an error occurred, let's reset pipes if (!$this->hasSystemCallBeenInterrupted()) { @@ -136,58 +110,28 @@ class UnixPipes extends AbstractPipes return $read; } - - // nothing has changed - if (0 === $n) { - return $read; - } + restore_error_handler(); foreach ($r as $pipe) { // prior PHP 5.4 the array passed to stream_select is modified and // lose key association, we have to find back the key - $type = (false !== $found = array_search($pipe, $this->pipes)) ? $found : 'input'; - $data = ''; - while ('' !== $dataread = (string) fread($pipe, self::CHUNK_SIZE)) { - $data .= $dataread; - } + $read[$type = array_search($pipe, $this->pipes, true)] = ''; - if ('' !== $data) { - if ($type === 'input') { - $this->inputBuffer .= $data; - } else { - $read[$type] = $data; - } - } + do { + $data = fread($pipe, self::CHUNK_SIZE); + $read[$type] .= $data; + } while (isset($data[0]) && ($close || isset($data[self::CHUNK_SIZE - 1]))); - if (false === $data || (true === $close && feof($pipe) && '' === $data)) { - if ($type === 'input') { - // no more data to read on input resource - // use an empty buffer in the next reads - $this->input = null; - } else { - fclose($this->pipes[$type]); - unset($this->pipes[$type]); - } + if (!isset($read[$type][0])) { + unset($read[$type]); } - } - if (null !== $w && 0 < count($w)) { - while (strlen($this->inputBuffer)) { - $written = fwrite($w[0], $this->inputBuffer, 2 << 18); // write 512k - if ($written > 0) { - $this->inputBuffer = (string) substr($this->inputBuffer, $written); - } else { - break; - } + if ($close && feof($pipe)) { + fclose($pipe); + unset($this->pipes[$type]); } } - // no input to read on resource, buffer is empty and stdin still open - if ('' === $this->inputBuffer && null === $this->input && isset($this->pipes[0])) { - fclose($this->pipes[0]); - unset($this->pipes[0]); - } - return $read; } @@ -200,12 +144,12 @@ class UnixPipes extends AbstractPipes } /** - * Creates a new UnixPipes instance + * Creates a new UnixPipes instance. * * @param Process $process * @param string|resource $input * - * @return UnixPipes + * @return static */ public static function create(Process $process, $input) { diff --git a/civicrm/vendor/symfony/process/Pipes/WindowsPipes.php b/civicrm/vendor/symfony/process/Pipes/WindowsPipes.php new file mode 100644 index 0000000000000000000000000000000000000000..f81f65facae1681e64651fda5edaa4ec78462908 --- /dev/null +++ b/civicrm/vendor/symfony/process/Pipes/WindowsPipes.php @@ -0,0 +1,201 @@ +<?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\Component\Process\Pipes; + +use Symfony\Component\Process\Exception\RuntimeException; +use Symfony\Component\Process\Process; + +/** + * WindowsPipes implementation uses temporary files as handles. + * + * @see https://bugs.php.net/bug.php?id=51800 + * @see https://bugs.php.net/bug.php?id=65650 + * + * @author Romain Neutron <imprec@gmail.com> + * + * @internal + */ +class WindowsPipes extends AbstractPipes +{ + private $files = array(); + private $fileHandles = array(); + private $readBytes = array( + Process::STDOUT => 0, + Process::STDERR => 0, + ); + private $disableOutput; + + public function __construct($disableOutput, $input) + { + $this->disableOutput = (bool) $disableOutput; + + if (!$this->disableOutput) { + // Fix for PHP bug #51800: reading from STDOUT pipe hangs forever on Windows if the output is too big. + // Workaround for this problem is to use temporary files instead of pipes on Windows platform. + // + // @see https://bugs.php.net/bug.php?id=51800 + $pipes = array( + Process::STDOUT => Process::OUT, + Process::STDERR => Process::ERR, + ); + $tmpCheck = false; + $tmpDir = sys_get_temp_dir(); + $lastError = 'unknown reason'; + set_error_handler(function ($type, $msg) use (&$lastError) { $lastError = $msg; }); + for ($i = 0;; ++$i) { + foreach ($pipes as $pipe => $name) { + $file = sprintf('%s\\sf_proc_%02X.%s', $tmpDir, $i, $name); + if (file_exists($file) && !unlink($file)) { + continue 2; + } + $h = fopen($file, 'xb'); + if (!$h) { + $error = $lastError; + if ($tmpCheck || $tmpCheck = unlink(tempnam(false, 'sf_check_'))) { + continue; + } + restore_error_handler(); + throw new RuntimeException(sprintf('A temporary file could not be opened to write the process output: %s', $error)); + } + if (!$h || !$this->fileHandles[$pipe] = fopen($file, 'rb')) { + continue 2; + } + if (isset($this->files[$pipe])) { + unlink($this->files[$pipe]); + } + $this->files[$pipe] = $file; + } + break; + } + restore_error_handler(); + } + + parent::__construct($input); + } + + public function __destruct() + { + $this->close(); + $this->removeFiles(); + } + + /** + * {@inheritdoc} + */ + public function getDescriptors() + { + if ($this->disableOutput) { + $nullstream = fopen('NUL', 'c'); + + return array( + array('pipe', 'r'), + $nullstream, + $nullstream, + ); + } + + // We're not using pipe on Windows platform as it hangs (https://bugs.php.net/bug.php?id=51800) + // We're not using file handles as it can produce corrupted output https://bugs.php.net/bug.php?id=65650 + // So we redirect output within the commandline and pass the nul device to the process + return array( + array('pipe', 'r'), + array('file', 'NUL', 'w'), + array('file', 'NUL', 'w'), + ); + } + + /** + * {@inheritdoc} + */ + public function getFiles() + { + return $this->files; + } + + /** + * {@inheritdoc} + */ + public function readAndWrite($blocking, $close = false) + { + $this->unblock(); + $w = $this->write(); + $read = $r = $e = array(); + + if ($blocking) { + if ($w) { + @stream_select($r, $w, $e, 0, Process::TIMEOUT_PRECISION * 1E6); + } elseif ($this->fileHandles) { + usleep(Process::TIMEOUT_PRECISION * 1E6); + } + } + foreach ($this->fileHandles as $type => $fileHandle) { + $data = stream_get_contents($fileHandle, -1, $this->readBytes[$type]); + + if (isset($data[0])) { + $this->readBytes[$type] += \strlen($data); + $read[$type] = $data; + } + if ($close) { + fclose($fileHandle); + unset($this->fileHandles[$type]); + } + } + + return $read; + } + + /** + * {@inheritdoc} + */ + public function areOpen() + { + return $this->pipes && $this->fileHandles; + } + + /** + * {@inheritdoc} + */ + public function close() + { + parent::close(); + foreach ($this->fileHandles as $handle) { + fclose($handle); + } + $this->fileHandles = array(); + } + + /** + * Creates a new WindowsPipes instance. + * + * @param Process $process The process + * @param $input + * + * @return static + */ + public static function create(Process $process, $input) + { + return new static($process->isOutputDisabled(), $input); + } + + /** + * Removes temporary files. + */ + private function removeFiles() + { + foreach ($this->files as $filename) { + if (file_exists($filename)) { + @unlink($filename); + } + } + $this->files = array(); + } +} diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/Process.php b/civicrm/vendor/symfony/process/Process.php similarity index 79% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/Process.php rename to civicrm/vendor/symfony/process/Process.php index ba619ce1cc9688e1dd7112f6e057c8bdb11ff5a5..9589136c6b096ea190b5098df2381eef70c1d9d0 100644 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/Process.php +++ b/civicrm/vendor/symfony/process/Process.php @@ -26,8 +26,6 @@ use Symfony\Component\Process\Pipes\WindowsPipes; * * @author Fabien Potencier <fabien@symfony.com> * @author Romain Neutron <imprec@gmail.com> - * - * @api */ class Process { @@ -56,7 +54,7 @@ class Process private $idleTimeout; private $options; private $exitcode; - private $fallbackExitcode; + private $fallbackStatus = array(); private $processInformation; private $outputDisabled = false; private $stdout; @@ -82,8 +80,6 @@ class Process * Exit codes translation table. * * User-defined errors must use exit codes in the 64-113 range. - * - * @var array */ public static $exitCodes = array( 0 => 'OK', @@ -129,22 +125,18 @@ class Process ); /** - * Constructor. - * * @param string $commandline The command line to run * @param string|null $cwd The working directory or null to use the working dir of the current PHP process - * @param array|null $env The environment variables or null to inherit + * @param array|null $env The environment variables or null to use the same environment as the current PHP process * @param string|null $input The input * @param int|float|null $timeout The timeout in seconds or null to disable * @param array $options An array of options for proc_open * * @throws RuntimeException When proc_open is not installed - * - * @api */ public function __construct($commandline, $cwd = null, array $env = null, $input = null, $timeout = 60, array $options = array()) { - if (!function_exists('proc_open')) { + if (!\function_exists('proc_open')) { throw new RuntimeException('The Process class relies on proc_open, which is not available on your PHP installation.'); } @@ -155,26 +147,24 @@ class Process // on Gnu/Linux, PHP builds with --enable-maintainer-zts are also affected // @see : https://bugs.php.net/bug.php?id=51800 // @see : https://bugs.php.net/bug.php?id=50524 - if (null === $this->cwd && (defined('ZEND_THREAD_SAFE') || '\\' === DIRECTORY_SEPARATOR)) { + if (null === $this->cwd && (\defined('ZEND_THREAD_SAFE') || '\\' === \DIRECTORY_SEPARATOR)) { $this->cwd = getcwd(); } if (null !== $env) { $this->setEnv($env); } - $this->input = $input; + $this->setInput($input); $this->setTimeout($timeout); - $this->useFileHandles = '\\' === DIRECTORY_SEPARATOR; + $this->useFileHandles = '\\' === \DIRECTORY_SEPARATOR; $this->pty = false; - $this->enhanceWindowsCompatibility = true; - $this->enhanceSigchildCompatibility = '\\' !== DIRECTORY_SEPARATOR && $this->isSigchildEnabled(); + $this->enhanceSigchildCompatibility = '\\' !== \DIRECTORY_SEPARATOR && $this->isSigchildEnabled(); $this->options = array_replace(array('suppress_errors' => true, 'binary_pipes' => true), $options); } public function __destruct() { - // stop() will check if we have a process running. - $this->stop(); + $this->stop(0); } public function __clone() @@ -200,8 +190,6 @@ class Process * @throws RuntimeException When process can't be launched * @throws RuntimeException When process stopped after receiving signal * @throws LogicException In case a callback is provided and output has been disabled - * - * @api */ public function run($callback = null) { @@ -225,7 +213,7 @@ class Process */ public function mustRun($callback = null) { - if ($this->isSigchildEnabled() && !$this->enhanceSigchildCompatibility) { + if (!$this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { throw new RuntimeException('This PHP has been compiled with --enable-sigchild. You must use setEnhanceSigchildCompatibility() to use this method.'); } @@ -247,9 +235,6 @@ class Process * The callback receives the type of output (out or err) and some bytes from * the output in real-time while writing the standard input to the process. * It allows to have feedback from the independent process during execution. - * If there is no callback passed, the wait() method can be called - * with true as a second parameter then the callback will get all data occurred - * in (and since) the start call. * * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR @@ -274,8 +259,8 @@ class Process $commandline = $this->commandline; - if ('\\' === DIRECTORY_SEPARATOR && $this->enhanceWindowsCompatibility) { - $commandline = 'cmd /V:ON /E:ON /C "('.$commandline.')'; + if ('\\' === \DIRECTORY_SEPARATOR && $this->enhanceWindowsCompatibility) { + $commandline = 'cmd /V:ON /E:ON /D /C "('.$commandline.')'; foreach ($this->processPipes->getFiles() as $offset => $filename) { $commandline .= ' '.$offset.'>'.ProcessUtils::escapeArgument($filename); } @@ -284,15 +269,30 @@ class Process if (!isset($this->options['bypass_shell'])) { $this->options['bypass_shell'] = true; } + } elseif (!$this->useFileHandles && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { + // last exit code is output on the fourth pipe and caught to work around --enable-sigchild + $descriptors[3] = array('pipe', 'w'); + + // See https://unix.stackexchange.com/questions/71205/background-process-pipe-input + $commandline = '{ ('.$this->commandline.') <&3 3<&- 3>/dev/null & } 3<&0;'; + $commandline .= 'pid=$!; echo $pid >&3; wait $pid; code=$?; echo $code >&3; exit $code'; + + // Workaround for the bug, when PTS functionality is enabled. + // @see : https://bugs.php.net/69442 + $ptsWorkaround = fopen(__FILE__, 'r'); } $this->process = proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $this->env, $this->options); - if (!is_resource($this->process)) { + if (!\is_resource($this->process)) { throw new RuntimeException('Unable to launch a new process.'); } $this->status = self::STATUS_STARTED; + if (isset($descriptors[3])) { + $this->fallbackStatus['pid'] = (int) fgets($this->processPipes->pipes[3]); + } + if ($this->tty) { return; } @@ -309,7 +309,7 @@ class Process * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * - * @return Process The new process + * @return $this * * @throws RuntimeException When process can't be launched * @throws RuntimeException When process is already running @@ -354,9 +354,8 @@ class Process do { $this->checkTimeout(); - $running = '\\' === DIRECTORY_SEPARATOR ? $this->isRunning() : $this->processPipes->areOpen(); - $close = '\\' !== DIRECTORY_SEPARATOR || !$running; - $this->readPipes(true, $close); + $running = '\\' === \DIRECTORY_SEPARATOR ? $this->isRunning() : $this->processPipes->areOpen(); + $this->readPipes($running, '\\' !== \DIRECTORY_SEPARATOR || !$running); } while ($running); while ($this->isRunning()) { @@ -374,17 +373,9 @@ class Process * Returns the Pid (process identifier), if applicable. * * @return int|null The process id if running, null otherwise - * - * @throws RuntimeException In case --enable-sigchild is activated */ public function getPid() { - if ($this->isSigchildEnabled()) { - throw new RuntimeException('This PHP has been compiled with --enable-sigchild. The process identifier can not be retrieved.'); - } - - $this->updateStatus(false); - return $this->isRunning() ? $this->processInformation['pid'] : null; } @@ -393,10 +384,10 @@ class Process * * @param int $signal A valid POSIX signal (see http://www.php.net/manual/en/pcntl.constants.php) * - * @return Process + * @return $this * * @throws LogicException In case the process is not running - * @throws RuntimeException In case --enable-sigchild is activated + * @throws RuntimeException In case --enable-sigchild is activated and the process can't be killed * @throws RuntimeException In case of failure */ public function signal($signal) @@ -409,7 +400,7 @@ class Process /** * Disables fetching output and error output from the underlying process. * - * @return Process + * @return $this * * @throws RuntimeException In case the process is already running * @throws LogicException if an idle timeout is set @@ -431,7 +422,7 @@ class Process /** * Enables fetching output and error output from the underlying process. * - * @return Process + * @return $this * * @throws RuntimeException In case the process is already running */ @@ -463,20 +454,16 @@ class Process * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started - * - * @api */ public function getOutput() { - if ($this->outputDisabled) { - throw new LogicException('Output has been disabled.'); - } + $this->readPipesForOutput(__FUNCTION__); - $this->requireProcessIsStarted(__FUNCTION__); - - $this->readPipes(false, '\\' === DIRECTORY_SEPARATOR ? !$this->processInformation['running'] : true); + if (false === $ret = stream_get_contents($this->stdout, -1, 0)) { + return ''; + } - return $this->stdout; + return $ret; } /** @@ -485,36 +472,34 @@ class Process * In comparison with the getOutput method which always return the whole * output, this one returns the new output since the last call. * + * @return string The process output since the last call + * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started - * - * @return string The process output since the last call */ public function getIncrementalOutput() { - $this->requireProcessIsStarted(__FUNCTION__); - - $data = $this->getOutput(); + $this->readPipesForOutput(__FUNCTION__); - $latest = substr($data, $this->incrementalOutputOffset); + $latest = stream_get_contents($this->stdout, -1, $this->incrementalOutputOffset); + $this->incrementalOutputOffset = ftell($this->stdout); if (false === $latest) { return ''; } - $this->incrementalOutputOffset = strlen($data); - return $latest; } /** * Clears the process output. * - * @return Process + * @return $this */ public function clearOutput() { - $this->stdout = ''; + ftruncate($this->stdout, 0); + fseek($this->stdout, 0); $this->incrementalOutputOffset = 0; return $this; @@ -527,20 +512,16 @@ class Process * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started - * - * @api */ public function getErrorOutput() { - if ($this->outputDisabled) { - throw new LogicException('Output has been disabled.'); - } - - $this->requireProcessIsStarted(__FUNCTION__); + $this->readPipesForOutput(__FUNCTION__); - $this->readPipes(false, '\\' === DIRECTORY_SEPARATOR ? !$this->processInformation['running'] : true); + if (false === $ret = stream_get_contents($this->stderr, -1, 0)) { + return ''; + } - return $this->stderr; + return $ret; } /** @@ -550,36 +531,34 @@ class Process * whole error output, this one returns the new error output since the last * call. * + * @return string The process error output since the last call + * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started - * - * @return string The process error output since the last call */ public function getIncrementalErrorOutput() { - $this->requireProcessIsStarted(__FUNCTION__); - - $data = $this->getErrorOutput(); + $this->readPipesForOutput(__FUNCTION__); - $latest = substr($data, $this->incrementalErrorOutputOffset); + $latest = stream_get_contents($this->stderr, -1, $this->incrementalErrorOutputOffset); + $this->incrementalErrorOutputOffset = ftell($this->stderr); if (false === $latest) { return ''; } - $this->incrementalErrorOutputOffset = strlen($data); - return $latest; } /** * Clears the process output. * - * @return Process + * @return $this */ public function clearErrorOutput() { - $this->stderr = ''; + ftruncate($this->stderr, 0); + fseek($this->stderr, 0); $this->incrementalErrorOutputOffset = 0; return $this; @@ -591,12 +570,10 @@ class Process * @return null|int The exit status code, null if the Process is not terminated * * @throws RuntimeException In case --enable-sigchild is activated and the sigchild compatibility mode is disabled - * - * @api */ public function getExitCode() { - if ($this->isSigchildEnabled() && !$this->enhanceSigchildCompatibility) { + if (!$this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { throw new RuntimeException('This PHP has been compiled with --enable-sigchild. You must use setEnhanceSigchildCompatibility() to use this method.'); } @@ -611,9 +588,7 @@ class Process * This method relies on the Unix exit code status standardization * and might not be relevant for other operating systems. * - * @return null|string A string representation for the exit status code, null if the Process is not terminated. - * - * @throws RuntimeException In case --enable-sigchild is activated and the sigchild compatibility mode is disabled + * @return null|string A string representation for the exit status code, null if the Process is not terminated * * @see http://tldp.org/LDP/abs/html/exitcodes.html * @see http://en.wikipedia.org/wiki/Unix_signal @@ -631,8 +606,6 @@ class Process * Checks if the process ended successfully. * * @return bool true if the process ended successfully, false otherwise - * - * @api */ public function isSuccessful() { @@ -648,19 +621,15 @@ class Process * * @throws RuntimeException In case --enable-sigchild is activated * @throws LogicException In case the process is not terminated - * - * @api */ public function hasBeenSignaled() { $this->requireProcessIsTerminated(__FUNCTION__); - if ($this->isSigchildEnabled()) { + if (!$this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { throw new RuntimeException('This PHP has been compiled with --enable-sigchild. Term signal can not be retrieved.'); } - $this->updateStatus(false); - return $this->processInformation['signaled']; } @@ -673,19 +642,15 @@ class Process * * @throws RuntimeException In case --enable-sigchild is activated * @throws LogicException In case the process is not terminated - * - * @api */ public function getTermSignal() { $this->requireProcessIsTerminated(__FUNCTION__); - if ($this->isSigchildEnabled()) { + if ($this->isSigchildEnabled() && (!$this->enhanceSigchildCompatibility || -1 === $this->processInformation['termsig'])) { throw new RuntimeException('This PHP has been compiled with --enable-sigchild. Term signal can not be retrieved.'); } - $this->updateStatus(false); - return $this->processInformation['termsig']; } @@ -697,15 +662,11 @@ class Process * @return bool * * @throws LogicException In case the process is not terminated - * - * @api */ public function hasBeenStopped() { $this->requireProcessIsTerminated(__FUNCTION__); - $this->updateStatus(false); - return $this->processInformation['stopped']; } @@ -717,15 +678,11 @@ class Process * @return int * * @throws LogicException In case the process is not terminated - * - * @api */ public function getStopSignal() { $this->requireProcessIsTerminated(__FUNCTION__); - $this->updateStatus(false); - return $this->processInformation['stopsig']; } @@ -752,7 +709,7 @@ class Process */ public function isStarted() { - return $this->status != self::STATUS_READY; + return self::STATUS_READY != $this->status; } /** @@ -764,7 +721,7 @@ class Process { $this->updateStatus(false); - return $this->status == self::STATUS_TERMINATED; + return self::STATUS_TERMINATED == $this->status; } /** @@ -785,41 +742,33 @@ class Process * Stops the process. * * @param int|float $timeout The timeout in seconds - * @param int $signal A POSIX signal to send in case the process has not stop at timeout, default is SIGKILL + * @param int $signal A POSIX signal to send in case the process has not stop at timeout, default is SIGKILL (9) * * @return int The exit-code of the process - * - * @throws RuntimeException if the process got signaled */ public function stop($timeout = 10, $signal = null) { $timeoutMicro = microtime(true) + $timeout; if ($this->isRunning()) { - if ('\\' === DIRECTORY_SEPARATOR && !$this->isSigchildEnabled()) { - exec(sprintf('taskkill /F /T /PID %d 2>&1', $this->getPid()), $output, $exitCode); - if ($exitCode > 0) { - throw new RuntimeException('Unable to kill the process'); - } - } // given `SIGTERM` may not be defined and that `proc_terminate` uses the constant value and not the constant itself, we use the same here $this->doSignal(15, false); do { usleep(1000); } while ($this->isRunning() && microtime(true) < $timeoutMicro); - if ($this->isRunning() && !$this->isSigchildEnabled()) { - if (null !== $signal || defined('SIGKILL')) { - // avoid exception here : - // process is supposed to be running, but it might have stop - // just after this line. - // in any case, let's silently discard the error, we can not do anything - $this->doSignal($signal ?: SIGKILL, false); - } + if ($this->isRunning()) { + // Avoid exception here: process is supposed to be running, but it might have stopped just + // after this line. In any case, let's silently discard the error, we cannot do anything. + $this->doSignal($signal ?: 9, false); } } - $this->updateStatus(false); - if ($this->processInformation['running']) { + if ($this->isRunning()) { + if (isset($this->fallbackStatus['pid'])) { + unset($this->fallbackStatus['pid']); + + return $this->stop(0, $signal); + } $this->close(); } @@ -829,23 +778,33 @@ class Process /** * Adds a line to the STDOUT stream. * + * @internal + * * @param string $line The line to append */ public function addOutput($line) { $this->lastOutputTime = microtime(true); - $this->stdout .= $line; + + fseek($this->stdout, 0, SEEK_END); + fwrite($this->stdout, $line); + fseek($this->stdout, $this->incrementalOutputOffset); } /** * Adds a line to the STDERR stream. * + * @internal + * * @param string $line The line to append */ public function addErrorOutput($line) { $this->lastOutputTime = microtime(true); - $this->stderr .= $line; + + fseek($this->stderr, 0, SEEK_END); + fwrite($this->stderr, $line); + fseek($this->stderr, $this->incrementalErrorOutputOffset); } /** @@ -917,7 +876,7 @@ class Process * * @param int|float|null $timeout The timeout in seconds * - * @return self The current Process instance. + * @return self The current Process instance * * @throws LogicException if the output is disabled * @throws InvalidArgumentException if the timeout is negative @@ -944,11 +903,19 @@ class Process */ public function setTty($tty) { - if ('\\' === DIRECTORY_SEPARATOR && $tty) { + if ('\\' === \DIRECTORY_SEPARATOR && $tty) { throw new RuntimeException('TTY mode is not supported on Windows platform.'); } - if ($tty && (!file_exists('/dev/tty') || !is_readable('/dev/tty'))) { - throw new RuntimeException('TTY mode requires /dev/tty to be readable.'); + if ($tty) { + static $isTtySupported; + + if (null === $isTtySupported) { + $isTtySupported = (bool) @proc_open('echo 1 >/dev/null', array(array('file', '/dev/tty', 'r'), array('file', '/dev/tty', 'w'), array('file', '/dev/tty', 'w')), $pipes); + } + + if (!$isTtySupported) { + throw new RuntimeException('TTY mode requires /dev/tty to be read/writable.'); + } } $this->tty = (bool) $tty; @@ -1033,7 +1000,7 @@ class Process /** * Sets the environment variables. * - * An environment variable value should be a string. + * Each environment variable value should be a string. * If it is an array, the variable is ignored. * * That happens in PHP when 'argv' is registered into @@ -1047,12 +1014,12 @@ class Process { // Process can not handle env values that are arrays $env = array_filter($env, function ($value) { - return !is_array($value); + return !\is_array($value); }); $this->env = array(); foreach ($env as $key => $value) { - $this->env[(binary) $key] = (binary) $value; + $this->env[$key] = (string) $value; } return $this; @@ -1063,11 +1030,14 @@ class Process * * @return string|null The current contents * - * @deprecated Deprecated since version 2.5, to be removed in 3.0. + * @deprecated since version 2.5, to be removed in 3.0. + * Use setInput() instead. * This method is deprecated in favor of getInput. */ public function getStdin() { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.5 and will be removed in 3.0. Use the getInput() method instead.', E_USER_DEPRECATED); + return $this->getInput(); } @@ -1088,14 +1058,16 @@ class Process * * @return self The current Process instance * - * @deprecated Deprecated since version 2.5, to be removed in 3.0. - * This method is deprecated in favor of setInput. + * @deprecated since version 2.5, to be removed in 3.0. + * Use setInput() instead. * * @throws LogicException In case the process is running * @throws InvalidArgumentException In case the argument is invalid */ public function setStdin($stdin) { + @trigger_error('The '.__METHOD__.' method is deprecated since Symfony 2.5 and will be removed in 3.0. Use the setInput() method instead.', E_USER_DEPRECATED); + return $this->setInput($stdin); } @@ -1104,11 +1076,13 @@ class Process * * This content will be passed to the underlying process standard input. * - * @param string|null $input The content + * @param mixed $input The content * * @return self The current Process instance * * @throws LogicException In case the process is running + * + * Passing an object as an input is deprecated since version 2.5 and will be removed in 3.0. */ public function setInput($input) { @@ -1116,7 +1090,7 @@ class Process throw new LogicException('Input can not be set while the process is running.'); } - $this->input = ProcessUtils::validateInput(sprintf('%s::%s', __CLASS__, __FUNCTION__), $input); + $this->input = ProcessUtils::validateInput(__METHOD__, $input); return $this; } @@ -1209,7 +1183,7 @@ class Process */ public function checkTimeout() { - if ($this->status !== self::STATUS_STARTED) { + if (self::STATUS_STARTED !== $this->status) { return; } @@ -1239,18 +1213,11 @@ class Process return $result; } - if ('\\' === DIRECTORY_SEPARATOR) { + if ('\\' === \DIRECTORY_SEPARATOR) { return $result = false; } - $proc = @proc_open('echo 1', array(array('pty'), array('pty'), array('pty')), $pipes); - if (is_resource($proc)) { - proc_close($proc); - - return $result = true; - } - - return $result = false; + return $result = (bool) @proc_open('echo 1 >/dev/null', array(array('pty'), array('pty'), array('pty')), $pipes); } /** @@ -1260,21 +1227,13 @@ class Process */ private function getDescriptors() { - if ('\\' === DIRECTORY_SEPARATOR) { + if ('\\' === \DIRECTORY_SEPARATOR) { $this->processPipes = WindowsPipes::create($this, $this->input); } else { $this->processPipes = UnixPipes::create($this, $this->input); } - $descriptors = $this->processPipes->getDescriptors($this->outputDisabled); - - if (!$this->useFileHandles && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { - // last exit code is output on the fourth pipe and caught to work around --enable-sigchild - $descriptors = array_merge($descriptors, array(array('pipe', 'w'))); - - $this->commandline = '('.$this->commandline.') 3>/dev/null; code=$?; echo $code >&3; exit $code'; - } - return $descriptors; + return $this->processPipes->getDescriptors(); } /** @@ -1285,7 +1244,7 @@ class Process * * @param callable|null $callback The user defined PHP callback * - * @return callable A PHP callable + * @return \Closure A PHP closure */ protected function buildCallback($callback) { @@ -1299,7 +1258,7 @@ class Process } if (null !== $callback) { - call_user_func($callback, $type, $data); + \call_user_func($callback, $type, $data); } }; @@ -1309,7 +1268,7 @@ class Process /** * Updates the status of the process, reads pipes. * - * @param bool $blocking Whether to use a blocking read call. + * @param bool $blocking Whether to use a blocking read call */ protected function updateStatus($blocking) { @@ -1318,11 +1277,15 @@ class Process } $this->processInformation = proc_get_status($this->process); - $this->captureExitCode(); + $running = $this->processInformation['running']; - $this->readPipes($blocking, '\\' === DIRECTORY_SEPARATOR ? !$this->processInformation['running'] : true); + $this->readPipes($running && $blocking, '\\' !== \DIRECTORY_SEPARATOR || !$running); - if (!$this->processInformation['running']) { + if ($this->fallbackStatus && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { + $this->processInformation = $this->fallbackStatus + $this->processInformation; + } + + if (!$running) { $this->close(); } } @@ -1338,7 +1301,7 @@ class Process return self::$sigchild; } - if (!function_exists('phpinfo')) { + if (!\function_exists('phpinfo') || \defined('HHVM_VERSION')) { return self::$sigchild = false; } @@ -1348,6 +1311,24 @@ class Process return self::$sigchild = false !== strpos(ob_get_clean(), '--enable-sigchild'); } + /** + * Reads pipes for the freshest output. + * + * @param string $caller The name of the method that needs fresh outputs + * + * @throws LogicException in case output has been disabled or process is not started + */ + private function readPipesForOutput($caller) + { + if ($this->outputDisabled) { + throw new LogicException('Output has been disabled.'); + } + + $this->requireProcessIsStarted($caller); + + $this->updateStatus(false); + } + /** * Validates and returns the filtered timeout. * @@ -1373,8 +1354,8 @@ class Process /** * Reads pipes, executes callback. * - * @param bool $blocking Whether to use blocking calls or not. - * @param bool $close Whether to close file handles or not. + * @param bool $blocking Whether to use blocking calls or not + * @param bool $close Whether to close file handles or not */ private function readPipes($blocking, $close) { @@ -1382,24 +1363,14 @@ class Process $callback = $this->callback; foreach ($result as $type => $data) { - if (3 == $type) { - $this->fallbackExitcode = (int) $data; - } else { - $callback($type === self::STDOUT ? self::OUT : self::ERR, $data); + if (3 !== $type) { + $callback(self::STDOUT === $type ? self::OUT : self::ERR, $data); + } elseif (!isset($this->fallbackStatus['signaled'])) { + $this->fallbackStatus['exitcode'] = (int) $data; } } } - /** - * Captures the exitcode if mentioned in the process information. - */ - private function captureExitCode() - { - if (isset($this->processInformation['exitcode']) && -1 != $this->processInformation['exitcode']) { - $this->exitcode = $this->processInformation['exitcode']; - } - } - /** * Closes process resource, closes file handles, sets the exitcode. * @@ -1408,22 +1379,27 @@ class Process private function close() { $this->processPipes->close(); - if (is_resource($this->process)) { - $exitcode = proc_close($this->process); - } else { - $exitcode = -1; + if (\is_resource($this->process)) { + proc_close($this->process); } - - $this->exitcode = -1 !== $exitcode ? $exitcode : (null !== $this->exitcode ? $this->exitcode : -1); + $this->exitcode = $this->processInformation['exitcode']; $this->status = self::STATUS_TERMINATED; - if (-1 === $this->exitcode && null !== $this->fallbackExitcode) { - $this->exitcode = $this->fallbackExitcode; - } elseif (-1 === $this->exitcode && $this->processInformation['signaled'] && 0 < $this->processInformation['termsig']) { - // if process has been signaled, no exitcode but a valid termsig, apply Unix convention - $this->exitcode = 128 + $this->processInformation['termsig']; + if (-1 === $this->exitcode) { + if ($this->processInformation['signaled'] && 0 < $this->processInformation['termsig']) { + // if process has been signaled, no exitcode but a valid termsig, apply Unix convention + $this->exitcode = 128 + $this->processInformation['termsig']; + } elseif ($this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { + $this->processInformation['signaled'] = true; + $this->processInformation['termsig'] = -1; + } } + // Free memory from self-reference callback created by buildCallback + // Doing so in other contexts like __destruct or by garbage collector is ineffective + // Now pipes are closed, so the callback is no longer necessary + $this->callback = null; + return $this->exitcode; } @@ -1435,10 +1411,10 @@ class Process $this->starttime = null; $this->callback = null; $this->exitcode = null; - $this->fallbackExitcode = null; + $this->fallbackStatus = array(); $this->processInformation = null; - $this->stdout = null; - $this->stderr = null; + $this->stdout = fopen('php://temp/maxmemory:'.(1024 * 1024), 'wb+'); + $this->stderr = fopen('php://temp/maxmemory:'.(1024 * 1024), 'wb+'); $this->process = null; $this->latestSignal = null; $this->status = self::STATUS_READY; @@ -1455,12 +1431,12 @@ class Process * @return bool True if the signal was sent successfully, false otherwise * * @throws LogicException In case the process is not running - * @throws RuntimeException In case --enable-sigchild is activated + * @throws RuntimeException In case --enable-sigchild is activated and the process can't be killed * @throws RuntimeException In case of failure */ private function doSignal($signal, $throwException) { - if (!$this->isRunning()) { + if (null === $pid = $this->getPid()) { if ($throwException) { throw new LogicException('Can not send signal on a non running process.'); } @@ -1468,23 +1444,36 @@ class Process return false; } - if ($this->isSigchildEnabled()) { - if ($throwException) { - throw new RuntimeException('This PHP has been compiled with --enable-sigchild. The process can not be signaled.'); - } - - return false; - } + if ('\\' === \DIRECTORY_SEPARATOR) { + exec(sprintf('taskkill /F /T /PID %d 2>&1', $pid), $output, $exitCode); + if ($exitCode && $this->isRunning()) { + if ($throwException) { + throw new RuntimeException(sprintf('Unable to kill the process (%s).', implode(' ', $output))); + } - if (true !== @proc_terminate($this->process, $signal)) { - if ($throwException) { - throw new RuntimeException(sprintf('Error while sending signal `%s`.', $signal)); + return false; + } + } else { + if (!$this->enhanceSigchildCompatibility || !$this->isSigchildEnabled()) { + $ok = @proc_terminate($this->process, $signal); + } elseif (\function_exists('posix_kill')) { + $ok = @posix_kill($pid, $signal); + } elseif ($ok = proc_open(sprintf('kill -%d %d', $signal, $pid), array(2 => array('pipe', 'w')), $pipes)) { + $ok = false === fgets($pipes[2]); } + if (!$ok) { + if ($throwException) { + throw new RuntimeException(sprintf('Error while sending signal `%s`.', $signal)); + } - return false; + return false; + } } - $this->latestSignal = $signal; + $this->latestSignal = (int) $signal; + $this->fallbackStatus['signaled'] = true; + $this->fallbackStatus['exitcode'] = -1; + $this->fallbackStatus['termsig'] = $this->latestSignal; return true; } @@ -1492,9 +1481,9 @@ class Process /** * Ensures the process is running or terminated, throws a LogicException if the process has a not started. * - * @param string $functionName The function name that was called. + * @param string $functionName The function name that was called * - * @throws LogicException If the process has not run. + * @throws LogicException if the process has not run */ private function requireProcessIsStarted($functionName) { @@ -1506,9 +1495,9 @@ class Process /** * Ensures the process is terminated, throws a LogicException if the process has a status different than `terminated`. * - * @param string $functionName The function name that was called. + * @param string $functionName The function name that was called * - * @throws LogicException If the process is not yet terminated. + * @throws LogicException if the process is not yet terminated */ private function requireProcessIsTerminated($functionName) { diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/ProcessBuilder.php b/civicrm/vendor/symfony/process/ProcessBuilder.php similarity index 89% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/ProcessBuilder.php rename to civicrm/vendor/symfony/process/ProcessBuilder.php index 5262ce25dd5145a6fea409611051ccdb288f9858..f246c871b87b71b25fe88062ab4f3a7376af7d61 100644 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/ProcessBuilder.php +++ b/civicrm/vendor/symfony/process/ProcessBuilder.php @@ -15,8 +15,6 @@ use Symfony\Component\Process\Exception\InvalidArgumentException; use Symfony\Component\Process\Exception\LogicException; /** - * Process builder. - * * @author Kris Wallsmith <kris@symfony.com> */ class ProcessBuilder @@ -32,8 +30,6 @@ class ProcessBuilder private $outputDisabled = false; /** - * Constructor. - * * @param string[] $arguments An array of arguments */ public function __construct(array $arguments = array()) @@ -46,7 +42,7 @@ class ProcessBuilder * * @param string[] $arguments An array of arguments * - * @return ProcessBuilder + * @return static */ public static function create(array $arguments = array()) { @@ -58,7 +54,7 @@ class ProcessBuilder * * @param string $argument A command argument * - * @return ProcessBuilder + * @return $this */ public function add($argument) { @@ -74,11 +70,11 @@ class ProcessBuilder * * @param string|array $prefix A command prefix or an array of command prefixes * - * @return ProcessBuilder + * @return $this */ public function setPrefix($prefix) { - $this->prefix = is_array($prefix) ? $prefix : array($prefix); + $this->prefix = \is_array($prefix) ? $prefix : array($prefix); return $this; } @@ -91,7 +87,7 @@ class ProcessBuilder * * @param string[] $arguments * - * @return ProcessBuilder + * @return $this */ public function setArguments(array $arguments) { @@ -105,7 +101,7 @@ class ProcessBuilder * * @param null|string $cwd The working directory * - * @return ProcessBuilder + * @return $this */ public function setWorkingDirectory($cwd) { @@ -119,7 +115,7 @@ class ProcessBuilder * * @param bool $inheritEnv * - * @return ProcessBuilder + * @return $this */ public function inheritEnvironmentVariables($inheritEnv = true) { @@ -137,7 +133,7 @@ class ProcessBuilder * @param string $name The variable name * @param null|string $value The variable value * - * @return ProcessBuilder + * @return $this */ public function setEnv($name, $value) { @@ -155,7 +151,7 @@ class ProcessBuilder * * @param array $variables The variables * - * @return ProcessBuilder + * @return $this */ public function addEnvironmentVariables(array $variables) { @@ -167,15 +163,17 @@ class ProcessBuilder /** * Sets the input of the process. * - * @param string|null $input The input as a string + * @param mixed $input The input as a string * - * @return ProcessBuilder + * @return $this * * @throws InvalidArgumentException In case the argument is invalid + * + * Passing an object as an input is deprecated since version 2.5 and will be removed in 3.0. */ public function setInput($input) { - $this->input = ProcessUtils::validateInput(sprintf('%s::%s', __CLASS__, __FUNCTION__), $input); + $this->input = ProcessUtils::validateInput(__METHOD__, $input); return $this; } @@ -187,7 +185,7 @@ class ProcessBuilder * * @param float|null $timeout * - * @return ProcessBuilder + * @return $this * * @throws InvalidArgumentException */ @@ -216,7 +214,7 @@ class ProcessBuilder * @param string $name The option name * @param string $value The option value * - * @return ProcessBuilder + * @return $this */ public function setOption($name, $value) { @@ -228,7 +226,7 @@ class ProcessBuilder /** * Disables fetching output and error output from the underlying process. * - * @return ProcessBuilder + * @return $this */ public function disableOutput() { @@ -240,7 +238,7 @@ class ProcessBuilder /** * Enables fetching output and error output from the underlying process. * - * @return ProcessBuilder + * @return $this */ public function enableOutput() { @@ -258,7 +256,7 @@ class ProcessBuilder */ public function getProcess() { - if (0 === count($this->prefix) && 0 === count($this->arguments)) { + if (0 === \count($this->prefix) && 0 === \count($this->arguments)) { throw new LogicException('You must add() command arguments before calling getProcess().'); } diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/ProcessUtils.php b/civicrm/vendor/symfony/process/ProcessUtils.php similarity index 81% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/ProcessUtils.php rename to civicrm/vendor/symfony/process/ProcessUtils.php index a370ad539d3cd8d27266966bd29bec1cb4579089..21e6471c06bda6ce4ed0d1ff21cf2e7518fd3ade 100644 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/ProcessUtils.php +++ b/civicrm/vendor/symfony/process/ProcessUtils.php @@ -42,7 +42,7 @@ class ProcessUtils //Fix for PHP bug #49446 escapeshellarg doesn't work on Windows //@see https://bugs.php.net/bug.php?id=43784 //@see https://bugs.php.net/bug.php?id=49446 - if ('\\' === DIRECTORY_SEPARATOR) { + if ('\\' === \DIRECTORY_SEPARATOR) { if ('' === $argument) { return escapeshellarg($argument); } @@ -71,7 +71,7 @@ class ProcessUtils return $escapedArgument; } - return escapeshellarg($argument); + return "'".str_replace("'", "'\\''", $argument)."'"; } /** @@ -80,21 +80,28 @@ class ProcessUtils * @param string $caller The name of method call that validates the input * @param mixed $input The input to validate * - * @return string The validated input + * @return mixed The validated input * * @throws InvalidArgumentException In case the input is not valid + * + * Passing an object as an input is deprecated since version 2.5 and will be removed in 3.0. */ public static function validateInput($caller, $input) { if (null !== $input) { - if (is_resource($input)) { + if (\is_resource($input)) { + return $input; + } + if (\is_string($input)) { return $input; } if (is_scalar($input)) { return (string) $input; } // deprecated as of Symfony 2.5, to be removed in 3.0 - if (is_object($input) && method_exists($input, '__toString')) { + if (\is_object($input) && method_exists($input, '__toString')) { + @trigger_error('Passing an object as an input is deprecated since Symfony 2.5 and will be removed in 3.0.', E_USER_DEPRECATED); + return (string) $input; } @@ -106,6 +113,6 @@ class ProcessUtils private static function isSurroundedBy($arg, $char) { - return 2 < strlen($arg) && $char === $arg[0] && $char === $arg[strlen($arg) - 1]; + return 2 < \strlen($arg) && $char === $arg[0] && $char === $arg[\strlen($arg) - 1]; } } diff --git a/civicrm/vendor/symfony/process/README.md b/civicrm/vendor/symfony/process/README.md new file mode 100644 index 0000000000000000000000000000000000000000..b7ca5b4254942c813ac60733057a47b1be072ec5 --- /dev/null +++ b/civicrm/vendor/symfony/process/README.md @@ -0,0 +1,13 @@ +Process Component +================= + +The Process component executes commands in sub-processes. + +Resources +--------- + + * [Documentation](https://symfony.com/doc/current/components/process.html) + * [Contributing](https://symfony.com/doc/current/contributing/index.html) + * [Report issues](https://github.com/symfony/symfony/issues) and + [send Pull Requests](https://github.com/symfony/symfony/pulls) + in the [main Symfony repository](https://github.com/symfony/symfony) diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/LICENSE b/civicrm/vendor/symfony/process/Symfony/Component/Process/LICENSE deleted file mode 100644 index 43028bc600f26ec5599ab339d83cd70f70dfcdab..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2004-2015 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 -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/process/Symfony/Component/Process/Pipes/AbstractPipes.php b/civicrm/vendor/symfony/process/Symfony/Component/Process/Pipes/AbstractPipes.php deleted file mode 100644 index d8b57d07a778ad71fa35c0e2bbbc9b3e39cf9691..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/Pipes/AbstractPipes.php +++ /dev/null @@ -1,74 +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\Component\Process\Pipes; - -/** - * @author Romain Neutron <imprec@gmail.com> - * - * @internal - */ -abstract class AbstractPipes implements PipesInterface -{ - /** @var array */ - public $pipes = array(); - - /** @var string */ - protected $inputBuffer = ''; - /** @var resource|null */ - protected $input; - - /** @var bool */ - private $blocked = true; - - /** - * {@inheritdoc} - */ - public function close() - { - foreach ($this->pipes as $pipe) { - fclose($pipe); - } - $this->pipes = array(); - } - - /** - * Returns true if a system call has been interrupted. - * - * @return bool - */ - protected function hasSystemCallBeenInterrupted() - { - $lastError = error_get_last(); - - // stream_select returns false when the `select` system call is interrupted by an incoming signal - return isset($lastError['message']) && false !== stripos($lastError['message'], 'interrupted system call'); - } - - /** - * Unblocks streams - */ - protected function unblock() - { - if (!$this->blocked) { - return; - } - - foreach ($this->pipes as $pipe) { - stream_set_blocking($pipe, 0); - } - if (null !== $this->input) { - stream_set_blocking($this->input, 0); - } - - $this->blocked = false; - } -} diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/Pipes/WindowsPipes.php b/civicrm/vendor/symfony/process/Symfony/Component/Process/Pipes/WindowsPipes.php deleted file mode 100644 index 01dd5d0600f2042e28bba72c250e6761076f426d..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/Pipes/WindowsPipes.php +++ /dev/null @@ -1,254 +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\Component\Process\Pipes; - -use Symfony\Component\Process\Process; -use Symfony\Component\Process\Exception\RuntimeException; - -/** - * WindowsPipes implementation uses temporary files as handles. - * - * @see https://bugs.php.net/bug.php?id=51800 - * @see https://bugs.php.net/bug.php?id=65650 - * - * @author Romain Neutron <imprec@gmail.com> - * - * @internal - */ -class WindowsPipes extends AbstractPipes -{ - /** @var array */ - private $files = array(); - /** @var array */ - private $fileHandles = array(); - /** @var array */ - private $readBytes = array( - Process::STDOUT => 0, - Process::STDERR => 0, - ); - /** @var bool */ - private $disableOutput; - - public function __construct($disableOutput, $input) - { - $this->disableOutput = (bool) $disableOutput; - - if (!$this->disableOutput) { - // Fix for PHP bug #51800: reading from STDOUT pipe hangs forever on Windows if the output is too big. - // Workaround for this problem is to use temporary files instead of pipes on Windows platform. - // - // @see https://bugs.php.net/bug.php?id=51800 - $this->files = array( - Process::STDOUT => tempnam(sys_get_temp_dir(), 'sf_proc_stdout'), - Process::STDERR => tempnam(sys_get_temp_dir(), 'sf_proc_stderr'), - ); - foreach ($this->files as $offset => $file) { - $this->fileHandles[$offset] = fopen($this->files[$offset], 'rb'); - if (false === $this->fileHandles[$offset]) { - throw new RuntimeException('A temporary file could not be opened to write the process output to, verify that your TEMP environment variable is writable'); - } - } - } - - if (is_resource($input)) { - $this->input = $input; - } else { - $this->inputBuffer = $input; - } - } - - public function __destruct() - { - $this->close(); - $this->removeFiles(); - } - - /** - * {@inheritdoc} - */ - public function getDescriptors() - { - if ($this->disableOutput) { - $nullstream = fopen('NUL', 'c'); - - return array( - array('pipe', 'r'), - $nullstream, - $nullstream, - ); - } - - // We're not using pipe on Windows platform as it hangs (https://bugs.php.net/bug.php?id=51800) - // We're not using file handles as it can produce corrupted output https://bugs.php.net/bug.php?id=65650 - // So we redirect output within the commandline and pass the nul device to the process - return array( - array('pipe', 'r'), - array('file', 'NUL', 'w'), - array('file', 'NUL', 'w'), - ); - } - - /** - * {@inheritdoc} - */ - public function getFiles() - { - return $this->files; - } - - /** - * {@inheritdoc} - */ - public function readAndWrite($blocking, $close = false) - { - $this->write($blocking, $close); - - $read = array(); - $fh = $this->fileHandles; - foreach ($fh as $type => $fileHandle) { - if (0 !== fseek($fileHandle, $this->readBytes[$type])) { - continue; - } - $data = ''; - $dataread = null; - while (!feof($fileHandle)) { - if (false !== $dataread = fread($fileHandle, self::CHUNK_SIZE)) { - $data .= $dataread; - } - } - if (0 < $length = strlen($data)) { - $this->readBytes[$type] += $length; - $read[$type] = $data; - } - - if (false === $dataread || (true === $close && feof($fileHandle) && '' === $data)) { - fclose($this->fileHandles[$type]); - unset($this->fileHandles[$type]); - } - } - - return $read; - } - - /** - * {@inheritdoc} - */ - public function areOpen() - { - return (bool) $this->pipes && (bool) $this->fileHandles; - } - - /** - * {@inheritdoc} - */ - public function close() - { - parent::close(); - foreach ($this->fileHandles as $handle) { - fclose($handle); - } - $this->fileHandles = array(); - } - - /** - * Creates a new WindowsPipes instance. - * - * @param Process $process The process - * @param $input - * - * @return WindowsPipes - */ - public static function create(Process $process, $input) - { - return new static($process->isOutputDisabled(), $input); - } - - /** - * Removes temporary files - */ - private function removeFiles() - { - foreach ($this->files as $filename) { - if (file_exists($filename)) { - @unlink($filename); - } - } - $this->files = array(); - } - - /** - * Writes input to stdin - * - * @param bool $blocking - * @param bool $close - */ - private function write($blocking, $close) - { - if (empty($this->pipes)) { - return; - } - - $this->unblock(); - - $r = null !== $this->input ? array('input' => $this->input) : null; - $w = isset($this->pipes[0]) ? array($this->pipes[0]) : null; - $e = null; - - // let's have a look if something changed in streams - if (false === $n = @stream_select($r, $w, $e, 0, $blocking ? Process::TIMEOUT_PRECISION * 1E6 : 0)) { - // if a system call has been interrupted, forget about it, let's try again - // otherwise, an error occurred, let's reset pipes - if (!$this->hasSystemCallBeenInterrupted()) { - $this->pipes = array(); - } - - return; - } - - // nothing has changed - if (0 === $n) { - return; - } - - if (null !== $w && 0 < count($r)) { - $data = ''; - while ($dataread = fread($r['input'], self::CHUNK_SIZE)) { - $data .= $dataread; - } - - $this->inputBuffer .= $data; - - if (false === $data || (true === $close && feof($r['input']) && '' === $data)) { - // no more data to read on input resource - // use an empty buffer in the next reads - $this->input = null; - } - } - - if (null !== $w && 0 < count($w)) { - while (strlen($this->inputBuffer)) { - $written = fwrite($w[0], $this->inputBuffer, 2 << 18); - if ($written > 0) { - $this->inputBuffer = (string) substr($this->inputBuffer, $written); - } else { - break; - } - } - } - - // no input to read on resource, buffer is empty and stdin still open - if ('' === $this->inputBuffer && null === $this->input && isset($this->pipes[0])) { - fclose($this->pipes[0]); - unset($this->pipes[0]); - } - } -} diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/README.md b/civicrm/vendor/symfony/process/Symfony/Component/Process/README.md deleted file mode 100644 index 7c83ed413e565455377502a16122c3128e62b499..0000000000000000000000000000000000000000 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/README.md +++ /dev/null @@ -1,51 +0,0 @@ -Process Component -================= - -Process executes commands in sub-processes. - -In this example, we run a simple directory listing and get the result back: - -```php -use Symfony\Component\Process\Process; - -$process = new Process('ls -lsa'); -$process->setTimeout(3600); -$process->run(); -if (!$process->isSuccessful()) { - throw new RuntimeException($process->getErrorOutput()); -} - -print $process->getOutput(); -``` - -You can think that this is easy to achieve with plain PHP but it's not especially -if you want to take care of the subtle differences between the different platforms. - -And if you want to be able to get some feedback in real-time, just pass an -anonymous function to the ``run()`` method and you will get the output buffer -as it becomes available: - -```php -use Symfony\Component\Process\Process; - -$process = new Process('ls -lsa'); -$process->run(function ($type, $buffer) { - if (Process::ERR === $type) { - echo 'ERR > '.$buffer; - } else { - echo 'OUT > '.$buffer; - } -}); -``` - -That's great if you want to execute a long running command (like rsync-ing files to a -remote server) and give feedback to the user in real-time. - -Resources ---------- - -You can run the unit tests with the following command: - - $ cd path/to/Symfony/Component/Process/ - $ composer install - $ phpunit diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/composer.json b/civicrm/vendor/symfony/process/composer.json similarity index 70% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/composer.json rename to civicrm/vendor/symfony/process/composer.json index 8ad68519e1fa491e5a19fa95175add73ef11ce14..b3cb5186fc9408d5849399c1e2b958899eb82ba7 100644 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/composer.json +++ b/civicrm/vendor/symfony/process/composer.json @@ -16,19 +16,18 @@ } ], "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" + "php": ">=5.3.9" }, "autoload": { - "psr-0": { "Symfony\\Component\\Process\\": "" } + "psr-4": { "Symfony\\Component\\Process\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] }, - "target-dir": "Symfony/Component/Process", "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "2.8-dev" } } } diff --git a/civicrm/vendor/symfony/process/Symfony/Component/Process/phpunit.xml.dist b/civicrm/vendor/symfony/process/phpunit.xml.dist similarity index 87% rename from civicrm/vendor/symfony/process/Symfony/Component/Process/phpunit.xml.dist rename to civicrm/vendor/symfony/process/phpunit.xml.dist index 07b617be4b5d233944996d1fe4631700b7a2cd94..d38846730d72b075adf261c0dff03bcceaa2deab 100644 --- a/civicrm/vendor/symfony/process/Symfony/Component/Process/phpunit.xml.dist +++ b/civicrm/vendor/symfony/process/phpunit.xml.dist @@ -5,10 +5,13 @@ backupGlobals="false" colors="true" bootstrap="vendor/autoload.php" + failOnRisky="true" + failOnWarning="true" > <php> <ini name="error_reporting" value="-1" /> </php> + <testsuites> <testsuite name="Symfony Process Component Test Suite"> <directory>./Tests/</directory> @@ -20,6 +23,7 @@ <directory>./</directory> <exclude> <directory>./Tests</directory> + <directory>./vendor</directory> </exclude> </whitelist> </filter> diff --git a/civicrm/xml/schema/Core/CustomField.xml b/civicrm/xml/schema/Core/CustomField.xml index 8d81309544f2910a1852834c8306f29b09143c72..919ec7588276e05e5e2bd0e1c8291fd64cfef893 100644 --- a/civicrm/xml/schema/Core/CustomField.xml +++ b/civicrm/xml/schema/Core/CustomField.xml @@ -268,6 +268,13 @@ <labelColumn>title</labelColumn> </pseudoconstant> </field> + <foreignKey> + <name>option_group_id</name> + <table>civicrm_option_group</table> + <key>id</key> + <add>5.6</add> + <onDelete>SET NULL</onDelete> + </foreignKey> <field> <name>filter</name> <type>varchar</type> diff --git a/civicrm/xml/schema/Core/OptionValue.xml b/civicrm/xml/schema/Core/OptionValue.xml index ac469d7cdcecd119d0fefc5785de1a0291926f4f..b86b1efd01fc523989ea2c55bb98970515048466 100644 --- a/civicrm/xml/schema/Core/OptionValue.xml +++ b/civicrm/xml/schema/Core/OptionValue.xml @@ -182,6 +182,9 @@ <type>int unsigned</type> <default>NULL</default> <add>2.2</add> + <pseudoconstant> + <optionGroupName>visibility</optionGroupName> + </pseudoconstant> </field> <field> <name>icon</name> diff --git a/civicrm/xml/schema/Core/PrevNextCache.xml b/civicrm/xml/schema/Core/PrevNextCache.xml index 5fda09bd84eb7e62c5ad7b2d314277c8687983db..caee9ef7fa58d3338db66a49353c1f274711042c 100644 --- a/civicrm/xml/schema/Core/PrevNextCache.xml +++ b/civicrm/xml/schema/Core/PrevNextCache.xml @@ -37,7 +37,7 @@ <name>entity_id2</name> <title>Prev Next Entity ID 2</title> <type>int unsigned</type> - <required>true</required> + <required>false</required> <comment>FK to entity table specified in entity_table column.</comment> <add>3.4</add> </field> diff --git a/civicrm/xml/schema/Core/UFField.xml b/civicrm/xml/schema/Core/UFField.xml index 55eb156e605c45957e22118054a1a0574e036976..fd0322b49af398c1912a61825901ca489d7b15d2 100644 --- a/civicrm/xml/schema/Core/UFField.xml +++ b/civicrm/xml/schema/Core/UFField.xml @@ -183,6 +183,9 @@ <type>int unsigned</type> <comment>Phone Type Id, if required</comment> <add>2.2</add> + <pseudoconstant> + <optionGroupName>phone_type</optionGroupName> + </pseudoconstant> </field> <field> <name>website_type_id</name> @@ -190,6 +193,9 @@ <type>int unsigned</type> <comment>Website Type Id, if required</comment> <add>4.5</add> + <pseudoconstant> + <optionGroupName>website_type</optionGroupName> + </pseudoconstant> </field> <field> <name>label</name> diff --git a/civicrm/xml/version.xml b/civicrm/xml/version.xml index 1569f03e79e1c8810bd33c316264c16ede2c6f86..855316b1801f8ed79bf640d2b35017b1d59a654c 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.5.3</version_no> + <version_no>5.6.0</version_no> </version> diff --git a/includes/civicrm.basepage.php b/includes/civicrm.basepage.php index a9d0b525de7e13ca8126f7be8855440f54b09247..78762ba06897e5761d75fa3d10d172dc7e4a64cb 100644 --- a/includes/civicrm.basepage.php +++ b/includes/civicrm.basepage.php @@ -1,7 +1,7 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ diff --git a/includes/civicrm.shortcodes.modal.php b/includes/civicrm.shortcodes.modal.php index 6f249e1e308df5f587beeac0af5a4a4b6986d3bf..d606a8a0b44239a22832b34bcd555614af289821 100644 --- a/includes/civicrm.shortcodes.modal.php +++ b/includes/civicrm.shortcodes.modal.php @@ -1,7 +1,7 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ diff --git a/includes/civicrm.shortcodes.php b/includes/civicrm.shortcodes.php index 26e1b163cb8fbde7e6a37a4d97709e0a89759d77..833a6dec487311dafb5e08fdf4a79cd84f98f422 100644 --- a/includes/civicrm.shortcodes.php +++ b/includes/civicrm.shortcodes.php @@ -1,7 +1,7 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ diff --git a/includes/civicrm.users.php b/includes/civicrm.users.php index 800b8888eb01839c2dc2965d7e6a2aaad8310a3b..6c387d781854f30d9d303b138aad41297e22f7f0 100644 --- a/includes/civicrm.users.php +++ b/includes/civicrm.users.php @@ -1,7 +1,7 @@ <?php /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ diff --git a/languages/civicrm.pot b/languages/civicrm.pot index 4e28eef65405b16e03f54f0622b165384f5ecd81..22349420e72fdbd042457fe592b7f43a0bd1c8a6 100644 --- a/languages/civicrm.pot +++ b/languages/civicrm.pot @@ -2,7 +2,7 @@ # This file is distributed under the same license as the CiviCRM package. msgid "" msgstr "" -"Project-Id-Version: CiviCRM 5\n" +"Project-Id-Version: CiviCRM 4.6\n" "Report-Msgid-Bugs-To: http://wordpress.org/tag/civicrm\n" "POT-Creation-Date: 2014-11-11 09:48:56+00:00\n" "MIME-Version: 1.0\n" diff --git a/uninstall.php b/uninstall.php index c73696a982a1d2e246e227c3ad4a7149e04f172c..7579c21f7061c9182f0ba4514ed42b6616ef6b16 100644 --- a/uninstall.php +++ b/uninstall.php @@ -2,7 +2,7 @@ /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+ diff --git a/wp-cli/civicrm.php b/wp-cli/civicrm.php index 3163678470113be44df9f8795d4c318126f56ea1..a3c35c5521f2c23fde240fb128b5fa8f81ee92d5 100644 --- a/wp-cli/civicrm.php +++ b/wp-cli/civicrm.php @@ -2,7 +2,7 @@ /* +--------------------------------------------------------------------+ - | CiviCRM version 5 | + | CiviCRM version 4.7 | +--------------------------------------------------------------------+ | Copyright CiviCRM LLC (c) 2004-2018 | +--------------------------------------------------------------------+