From 19f74ad72b9629338a5588c369c68ccb724b0d51 Mon Sep 17 00:00:00 2001 From: Kevin Cristiano <kcristiano@tadpole.cc> Date: Sun, 14 Oct 2018 08:55:16 -0400 Subject: [PATCH] civicrm 5.6.0 release Signed-off-by: Kevin Cristiano <kcristiano@tadpole.cc> --- assets/templates/civicrm.shortcode.php | 2 +- civicrm.php | 7 +- civicrm/CRM/ACL/API.php | 14 +- civicrm/CRM/ACL/BAO/ACL.php | 6 +- civicrm/CRM/ACL/BAO/EntityRole.php | 4 +- .../CRM/ACL/Form/WordPress/Permissions.php | 2 +- civicrm/CRM/Activity/BAO/Activity.php | 28 +- civicrm/CRM/Activity/Page/AJAX.php | 5 +- civicrm/CRM/Admin/Form/Setting.php | 108 +- civicrm/CRM/Admin/Form/SettingTrait.php | 158 + civicrm/CRM/Badge/BAO/Layout.php | 5 +- civicrm/CRM/Campaign/BAO/Campaign.php | 4 +- civicrm/CRM/Campaign/BAO/Survey.php | 4 +- civicrm/CRM/Campaign/Selector/Search.php | 2 +- civicrm/CRM/Case/BAO/Case.php | 111 +- civicrm/CRM/Case/Form/Activity.php | 5 +- civicrm/CRM/Case/Page/AJAX.php | 2 +- civicrm/CRM/Contact/BAO/ContactType.php | 4 +- civicrm/CRM/Contact/BAO/Group.php | 4 +- civicrm/CRM/Contact/BAO/GroupContact.php | 25 +- civicrm/CRM/Contact/BAO/Query.php | 13 +- civicrm/CRM/Contact/BAO/RelationshipType.php | 4 +- civicrm/CRM/Contact/Form/Relationship.php | 25 +- .../Form/Search/Custom/ContribSYBNT.php | 4 +- civicrm/CRM/Contact/Form/Task.php | 3 - civicrm/CRM/Contact/Form/Task/EmailCommon.php | 6 +- civicrm/CRM/Contact/Selector.php | 3 +- .../CRM/Contribute/BAO/ContributionPage.php | 4 +- civicrm/CRM/Contribute/BAO/Premium.php | 4 +- .../Contribute/Form/AbstractEditPayment.php | 3 + .../CRM/Contribute/Form/AdditionalPayment.php | 2 +- civicrm/CRM/Contribute/Form/Contribution.php | 10 +- .../Contribute/Form/Contribution/Confirm.php | 2 +- civicrm/CRM/Core/BAO/ActionSchedule.php | 4 +- civicrm/CRM/Core/BAO/CustomField.php | 16 +- civicrm/CRM/Core/BAO/CustomGroup.php | 4 +- civicrm/CRM/Core/BAO/Job.php | 5 +- civicrm/CRM/Core/BAO/LocationType.php | 5 +- civicrm/CRM/Core/BAO/MessageTemplate.php | 4 +- civicrm/CRM/Core/BAO/Navigation.php | 9 +- civicrm/CRM/Core/BAO/OptionGroup.php | 4 +- civicrm/CRM/Core/BAO/OptionValue.php | 4 +- civicrm/CRM/Core/BAO/Setting.php | 2 +- civicrm/CRM/Core/BAO/UFField.php | 4 +- civicrm/CRM/Core/BAO/UFGroup.php | 4 +- civicrm/CRM/Core/BAO/UFMatch.php | 50 +- civicrm/CRM/Core/DAO/AllCoreTables.php | 2 +- civicrm/CRM/Core/DAO/CustomField.php | 4 +- civicrm/CRM/Core/DAO/OptionValue.php | 6 +- civicrm/CRM/Core/DAO/PrevNextCache.php | 4 +- civicrm/CRM/Core/DAO/UFField.php | 10 +- civicrm/CRM/Core/Form.php | 2 +- .../Core/I18n/SchemaStructure_5_4_alpha1.php | 714 + civicrm/CRM/Core/Payment.php | 2 +- civicrm/CRM/Core/Payment/PayPalImpl.php | 2 +- civicrm/CRM/Core/Permission.php | 19 +- civicrm/CRM/Core/Permission/Backdrop.php | 10 +- civicrm/CRM/Core/Permission/Base.php | 3 +- civicrm/CRM/Core/Permission/Drupal.php | 10 +- civicrm/CRM/Core/Permission/Drupal6.php | 10 +- civicrm/CRM/Core/Permission/Drupal8.php | 7 +- civicrm/CRM/Core/Permission/Joomla.php | 9 +- civicrm/CRM/Core/Permission/Soap.php | 3 +- civicrm/CRM/Core/Permission/UnitTests.php | 3 +- civicrm/CRM/Core/Permission/WordPress.php | 11 +- civicrm/CRM/Core/PrevNextCache/Interface.php | 16 +- civicrm/CRM/Core/PrevNextCache/Sql.php | 104 +- civicrm/CRM/Core/Resources.php | 1 + civicrm/CRM/Event/BAO/Event.php | 33 +- .../CRM/Event/BAO/ParticipantStatusType.php | 3 - civicrm/CRM/Event/Form/ManageEvent/Repeat.php | 4 +- civicrm/CRM/Event/Form/Participant.php | 2 +- civicrm/CRM/Event/Page/EventInfo.php | 6 + civicrm/CRM/Export/BAO/Export.php | 92 +- civicrm/CRM/Export/BAO/ExportProcessor.php | 48 +- .../CRM/Financial/BAO/FinancialAccount.php | 4 +- .../CRM/Financial/BAO/PaymentProcessor.php | 11 +- .../Financial/BAO/PaymentProcessorType.php | 5 +- civicrm/CRM/Financial/Form/PaymentEdit.php | 8 +- civicrm/CRM/Financial/Form/SalesTaxTrait.php | 90 + civicrm/CRM/Friend/Form.php | 1 + civicrm/CRM/Logging/Schema.php | 2 +- civicrm/CRM/Mailing/BAO/Component.php | 4 +- civicrm/CRM/Mailing/BAO/Mailing.php | 4 +- civicrm/CRM/Member/BAO/MembershipStatus.php | 4 +- civicrm/CRM/Member/BAO/MembershipType.php | 5 +- civicrm/CRM/Member/Form.php | 24 + civicrm/CRM/Member/Form/Membership.php | 114 +- civicrm/CRM/Member/Form/MembershipRenewal.php | 10 +- civicrm/CRM/PCP/BAO/PCP.php | 4 +- civicrm/CRM/Price/BAO/PriceField.php | 4 +- civicrm/CRM/Price/BAO/PriceFieldValue.php | 5 +- civicrm/CRM/Price/BAO/PriceSet.php | 10 +- civicrm/CRM/Report/BAO/ReportInstance.php | 5 +- civicrm/CRM/Report/Form.php | 90 +- .../Report/Form/Contact/CurrentEmployer.php | 32 +- civicrm/CRM/Report/Form/Contact/Detail.php | 7 +- .../CRM/Report/Form/Contact/Relationship.php | 18 +- civicrm/CRM/Report/Form/Contribute/Detail.php | 68 +- civicrm/CRM/Report/Form/Member/Detail.php | 14 - civicrm/CRM/Report/Form/Pledge/Pbnp.php | 15 +- civicrm/CRM/Upgrade/Incremental/General.php | 4 +- .../CRM/Upgrade/Incremental/php/FiveFive.php | 17 - .../CRM/Upgrade/Incremental/php/FiveSix.php | 87 + .../Upgrade/Incremental/sql/5.5.0.mysql.tpl | 1 - .../Upgrade/Incremental/sql/5.5.1.mysql.tpl | 1 - .../Upgrade/Incremental/sql/5.5.2.mysql.tpl | 1 - .../Upgrade/Incremental/sql/5.5.3.mysql.tpl | 5 - .../Upgrade/Incremental/sql/5.6.0.mysql.tpl | 1 + .../Incremental/sql/5.6.alpha1.mysql.tpl | 4 + .../Incremental/sql/5.6.beta1.mysql.tpl | 1 + .../Incremental/sql/5.6.beta2.mysql.tpl | 1 + .../Upgrade/Snapshot/V4p2/Price/BAO/Field.php | 4 +- .../Snapshot/V4p2/Price/BAO/FieldValue.php | 5 +- .../Upgrade/Snapshot/V4p2/Price/BAO/Set.php | 8 +- civicrm/CRM/Utils/Check/Component/Env.php | 22 +- civicrm/CRM/Utils/Hook.php | 8 +- civicrm/CRM/Utils/Money.php | 120 +- civicrm/CRM/Utils/PDF/Label.php | 4 +- civicrm/CRM/Utils/Recent.php | 9 +- civicrm/CRM/Utils/System/Drupal.php | 9 + civicrm/CRM/Utils/System/Drupal8.php | 9 + civicrm/CRM/Utils/System/DrupalBase.php | 9 - civicrm/CRM/Utils/System/Joomla.php | 10 +- civicrm/Civi/Token/TokenCompatSubscriber.php | 2 +- civicrm/ang/crmMailing/BlockPreview.js | 1 + civicrm/ang/crmMailing/services.js | 28 +- civicrm/api/v3/Case.php | 2 +- civicrm/api/v3/EntityTag.php | 42 +- civicrm/api/v3/Mailing.php | 19 +- civicrm/api/v3/PaymentProcessor.php | 1 + civicrm/api/v3/PaymentProcessorType.php | 1 - civicrm/api/v3/Profile.php | 45 +- civicrm/api/v3/Setting.php | 2 +- civicrm/civicrm-version.php | 2 +- civicrm/composer.json | 13 +- civicrm/composer.lock | 296 +- civicrm/css/civicrm.css | 4 + civicrm/css/civicrmNavigation.css | 2 +- civicrm/css/contactSummary.css | 20 +- civicrm/css/joomla.css | 7 - .../api4/Civi/Api4/Action/Address/Create.php | 7 +- .../api4/Civi/Api4/Action/Address/Update.php | 44 + .../Civi/Api4/Action/GroupContact/Create.php | 39 + .../Civi/Api4/Action/GroupContact/Update.php | 39 + civicrm/ext/api4/Civi/Api4/Action/Update.php | 11 + civicrm/ext/api4/Civi/Api4/Address.php | 3 + .../api4/Civi/Api4/Generic/AbstractAction.php | 11 +- civicrm/ext/api4/Civi/Api4/GroupContact.php | 19 + civicrm/ext/api4/Civi/Api4/Note.php | 13 + .../api4/Civi/Api4/Query/Api4SelectQuery.php | 6 +- .../Provider/NoteCreationSpecProvider.php | 28 + .../api4/Civi/Api4/Utils/FormattingUtil.php | 5 + civicrm/ext/api4/info.xml | 4 +- civicrm/ext/api4/services.xml | 4 + .../api4/tests/phpunit/Action/DateTest.php | 46 + .../phpunit/DataSets/ConformanceTest.json | 6 + .../Service/TestCreationParameterProvider.php | 3 + civicrm/js/AlternateContactSelector.js | 2 +- civicrm/js/Common.js | 143 +- civicrm/js/crm.ajax.js | 4 +- civicrm/js/crm.datepicker.js | 144 + civicrm/js/{crm.drupal.js => crm.drupal7.js} | 11 +- civicrm/js/crm.drupal8.js | 17 + civicrm/release-notes.md | 11 + civicrm/release-notes/5.5.0.md | 5 +- civicrm/release-notes/5.5.1.md | 38 - civicrm/release-notes/5.5.2.md | 39 - civicrm/release-notes/5.5.3.md | 40 - civicrm/release-notes/5.6.0.md | 591 + civicrm/sql/civicrm.mysql | 4 +- civicrm/sql/civicrm_data.mysql | 2 +- civicrm/sql/civicrm_generated.mysql | 54 +- .../templates/CRM/Admin/Page/Reminders.tpl | 2 +- civicrm/templates/CRM/Case/Form/CaseView.tpl | 4 +- .../CRM/Contact/Form/Relationship.tpl | 6 +- .../CRM/Contact/Page/Inline/Address.tpl | 7 +- .../CRM/Contact/Page/Inline/Basic.tpl | 4 +- .../CRM/Contact/Page/View/Summary.js | 38 +- .../CRM/Contact/Page/View/Summary.tpl | 2 +- .../Form/AdditionalInfo/AdditionalDetail.tpl | 2 - .../CRM/Contribute/Form/Contribution.tpl | 13 +- .../templates/CRM/Member/Form/Membership.tpl | 4 +- .../CRM/Member/Form/MembershipType.tpl | 2 + .../CRM/Report/Form/Tabs/Developer.tpl | 7 +- .../templates/CRM/common/navigation.js.tpl | 29 +- civicrm/vendor/autoload.php | 2 +- civicrm/vendor/composer/autoload_files.php | 2 + .../vendor/composer/autoload_namespaces.php | 6 - civicrm/vendor/composer/autoload_psr4.php | 8 + civicrm/vendor/composer/autoload_real.php | 14 +- civicrm/vendor/composer/autoload_static.php | 79 +- civicrm/vendor/composer/installed.json | 308 +- civicrm/vendor/symfony/config/CHANGELOG.md | 54 + civicrm/vendor/symfony/config/ConfigCache.php | 79 + .../symfony/config/ConfigCacheFactory.php | 51 + .../config/ConfigCacheFactoryInterface.php | 32 + .../symfony/config/ConfigCacheInterface.php | 49 + .../Config => }/Definition/ArrayNode.php | 50 +- .../Config => }/Definition/BaseNode.php | 48 +- .../Config => }/Definition/BooleanNode.php | 13 +- .../Builder/ArrayNodeDefinition.php | 72 +- .../Builder/BooleanNodeDefinition.php | 12 + .../Definition/Builder/EnumNodeDefinition.php | 8 +- .../Definition/Builder/ExprBuilder.php | 49 +- .../Builder/FloatNodeDefinition.php | 0 .../Builder/IntegerNodeDefinition.php | 0 .../Definition/Builder/MergeBuilder.php | 11 +- .../Definition/Builder/NodeBuilder.php | 25 +- .../Definition/Builder/NodeDefinition.php | 42 +- .../Builder/NodeParentInterface.php | 0 .../Builder/NormalizationBuilder.php | 11 +- .../Builder/NumericNodeDefinition.php | 16 +- .../Builder/ParentNodeDefinitionInterface.php | 23 + .../Builder/ScalarNodeDefinition.php | 0 .../Definition/Builder/TreeBuilder.php | 0 .../Definition/Builder/ValidationBuilder.php | 9 +- .../Builder/VariableNodeDefinition.php | 0 .../Definition/ConfigurationInterface.php | 0 .../Definition/Dumper/XmlReferenceDumper.php | 42 +- .../Definition/Dumper/YamlReferenceDumper.php | 47 +- .../Config => }/Definition/EnumNode.php | 6 +- .../Exception/DuplicateKeyException.php | 0 .../Definition/Exception/Exception.php | 0 .../Exception/ForbiddenOverwriteException.php | 0 .../InvalidConfigurationException.php | 0 .../Exception/InvalidDefinitionException.php | 0 .../Exception/InvalidTypeException.php | 0 .../Exception/UnsetKeyException.php | 0 .../Config => }/Definition/FloatNode.php | 6 +- .../Config => }/Definition/IntegerNode.php | 4 +- .../Config => }/Definition/NodeInterface.php | 16 +- .../Config => }/Definition/NumericNode.php | 9 + .../Config => }/Definition/Processor.php | 2 +- .../Definition/PrototypeNodeInterface.php | 0 .../Definition/PrototypedArrayNode.php | 106 +- .../Definition/ReferenceDumper.php | 5 +- .../Config => }/Definition/ScalarNode.php | 10 +- .../Config => }/Definition/VariableNode.php | 23 +- ...LoaderImportCircularReferenceException.php | 0 .../Exception/FileLoaderLoadException.php | 10 +- .../Component/Config => }/FileLocator.php | 12 +- .../Config => }/FileLocatorInterface.php | 0 .../{Symfony/Component/Config => }/LICENSE | 2 +- .../Config => }/Loader/DelegatingLoader.php | 5 - .../Config => }/Loader/FileLoader.php | 29 +- .../Component/Config => }/Loader/Loader.php | 2 +- .../Config => }/Loader/LoaderInterface.php | 2 - .../Config => }/Loader/LoaderResolver.php | 7 - .../Loader/LoaderResolverInterface.php | 0 civicrm/vendor/symfony/config/README.md | 15 + .../Resource/BCResourceInterfaceChecker.php | 36 + .../Resource/DirectoryResource.php | 25 +- .../config/Resource/FileExistenceResource.php | 76 + .../Config => }/Resource/FileResource.php | 6 +- .../config/Resource/ResourceInterface.php | 58 + .../Resource/SelfCheckingResourceChecker.php | 36 + .../SelfCheckingResourceInterface.php} | 21 +- .../config/ResourceCheckerConfigCache.php | 168 + .../ResourceCheckerConfigCacheFactory.php | 51 + .../config/ResourceCheckerInterface.php | 48 + .../Symfony/Component/Config/CHANGELOG.md | 21 - .../Symfony/Component/Config/ConfigCache.php | 126 - .../config/Symfony/Component/Config/README.md | 17 - .../Component/Config => }/Util/XmlUtils.php | 27 +- .../Component/Config => }/composer.json | 18 +- .../Component/Config => }/phpunit.xml.dist | 3 + .../DependencyInjection => }/Alias.php | 13 - .../DependencyInjection => }/CHANGELOG.md | 17 + .../Compiler/AnalyzeServiceReferencesPass.php | 25 +- .../Compiler/AutoAliasServicePass.php | 41 + .../Compiler/AutowirePass.php | 334 + .../Compiler/CheckCircularReferencesPass.php | 21 +- .../Compiler/CheckDefinitionValidityPass.php | 16 +- ...xceptionOnInvalidReferenceBehaviorPass.php | 6 +- .../Compiler/CheckReferenceValidityPass.php | 30 +- .../Compiler/Compiler.php | 15 - .../Compiler/CompilerPassInterface.php | 6 - .../Compiler/DecoratorServicePass.php | 26 +- .../Compiler/ExtensionCompilerPass.php | 37 + .../Compiler/InlineServiceDefinitionsPass.php | 55 +- .../Compiler/LoggingFormatter.php | 4 +- .../MergeExtensionConfigurationPass.php | 4 + .../Compiler/PassConfig.php | 49 +- .../RemoveAbstractDefinitionsPass.php | 2 - .../Compiler/RemovePrivateAliasesPass.php | 2 - .../Compiler/RemoveUnusedDefinitionsPass.php | 8 +- .../Compiler/RepeatablePassInterface.php | 5 - .../Compiler/RepeatedPass.php | 21 +- .../ReplaceAliasByActualDefinitionPass.php | 142 + .../ResolveDefinitionTemplatesPass.php | 121 +- .../Compiler/ResolveInvalidReferencesPass.php | 8 +- .../ResolveParameterPlaceHoldersPass.php | 10 +- .../ResolveReferencesToAliasesPass.php | 34 +- .../Compiler/ServiceReferenceGraph.php | 13 +- .../Compiler/ServiceReferenceGraphEdge.php | 6 +- .../Compiler/ServiceReferenceGraphNode.php | 14 +- .../DependencyInjection => }/Container.php | 150 +- .../ContainerAware.php | 10 +- .../ContainerAwareInterface.php | 9 - .../ContainerAwareTrait.php | 5 - .../ContainerBuilder.php | 348 +- .../ContainerInterface.php | 26 +- .../DependencyInjection => }/Definition.php | 424 +- .../DefinitionDecorator.php | 66 +- .../Dumper/Dumper.php | 9 - .../Dumper/DumperInterface.php | 4 - .../Dumper/GraphvizDumper.php | 32 +- .../Dumper/PhpDumper.php | 428 +- .../Dumper/XmlDumper.php | 120 +- .../Dumper/YamlDumper.php | 105 +- .../Exception/BadMethodCallException.php | 0 .../Exception/ExceptionInterface.php | 0 .../Exception/InactiveScopeException.php | 0 .../Exception/InvalidArgumentException.php | 0 .../Exception/LogicException.php | 0 .../Exception/OutOfBoundsException.php | 0 .../ParameterCircularReferenceException.php | 0 .../Exception/ParameterNotFoundException.php | 4 +- .../Exception/RuntimeException.php | 0 .../ScopeCrossingInjectionException.php | 0 .../ScopeWideningInjectionException.php | 0 .../ServiceCircularReferenceException.php | 0 .../Exception/ServiceNotFoundException.php | 2 +- .../ExpressionLanguage.php | 0 .../ExpressionLanguageProvider.php | 0 .../ConfigurationExtensionInterface.php | 5 +- .../Extension/Extension.php | 27 +- .../Extension/ExtensionInterface.php | 15 +- .../Extension/PrependExtensionInterface.php | 2 - .../IntrospectableContainerInterface.php | 2 + .../DependencyInjection => }/LICENSE | 2 +- .../Instantiator/InstantiatorInterface.php | 9 +- .../Instantiator/RealServiceInstantiator.php | 2 +- .../LazyProxy/PhpDumper/DumperInterface.php | 6 +- .../LazyProxy/PhpDumper/NullDumper.php | 0 .../Loader/ClosureLoader.php | 9 +- .../Loader/DirectoryLoader.php | 56 + .../Loader/FileLoader.php | 10 +- .../Loader/IniFileLoader.php | 4 +- .../Loader/PhpFileLoader.php | 4 +- .../Loader/XmlFileLoader.php | 157 +- .../Loader/YamlFileLoader.php | 141 +- .../schema/dic/services/services-1.0.xsd | 53 +- .../DependencyInjection => }/Parameter.php | 6 - .../ParameterBag/FrozenParameterBag.php | 14 - .../ParameterBag/ParameterBag.php | 67 +- .../ParameterBag/ParameterBagInterface.php | 15 +- .../symfony/dependency-injection/README.md | 14 + .../DependencyInjection => }/Reference.php | 14 +- .../ResettableContainerInterface.php | 31 + .../DependencyInjection => }/Scope.php | 11 +- .../ScopeInterface.php | 8 +- .../SimpleXMLElement.php | 6 +- .../ReplaceAliasByActualDefinitionPass.php | 125 - .../Component/DependencyInjection/README.md | 80 - .../TaggedContainerInterface.php | 4 - .../DependencyInjection => }/Variable.php | 7 - .../DependencyInjection => }/composer.json | 18 +- .../DependencyInjection => }/phpunit.xml.dist | 3 + .../EventDispatcher => }/CHANGELOG.md | 0 .../ContainerAwareEventDispatcher.php | 55 +- .../Debug/TraceableEventDispatcher.php | 76 +- .../TraceableEventDispatcherInterface.php | 0 .../Debug/WrappedListener.php | 4 +- .../RegisterListenersPass.php | 24 +- .../Component/EventDispatcher => }/Event.php | 32 +- .../EventDispatcher => }/EventDispatcher.php | 83 +- .../EventDispatcherInterface.php | 19 +- .../EventSubscriberInterface.php | 6 +- .../EventDispatcher => }/GenericEvent.php | 51 +- .../ImmutableEventDispatcher.php | 18 +- .../Component/EventDispatcher => }/LICENSE | 2 +- .../vendor/symfony/event-dispatcher/README.md | 15 + .../Component/EventDispatcher/README.md | 27 - .../EventDispatcher => }/composer.json | 19 +- .../EventDispatcher => }/phpunit.xml.dist | 3 + .../Component/Filesystem => }/CHANGELOG.md | 5 + .../Exception/ExceptionInterface.php | 2 - .../Exception/FileNotFoundException.php | 2 +- .../Filesystem => }/Exception/IOException.php | 2 - .../Exception/IOExceptionInterface.php | 4 +- .../Component/Filesystem => }/Filesystem.php | 382 +- .../Component/Filesystem => }/LICENSE | 2 +- .../Component/Filesystem => }/LockHandler.php | 36 +- civicrm/vendor/symfony/filesystem/README.md | 13 + .../Symfony/Component/Filesystem/README.md | 47 - .../Component/Filesystem => }/composer.json | 14 +- .../Filesystem => }/phpunit.xml.dist | 4 + .../Finder => }/Adapter/AbstractAdapter.php | 4 + .../Adapter/AbstractFindAdapter.php | 28 +- .../Finder => }/Adapter/AdapterInterface.php | 54 +- .../Finder => }/Adapter/BsdFindAdapter.php | 12 +- .../Finder => }/Adapter/GnuFindAdapter.php | 12 +- .../Finder => }/Adapter/PhpAdapter.php | 27 +- .../Component/Finder => }/CHANGELOG.md | 5 + .../Finder => }/Comparator/Comparator.php | 2 +- .../Finder => }/Comparator/DateComparator.php | 2 - .../Comparator/NumberComparator.php | 4 +- .../Exception/AccessDeniedException.php | 0 .../Exception/AdapterFailureException.php | 7 +- .../Exception/ExceptionInterface.php | 0 .../OperationNotPermitedException.php | 4 + .../ShellCommandFailureException.php | 12 +- .../Finder => }/Expression/Expression.php | 8 +- .../vendor/symfony/finder/Expression/Glob.php | 108 + .../Finder => }/Expression/Regex.php | 26 +- .../Finder => }/Expression/ValueInterface.php | 6 +- .../{Symfony/Component/Finder => }/Finder.php | 298 +- .../{Symfony/Component/Finder => }/Glob.php | 9 +- .../Iterator/CustomFilterIterator.php | 10 +- .../Iterator/DateRangeFilterIterator.php | 4 +- .../Iterator/DepthRangeFilterIterator.php | 2 - .../ExcludeDirectoryFilterIterator.php | 84 + .../Iterator/FilePathsIterator.php | 10 +- .../Iterator/FileTypeFilterIterator.php | 2 - .../Iterator/FilecontentFilterIterator.php | 20 +- .../Iterator/FilenameFilterIterator.php | 26 +- .../Finder => }/Iterator/FilterIterator.php | 21 +- .../Iterator/MultiplePcreFilterIterator.php | 56 +- .../Iterator/PathFilterIterator.php | 26 +- .../Iterator/RecursiveDirectoryIterator.php | 38 +- .../Iterator/SizeRangeFilterIterator.php | 2 - .../Finder => }/Iterator/SortableIterator.php | 14 +- civicrm/vendor/symfony/finder/LICENSE | 19 + civicrm/vendor/symfony/finder/README.md | 14 + .../Component/Finder => }/Shell/Command.php | 50 +- .../Component/Finder => }/Shell/Shell.php | 8 +- .../Component/Finder => }/SplFileInfo.php | 13 +- .../Component/Finder/Expression/Glob.php | 157 - .../ExcludeDirectoryFilterIterator.php | 55 - .../finder/Symfony/Component/Finder/LICENSE | 19 - .../finder/Symfony/Component/Finder/README.md | 53 - .../Component/Finder => }/composer.json | 13 +- .../Component/Finder => }/phpunit.xml.dist | 3 + .../vendor/symfony/polyfill-ctype/Ctype.php | 227 + civicrm/vendor/symfony/polyfill-ctype/LICENSE | 19 + .../vendor/symfony/polyfill-ctype/README.md | 12 + .../symfony/polyfill-ctype/bootstrap.php | 26 + .../symfony/polyfill-ctype/composer.json | 31 + .../vendor/symfony/polyfill-iconv/Iconv.php | 741 + civicrm/vendor/symfony/polyfill-iconv/LICENSE | 19 + .../vendor/symfony/polyfill-iconv/README.md | 14 + .../Resources/charset/from.big5.php | 13719 ++++++++++++++++ .../Resources/charset/from.cp037.php | Bin 0 -> 3779 bytes .../Resources/charset/from.cp1006.php | Bin 0 -> 3860 bytes .../Resources/charset/from.cp1026.php | Bin 0 -> 3779 bytes .../Resources/charset/from.cp424.php | Bin 0 -> 3210 bytes .../Resources/charset/from.cp437.php | Bin 0 -> 3841 bytes .../Resources/charset/from.cp500.php | Bin 0 -> 3779 bytes .../Resources/charset/from.cp737.php | Bin 0 -> 3834 bytes .../Resources/charset/from.cp775.php | Bin 0 -> 3815 bytes .../Resources/charset/from.cp850.php | Bin 0 -> 3809 bytes .../Resources/charset/from.cp852.php | Bin 0 -> 3808 bytes .../Resources/charset/from.cp855.php | Bin 0 -> 3809 bytes .../Resources/charset/from.cp856.php | Bin 0 -> 3194 bytes .../Resources/charset/from.cp857.php | Bin 0 -> 3763 bytes .../Resources/charset/from.cp860.php | Bin 0 -> 3840 bytes .../Resources/charset/from.cp861.php | Bin 0 -> 3841 bytes .../Resources/charset/from.cp862.php | Bin 0 -> 3841 bytes .../Resources/charset/from.cp863.php | Bin 0 -> 3841 bytes .../Resources/charset/from.cp864.php | Bin 0 -> 3779 bytes .../Resources/charset/from.cp865.php | Bin 0 -> 3841 bytes .../Resources/charset/from.cp866.php | Bin 0 -> 3831 bytes .../Resources/charset/from.cp869.php | Bin 0 -> 3676 bytes .../Resources/charset/from.cp874.php | Bin 0 -> 3410 bytes .../Resources/charset/from.cp875.php | Bin 0 -> 3776 bytes .../Resources/charset/from.cp932.php | Bin 0 -> 134095 bytes .../Resources/charset/from.cp936.php | Bin 0 -> 372283 bytes .../Resources/charset/from.cp949.php | Bin 0 -> 291504 bytes .../Resources/charset/from.cp950.php | Bin 0 -> 231436 bytes .../Resources/charset/from.iso-8859-1.php | Bin 0 -> 3779 bytes .../Resources/charset/from.iso-8859-10.php | Bin 0 -> 3780 bytes .../Resources/charset/from.iso-8859-11.php | Bin 0 -> 3746 bytes .../Resources/charset/from.iso-8859-13.php | Bin 0 -> 3783 bytes .../Resources/charset/from.iso-8859-14.php | Bin 0 -> 3801 bytes .../Resources/charset/from.iso-8859-15.php | Bin 0 -> 3780 bytes .../Resources/charset/from.iso-8859-16.php | Bin 0 -> 3782 bytes .../Resources/charset/from.iso-8859-2.php | Bin 0 -> 3779 bytes .../Resources/charset/from.iso-8859-3.php | Bin 0 -> 3674 bytes .../Resources/charset/from.iso-8859-4.php | Bin 0 -> 3779 bytes .../Resources/charset/from.iso-8859-5.php | Bin 0 -> 3780 bytes .../Resources/charset/from.iso-8859-6.php | Bin 0 -> 3104 bytes .../Resources/charset/from.iso-8859-7.php | Bin 0 -> 3692 bytes .../Resources/charset/from.iso-8859-8.php | Bin 0 -> 3242 bytes .../Resources/charset/from.iso-8859-9.php | Bin 0 -> 3779 bytes .../Resources/charset/from.koi8-r.php | Bin 0 -> 3835 bytes .../Resources/charset/from.koi8-u.php | Bin 0 -> 3827 bytes .../Resources/charset/from.us-ascii.php | Bin 0 -> 1859 bytes .../Resources/charset/from.windows-1250.php | Bin 0 -> 3721 bytes .../Resources/charset/from.windows-1251.php | Bin 0 -> 3782 bytes .../Resources/charset/from.windows-1252.php | Bin 0 -> 3721 bytes .../Resources/charset/from.windows-1253.php | Bin 0 -> 3542 bytes .../Resources/charset/from.windows-1254.php | Bin 0 -> 3691 bytes .../Resources/charset/from.windows-1255.php | Bin 0 -> 3454 bytes .../Resources/charset/from.windows-1256.php | Bin 0 -> 3800 bytes .../Resources/charset/from.windows-1257.php | Bin 0 -> 3616 bytes .../Resources/charset/from.windows-1258.php | Bin 0 -> 3662 bytes .../Resources/charset/translit.php | 3969 +++++ .../symfony/polyfill-iconv/bootstrap.php | 44 + .../symfony/polyfill-iconv/composer.json | 34 + .../Component/Process => }/CHANGELOG.md | 0 .../Exception/ExceptionInterface.php | 0 .../Exception/InvalidArgumentException.php | 0 .../Process => }/Exception/LogicException.php | 0 .../Exception/ProcessFailedException.php | 5 +- .../Exception/ProcessTimedOutException.php | 4 +- .../Exception/RuntimeException.php | 0 .../Process => }/ExecutableFinder.php | 13 +- civicrm/vendor/symfony/process/LICENSE | 19 + .../Process => }/PhpExecutableFinder.php | 26 +- .../Component/Process => }/PhpProcess.php | 33 +- .../symfony/process/Pipes/AbstractPipes.php | 150 + .../Process => }/Pipes/PipesInterface.php | 6 +- .../Process => }/Pipes/UnixPipes.php | 96 +- .../symfony/process/Pipes/WindowsPipes.php | 201 + .../Component/Process => }/Process.php | 423 +- .../Component/Process => }/ProcessBuilder.php | 40 +- .../Component/Process => }/ProcessUtils.php | 19 +- civicrm/vendor/symfony/process/README.md | 13 + .../process/Symfony/Component/Process/LICENSE | 19 - .../Component/Process/Pipes/AbstractPipes.php | 74 - .../Component/Process/Pipes/WindowsPipes.php | 254 - .../Symfony/Component/Process/README.md | 51 - .../Component/Process => }/composer.json | 13 +- .../Component/Process => }/phpunit.xml.dist | 4 + civicrm/xml/schema/Core/CustomField.xml | 7 + civicrm/xml/schema/Core/OptionValue.xml | 3 + civicrm/xml/schema/Core/PrevNextCache.xml | 2 +- civicrm/xml/schema/Core/UFField.xml | 6 + civicrm/xml/version.xml | 2 +- includes/civicrm.basepage.php | 2 +- includes/civicrm.shortcodes.modal.php | 2 +- includes/civicrm.shortcodes.php | 2 +- includes/civicrm.users.php | 2 +- languages/civicrm.pot | 2 +- uninstall.php | 2 +- wp-cli/civicrm.php | 2 +- 538 files changed, 27942 insertions(+), 5364 deletions(-) create mode 100644 civicrm/CRM/Admin/Form/SettingTrait.php create mode 100644 civicrm/CRM/Core/I18n/SchemaStructure_5_4_alpha1.php create mode 100644 civicrm/CRM/Financial/Form/SalesTaxTrait.php create mode 100644 civicrm/CRM/Upgrade/Incremental/php/FiveSix.php delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.5.0.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.5.1.mysql.tpl delete mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.5.2.mysql.tpl create mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.6.0.mysql.tpl create mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.6.alpha1.mysql.tpl create mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.6.beta1.mysql.tpl create mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.6.beta2.mysql.tpl create mode 100644 civicrm/ext/api4/Civi/Api4/Action/Address/Update.php create mode 100644 civicrm/ext/api4/Civi/Api4/Action/GroupContact/Create.php create mode 100644 civicrm/ext/api4/Civi/Api4/Action/GroupContact/Update.php create mode 100644 civicrm/ext/api4/Civi/Api4/GroupContact.php create mode 100644 civicrm/ext/api4/Civi/Api4/Note.php create mode 100644 civicrm/ext/api4/Civi/Api4/Service/Spec/Provider/NoteCreationSpecProvider.php create mode 100644 civicrm/ext/api4/tests/phpunit/Action/DateTest.php create mode 100644 civicrm/js/crm.datepicker.js rename civicrm/js/{crm.drupal.js => crm.drupal7.js} (59%) create mode 100644 civicrm/js/crm.drupal8.js delete mode 100644 civicrm/release-notes/5.5.1.md delete mode 100644 civicrm/release-notes/5.5.2.md delete mode 100644 civicrm/release-notes/5.5.3.md create mode 100644 civicrm/release-notes/5.6.0.md create mode 100644 civicrm/vendor/symfony/config/CHANGELOG.md create mode 100644 civicrm/vendor/symfony/config/ConfigCache.php create mode 100644 civicrm/vendor/symfony/config/ConfigCacheFactory.php create mode 100644 civicrm/vendor/symfony/config/ConfigCacheFactoryInterface.php create mode 100644 civicrm/vendor/symfony/config/ConfigCacheInterface.php rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/ArrayNode.php (90%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/BaseNode.php (87%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/BooleanNode.php (81%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/ArrayNodeDefinition.php (89%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/BooleanNodeDefinition.php (73%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/EnumNodeDefinition.php (87%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/ExprBuilder.php (80%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/FloatNodeDefinition.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/IntegerNodeDefinition.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/MergeBuilder.php (87%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/NodeBuilder.php (91%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/NodeDefinition.php (89%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/NodeParentInterface.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/NormalizationBuilder.php (86%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/NumericNodeDefinition.php (80%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/ParentNodeDefinitionInterface.php (54%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/ScalarNodeDefinition.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/TreeBuilder.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/ValidationBuilder.php (83%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Builder/VariableNodeDefinition.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/ConfigurationInterface.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Dumper/XmlReferenceDumper.php (90%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Dumper/YamlReferenceDumper.php (78%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/EnumNode.php (91%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Exception/DuplicateKeyException.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Exception/Exception.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Exception/ForbiddenOverwriteException.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Exception/InvalidConfigurationException.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Exception/InvalidDefinitionException.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Exception/InvalidTypeException.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Exception/UnsetKeyException.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/FloatNode.php (92%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/IntegerNode.php (88%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/NodeInterface.php (72%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/NumericNode.php (90%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/Processor.php (97%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/PrototypeNodeInterface.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/PrototypedArrayNode.php (70%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/ReferenceDumper.php (51%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/ScalarNode.php (86%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Definition/VariableNode.php (83%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Exception/FileLoaderImportCircularReferenceException.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Exception/FileLoaderLoadException.php (93%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/FileLocator.php (87%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/FileLocatorInterface.php (100%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/LICENSE (96%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Loader/DelegatingLoader.php (90%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Loader/FileLoader.php (84%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Loader/Loader.php (96%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Loader/LoaderInterface.php (93%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Loader/LoaderResolver.php (92%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Loader/LoaderResolverInterface.php (100%) create mode 100644 civicrm/vendor/symfony/config/README.md create mode 100644 civicrm/vendor/symfony/config/Resource/BCResourceInterfaceChecker.php rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Resource/DirectoryResource.php (78%) create mode 100644 civicrm/vendor/symfony/config/Resource/FileExistenceResource.php rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Resource/FileResource.php (88%) create mode 100644 civicrm/vendor/symfony/config/Resource/ResourceInterface.php create mode 100644 civicrm/vendor/symfony/config/Resource/SelfCheckingResourceChecker.php rename civicrm/vendor/symfony/config/{Symfony/Component/Config/Resource/ResourceInterface.php => Resource/SelfCheckingResourceInterface.php} (56%) create mode 100644 civicrm/vendor/symfony/config/ResourceCheckerConfigCache.php create mode 100644 civicrm/vendor/symfony/config/ResourceCheckerConfigCacheFactory.php create mode 100644 civicrm/vendor/symfony/config/ResourceCheckerInterface.php delete mode 100644 civicrm/vendor/symfony/config/Symfony/Component/Config/CHANGELOG.md delete mode 100644 civicrm/vendor/symfony/config/Symfony/Component/Config/ConfigCache.php delete mode 100644 civicrm/vendor/symfony/config/Symfony/Component/Config/README.md rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/Util/XmlUtils.php (88%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/composer.json (60%) rename civicrm/vendor/symfony/config/{Symfony/Component/Config => }/phpunit.xml.dist (93%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Alias.php (90%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/CHANGELOG.md (64%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/AnalyzeServiceReferencesPass.php (90%) create mode 100644 civicrm/vendor/symfony/dependency-injection/Compiler/AutoAliasServicePass.php create mode 100644 civicrm/vendor/symfony/dependency-injection/Compiler/AutowirePass.php rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/CheckCircularReferencesPass.php (75%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/CheckDefinitionValidityPass.php (86%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php (98%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/CheckReferenceValidityPass.php (90%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/Compiler.php (93%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/CompilerPassInterface.php (89%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/DecoratorServicePass.php (59%) create mode 100644 civicrm/vendor/symfony/dependency-injection/Compiler/ExtensionCompilerPass.php rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/InlineServiceDefinitionsPass.php (72%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/LoggingFormatter.php (93%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/MergeExtensionConfigurationPass.php (86%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/PassConfig.php (90%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/RemoveAbstractDefinitionsPass.php (95%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/RemovePrivateAliasesPass.php (96%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/RemoveUnusedDefinitionsPass.php (88%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/RepeatablePassInterface.php (84%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/RepeatedPass.php (83%) create mode 100644 civicrm/vendor/symfony/dependency-injection/Compiler/ReplaceAliasByActualDefinitionPass.php rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/ResolveDefinitionTemplatesPass.php (51%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/ResolveInvalidReferencesPass.php (97%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/ResolveParameterPlaceHoldersPass.php (87%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/ResolveReferencesToAliasesPass.php (76%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/ServiceReferenceGraph.php (90%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/ServiceReferenceGraphEdge.php (92%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Compiler/ServiceReferenceGraphNode.php (90%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Container.php (84%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/ContainerAware.php (78%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/ContainerAwareInterface.php (76%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/ContainerAwareTrait.php (79%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/ContainerBuilder.php (76%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/ContainerInterface.php (90%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Definition.php (59%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/DefinitionDecorator.php (83%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Dumper/Dumper.php (82%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Dumper/DumperInterface.php (95%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Dumper/GraphvizDumper.php (90%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Dumper/PhpDumper.php (77%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Dumper/XmlDumper.php (77%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Dumper/YamlDumper.php (73%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Exception/BadMethodCallException.php (100%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Exception/ExceptionInterface.php (100%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Exception/InactiveScopeException.php (100%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Exception/InvalidArgumentException.php (100%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Exception/LogicException.php (100%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Exception/OutOfBoundsException.php (100%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Exception/ParameterCircularReferenceException.php (100%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Exception/ParameterNotFoundException.php (97%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Exception/RuntimeException.php (100%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Exception/ScopeCrossingInjectionException.php (100%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Exception/ScopeWideningInjectionException.php (100%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Exception/ServiceCircularReferenceException.php (100%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Exception/ServiceNotFoundException.php (96%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/ExpressionLanguage.php (100%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/ExpressionLanguageProvider.php (100%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Extension/ConfigurationExtensionInterface.php (84%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Extension/Extension.php (87%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Extension/ExtensionInterface.php (80%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Extension/PrependExtensionInterface.php (91%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/IntrospectableContainerInterface.php (90%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/LICENSE (96%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/LazyProxy/Instantiator/InstantiatorInterface.php (72%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/LazyProxy/Instantiator/RealServiceInstantiator.php (94%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/LazyProxy/PhpDumper/DumperInterface.php (88%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/LazyProxy/PhpDumper/NullDumper.php (100%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Loader/ClosureLoader.php (85%) create mode 100644 civicrm/vendor/symfony/dependency-injection/Loader/DirectoryLoader.php rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Loader/FileLoader.php (82%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Loader/IniFileLoader.php (88%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Loader/PhpFileLoader.php (89%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Loader/XmlFileLoader.php (74%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Loader/YamlFileLoader.php (67%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Loader/schema/dic/services/services-1.0.xsd (81%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Parameter.php (91%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/ParameterBag/FrozenParameterBag.php (92%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/ParameterBag/ParameterBag.php (84%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/ParameterBag/ParameterBagInterface.php (89%) create mode 100644 civicrm/vendor/symfony/dependency-injection/README.md rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Reference.php (78%) create mode 100644 civicrm/vendor/symfony/dependency-injection/ResettableContainerInterface.php rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Scope.php (89%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/ScopeInterface.php (88%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/SimpleXMLElement.php (92%) delete mode 100644 civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php delete mode 100644 civicrm/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/README.md rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/TaggedContainerInterface.php (95%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/Variable.php (86%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/composer.json (65%) rename civicrm/vendor/symfony/dependency-injection/{Symfony/Component/DependencyInjection => }/phpunit.xml.dist (93%) rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/CHANGELOG.md (100%) rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/ContainerAwareEventDispatcher.php (84%) rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/Debug/TraceableEventDispatcher.php (83%) rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/Debug/TraceableEventDispatcherInterface.php (100%) rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/Debug/WrappedListener.php (94%) rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/DependencyInjection/RegisterListenersPass.php (94%) rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/Event.php (77%) rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/EventDispatcher.php (73%) rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/EventDispatcherInterface.php (89%) rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/EventSubscriberInterface.php (96%) rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/GenericEvent.php (73%) rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/ImmutableEventDispatcher.php (89%) rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/LICENSE (96%) create mode 100644 civicrm/vendor/symfony/event-dispatcher/README.md delete mode 100644 civicrm/vendor/symfony/event-dispatcher/Symfony/Component/EventDispatcher/README.md rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/composer.json (65%) rename civicrm/vendor/symfony/event-dispatcher/{Symfony/Component/EventDispatcher => }/phpunit.xml.dist (93%) rename civicrm/vendor/symfony/filesystem/{Symfony/Component/Filesystem => }/CHANGELOG.md (83%) rename civicrm/vendor/symfony/filesystem/{Symfony/Component/Filesystem => }/Exception/ExceptionInterface.php (97%) rename civicrm/vendor/symfony/filesystem/{Symfony/Component/Filesystem => }/Exception/FileNotFoundException.php (94%) rename civicrm/vendor/symfony/filesystem/{Symfony/Component/Filesystem => }/Exception/IOException.php (98%) rename civicrm/vendor/symfony/filesystem/{Symfony/Component/Filesystem => }/Exception/IOExceptionInterface.php (87%) rename civicrm/vendor/symfony/filesystem/{Symfony/Component/Filesystem => }/Filesystem.php (51%) rename civicrm/vendor/symfony/filesystem/{Symfony/Component/Filesystem => }/LICENSE (96%) rename civicrm/vendor/symfony/filesystem/{Symfony/Component/Filesystem => }/LockHandler.php (73%) create mode 100644 civicrm/vendor/symfony/filesystem/README.md delete mode 100644 civicrm/vendor/symfony/filesystem/Symfony/Component/Filesystem/README.md rename civicrm/vendor/symfony/filesystem/{Symfony/Component/Filesystem => }/composer.json (70%) rename civicrm/vendor/symfony/filesystem/{Symfony/Component/Filesystem => }/phpunit.xml.dist (87%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Adapter/AbstractAdapter.php (94%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Adapter/AbstractFindAdapter.php (94%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Adapter/AdapterInterface.php (62%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Adapter/BsdFindAdapter.php (87%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Adapter/GnuFindAdapter.php (89%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Adapter/PhpAdapter.php (84%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/CHANGELOG.md (95%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Comparator/Comparator.php (96%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Comparator/DateComparator.php (98%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Comparator/NumberComparator.php (97%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Exception/AccessDeniedException.php (100%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Exception/AdapterFailureException.php (84%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Exception/ExceptionInterface.php (100%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Exception/OperationNotPermitedException.php (66%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Exception/ShellCommandFailureException.php (81%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Expression/Expression.php (94%) create mode 100644 civicrm/vendor/symfony/finder/Expression/Glob.php rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Expression/Regex.php (93%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Expression/ValueInterface.php (84%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Finder.php (74%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Glob.php (89%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Iterator/CustomFilterIterator.php (83%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Iterator/DateRangeFilterIterator.php (94%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Iterator/DepthRangeFilterIterator.php (97%) create mode 100644 civicrm/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Iterator/FilePathsIterator.php (86%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Iterator/FileTypeFilterIterator.php (98%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Iterator/FilecontentFilterIterator.php (72%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Iterator/FilenameFilterIterator.php (58%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Iterator/FilterIterator.php (66%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Iterator/MultiplePcreFilterIterator.php (51%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Iterator/PathFilterIterator.php (64%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Iterator/RecursiveDirectoryIterator.php (68%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Iterator/SizeRangeFilterIterator.php (98%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Iterator/SortableIterator.php (83%) create mode 100644 civicrm/vendor/symfony/finder/LICENSE create mode 100644 civicrm/vendor/symfony/finder/README.md rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Shell/Command.php (85%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/Shell/Shell.php (87%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/SplFileInfo.php (86%) delete mode 100644 civicrm/vendor/symfony/finder/Symfony/Component/Finder/Expression/Glob.php delete mode 100644 civicrm/vendor/symfony/finder/Symfony/Component/Finder/Iterator/ExcludeDirectoryFilterIterator.php delete mode 100644 civicrm/vendor/symfony/finder/Symfony/Component/Finder/LICENSE delete mode 100644 civicrm/vendor/symfony/finder/Symfony/Component/Finder/README.md rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/composer.json (71%) rename civicrm/vendor/symfony/finder/{Symfony/Component/Finder => }/phpunit.xml.dist (92%) create mode 100644 civicrm/vendor/symfony/polyfill-ctype/Ctype.php create mode 100644 civicrm/vendor/symfony/polyfill-ctype/LICENSE create mode 100644 civicrm/vendor/symfony/polyfill-ctype/README.md create mode 100644 civicrm/vendor/symfony/polyfill-ctype/bootstrap.php create mode 100644 civicrm/vendor/symfony/polyfill-ctype/composer.json create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Iconv.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/LICENSE create mode 100644 civicrm/vendor/symfony/polyfill-iconv/README.md create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.big5.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp037.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp1006.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp1026.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp424.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp437.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp500.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp737.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp775.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp850.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp852.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp855.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp856.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp857.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp860.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp861.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp862.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp863.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp864.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp865.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp866.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp869.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp874.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp875.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp932.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp936.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp949.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.cp950.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-1.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-10.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-11.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-13.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-14.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-15.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-16.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-2.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-3.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-4.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-5.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-6.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-7.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-8.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.iso-8859-9.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.koi8-r.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.koi8-u.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.us-ascii.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1250.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1251.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1252.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1253.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1254.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1255.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1256.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1257.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/from.windows-1258.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/Resources/charset/translit.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/bootstrap.php create mode 100644 civicrm/vendor/symfony/polyfill-iconv/composer.json rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/CHANGELOG.md (100%) rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/Exception/ExceptionInterface.php (100%) rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/Exception/InvalidArgumentException.php (100%) rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/Exception/LogicException.php (100%) rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/Exception/ProcessFailedException.php (86%) rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/Exception/ProcessTimedOutException.php (93%) rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/Exception/RuntimeException.php (100%) rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/ExecutableFinder.php (81%) create mode 100644 civicrm/vendor/symfony/process/LICENSE rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/PhpExecutableFinder.php (68%) rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/PhpProcess.php (54%) create mode 100644 civicrm/vendor/symfony/process/Pipes/AbstractPipes.php rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/Pipes/PipesInterface.php (98%) rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/Pipes/UnixPipes.php (52%) create mode 100644 civicrm/vendor/symfony/process/Pipes/WindowsPipes.php rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/Process.php (79%) rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/ProcessBuilder.php (89%) rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/ProcessUtils.php (81%) create mode 100644 civicrm/vendor/symfony/process/README.md delete mode 100644 civicrm/vendor/symfony/process/Symfony/Component/Process/LICENSE delete mode 100644 civicrm/vendor/symfony/process/Symfony/Component/Process/Pipes/AbstractPipes.php delete mode 100644 civicrm/vendor/symfony/process/Symfony/Component/Process/Pipes/WindowsPipes.php delete mode 100644 civicrm/vendor/symfony/process/Symfony/Component/Process/README.md rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/composer.json (70%) rename civicrm/vendor/symfony/process/{Symfony/Component/Process => }/phpunit.xml.dist (87%) diff --git a/assets/templates/civicrm.shortcode.php b/assets/templates/civicrm.shortcode.php index 02f45e08df..c590390b01 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 c950968b53..4b804893ee 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 b3eacfc3f0..b317fde85f 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 15221f7456..2723f0f61e 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 757edce1cf..42dd9167bc 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 8310106827..5808864357 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 e7921e83cc..be444ee7dd 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 63d342f291..4a53288813 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 695f6f097d..09c0b03842 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 0000000000..734eccc830 --- /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 1c5ce80219..db9dd0de0b 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 8345d7fac4..7cc0e111c8 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 df9b49022b..a7e9f8ea08 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 28c2b15b6d..535a783495 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 0d5f1d10c4..0e4260c3ef 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 d12b8716cc..7fd6f54d7d 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 bc09f142f0..9301abd0ee 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 cb13346f55..d7a211ebac 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 8c08654256..a5374fe7a6 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 3ac3b2b0eb..faf2e2a143 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 ef6d06646d..e5db7e134d 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 55e32582ff..346131b9f3 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 fc115dcf92..73aae11201 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 cf2b1e950b..8a8703800d 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 369d594513..2c03f1e723 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 3f12ee333a..889adc25ab 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 066e4a4476..f048612ab7 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 0197f65cdc..c8a63a5adc 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 a7db1d5efd..5a8063925e 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 62295f1c70..9e59495c61 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 075206d692..d05088c118 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 77a15ced82..3090952dc5 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 a8b19f13e0..78a08ea421 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 e783523e0a..b7cb0b2c3f 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 3c13c724c4..6fc3fe7d49 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 17d089d656..f4b61a5777 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 a67ffaa5b0..dfd28028a0 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 d75cb632f1..6362f126aa 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 871ca35427..9d2b002aac 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 9b5f50a00c..e08778fc8b 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 bbabcef8bd..4c1ccc9dfb 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 98a331c6f4..5c3c2dfd26 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 96a8b7d414..5b89189802 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 e3ce7a46b5..9629d21e1a 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 4434d2b439..8e294147d9 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 a781b64587..a358125843 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 6be5be07f7..2bfbf0aeeb 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 fea2e7e4c7..cda6a54a25 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 dbf7059bb1..ba11ef224a 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 bc01e75e1c..c55e0b7369 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 b560e442ed..f0945794cc 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 70e560494a..613bcf227d 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 0000000000..5c881410a5 --- /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 b686cd8501..13f506bcd1 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 8ab1bbec3a..e5cd280351 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 a532a4a2c4..49d003dd62 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 f6a0d6f330..3d40db218e 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 c1a48cc49c..be286cafbd 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 45ebe56fe1..03b8ed6eda 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 93ddf08a4c..9aaa4ffc02 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 7c65629ef2..3969874fae 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 50f583fb61..a0e256b718 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 57938812b6..9ea9ef60e8 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 8dc1a05793..22b18f76f0 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 bc032d05a2..12ec643861 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 c71b57ed24..edaf0d6778 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 2f20a63ba9..5a58973533 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 7be010ab6b..e24e36ff5c 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 30ca5ffaf6..2e6c5e0bd7 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 53f2720e9c..b41b3693cc 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 f031f006e0..495522b2a2 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 5897aff52b..ec7863ccac 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 9f58bddb30..e7bb4ea2a3 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 f248f51a77..651fc0f602 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 5749414704..b038424a4d 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 e171ee9a48..9e37d4ceaf 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 3054bb4649..e312d2ebc9 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 6667d8bab7..70d99b4c55 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 3f53f37e84..32d5aebc90 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 0000000000..072126a2f4 --- /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 9b2a9c9f76..459384ca45 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 a24906ef91..c11b32e136 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 969d4b57e0..6840e3edee 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 212284f00e..dd4ef5bc01 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 2fa7203cc1..7c7d451864 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 796e047a07..c308b8ca02 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 4c41ab201f..913654e2b8 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 b81bc5ec3b..19766da30a 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 25c90c4969..d5eb08968a 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 b21a3a2146..eaea71fbde 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 0dd12fd66c..4e63f49f59 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 b309facc08..a8c0b1b587 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 1f8d2fe79b..922653857d 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 a7dc5733cb..7cc1f4eda1 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 722c35f323..7686111204 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 aef934e7fa..8c86c2b9a0 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 238bffa09b..7658ca71ff 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 0e34078cdf..7b97591206 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 2369127d1a..466e47f201 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 9430c6fb60..ba41504865 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 6658257a27..d0d20efec4 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 5737fbd5e4..6b0ed69819 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 e521a12e19..c1d96128a1 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 0000000000..c1718f0df8 --- /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 b27009b9dc..0000000000 --- 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 dd195d7382..0000000000 --- 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 770c1b934d..0000000000 --- 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 426aad33fd..c56f140dbd 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 0000000000..875b794ea4 --- /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 0000000000..04dc9c84d7 --- /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 0000000000..038f2d411c --- /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 0000000000..e3e109cf47 --- /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 0abb97f3a7..8f7ef8c62a 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 0bc631b35f..10b6c2cd93 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 080524203a..4b0d898963 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 a253716e42..0c44427fe6 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 81b322cb5e..92989a9025 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 59168cb606..455562afd2 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 0f6a613feb..97d765de03 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 f3baf09271..0fadf5de6f 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 4a677da3f6..0d6bf7e68f 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 1413f2bd7b..b535b0a841 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 6c1eebcd6b..4f81b304ea 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 2b8ec1a31a..fafb599b2f 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 d00acd7509..8e2ac735ba 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 c2b692462e..5e582dc056 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 e50a0a0f7a..45c2063732 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 7aa2bdf88f..87d13b5347 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 a3098bea85..16b7890ab5 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 39df78ef10..b369101591 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 2f51ca951d..20a7e0a510 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 3378396935..b6d678318d 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 2951c8d65c..22a26becab 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 df4b6a8f59..62a74d270b 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 8507abe7b1..ba95fa041c 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 1078ccf3d3..0988e0cd99 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 8f3e4d2659..7b5f352c9f 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 a89e60458b..a4d85b07b6 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 e005bb004b..5cf48d3f3c 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 c29270bac9..4cb7aaa69b 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 dc64be3d27..195f38bec4 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 b755dea706..33e563ab41 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 0000000000..e0815d9fa2 --- /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 0000000000..687cc77c41 --- /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 0000000000..6e02f8acd3 --- /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 6d2222cb13..f07bd50991 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 6c2f03a247..ccf9a5e731 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 574b60ce71..f7b4611372 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 0000000000..351ccd6bb1 --- /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 0000000000..b88a4ead7b --- /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 6cc30ad21b..bc53649e28 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 0000000000..f12e592cf8 --- /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 4b5fbd5fb9..1529529b67 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 afe7956ace..3437ca54e8 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 95de18ec26..409b8bd8e5 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 0000000000..8cdbfc7c6c --- /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 85b74c177a..0283e74254 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 948e980eef..453f32019c 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 6098b24291..bb73d17e0d 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 8a53067637..985e7d616c 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 e1742da8fd..5a1155c846 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 0000000000..cfef977c04 --- /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 7ed33666e2..4be65e4106 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 0000000000..32c06a6bb4 --- /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 e09dfee0fa..e7ad1de86c 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 eb9b91af7f..45bc0edc54 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 af61298ba8..0000000000 --- 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 554383610f..0000000000 --- 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 5d321215d5..0000000000 --- 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 0000000000..b90d2861b4 --- /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 6c12afa0f5..54f2f6d2dc 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 a63fcb7529..6469929e49 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 7204f4a47f..8f13232e55 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 e533bf45ce..4ee45c6a5b 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 f15819318a..14dd2bd8d4 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 ad0efe0c0a..23239b69a4 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 10439c08e0..f847a9f41b 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 f6123d37c5..cc9d6cfd8a 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 76d7bb4692..95c2abe558 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 c8ce4311d3..c1696f58bb 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 cb1e683a1a..190e1b4fd8 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 44f813d4be..b38df53829 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 cdda8dd679..ab0efc2772 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 2fee1d3655..3f9a874616 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 dd2f3a195d..67e814ad53 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 69151673f3..5902068185 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 d6d5c572bd..bcb4f7e149 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 03f050c0be..c044948f25 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 fcdea29a6a..675c27b9ef 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 1db2a6d77c..eb36b6844c 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 232db9fbe4..333e8fce71 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 cf21ad061f..895b6feb3c 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 8bae0c3aa1..07ede94683 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 0000000000..65b602e713 --- /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 0000000000..016e014b6c --- /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 0000000000..7903cca932 --- /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 0000000000..bd614c4b6b --- /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 0000000000..7c47ad70a5 --- /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 05ae1fdcd9..1ab4a3ae59 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 fc3e012916..8885775e60 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 df06b307ae..77e90cf7d6 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 c64b2ecfdb..27fadba6f8 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 db7ebc2411..a6292f74d8 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 dc25fcbd26..817906f507 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 3d79b29858..fedbe0cc1b 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 f908a499ca..105e2d6470 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 b2b63368e2..1fac66fd37 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 f7f84bc071..f94d3f01f8 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 748c9f28cb..35e30487a6 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 ddd716d06a..40c0bfcc6e 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 575495bb68..1bf2ad4bf6 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 e885823892..bb2b9eb339 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 ab56a92838..0e297318d2 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 a7cd4486f2..8945cba005 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 224871ab6f..0cb40018b0 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 5e1af17ada..9eb8789950 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 ba2307024c..8ec068a84e 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 b9bddc4938..45f1f681c1 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 2304ad9987..439935e455 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 025e69378f..3e0feab869 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 931b46792f..6af4a61e47 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 7fe336d8fb..047b258ad3 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 854c265763..e63f3f227f 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 2ab7a45b6b..0cd84c72bf 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 6af3dd0a6d..819abe6ef1 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 c6600c7783..368cc19ae6 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 43028bc600..21d7fb9e2f 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 3097878bf0..237009d45e 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 9c1b4d9f1e..506eb1be08 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 de4e127386..a6f8d9c664 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 dd0a85a6b0..dfca9dd27b 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 dc6846df8d..9299bc000f 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 0000000000..bf400da196 --- /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 0000000000..64c93094ac --- /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 515fb5c42d..b65d40ae44 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 0000000000..0e87aabb52 --- /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 4c00ae4140..11770106e9 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 0000000000..55b3e09648 --- /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 0000000000..d72203bc1a --- /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 db03d127a4..b3260f2be3 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 0000000000..52ae833d44 --- /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 0000000000..586c5bf280 --- /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 0000000000..612d777864 --- /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 59b30a3a7a..0000000000 --- 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 ebf107f74f..0000000000 --- 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 690d7d74f9..0000000000 --- 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 d8d4eaa3b1..5ecbd2efdc 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 9a4a11b940..ee1322ccdb 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 2156534e9c..36ef339fd7 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 025a2d635e..eaf7f00ccd 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 b78e440974..27cb2d58a4 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 c5ecb2d504..ce9d556eaf 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 0000000000..c1f05e03ec --- /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 0000000000..b279548553 --- /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 d7570ddc2c..6bde1942ba 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 ce89f24e18..f79a4b0f5b 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 304f784951..f17096f8f3 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 3d4988d2e6..416103ec0e 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 4dfa9cf31c..dd9539eeb7 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 7648605451..3085006058 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 ef0a19c6a7..80eb67a632 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 0000000000..27e5048245 --- /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 d9a656f787..b57f48840e 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 6bd6161ceb..64ffc9e478 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 f9e6024164..9434ac70b5 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 044529eb6d..8eabf3529d 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 0ef0af05b5..9999214c8b 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 5c53a33949..36abc6159e 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 9e18a9ebde..911875cf51 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 d60ae35bc8..2b88bfb917 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 e34b0681e5..3da1a0d5be 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 0000000000..cf48c53da8 --- /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 4e80632926..db1864ec01 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 85dbceb9a6..181c85fa8f 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 35d46cf83d..3a31dd55f6 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 c90d76f48a..8a11137517 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 dc9a1a00ea..43bac7120b 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 6a3e2ea569..7e8cf812f7 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 c49c932575..6a6d421390 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 f0db5de6bc..00b34b5968 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 4096915311..f3f2a5065c 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 e85bb53dcb..d78491bb96 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 57280aad60..ee1ea2cb3d 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 b2981cc7d4..dc09a65820 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 19e800b314..d9076eb1f8 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 bdc75e0417..70f68469e3 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 f5a1485a5f..44e9c0f7d4 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 98924014ad..e7407b0e2a 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 ba146f61c0..dd001e4ed0 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 5f35a1e5bb..dfb0dee193 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 df3e50ece8..fc8092f4a3 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 5fed552ea9..5a85d67ddc 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 9ec32a7f16..35d1218e25 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 b529f0fe83..1d97830f4a 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 e65da506bb..620ed98e68 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 705ba38ec9..c3bd8423ba 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 f8e058bafd..b56a2ccff0 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 424f02088e..18de31272f 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 c666bdbcf8..5bd18d79fe 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 e630a1edc6..4aa0059992 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 43028bc600..21d7fb9e2f 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 a8dd5252ed..417ab908a3 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 cad9320039..3b0b57ef0f 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 878d965b1c..502c72abaf 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 a5b4e5ad24..183cacc4d6 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 0000000000..05a3ba2b5c --- /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 d71eecf741..9fc297bab4 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 16ddf87f85..fa8cbbf287 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 08c1d9af4f..c52bd8c98c 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 22d1e82961..82b578bec9 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 3bbe958ada..51bc768c0f 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 966f4de07f..a8d7cf88df 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 7ba8c3a630..cac6f6c4c2 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 3ea6d9636b..ad65ad960f 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 e4f4da19d1..c17029b3ef 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 96003547b6..3291b373de 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 0000000000..932647f94a --- /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 88084880f8..869dfae1bc 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 0000000000..b74e676245 --- /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 161229e44b..b0b8ed6c2e 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 81ac67cc4d..11b1097399 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 2e20b6cf31..bb985ace4f 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 972d708c59..0000000000 --- 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 19a1142ae2..0000000000 --- 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 3b4881703c..90b297fff2 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 e50235607e..9654ee4ddc 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 ea30a46309..2506690ca6 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 17a217226d..781f767d54 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 76f0e38776..4dcede7e73 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 e51aa2fafc..53d7c5d51a 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 e16627d6ad..1552af02d8 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 7e74a37aaf..5a94ae82b3 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 dc39b05d52..320919ae2f 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 46c11100b3..b41b98e554 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 9d9fc4d44c..60160a90e0 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 ff7e305cd5..8af778919b 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 a8955ca42f..95c99408de 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 7ef9ece757..b3cf56c502 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 43028bc600..21d7fb9e2f 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 0000000000..185c3fecf8 --- /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 8031f4dd3f..0000000000 --- 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 1b1bd39ac9..14fc24ba22 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 b14fde5750..b3ad1bdf5a 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 a4c0479f7d..aee6e804b0 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 c212e664d4..8f4f10aac7 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 15533db408..bcc8fe81fc 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 f68a8202c8..144e0e602b 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 c88c763173..c11965a424 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 00e4d33f7a..5df92e733d 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 43028bc600..21d7fb9e2f 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 59d35ec928..6d85c51b8c 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 0000000000..877ab3543f --- /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 df09f93dce..0000000000 --- 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 1b844fce9e..3a2db520b6 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 32444185a1..7bba6fc2f0 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 4ddd913174..1a1647c317 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 244301a739..ef458695b5 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 bdc3a93870..8d8fb0749a 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 4a25baeb6f..f6e4303d00 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 0fbf48ffa4..140c5665c9 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 378a26acda..c2fb66cf5e 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 f1dd7d526b..a45c20825f 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 4f5e1ffe12..ea37566df8 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 8b7746badb..3de43ef4b8 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 4b5b5ba838..f62c0e5740 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 15fa22147d..594940a47e 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 3663112259..4c668582cb 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 2658f6a508..db85e682d9 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 900260751e..e83c771609 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 0000000000..e80578ecef --- /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 a249fc2546..2f1ab3db03 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 34ce0e7ce4..08ede1422e 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 70ef47c821..007b688675 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 fedcc5e708..2e56cf2800 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 24b15d97ad..6666e07ec5 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 4d5ef9a4bc..b01e5e3f5d 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 f78c71ed41..ce9d3aa73a 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 0000000000..c57128c278 --- /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 4da2f5be01..9c4e5c4aab 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 f50fd82c34..e9811d4a03 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 28cf770ede..81594b8774 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 f1cd391e21..e168cd8ffa 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 f4da44c4cd..acb98361c9 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 068a7efbae..fc8854047e 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 2bb8ebd223..3fda557be3 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 af824d0e43..cb2964f8f2 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 3d3140a6ae..bd1a7fb700 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 b32ac8d6df..53f8e31c6c 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 0000000000..21d7fb9e2f --- /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 0000000000..0b19c75257 --- /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 f8bd6a0851..8219078723 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 6d7bff33b4..fa6ca4b940 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 c7fbe02191..0f4e025b22 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 a6984b82e3..0000000000 --- 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 1ddde851b9..0000000000 --- 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 43028bc600..0000000000 --- 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 4fb1eca007..0000000000 --- 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 7740157215..53dc98a9b2 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 bc38ccaa45..0e1a8669be 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 0000000000..58414dc73b --- /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 0000000000..ad399a798d --- /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 0000000000..8add1ab009 --- /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 0000000000..14d1d0faa3 --- /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 0000000000..0504dda05b --- /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 0000000000..92874f506e --- /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 0000000000..24fa32c2e9 --- /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 0000000000..2421831c6b --- /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 0000000000..b11985494d --- /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 GIT binary patch literal 3779 zcmXZfbyyT_6o&E7*0H;FRAfQ1+hxJ-?!Z`K6%-LSRP4kq1e8$h?(UfRy1To(yJ7C< zFZOpmXV|%R&wI{nbZly3s$m3z-e6L^8J6G;dQFe%_4~bPW`tpyu7_NvC#L96RFR6I zVyHMOj!K{ss3fxTVJTP+l~$Mz%fJ<=tis)}oVXPl;x<?wmPZv(1ym7LM3qn_R2fx9 zRZtaF6;(ymP&HH?RYx_DwHMYD*TGt_EUK+=J*)%kpt`6os;ANnSYO-@8^8vrA!>*k zp+=}NYK%-|t%Oa)Rj{eJ8a5Nxz%X$wYz_?+j%uSg7pxB>bmayZDQ<)<#7(fJxEV%? zTVN|#3bjV1Q5#goQCp{FtsM^9ft?Q8JE-Nn?m)21K}V43pcBY)&>3Vq=;ENH^SUd+ z9tYh(jssVB-FPl^i+L~_)<7Oq6UC@>AB=_dP!D9Ho+{lBdqMjk>@6OKeMA-a6%Ua1 z6A!`u;t@DNJO&4f7vLah>3s*o)`UY)G#ZK`&@j{z4M$7S2o#P+BKrg!C7y(%#Zz#M zcpQ!u&%klwSvX!i2PcT9;Y6_jPJ&I)WE6(t;$RCn1x2E%$c?5UOK&nAwj%VRHfRR2 zbtvOSox%iB2ihm<K+hC)f@g`EO^KqWQIg0ham|L-QEp=nj6%t%Ihu>6p%fH@=Al@W zitOufzNksy7c~h2q9#F5)D#Jc+6fCp?SzG*=H(($QzQ*e=Pnkb?q~^WhL)lpXc;OT zZ_XxM4n1fEYKm4Oo6+D}1-*o;(G0W(#iO+-0j)zml#XVi^=KB_fD+M0l!P`ROUGlg zc#Cukw9mt>;vKk6ybHJMTAlnIqORQuXH%Pj=Ad0D8D*lmC<~>aY%~w;MyY5InvZgj zALSxTLm^MRNtzFBHS}JkYQ=p@(<v@cs?oV$yh3^aE=LDZ03AX>bQp!u5wrjuMGMg} zv<MwXY3Kx6j7}m;gZq?tkMuOO*?g`uq8?AqirOvbbgf3=c{r8-bU~pu!bMRV;gWcb z;>)7u^A%D1;;ML+;%nk<cwJP--4NArH{oPzZ=osZwn{a-?}(cFcg4#T--EUuD(}N3 zgbz?pWT9TjM!nI)s1JGs^+k`Oe&{jOA3cr+peN8k^dz#hp`L=aZv1IcpWZX#MXr5T zyab;U)vC|KWrQ!FLFh#^7`=pspqJ55^a>h=UPZ&vYiI;|9gRe9pi$^eWZi&oL0e<! zZBb3}j;P{yMIGk%L^b{Uuy6xAgZTrc>dg<~Xu^-s81yk3i#|c)(5GlT`V37#pQDNB z3p5FRi7b6VUqL&Q^lLF2ej{eUZ$%zSUEhgWq~F7~=m*pe{fOG5pHK(%GwO(bL7mXA zs5ANvbwR(QuILZc4gHBM_1$04&LjO>%!mJoIq+XG7ybvWf<i{R4I|9&3xtw`rYD@A bqi!RV67U5hoZqHJ1%6*J<WDhG=QjQa^zbz^ literal 0 HcmV?d00001 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 GIT binary patch literal 3860 zcmZA4Wq4F)5QgF6u(&%c5F!xViQ(=pL6#685JK2&fZ*=#E~R+0xFmtnrtaR-Qg^5B zEhXRc&Y%7|b6?*iIcMiRlWU{nQm3SPJZS-6ASuBcGSL_Cd1Jgjzu%YP4flAxVfTf3 zV`B3zk$K98@}c}FKPrF<pn|9%DufE5!l*DRf{LJ`s3<CiiXjj3pyH@FDuGI%lBgsq zg-W5)s5B~r%Am5SEGmb}q4KCas(>n>il`#0gesxRs4}X8s-UW<DyoL6q3WnQs)1^t zny4nKg=(SNs5bH<FRFv;pt`6os)y>K5EO#yqxvWmg`)T{c<<^m5)Q*r1d2cnPy^Hu zHAImp5;a1NP-D~>H9<|Bn!0>8b#*gWH*<A!S2uTc3s<*rbxT*bbag9Nw{mrBSGRU` z8&|h+bz4`rb#*&ew{vw^d+wq=ib7E+8bzZR6oX<>EQ&*Mr~~SNI--uK6Y7LIqt2)c z>VmqWuBaR8hPtEfs0ZqSdZM1F7wUz2qu!_w>Vx{CzNjDShx()bXaE|32BLvz5E_IA zqrqqh8iIzRp=cNyhK8fzXapL8Mxv2u6dHv_qtPfn9^SjUOpk$M&{#AUjYH$mcr+gQ zkPl5j6Ho$5KoikKl!y}1Bs2+4Mw8JLGzBH0Bs3LGMbpqUl#G(mbTl2MpcFI%%|NLr z70pC5kstX{8cIU}6hP@H9nC_s&}=jt%|UZe2FgHl(OfhS%|r9ie6#>9Knu}Av<NLi zi&5@kxI|n6mx@c_GI1GPE-r^F#1(L*xDu`sSHacdYPd#R1J{ac;W}|0TraMN8^jH8 zqqq@n5;wuk;%2x-+yb|XTj4fw8{95#hdaa_aHqHv?h<#w-QsSzN8AJVihJQcaUa|- z?uQ4&1Mr}D5FQc_!NcNVcm&=)2k#fp!=vH__<(p39uqIY<Kks_Lc9V`idW$&@ftiW zX2CP?mInHusK?KQxtTNvb*cwE3-4qrvggc-!+EpvaN&QxXjVWjnH7o4a;D~b#jHtQ zwSI-<npv^PGAjt#_VdSioE-B>eBJsLjT>ft8V{K@{+nif9uLcz+5Emo%-3<Q^&i2H znvdeg%*XKK<`eh{^C|qK9Ml$g%FfSl{<K-+d&c@T>}T!#Ed9^fx!(Qf?OYjs!K_ri zXjTqiGAns6o0YX!%sKqMSIsx@Yv!BybvZ}*dc&+W_oi8^>y}yf|CU+H>us~1|F&6q zeaEc4zH3%K-!p52y>C`tKQJqgADWfNkIc&B$7bd26SMO6sT|Z!{LHK^___5fk6)OT z$1ly=Kwp`azpu^8-#2nl`|MjgS02AJE01^NY|Z0)J6GO*kb`>Pel+WS`^l_4|7<?Z z{C|<N^&j$Av*!JqS@Ztgta<+-=P18_nzdyAGAqx2%R#N^f6PJd=U+KX@AF-AUVbB@ pJf0ALVp@7~z#9|F_uD8>dP-ViAl!Y~&1>){2Gad0UiC$J{sW=Ke9`~_ literal 0 HcmV?d00001 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 GIT binary patch literal 3779 zcmXZfbzBsC6vp9e>)72oDzc#1?XqBZcVMir3W|suDt2NQf(qE(-Ffc}+-uzK?(XiA z`M!U#&*we6%<i0Xe!J1JsfnqE5eRyNN%3Y_f;Z?jJ*L<1_okT<hH1JUbD5r)f<I9O zDufE5!l*DRf{LJ`$l3*q!BVKW!gN>yE<q&~?trDljnEJ`!P2laDuc?PvZyR7hsvSy zs648GDxiv}BC3Qcp~|Q-s)DTDu&THUR)Zx`b%m>84Oj!!L^V+@m1e-&;$~O})<Jbq zT~rU%L-kR8WFl)RY#=U!4aMcKk+=eei7R1aXrORZ9mTm|Z5W|vu7Q!_TG&Kf2b+rP zVU)N5HiN}bb5tC)KqVZtbXwNh;-D4S>Y%lQYR=;}1lt_61(^=ofh-5@!FC57929jP zcO=;9pcBY;;OeXk&w*|+7e>P>$b+h)7?tjUv9K2Ef=tv^rTbtvXdi&x#Y3=%sN$aD ze$rmzLD*Y74Ew+ZsIS8Fu%D>5?hl(24nWapAc{bPP*XG*H9$j9I2wxV<8YXG0uC2X z!V%&zI8r<fM~P?PXz?r@Bc6g|#l3JG%+swIFP<Zfi^EOe1QdxTA~%|ZCZfrx8S<hQ zXbQ45l<}gbFhSHn`$P@&R8bQ=P1J5mgyZ=?NeUSf*L0Y#H$DSKQJah!qnT(DN<lGb z7K%lw$i4<=i&_MJQHvlTY7qoQEs>C@BVmrHBVn$nbvaMe5=n!3YTx;=GZ(c$wG6v! zA<WkuUj!d5IOi-}3_WOxo~rY1smOM4ErVWam!m0Y1&T*2Q36_pd?+1FMXS*?v<4-j zwI~U#LzYHly?B#!16+hQqRD8JN{_(JqCUJWqDEjVoK9^9nt`^VWR!_!qAZkxwxd~S z2TDad(QK5B{3r)mS_`@24bolE)*IQaRL!_YX*$Jwm1=kH6EBnQSMe2i00z)O6hwzm z2pvXq&=E8j9YyodF_eamqxt9rvb4HSig!s*!3pRz3PWd57j#xn)G9nD>i9S>>O{C8 z>O{CGUgf1OiCWN?#iOKGM15XY#apD;#M|(?cn97PwUKYag@m^hYJ1-nwfXOemngmq zZGEeJT+}r_0lQLbp>D`V-BBLuf$~vL^d#zqo<hCRJ=6!?M}5%)Wa*H42yI>Y({M4h z&nUbApA|2{=R~#Y^Ds|~`~}#L+80rO^b#6?UPc4aD`*gU6%9tOp&{sXG!(sohM_l+ zbsfG1ZEc~q;iF^JS+4IWRq?x`rujWlP5-{Amij<ccYX+m^THpY5$Izy5`BV3p-<6h z^cfn1K1XBG7ib*%5?Q)KUqL&Q^lR7%eWNe~ek<~w)b*X1MfyE#iGDz>(2uA!`U$l` zKclwj7t{{@irS;!PzUro>WKb8ozS1iQs4ar?Of8oVMFwf!fg1jm;?WVRzZ(Ox(y@D k?+b*IgQh2(pQCOgloId-Bb?u+1qFUzFyv1$Rp&PT2Vg`sAOHXW literal 0 HcmV?d00001 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 GIT binary patch literal 3210 zcmXZfS6CER7{>9~aje+8qaXu{y}K;f#e%&dSXNjCMZ{%E#NK;i7klp|Rup5+kfv9u zu6ku}SLy90k@J7Ac7D(M&9n2J=X__LiA%`I$g!;4pf8x2W=E#`f<D`8`vL)9z8!7Z zw)25wd*e%fVoOvCl|rRaX;cQ4L1mG<7nXw+QF(={U<J4sg()n66~&LCC4K@c!Ahty zs*I|jDyS-|imIV%s5+{S!cjP?foh<ds3xj~+<maNxDwWZVW_Uc)vz9{hw7vHsDVni zz=q;R*a$X4jZtIN1T{fTQB!0icL{7JE``m-WiUcq4kN`Cum!YG6sn6-9oP^?>&`VW zMqCS9itAu2aXpL`H^A1g9BPBgqqeAmQ9H9`-AxAV!DfRF26fDJM}n;eoxnDO&S1Mi z7qG*it3g?F-Hl+UL3gmr!0Dj}-wi$D9vBB}Aup<p;#ImICcp-$C$dp56rxS1w@9N- zA5nX#uSmB}KaqZ&{vsVa14Mdu5=9N<K#|6sLC`(SQw@e~&=3@dl29}nidvyzXaO3I zqR<Ew(&~;BwYsB3t?p=12hSK$BRW>p`i>J1@JHjtgD_b<1Sh~|C<R5L)Ku6KPDC+i z67rzQ$UO_Ez}Coz+M=l_q_s^GkC3K|N1<Ol2B(R~;dJo?%n(n)Oz{+)0bSiY6UGu| zp%!QsnvAkhJerLX&>R#x4TI3tTF-^gmS~sd<0%x+Lp{)Z6oD3?o@gO@e+row)*|Rd zi&1m56#39HG!-pJX=nvXM=OyZtwPh#YBU|KK^bT*%0%msdj_r-Z@`V>MYu`405`)K zXbYN&wxTSw4b4K^Q8wCvW}^a>gLa}hXcr2geaJ0>2SjbdgJL1+A-D(~M!Dz+3ZkPZ z4;@1vqT}czbOOyqCs95+h3292$o&*vfRoTgg&L<zqUPtac#YyKq9&wJ)Hq!guTp$X zya|iMTkyJg8-4~;&<!*Z-Bjs$cuUmO-WIQr-hsuMpu2EB;peCqa#3$ojQXH2P+#;V z>W98U{n6KG0Qv?cqI+l{x{us*@LRYLeTN32@6llN0~&&UL`mo;G!#8R!%zqfM-R~m z^azbakCA&FK7sGgb8~(?g~i$h&)_J+=V&x~fySVhXe@e##-Z0}JbHtY(OWbDy+iIL z_%m#WenIWguc!n14Ru7nqfY1#)EWJWx}d*MSM)dPhW<g_(Z9&O4F3~L-lQ=e%Zd#6 jbMvx-wl|8e3XheSo$C)qn@^0Af`C7m7s$3%=du0=GS;HS literal 0 HcmV?d00001 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 GIT binary patch literal 3841 zcmXxnWq4Fa6o>KRu(&%c5F!xVNkVXUcUVXufe^xG0|a-HHf@n4xVt+PD{azJCw14< z-CZb|_kTX!^Lx(By>sWBx%+HnbW&WB$CDiJ1>&cBgJOIEpEt_u^ZR|N-cXO%8**QW zH>yj)CA>g|P$5(p6-Gr+5mXcvMa57tR2&sYB~S@e5|u=yP$}d=9#k5YMrBYLR2G#* z<xn|P9+gKGPz6*GRYa9gB~%$zMpaN1R25Z4)lfB59aTp)Pz_WQ)kL*WEmRxTMs-jf zR2S7n^-w)jAJs=*<V6io1Jn>TM2%1*6oi6MW7HT0qhK^K1m3&49tnk^C=7+6Ca4K& zikhNu6posqW~e!8j#{7=PAy%3wsdhT7q@b8YZte6aT^!6adBH0w{>wl7q@e9dl$EN zaR(Q7aB)W$cXV+l7k6@TNM}~j8AYH76p12H6pBJ!P!|-9qET1W6?H@1P<PZF^*}vP zPt+6jLcLIL)Eo6deNbQ27xhE^P=C}P4L}3XKr|2yLW9s?G#Cv*L(ot(6b(be&~P*y zjX)#NNHh|SLZi@VG#ZUTW6)SM7L7yW(0DW+O+XXS#EJ0U)%ElwI0;QglhG731x-a$ zkq`OMG&BuON7GRZib1g`7R^92&`dNF#i2M9kK)lRGz-l}vrz&{Ky%O>l!y}1Tr?LY zp(Hd9%|m|VN69D|1yBH`pcFJ8%|{E+0<;h<M5!nhEkcXXVzd}7K}*n5v=l8v%g}PP z9IZgP>)}fA23#c`gR8~;aE*8nt`+yfb>bnoUOWQR#N#ksJOS?)kHQDUGcZFu4IdOw z!iU5)@L_Q++#sgIjpAXrNn8gvix*+0co}Ai=V7*Z9c~e?!mZ*hxJ}H4+r^!52h7nv z?-UP^-6d*ccf<Tu+Sxt$_9jN}g}M9SKJgUXFJ6EL#B1=Ncn%&CH^Rd(M<qNWYVJ`{ zFMJH<XKY~daivwX6XH#>Cq=d4DN*lmT2!-~5w-DWVScujdCsg2Id9&~vo6S)tMEm$ z+WL~5rKevut2$TAs^uf*Ebe#JtnytmYkk+vTNr=CybIqnt2rJu?;w9m&eYC6X3ix4 zxLIACW7gK^nsxst%qy7xq*=wdEobc}|CD(Te%ibpKV#N<o;B;E@|;;`@OiVoBQKcs zes|1Tf1X+W|DstRkC)7<=gVfDpI6M=SnsRmt@t&w`sa1C`sWR^+VM@Z&c$1DrtbH) zIfMJZBWI`Kcg^~My=T_=_s!am56r69hxm>T?ME<I)yY>@i~ktrY3?V=s#QN#b~P*e z4CY*dpDU|%exbQ4<Cmh|`YTaI|5{W}egpH<)KlN$Jbj11(`Y^TdmF8r{UE37g#L(g zv;#j`S_S{vtcLhS&QQbsYS!(3!?{;@?cZ&>>h%ZCIZOIarPI_-e<`ime_L9o;~#mY zzLWoIxPDarQ#xB~yQ_2o!y-JMAb)IfN<zRJ70jR62v164a%>>f{j)6?;ExTY_!GSv H7vcFIjh|ty literal 0 HcmV?d00001 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 GIT binary patch literal 3779 zcmXZfbyQSq6vp9e>)73LRAfN0+hM@&?!Xvf6ciCBRP4kq1eCVByW^bO-QAsfy9>_m z{cGk~@BU_;1^e53CMqT+A;sbF2RwnqI3qOP6Yv;r!{hULQjKtjVK^Ug8t&-gm&jt3 zKqXK~R1%d!rBG>P=D{+s0xGL84VHr|QF(=XU<Gj-bcowwMOYD4LX}WuR2fx4RZvw_ z6;(skP<2!t)j%~+O;i)rLS{a!Ev|=kV0lzm;RaX_)<gACebhju>9C==12%$<P-D~> zH9<{K2ns<4GFQQ-;%eATTmzenYhkFk4z_>}6o%@eSSM@<!*y~aj1V`$mf~jEO56e? z#jUV4EQ8vhvZyU8XRDpvvgS@3?ZGY^9c<LG-*+U~ZKD&&u+bT0+UNqZY;?6z+J4`S zV6TntAlrtshaNl!y2M-<1#2NUs*R#mS^#5U1Jn~4sFzCj!QRk10Q-oCU|&(i{lxvG z{l$ZDfOr@V6pz9|;(0h2PC-LZ8#EL}p<yT-4M(le2-FmfL}6$YvW~;i;t4oLJPF5& z$KW{eG#oFUffK~DaH4n$P7({@WH=Q~L7^x%7Pf>_Q3RTXTxdF)hGwAF$b;IVnaI+W zj1zSS<3(L(uc+%hOVs_HEow3)h?+%-B6q|&2bxECjJYrpC7~8*9-5AlQ8b#5Vo(aQ zuE7PO=73Ms9Po>p0|8MpBq(YlEEKg77Kxgci$%?lR5*jDSb}<>rKmYthI*pqsA#y^ zdvFDGqm`%`T7@hIgL5_X5UxQp(OMLT)}eT`9(hq3nuRu?*=Qq5K$}n^+Kf!yjxFL% z(yh=s2e*m0;db#3+@Z6&_d7+M-38}Rn~vt9-6#oVpm``0C8I1fAMHUYXfIlTvXKwv zAX76TSG+-*2Q4*pzEZVffzmXJ3zcec?h`MQ?uRST0pv#qQ2-r6L39``L`TpfbQCQ{ z$51Ldj+USk$kf<ADc&VL1ugcT^R$>xdPXdOXLVMS@SLdaabDCyxFBjFTokYJQI|x` z=gXqj#TD@i#aG2!@S3QWyDqBbZipJlH{mjl-cqRHeOuJvzaw6v_%5{crScwJN_Zdj zLMG~sEYt@*iu$6*P(SoI>W`j41JILbAbJW7LQf-8E9x0&>A{~B_2+v|yujJ##f$I- zQO)`yTu%5B8jM~>L(nT|D0&qQL$9IX=yfy#y@5ueH_<5c78;G-M&@<+4zx6g-WAmq z?};jYU(|K}Kvdg*2#Z#*J(@pKs^<I{jv@R6jYXfLap*HN9(|4`pfAuw^d*{vzCx4H z*T~dA=o@HdkbWy>!SBR$_(0?<sq>+jN%}o(hkiiq(T}JD`U!PJKci0Q7t|U3in^fR zP*?Oj>W2P6-O-=ORNwsttz6Q-#XR_rm<|6GbKrl_EG%M#%i#$1dHunpfZ-0~=cvmO YO!j*N;r4IS;sT#H5cDM*s&hI12mJdrGXMYp literal 0 HcmV?d00001 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 GIT binary patch literal 3834 zcmXxnbyyT@6vy#v>)PEqDiVs_Qg(L-#tJAXA}+fsHYV7ytliz+buZoyxZTO^?hdcK z-{1S!oX>OKnK?V}IkV41#-t{ux?E{qw>K%y35s`n-A<I__ITXsPN>UqLLLcmqM{29 z;RPy$3ZcTNFe-wIprWWKDu#-o;;1+(fl8o~s3a<dN+B0=q0*={Duc?PvZyR7hsvSy zs648GDxiv}BC3Qcp~|Q-s)DMZs;DZehN_|Js5+{FYM`2^CaQ&Mq1vc6s)OpFx~MLy zhw7pFs6KL#gBqX)s3B^I8lgrg2nC_Ws4)sg!6-HaK0KNp35B63427X4s0nI{nxb$N zj+&uns5xqmTA&t2Elq#6G;u2vw=!{S6Sp>T8xyxNaa$9&HE}x=w=;2j6Sp^U2NQQN zaYqw(G;t>rcQSEEXR7FoB2Wa1M3E>8MWJXEjbcy?>VmqUuBa>OhPt8ds5|O`dZ3=D zC+dZIq28!B>Vx{AzNjzihx(!Zs6QHj2B3jxAR2@Qp}}Y{8iIzPp=c-?hK8ZxXgC^y zMxc>sBpQWAq0wkG8iU55v1lwBhsL4tXgrFIg%6LWrzgM(Xd;@3CZS1aGMbFs$c?6; zDJTxbp?DOJ5>Nt~il(AzXc|gHi6{vrq3LKknt^7ZWR#3%qM0ZKrJz}87D`2_Xf~RS zJjjF6P#W?gFY+NDnuF$`xo9q$hvuPll#b@3`Dg)JfEJ>KXc1b37Nf;z30i`dqTJ0e zL)-$FiCf`v(GORM*>I&8fUCr9aJ9G{W{NvtmbeqH5qH70;%>N3+ymE(d*KFgAKWPJ zhnvI$aI<&_ZV?Z|t>O{r7mvbh@fZw<$Kf{d1l%rOfIGyCaHn_)?h-G<-QpFvN4yI6 zir3&i@jBcu-hc<hoA97`3my`0!^7eoctpGlkBax;F_^a$9v3s<32`|*DK3Mj#1-(g zxDuWbSHZL5YIsh}gy&&?Kn;DtS{;4SS}lD^_N$c3)@p$(a<&@gs`Wwccg<Q|f8AO` zal=|2cGFt*-Llr0+_qM8-?3Kj-?i3g+>`yAsOM2@&FEv+>ZKg()2zR5t?NH-t$lpL zT0QZkoULhl%39<0w6!Mr8Ee(^thMIiIcp8o^VXWz7p(RBa;;T=p0%d%MQe@WOV--Y zm#sC^uUP9v^s2SqQ?FU8e_pp%|GZ&+is$*J^-27e?AP_)wq8g69XX)>eb-vE@Se5S zzi+MQ@qxAW>qDHE#pOSOxq4dp;u*3Zi)Y~{I(H5HRM~UzGi6oC=i+*@Ux;hrm*NKa z70lHLe=X`ae<P~qZ$*{yov8bMFY3xah#R@lk1$8C*`Hv3mUjDRYjwjfI$N9dtEj#F z4c^zA^>=%+%KiiAoafemDxIlL`b%k@{kKhPF#eG<^#1%;%k_`&pV9%%!2_iW7#87j n1$h$Ee92xXDwwa>2$wG<Ex{XVK4}XUcoMumPl}^;5w8CMagAM_ literal 0 HcmV?d00001 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 GIT binary patch literal 3815 zcmXxnbzD?g7{>9nb?j~(6$!;|5wN>EFh)Q@5pft)Ol;iMT?4SY*6xnooteAc-7(wU z9j=_;bN-t5`+47c=iGCi3!mv0pOKQ`a%K8FzSKl_Sdz!*amTtnUau$H9qDqrBkqfE z$Ho<YL>H<EDuRllqNo@uhKi%&s01p3N}`ge6e@*Eqtd7hDuZ0eh03C`s2nPX%A@kA z0;+&2qKc>zs)Q<|%BTvef~umbs2Zw<s-x<t2C9K-qME1{s)cH!+NchygX*HXs2-|^ z>ZAIo0cwC6qK3$g+^7+1gc_s9s0nI<!cZ7$ikhNu6pj)i;Jr_ikw_ScqEHlShMJ+~ zs5y#8(WnJ#fm))Ls1<5u)Y{~;wW-^fx{ayZn!2s2+nKtZsoR^ny{S8xx`U}Zn!2N@ zJDIwZsXLpxv#Gn7x{IkJy0VI{C<eu#Zm1iIMX@Lj#i4i<kGiAos0ZqSdZM1F7wUz2 zqu!_w>Vx{CzNjDShx()bXaE|32BLvz5E_IAqrqqh8iIzRp=cNyhK8fzXapL8Mxv2u z6dHv_qtR##8iU57v1l9`hsLAvXabsmCZdUG5}Je(65zd0lj+HDGMa*>ps8ponuew! z5AvYtXgW$ni6{vrp=6YdW}q2pCYp&-Pzp*#sc06Og=VAKC=I2dIcN?_N9kxTnu{_} z2AYTFAusZxOq7Xy$cM5}7MhRdqXlRIT8I{+Y?O@_p+#shT8x&UC1@#Hik6{eXgOMr za!_zBTmb{O;7aj0T&3X^aJ9OJ;Tm-h!L{lhf$P*=2Xmpb60TQwE4*Lb0{DQq4Q|lz zNw`tn>+nGsSPdT%*T7BUdbn9U3b%;bjjhnxNH<U2D=;4h55fZI7q{u!opiU0yWkEO z&;#xichlV^UW2=#UmLqe-R*SuirSog8rGrghrt|%4~Qq=L0x+h9)iwIcvw^zj)*tt z9)+QtJ@^>*YbzfX6`kYa8HP`Yr{GEPHasQji%&yGu{)!#j{mHvMW2JAg3a9Py!94* z!CFzfDCa4Om#npcmvK;Wx*~4iZdXN}#WhjKdL4%Hb#gbXwYHnqI=fre+S1!Ns7<>A zo&9|GBbv_Jgdere!;e{C!hUOQdcaz#3tB5Hj<t^AaqL{+c29_k(vzCbSKyzr)@q)% zRv@0SR$iX9*3&&_t*3k5TC0BnJBrMUFsRr3B~fqg%i<1}{)(t=e^oq7_ciDofUk>s zN8S*XzBk1?48H|Kc?!ha*2>E}azQTh?^-Kf?^$d9eQWK)2i7{H4{<<Y{z%-%-9ymP z%{~@a(fvfjm*J;kKKu;&)%{%8YMo!ep#BtoDPHB;uSC6)UyI7oH_*`^*>Ba=`}v)^ zI>_%~C`U*41NNWhn|>6}!=LQ5BK@=4I-Orct@>B-7#IHr1A2(xVJK%W?LRbq4*scj zt`_!}+PeC0QU8?w5f!3;MZHS@!BBy+e^>27M#Z>XVcz7-tTdlHHk_ZVF|Mri%w%7r T`Tbfr;7#^rdDGpRi*fxA$_!4T literal 0 HcmV?d00001 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 GIT binary patch literal 3809 zcmXxnWport6o%o&VQ_b7AVeUzGZEa~CCHEj5(ptoCP2{O?n!WWcemXcmUVaEoppzG zXGy(Z{p$OiTRm0X_g3|psMxfmG?y#g=kX=SJ0S@kpT~)IJYKIS(+PJuPS|5%PIOG( zB{EO>P(G9&<wpfj0aOqbM1@cxR2UUTMNkn`6ct6qP%-2}E>s*9M<q}RR1%d$rBEqU z8kI(6P#IJfl||)HIaD5%M-@;7R1sA~l~5&A8C6DAP!&`aRYlcMHB=o{M>S9lR1?)i zwNNco8`VY*a!?&q2h~M&Q9V=-g`f~rAJs>pC=|to!ADoqBjGR{MW6`O05w1jQ9~4o zB2gpM2sK8HQ4`d}sHy4CrY3G?;$|jpZsO)9ZeijUCT?lsmL_gx;#MYZZQ|A@Ze!v$ zCT?ruwkB?8;&vtuYtJg$BR6uRC=`XFQ8bD{F(?+rq7JA7>WDg`PN);=j5?z(s0-?f zx}t8V8|sd_qaLUS>WO-yUZ@x9je4U#s1NFk`l5cQAL@_#qXB3D8i)p>L1+*fj0U42 zXb2jLhN59;7#fa-qY-EX8i_`tQD_tzjYgxmIQZyldU^~TgT|t<XdD`c#-s7bgFI*g znt<X_JW4<bC=n&1iD)94geIXRl!TH|GMbDgqbX<#N<k@TDw>K?Q7W2-rlB;HhNh$G z$cwxv9i<~5@}Ufrfo7l?XeOG8W}#Uq6J?^=Xf~RI=AgM~E}Dntq4{V&T7VXyEEHG{ z7m7FGBJmhpEbfO(#Dj3DxEC%H55eW)5x7D;4p)jN;41MbTrHk~YsAxVt#}fy6PLjC z;!?OlTnRUdhv6o18Qd&hgxTU{m?NHtx#A7DMZ5;Lig(~PF&AzZcfuXwRk#!S55Qf@ zZiTzWEpQLKw+Zf5b|2g)o`U<u3-Ew=9Uc_V!9(Ikco_Os!6TyXJu2#XkBKVTaZx2Z zA>QJbPl{^7Q=%T>w5V1&BkHxEg~42{@|?Ba$9e0`%ymJ|UW6}NtEn&Hz(UfOMUB29 zW|6%L{n{?qU@%98yKb$u-LO{aZd&i+=Wb!Yw%ct{8|scmXK!Hi<JQ^u32Sw)-&!v{ zV6CRRYpsWQ(pqJ>hXZ<;r^Lm~_OwRlY{$=7Yc<bW>)kwOt)2J0wN8&0to3v+T5I($ zVZX}sG7Ow$_E$vR{HnN$>}%p`_`0|Pz5(y5>)%v%E!nrkb?|L*J$wfSv$Z$hwO&L1 zJvmo%y>G3<>I3Z8OZgB6boWPgv?}zm(rV>T#68Rv6jgvvMeT#n#7hkRT+D%AK)<qI zDtnvkSK@B?wW!K}Bkmykt+)+-Cu*yIFRJ5zfPNkHKZ@$$`=So72cin~6AWf)H~p-% z7X6E;!~0iJpQGPk;0mk!U0EH#e~9X?KSh0={t|WX-=Yrwe?%Rz|BCu({0D=%YWs&u s=P|<Va)o#k(=$?hPIM@LR^6_Q)bvDOxcTRrH^7_d%kZW;8s~QX52gZ3i2wiq literal 0 HcmV?d00001 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 GIT binary patch literal 3808 zcmXxnby$^26vy$k_1fL~sz@kyOWEBW7*{|+5%F?Su{+jQz%J~ySJ&3vy|Kl1cd*^v z;mUk}^VdC}=bU-pcV^BE57BYy$>}avhS%*)NpM0E-Cnm7<G4K@ca{_Ga-6US!kn1c z!k@@O6+uN%QB)KaL&Z>WR2-E+B~VFJ5|u)wP-#>el|f~Y3%O8PR2G#(<xqK49#udU zP(@S`RYH|eWmFkeK~+#yR25Z2)lhX*9o0ZJP)$@5)k3vUZB!f8L3L1FR2S7l^-z6O zA2mP?P(#!ZImkhcP$SeBHAYQP6BL3%P*c<tg`!Xt9|rILnjQ&<;V1${pk}BUYL1$t zNEC@$pcbelYKdB*Rz|H&f3`Mp8xyxNaa$9&HE}x=w=;2j6Sp^U2NQQNaYqw(G;t>r zcQSEj6L&Uo7ZZ0eaadQrqAQ9*Q79TkqZkx}Vo@xLLvg4Z>V~?b?x+XqfqJ5zs2A#m zdZXT`59)*ZqQ0mf>WBKH{%8OifCi$0Xb>8N2BX1f2pWQhqM>LQ8it0W;b;UJfkvW{ zXcQWSMx)Va3>t&RqOoWk8i&TC@n`~?fF`1eC_WzE|1~{52~I+j(PT6QO+i!9ROCi( zG!0Ed2`B+2qC}L0lF)QC9nC;9P%=tJDJTWaL^IJWGz+DoR5TmSMrkMw%|UZeI!Z@# z(Ol#~9+ZJHkQaGTCdx$f&^$CB%|{E+0+fZa&_c8jEkcXXVzd}7K}*n5v=l8v%g}P< zUk6u+x8X|hG+ZU-!PVk1xCRC<z_l=-C$CfSNwVuzyb^9u_6&Sb*==y6xE*d%@p-se z*&A?+va8`%7+4FpDZ2q~S5{+ph&RdZRPhy<EnbB=D!v1A#k+794DN-y#eHxO^yk98 z;(oYK#ah_?;&HME#1-(M#_ocLU|=&mtn3kZL_7!c#LMugsOcYr0j=b5aSg>MU{KRP zDQfzsRJ@zw)8ZcZ5cHjeXEavtJ*(nPWX~yk2%gtiwaNwY7TJriAXmL|$$AI*hpl(w z%W}3F@rt$9{t@igVqX<ieGLY*$=6}<AkV%53v!O)o7VcaTh`jT+tvrDzk`FC+Fem+ z^HEi2>ySKVoz3XSt<}9gYc0CpT1^+QUe5TSwchsx4ruC6imRx8O4T`9il?phHP2Y< zD#^D#!T4vb598;oHM{4n_4O}cpSI~m7|_bTBx>->;ufC$3iNM;uPVD0z6OK3w_aDV z&eI#B9`&Zi>R7)83$oSrZ(FOC-;s0I^R9QTb;RDo!93FMi@NAOu+`e353ygZ{E?`0 zQXpyrK88W<*C(Q0{Hdt#`b^Yjd@kw|`9jo_zl476{8!56Fo&<ji|`v2>(=;IRL6g( zVjY<8p-&zBgQ&~vN0_g%KZ)9kpG9rsFQPW)SLoAUqu-$a8Xx()ve)4sqNebtc#7;_ zFke^O-!OQI>_4L3`>&|t|6oC`7Wy9c6*3~q<qGj6Wn`v$otRMmSB-LIre!2~!_7ag Qg$14@Z>A^BQC*ble=%f9FaQ7m literal 0 HcmV?d00001 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 GIT binary patch literal 3809 zcmXxnby!qe6vp9e>)73TR3sF;rR?qwj1f>!M4TB^?7(gX?C$PvZuiXXj=A04Df{>B zzh=G9w@%GoXU{Xyap}qFE|=Hm_N62^A&G9E+lg`99*;ZI33oY8*dt+1Ol<x~WWEZZ z0;nJ=hzg-Xs4yywil8E>C@PAIp<<{wDvnB^63B&Is3a<hN}*DyG%AhCpfac|DvQdY za;Q8ik1C)Fs3NL}DxpfKGOCQKpem>;s*0+iYN$G@j%uJ9s3xk3YN1-FHmZ&4pgO27 zs*4=tpn9kts*mcU2B-lFK_RFiYKTHnD2fk*4?oR}gu`$Yfg(^N)Ce_3jZq|uL`_f= z)D$&E%}_I==4L*do4SRmTbR0~sau-5m8n~qy0xiWo4Spu+nBnosoR>movGWIy1l8} zo4SLkJD57GBX`jeMWHAZjiONuib1g`7R8}B)CqM$ol$4h1$9APQCHLrbwk}zchm#* zKs`}U)C=`Oy-{z}2lYXHQD4*#^+Wwpe>4CMKm*Z0GzbksgVA6#1Pwt$(NHuD4MW4x za5MsqKqJveGzyJEqtR$I28}^u(O4884<CM-nH~qnq48)unt&#tiD)8nBR86aCZPnB zfD%z6N<v9!GMbF0peZOBC8HFSf~KOWXd0S^Qc)_Jj;5nDl!j)Y87Lj4qnT(X@*ofL zA}{hGAId-(Xcn4<W~13?4w{29Q6`#;=AwCM9-5ElqXlRIT8I{+MQ9OPi~?KW66jwF zmnz)~mnmHavy^Uz%atyHE0ku#l}fYVDy2DawbJEqjnZ7WR_O}3PU$wdUg=7>LFsn5 zQRynUN$C!_S?OxHMd?nsRp}a-t#lX6QMwl9D%}mYDP0G*E8PosDBS>eD%}TnDcuNn zD^>FzrDsX^D%DNyQ+kqgzjz)V5I4bt;stm})Pf#{0e$U9lpdw|sCXG36SdsO#Ve#I zL@oD87|<}BQhJ!?)8Zv~M${0Vg?Xn)&xyC-c^J&qGhDFNfM2xM*)GZ1n)u7sx|b_B zpuxNf{YSXkHSs#UE^72{z+lcH;+xjGw_Da4<lEMJ=)Z&gH{e}SqkB)?*;>o{)>?rF z)>@!E>(iX>QELtCW7dnwAGf}ZpTPc`@JUgx%2Vpjk)O8K-8^G`g2SJ+)-*k5y`TJf zYdzfy*1G!_ah{gR5B-{gfT%b1B~efEvZx1tMZCk6Ulp|ouZed_Ul;WrzaicueG>+= zH34r~YZrK1&ed-8j<sHdcd=jlz<V&Dec*lDtrhw}-RHRYhw4@uRH`rZBc<A%KUR8x zV?R-<x8PHy2T4Cus(t@+r5fum#H%!aDQfTjO1wz=wW!ze8yL{{^Q}@X@^>(prE`6c z^UiRtA9S!b;2(9cHin<XYc&5X>RtOq$7&&dReGG}-;}P0zbn;s|4^zQjX#xYvj0-5 zpQFE(9^+L1z&!C^7|hiw{iise5m7Ezh$qRLk?M0|Liw{A<;qC&Ci%k6KiB*QPm(Xg Kljf)|%Jn}O%1rG5 literal 0 HcmV?d00001 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 GIT binary patch literal 3194 zcmXxnRd7^S9LMqEaB+9IK!`waXR`_J?h<5477_>{tN=j+rMR<MTq-!l+d`4H8<?rW zW2eY;CJ%jt7Fwu6$@%`y)BSzsf9~8P|MPHD((<zM948p^g|ai;xJ+Nj=XzaVAmGb) z6CKx0cqhU2rj|UCOH>M#LZwk@R0fqnWl>pF4wXaYQF&AWRX`O{MN|n@LJo3JWmFke zK~+#yR25Z2)lhX*9o0ZJP)$@5)k3vUZB!f8L3L1FR2S7l^-z6OA2mP?P(#!ZHA0P0 zW7HTmK}}Fo)D$&C%}{gH9J$CvEl>;8617CFP%9LN;!tbU8pWe{l%4?JK247#!bFsW zl29Ae2DL?PQ8G$K?NB?^9<@guPzR%qrawEH+{xrlCU-Wuv&mgd?qYIRle?PS&E#$- zcQ?7a$vsT&VRBECdz#$K<X$Ex^kx>lkq3ED3Q9p<<VC3{6{Vpx)CcuJeNkW35A{R+ zQGYZ54L}3YKr{#qLW9v@Gz1MnL(xz)3=KoW(Qq^ZjX)#ONHhwKLZi`WGzN`9W6@YN z4vj<O(RefgO+XXTL^KIaLX**CGzCpTQ_)m34NXJS(R7ra4&OdaPtSle&`dNF%|f%# zY&0ABkPpp4b5I7#K$$2L`H>&ZMRU<SG!JE=ER>D1(R?%?EkFxU4$46b(L$7qa?v8R z2<4$Xv=}W$0Te(%6ht8uLSYm}OVARu6fH%|&@z;d^3ig%9IZer&`PuttwO8NYP1@y zL2FO}`f(RrEAEEt#69p`aW7miM&Ns5A>1HF;YM*E+$8RYo5cfgi+B)j6%WB};$gU5 zJOX!!N8wKK7~CZuhr7l1;U4h=xL5oTM#PU`p?CsD#glNKcna<pPs0P^8F)}U3lGDX zzIzlFY3t6YdV#@b#q;o-cpIJ<Z@~-VIe1aL2`|CosE+@#wa)*FwHn~699hTv*Q~We z*Ktg%yrFWT*7doyK6lev3%zBnlf8{&I-NVB_Wuiwj;NKtv{rk5Wqpmw#;mn*Mb>Jo zyVeDazh|wj{8}zllYV2Z?|o~n)qiKL2KnAvt@wkr=6~N>^Lv0}+S{L0j_3wGwBE*a zAIZ^8__6hR`~=4|o1bl2tNlggPZ<4Fya=C(+R9(WkE#A9UWU(Mae<EYh01p*|1N$C z{}6R=Uc#c!sJ>G5I{Z_-1pg9s$^I7g?myxU2LCHwh5w0H;A>bM)#<!Zxr9j`$B7I0 igW;Tz>y76x!sCQ<gZ@yW`K2fs5b%e>fm~PPJkI|K395bo literal 0 HcmV?d00001 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 GIT binary patch literal 3763 zcmXxnb#N3(6vy$yVR3gDAVeUzvk~0gCCHKl5(pveZh+wK&L+6KyW8DvI6pY6bInPe zOP%|X{{H%}d7pYcJ3Za6-_*v$XQX7fTt2_YpPJ}|C3*ZFC)V+Jy`C&5(&ac2PeeGe zaru|%d=)?iP(f4>6+(qjVN@6uK}AqeR1_6M#ZYln9F;&NkPEp`NmLS*LZwh?R2r2* zWl&jE7L`NgP<d1yRX`O`MN|=0LX}WuR2fx4RZvw_6;(skP<2!t)j%~+O;i)rLbXtB zR2$Vnbx>VY7dgm5^-w)jAJs<<Py-Z(!carh5QU>~ln?<QUrmif!blW_qEI8$2sK8H zQ8bE1O;8im6g5T7P&1?EraqgSxP^&Zn7E~hTbj6)iCdYtwTWAsxQ&V1n7FNp+nTtY ziQAdDy@}hKxPys1m^h*%v*?K2$c<u942nguC=SJ;codI1p-!kX>WsReE~qQ&in^h0 zs5|P8dY~StC+dlMp<bvr>W%uKKBzD1i~6B{s6XnD2A~0GAR34Up+RUc8jOaZA!sNX ziiV+KXgC^<MxYUBBpQiEp;2fw8jZ%FF=#9rixLvx<EyFZac~?OkH(`3XabsuCL#~= zph;*FN<@h$2_>Oql#C{$$!H3if>KZlN=2z?Dw>L>p=l@$rJ?C)I!Z_BXa<^rGEfGZ ziDn`%@**GdAwTk?Oq7Xcp;>4)nvLe5IVcNdp}A--nuq40`Di{`fEJ*IXdzmJ7NNx` zv<fZ}@4%(vNw`cr1ec3P;0o~oTqz!ftHk4QwRj4y5l_Rl;t9A;JP+54=immIdl7C_ zb~)T6u7I1xHE@e~3~m)y!foOe7!a?)Z1EDz5pToo;!U^%=3an1mCb>>#657gcmwW% z!NYK`vOC~D_+TI0FYbp2H25GqD4vCf#LMuocncm8wXjFUEo6_uTs`-=sOO%5!TSt8 zDQe43iD$^37Vp9{qKfdWs8={As#MO4TJ{StFGsVyXuXx+zGS@(UzP()@fB+o^;H~N zLi(Dh(bvVrWN*Nrj>}D$m#vMvWv#j0w%*R|cdYl~yEv%hc2CrSy06iJ&5VB1I)I<D zR`mw0wdf&h6<w~iUgm+dw&7_U(#t#}F5_v>YIOE4{G7FB^Srgz<^^k=ycez2Jzlcb z+dZ__>>uHvw&`V2mHUdQ?(!-Otz~YniR<9&;%fMYxB<Q?ZiH`%o8a3pFQCKtj`e!- z@5(v)@%OCNo!-Ymt-=Q|q`N<~qqQX;DXrT5Sk#fr6Sd->h${R~#j8y0Gcg-}4ui^m zp{xq?OHq6KmAIRGzZQ4GZ$xd>x1t)scQB|{{=KLg{XtZF`cYH^`boUUgMJp(j(-vL zf%z4Nt~2;IWz|xD7uAmc5cR$JQ`EhGiE8D4i)xzxi24lt3-fYR$p0yw&nUOc73NL$ jWv2O^*l_-Sx?P#+zGQ!-`7fG3z?<yP^rkx+=XU)Mf15s= literal 0 HcmV?d00001 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 GIT binary patch literal 3840 zcmXxnby$>H6vy$kb?j~(6$!;|5wN>EFh)SJ5Qjm<23-XgcMZVqu3d9oYu$zIknK*k zyF2B6f9J0`pXc2BzIX09_s%mtqLUJmJf7r$FEA(88x-dY_`H!`pWp9G^@e)9-jKUO zypd5wAK^tRhKix$s5mNtN}!UcBr1hUq0*={Duc?PvZyR7hsq%j@}TmlJgR^ypo*v> zs)Q<`%BV7`f~ugZs4A+4s-fzrI;w$cpqi*As)cHy+Nd_FgX*BVs4l99>Y@6mK5Bp( zpoXX+YJ?i0#;7s!A}?x!nxLkrDQbqAp&%55nxp0@7zLx45P0X)^++fTMPVomwLmRU zOVkpDqj1y;wL+~?Yt#m{acb-Ov#pEUxwxH++q<~Ei#xcugNr-5xTA|Zxww;yJG;2E zi@UhEi;KIuxT}l1xwxB)L%Oqy?kEC9pdP3PibRnp3Pqu46pebKo~Re<g?gjjs1NFc z`l7z5AL@ttqyA_B8h{3(foKpKga)I*Xb2jDhN7Wp7#fC#qv2=-8i7Wlk!Tbeg+`;% zXbc*I#-g!k92$qlqw#10nt&#viD(j<geIfOXbPHwVq)N(PuJ5^;Z!sYO+(YsbTk9a zKtAL{Gto>Gi(*k6ibL@z9?e3t&}=jtC7=W}2hBlq(OfhS%|r9ie6#>9K#3?3Ekp}Z z5=ugg&?4kVew2)oQ2+%{3Q9qX(PFd&EkR4sQk05P(K56QEl11I3bX>PL@UuMv<j_8 ztI-;izX7I+H(<JW60Q{w!FA$cc(-@}t{2nb2Jtw|5KqBOaU<L)o`Cm=n_!lh4L6Br z;JxBnc%PUKH;b8Yi?{}E6*J&A@e<4yFT))10?ZY6!R_KzxI@f>JH;HhOWXr@!#wTt z9#Q+eSA%ylcpofG*Us)&dK>8j;z4*&JPQwr7vW*?8ayJNheyRN@EFWf36G1KdqTX$ z;FFrW6`oR7H9IZdBzs0w7oHXM748>LGx!1VIy?spbG6FzX1)1>S^INQ&Q^n5G9Tf2 zm*pJ2{Xw&ebH$v?_=n6Y?Nzg?cg?KzT{mxM{tfe9eABGnc-Xv~{4F_qGk(OZ)A6WT zO`K=e*5{k`{Kw2X5|5izj3?xreZ22U^M3r4S?Azsv)1#BS$E2_=3~r%&a7+Xd9%LX zZL`*2U{?FTVAkF7qFMEP$$XUey=>NTdd0kh{Htd5&ueD&&+BHj;~Qoji#O$LJ?|~E zZi2VvT-`bEnAh?Ccg-6Ao>}|xzFGD90N>V`{SfA>I)%z=@gKng&HY$ewdyCz>L&dZ z=IQ$TOj)h-bIny5zYz7UzZ6yUuSE6a*RU`{J@pMPSkD%GtI>M#cQ#rN`(Dn}3H<@* zX$O9^v<m){Sq<^CoTY~Q#jMBuiu13qnBQ!=>h(L$J4gBtr8Cq{e=4one_2|m<8L`l z*W^DMuHTe@mCn`L{!_Y$VG$lrkUu^-Wq!aL8O(p#2v164a(p1v{jn_?;ExZa_!GSv H7vcFI$@E|M literal 0 HcmV?d00001 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 GIT binary patch literal 3841 zcmXxnb#zom6vy%6u(&%c5F!xViQ(=pL6#(tKnP*80fHx3(uNjEg1cKAoTBZfrB3Ru zsk^&S^1i?O*WS;$_syF(b7#)k@TlbYWS1+&=kX=PxC3H6K94)X?eTg&Y3^W`+Z}XY zkUJu>_$RbjB~S@e5|u=yP$^Uzl}2Sy8B`XPMdeUAR34Q_6;K7_LM~JhRYa9gB~%$z zMpaN1R25Z4)lfB59aTp)Pz_WQ)kL*WEmRxTMs-jfR2S7n^-w)jAJs<<Py^HuHAIb2 zBh(l*Momx?)D$&EZsbPIP&3pVHAgK_3lx9?P)pPj1)@L{9R%<FIz18$gHZ?yL9I|L z)Ec!$p(qr!L2Xc5)E2cv?Hsjt`m?<gcW~kkPTbLnJ34VEC+_6Lot?O|6L)dqE>7Il ziMu*+Hz)4q#NC~^yA$_t;vP;M)RS5CL}4flg`;p3fg(^OibPQ;3iU$0P;b;5^+A15 zU(^@%L;X;H)E^B%1JFP;5Dh|u&|owe4M9WDP&5<`L&MN;G#rgUBhW}R5{*Km&}cLo zjX`73STq)mL*vkRG#*Vr6VOC75lupq&}1|jO+i!8R5TSuN5gx+PESvR)6jG@9nC;9 z&`dNFd5{OqLbFf|ib1g`7R8}BG#kxEbI=?VkK$1RN<eebTr>~OLy0I6%}4W55=ue~ z&;pc<lF>r65P6XorJxk#Lq3#>Qqdx`2rWj7(Gs)-rJ*#m6fH%|&@!|fEk`TR3bYcf zM61v$v>Fv`fa&6Om?55kYs7<at#}x&6ZgaQ;t{w(JO(qxlQ2s>1@9M+!w1AoFk8%r z8^yiwL2)g7NL&XuiCJ*7coc3C*Tb#i1(+jVg1O>Nm?vI?+r&L^yLbcc5cA+paW~v0 zUV*!z{}9}x>~^>p7G-E<_u<=HNbgtm0eC<>0}qPl;UV!VJS?WeBjQGQRNM-Wi96wO z=)VO|z@lvJ;Yp=WlRhPCc}|OJ!!x43;bBqD@`$K~&xb{Mn;H77SqpN`ta+c8b26yE zU{+gSlymj=OJ<#d%VzE66>~1*J!;nWT{UZd*Ua0fziw9N+%T&-Zkl&de@o8M%06b! zA^*5pUF<h&=?lyn{|WPIo`2G;&A2V+>byN=-bek@W;MbyX3ghWvo4kA%sPY5n{|)8 zVAl8DF>C&XX7&GzW?ddHnYEuUn{_e0V&1|0Up4D|y=GSbylz(iykS;5zG>Fg_LiKZ z@!mFP^S*cFyiEMASr^!QX4SuM)_Qzk)_#46@0?}0k6?jzr$|{%{$p6EXFpL^t@^35 zYZ&S?=)VX*S61`<LeFX&zZCV=Uy0iEuSNCbH?SyEJ@qXv)II#2s`cXUty+WqAZO`> z{)qirfuAg`4gcA!hWJI!R>S>j)^NY!g3EmN@AkO%>ksVDC;g|=nQEuMl-ARKTUw{% zA30t3<i9FE$7ug4ou|3oRl1lVVJ=sIH!dYL(dUi`<j-uFD>W%4&KK<bvn?+0#`#jc KNp97Jx&8;y9bpmx literal 0 HcmV?d00001 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 GIT binary patch literal 3841 zcmXxnb#zo$5XbT2u(&%c5F!xViQ(=pL6#(tKnP*80fG}K4Q<*YNpN>-(b6KNO<L-t zPF+%WcP01xo4?+C&fNRnymx2zoQ;f0O-%K8(gMCfQk*v^-WTwBqr5)9-<RPH^?1D@ zcZ7JOqKhx##VUbHppvL0Duqg+(x@~lgUX<?s4Oan%AxY8JgR^yAP@4Oil`#0gesxR zs4}X8s-UW<DyoL6q3WnQs)1^tny4nKg=(SNs5YvD>Y%!)E~<y>q57ykYJeJ`hNvNG zgc_m7s4;4SnxLkrDe@vOYKEGj=BPPpfm)y-6ogu$mM9nnqu3C5`|5fm6o#TO6oy)% zR;V><jlxklYJ=LKwx}&?huS%{cm3Jk#T{JS!Nnb2+|k9IT-?dUon747#a&$7#l>A+ z+||Y1T-?pY-Cf+>#XVfy!^I&zsiG%}KoKYsMWQGag`!b3ia{}`7wUz2qu!_w>Vx{C zzNjDShx()bXaE|32BLvz5E_IAqrqqh8iIzRp=cNyhK8fzXapL8Mxv2u6dHv_qtR## z8iU57v1l9`hsLAvXabsmCZdUG5}Jf2qseFrnu4aHsVFuU-oCn?o(89(>1aBdfo7nY zXeRO@ADV?`p*R$W;!!+GKnZ9znvLe5IVce&q9l}r=AyZ19-4=eQ8Jp3=A#spf)=0! zC>5omg=iu2BR@(*X()gKC>^DvMQ9OPj25FMXbH+d8E7e5ik6{eXgOMrR-hGVC0dDA zp;c%#y0sCm5jVk1aWh;iZh`B>9C)Xg3)hQz@GfyH%o4Z34dQlqx3~k|BkqLR;x2fv zxEtOl?t%A<d*McLAKWDFhnvL%aEo{l=7@)2u6P*ciAUg8@hIFT9)sJ(<8X&~0`7$Q zDr1+ZGIoo4?jBf_sVD8lH*{wEV1eFnzj&G_9T3mMgW_d)NIVM<i)xM|FkeL<6}9)6 zc%8k+VNtdk?S#^&NS_q1!BgT@cv{puJRqJV`=EFQo`FSqD)X#aALN`_U3^~7$z=Zp zvyS<qoU5llWY+0iGON)aHfs(ZG3)p)n^oTxvnJ!JS^a#?tag9YtZBF|=jh8mX4Y6f zZoa_#<(u{C3(UIz6Xw;df6}bOxFP3iz@9Q|!k#v3c%Lz=o@dSK{pZXYoafCN(HG2m zznf;&UuahUzi8H|y=2yTzHHX~ykgdG&#PwrG`(h4|GaKi|J*XG9p5l(F5Z-LbicRE z*?ix(<-9EXj(Ht^*R1vLne{#1H|xAUz&ACtAHo8iPLZ-I{v%kZy&o&9R{ccTwN&yc z%)bafQ&x3;uDv?OFGRidm!b~+D^Wf9H7v?fPkn<6*Yl)rwOSAU&Q|MY-^&{`p+De! zeSse>tpoqbtcLhm&Q`<yV%F_`#RZor<~Q4}^ZFg<pCSE+(phS!Kb6+*zbvik_*-71 z-^qWp{2X`tSLr;}_Mg(l42$r1g8T_->B#|aR4{*LBRuITX$gT)_s_O?fj=RT?oaV* HU4-X<a4ur? literal 0 HcmV?d00001 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 GIT binary patch literal 3841 zcmXxnby!qs6vy$kb?j~(6$!;|DZ9G^V+0fw5r;v=#8?GoO~CGswL5o*UAJYslkM&f zSMK+B{+jc7&Ux>B?|aU@&okjs$??f9SBlT$ONem?#Cm)lcZA#H^?K6W!7jHu=%FBY zL}cMlXrYRrBB&@Tii)9Ps5mN)N}v*`Br1tYp;D+cDvipZGRTEos4Oar%As<oJSvYW zpbDrWs)#C~N~kibjH;k2s4A+8s-bGAI;xIppc<$qs)=f$TBtUvjq0E}s4l9D>Y;k5 zKB|uzpa!TRYKYv(jT)gws4;4cnxG~q00p3?s3{6Wfhal%KKONJBp3#x5EO!%p=PK# zYK}rtC~ARPpq8j5YK2-kYVFKtYbS2w#BH3otrNF(;&x8l&WYPQaeF83;KUuAxT6zy zbmC4<+{uYMJ8@?x?&8E<oH(c}yXcC-P#6kF;V1${phy&nqEHm-hPt8ds5|O`dZ3=D zC+dZIq28!B>Vx{AzNjzihx(!Zs6QHj2B3jxAR2@Qp}}Y{8iIzPp=c-?hK8ZxXgC^y zMxc>sBpQWAq0wkG8iU55v1lwBhsL4tXgr#LCZLIEB8rZN4}P7Qo&+bM$!Ic~f~KIU zXe#m`51NLip%@f{Vo@xLLvd(2nvQ0m87LmbqXd+IW}=yB7Mg_;Q6id+W}_sOgyx_* zC>bTAxo9r(A}>loDaeO>C>5omd1xM*kLIHVXaPz?X=ou@h!&wmXfaxhmY^kQDO!q_ zp=Br?<*k9s#hY-2cpR=255QI83iz<N53Yv(%W#ddM`4C|0%nRQ;ac$+TqmA^S>kE< z2rNk7iq|Wh4mUu*ZoE<1OtPEA47gcb3%7_DVYavq=7<|$u6P4(6|cc<(0>SSS2i2& z5O=|yD%L^o5)YEyt>W!)kGK==g?Bf@eOh}2?ick$2ekGA*@NPBcu2)+!(s6%*(0LX z9u?K3V=!+$#m8Ym)<%3n)u-S|@fJKKY78G0Z<9SOYFN&QI`^}%Aa@hh=gc~g^X4t& zFUZ*%<BMi>>XMwZpZd#YHRp;sm;6<84!&kq_pY0@zZ+(a?@jY=*55K~Hg22M?>lm~ zPWCagM(c62TJAUN==03F{u5@sKTn#~jJtBq9`^T?c`tt2yaPXD)_$Hf>!b3VSrhua zS>KTt%zD0iX6--UtQY)6v!?bXv-<h6`7rx?#jMxqRr5CTubDMJubVYLZ<sZXZ<_UK zdrQvN_1-pTas7AXTz!JxHLoK7o>}$pn{^%^nANWj@x5~_{|M%(I|a&W^B==}t^Gt< zjq0b$uH;gmLH{NAxw6{l7h0<}ektmyzY^8-uSLz|H?SZ>GxaUbU(KDqQ?+jVy;bXC zKggMSLx046oxo3)R>OZbYao7+vovtOnsvF~aNZR*^Sdoqzy84fv!wr2Iz!|1m(p7O zx25%V{39>F!}5Psejfg(bguSxU+F@Igt=S+-nf+1M4vk%kUz6wuGFNIIA5^y&$h6@ O8|O>)Cb?A?=K3GlBw-Z* literal 0 HcmV?d00001 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 GIT binary patch literal 3779 zcmXxnby(GR6vy$|dhKq#DkBuTrR?qwj4Pm^h<LfE*gdcVF*cpKnX?0~&h5GmT@Th{ zoveF%CcpRR{PjDp=bT@B&o}OKBV$q%Q(dk!pU0OJ=MIYZ_&n|?x5w-CWVl0JZg<Fi zA?~Q?;!Ak3N}v*`Br1tYp;D+cDvipZGN>#ni^`#Ls5~l<DxeC;g<Pm2s)#C~N~kib zjH;k2s4A+8s-bGAI;xIppc<$qs)=f$TBtUvjq0E}s4l9D>Y;k5KB|uzpa!TRYKR)4 zMyN4rjGCY(s3~fS+{lfZp=PK#YK~f<7AOb>q5Dz6DHsfcQEUjjcXbv?C=5kmC=9hk zEm14f3WcL^)Ec!$ZBQH37PWQM&RL-CoVdLcw|C+WPTawXJ34VkC+_6Lot(I{6L)sv zE>7IViMu*+S10b~#NC{@yAyYJ;*cJEMGq8#B2XlXL{TUTMWbjGgJMum)D!hWy-;t| z8}&hbP+!y+^+Wwof7BlhKm*V~G!P9!gV10!7!5%~&`>lK4MW4wa5Nl^KqJsdG!l(M zqtIwH8jV3?&{#AUjYH$mcr+eOKoihJG!acglh9-|8BIY`P;4x`cXihER5%q)L(|Z7 zG#$-AGmr;)&`dNF#i2M9kK$1RN<g#FEHoR<Mu{j9C7~oV2hBlq(Oi^_lF>Xg52c_K zG#|}JsVEgKKnsu;c~KflLq6m~=_nm7L<`X(v<NLmi%|y3KugdPv=l8x%g{2k94$vH z&<eB?twgI(;5=L{UW033Vdg%(*1R9DlXG_B^>X$qyurK%KVZIrGtI|vmiY|cXnqK9 zGGE4<&D-%7^Jcu&oQ=1c_u}pN&PBLG>CA(8C%(G@?t*~}Fk8F{cZ(WY4lK;dB)v!J z({Qiohx=fWUya{yzE1vtS@j3adfOo!I7Inj@hm)|>O4)uQKgTPJ|=1sj$8FQ(kIMY z@k#SGe9F8VpEhgJoWc2;le3mSK>1_l!}y%}I6jXHG_(t%sxOL1D83|WWS2#a?24!- zUlkwW-fQBc@Va;c=87j_9xU?jz<!+nAiSY;p4Q4u^A+-sn{)9k-Tp9q0tPgyC#_oB zDqvns`EB!B{FHe;ep>c##LrlM6Mojb1wUuj;GQ?{BL9MU4}Q_C(Z6KYa9%cRTJD(D z>bqt&_Z71?%d2Ls=hw{Vc>n9>OZW}5cGH_??Vh*Hx2S(x_N$-yX7#VYtbV;?)(&_V z2egph6LpBa4{z&ZJ`mNr4`Go%i*NY|7ig+KwzOJbXx8nYnAQ4E&1(H;X0`rvvs(X! zS*`xktX6+zR;#}@tJUAgc{&BZwY+xwcV-<P-<!46ip<*2KghXy-jBFIEAb~Q*B1WS ztd;YNS-t<&tlzia%sTOZH|q!F53|m)Kh4^=f0?f`TYsB%nEhkc+4rwm=fHosFsJx5 r3yW~Mg1iZ7>B&BKR4{)>BV6ezX$ihi=f7!jfj7aI?oDy4F2eOceLHQ_ literal 0 HcmV?d00001 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 GIT binary patch literal 3841 zcmXxnby$^26vy$k_1fKfRTS(_K<w@gj4Pm^h<LfE*kZvhyK4Y;cX#W$3%hR1b|>52 zoig9w`RhHO=giDI@64IG&kc)6j7{`-k^;U!T$DE`+86M7!@WMg-<RSI@p!$#_XT^y zyB9oK6sQm?gbJg=s0b>8ilU;Z7%GN}qvEIpDuGI(lBg6ag*?cEN~6-K3@U@lqOzzQ zDu>FW@~8r;fGVPjs1mA#Dx=D%3aWytqN=DGs)nkg>Zk^)foh_fs1~Y)YNOhy4yuFd zqPnOas)y>M`pApCr~zt#8lr}%5o&~jP!MX28lxtt35pDc_nxjsLSP7LikhNks2OUG znxht|1!{>}qE@ICYK>YuwQ=>?#>H)2+}6eIT-?sZ?Ooj7#T{JS!Nnb2+|k9IT-?dU zon747#a&$7#l>A++||Xw-Izr;6pBJo7z#t-C>(W1-BARJKs`_o)D!hYy-+XI8}&wg zP#@G6^+o+qKhz)fM+49RG!P9$gU}!}7!5{4&=52f4MoGyFf<$uM<dV(G!l(OqtGZc z8jVI{&=@opjYZ?oI5ZxOM-$KlG!acilh7nI8BIo!k?`Kr)$|lN1x-a$(KIv-O-Iv_ z5BbmxGy_GUC=`vNQ4ESfGto>m3(Z2YC>F(`I5Zp0Msv^{6p!N3Tr?LYpae7z%|nSO z5zR;QkstX{5=ue=6hO%+87)8y&_c8jEkcV>3Q9qX(PFd&EkR4sQnU;$L(9=}v;wU_ zD^c!xxJtYUQ^jL&wYVRy5f8$(;$FB;JOtN^M_`(G9HxsW;QiuJ_<(o@W{9WZgW^f} zkhlguEUtwc#B{h(JPbF9>)>YbBFq#o!z}SU%ocCJE#ft}RlE(iiP><wxD)OWufm-$ z=K$QL>{hrN=BH|9_uxC5NbgnaeQ=+63hoy#zysoScu+hC4~ZM$VVI*WJR+*^QBfa! z4CZHSp!0F1wP`2BTVzj)D#KHvzTvc}VmTwK49~*+Y)$i=SqpOByqR}hkTX;9MYG1c zBxmXEm(4l_SIpYWtL7}myJpt*T{mlfH_TgTf784R-!iK>9x?AAe_PJf%06n&B>$LM zRh(ni(&w5r{^RDA^nb#v&A20H?I!=Ec@KWdyd6Jn)_k5Z>r#2vtTXtWS@+2EW_{mX zv*w>?R{g(V*5&b{S^N2tSr^mG=55UP6|>IQt7g^DYi8BY>t>bX8)lu0H|0!?_m(+> z_q{D=r{Q<Zy1?EwtNnXst;hRj?biqRt`6;oFju>iudF8j5zJHHkCj!aexmGZX7(w} zxdcB`R`dK^eYK5Wi2CX;MQ!?5qH6MMn4hMa`UdCe9{yIX_2TcWwFdiMPS*+j0q1B1 zezdeU{3o*t;%7NS1^0_t!~KeLukhKwS$FN%?>Ofy=|7ZCQ#t*qw0i$#X`PP0<yE>T z|50=OsQjyRw&wPq(gkc9>hT2mW0I2N1K#i^{Fx2)Bqt=r1VY?D+kyuEm_V{W!K-$m Gp8o+}M`57= literal 0 HcmV?d00001 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 GIT binary patch literal 3831 zcmXxnWport6o%o&VQ_b7AVeUzGZEa~CCHErBoIOv0fI|_;Fb*T?(VkBx`%a_th>9C zdcXSB_c^zxr>pC`eNM;3rzfYoT>gM3kdo+xC3ylKC)V-!e4Y#^(&ac24@Ee!aruYn zd=)?iP(f4>6+(qjVN@6uK}AqeR1_6M#ZYln9F;&NkPEp`NmLS*LZwh?R2r2*Wl&jE z7L`NgP<d1yRX`O`MN|=0LX}WuR2fx4RZvw_6;(skP<2!t)j%~+O;i)rLbXtBR2$Vn zbx>VY7dgm5^-w)jAJs<<Py-Z(!carh5QU>~ln?<Q98E?dVI+z|QK%7Wgc_s9C>lkh zCa4K&ikhNksF_i7lh5X+Zei*crfzBKmZolH>Q<(1ZR*yhZe!{;rfzHMwx(`p>UO4X zZ|e4@?qKQ;rjF>yU35fl<VG<l2F0RS6o=waJc>u1P$$$Gbw*uK7t|GXMcq(0)E#w4 zJx~wS6ZJ&BP%qRQ^+tVAAJiB1Mg34e)F1Un1JD385Di3w&>%Dz4Ms!I5Hu7GMZ?fA zG#m{_BhUym5{*Qo&?qz-jYeb87&I1*MF|P;!O>)T92|$nqw#10nt&#viO7RIXcC%) z5>X;bLP^Mryl66-jHaL|C>bTA6qJIdqN!*anubzQDw>X_qcoI;W}q1;9i^k0XeRO@ zAMztV3ZMWAq9B@uW}(?=HkyOxpbV6O=AyZ19-4>dqxon7T7VX!g=i64gchURjc|#$ z2`&{k!)4+Ym?>t%<zfz8A%@^eaVyLcx4~87cDP#H0oRB-;aYJQTqo{^>%~2AgSZ!N z6!*bR;(oYUJOH<d2Vu5&2<C`~VMsgzw~9yMHt`tTE*^(F#1n9*coOasPr=>dX}Cu` z1NVw&;Xd&k+%KMo2gD2Tpm-4;5--8S;$?V5yaJDkSK%@78aysuhbP1v@T7PXo)T}t z)8cJ-M!W;hig)2Tm={ul&s!_P7p#@xi*oi-et*eYn|xW$Q9`a*D<W5|74vJ>nu6=r z%FqpK-QP`X&BZNirTMnC!hXkEvv60=)&M_jt)YCxTAO&!T48$BTGxNfdNI%AacgbH z6LOBm>q%?P*HhLS-KVW}KhIbz`OjKwY@V~$fIe@n^}S%N`+w0|bCzqZLA!6Q{d~z< zQ~R>D-aM~Z>&5h{wes_twes`2wPy7VYmM@oa<;Dbmi1bm@7r=H3%_HXiQl!>`R`fl zdAx6}{rUjk7e5r2aJ4*9VgE>6M)zY;fBlKLobIRM3iz405`Hdf8DEI2=zb}#hF^(m z;Mby-_>H)Z?ziH4_?@@`eh+iCz#r7rbp5EVR`ip)%Hq%JY6-unt4aJ-UH$KG>MHlY z!+UzK{sHr{6r(@Y*4ywe+tyV4EobVj@sCbdNdHwkq#^iE?R-YLU9K>n*B?v`II-b; c!n$3-G`}|xX})LkPw;sIL0_7q^W3ig0aT-0AOHXW literal 0 HcmV?d00001 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 GIT binary patch literal 3676 zcmXxnWq1==6o>J}A-FpXP%2Q|sp0M}MM4{Bp_G!OK=Cyew{45t;_hy{S-0uBYu4Re z>3#qA)12RP&YhgOGV>%pDJw0@;|T=4!Soa-BGnu8Ith-~@Au|7(H_T%x+}^_NG!a> z7ODs;f{LP|s2D1SilgGF1S)|_qLQc-Duqg;(x?n7gFMKC%A&HU94d#(qw=T%s(>n@ zil`E*ges%Ts0ylrs-mi>8mfk>qw1&zs)1^vny414g=(YPs1B-w>Y}=+9;%1xqxz@; zYJeJ|hR8t<YJ?i0#;7rBf|{TR6oHzerYI6cqU0!e=W6yyG>k?uC<Zk{%}{gH9L1to z)B?3YEm2F<3bit7ZT4qt6SpyO8xyxRaa$9&GjTf;w>NQn6L&Ci2NQQRaYqw(GI1vp zcQ$cn6L&Fj7ZXQyrHig84#lB(6ps>60!l=QC<!H@Zm1jTj=G~Bs0ZqadZJ#a7wV0A zqduq)>WliKeyAVnkNTqlXaE|B2BJY|5E_gIqakPr8j6OZVQ3f{j)tQVXapLGMxs$@ z6dH|2qcLa<8jHrFacCSGkH(`3XabsuCZgnIc;{;N^dvY5O-7T^6f^}*MN^R%dC@d9 z4W*zIl!{W35Bbn^G#$-AGf)~zL+L0T%|tWNEHn#cpbRt{%|@9h6U{+$P!`HUbJ1Mn zM}8DQ0Te_*l#Q~{JTwo@NAuAFv;gIx9JCNEM2pZOv=}W$OVARu6fH%|&@!|FxhvpG z7`hBsi6`J{@eo`C!^^kgwbtA4I_$25>uov@Z%}#_+$gSwo5W*qv$z)KiR)p$cpPql zp`&oCvK!zwWzWIw;(543#d_qO%I+t-OWBifw|ENf5l_Rtus~0=PuY!RA5vCNv|n6D z_JE2v!Gq#vcu0H@9u{-q5mEDeRLm!POxyyG!_ZB5LRl^8Nl`0$O2wMz)8ci;o`K<f zHGS4vU7xd7+vnxndl-Mg`T)L&-R<y_xC34mcfu>;E_fA&^R#f+tkv6fYfZxqYmL8& z-QC>ombeGrR&}n{@?mSOz$4Zds1I3dS3PR2<{z_OPW|K7H}DhK-3y--_ra%Bou`R< z+FIQ_W3BV>thLVZbJn{3^VWJg*IL~dU{_Q7f~Zw{Q9MX<FNylCm&L<mUlEVMS4B1Y zns}D%>!J?s8=?;Gn=qWKt^1a>4%pjrzFtS~Sl`Fp-^H$$>^<=!+4pU=R_FtzFOmLG z)O#~5ULpIDcolvuUW1>AIz^v~TKdmKozKt3Ta5ieybZsE1#0pu@outTi}%8BM4i5G zMNP+d&=tRjA-(v15VbNtYV7^o`6p2ym7m22$o`_S+5*2St7Z8Oy1LcxDn7&5KSb@9 zKQ&gLkiWz=6#orfjr~VieKY=r;e74-|8S^~F>xMGgx?p)&ImdQk^E1L^JHfRe8Fh* Sr?IfW?+a%8Gac2%dHx3%T`Zaa literal 0 HcmV?d00001 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 GIT binary patch literal 3410 zcmXxnRd^I<7>42EFt|Gm5F!xV*=&Nly98O1g#<zfD?rddOAB?pUff+1Dzwzy^`w-# zyPuT&&-Wh9dtWmLd+q$s!K7sr<P>;bG!}~GX88%(p;*Wd`k_c9ROlyrzMphck{?Vj zy`+|^3@U@lqOzzQDu>FW@~8r;fGVPjs1mA#Dx=D%3aWxU<e{plDyoL6q3WnQs)1^t zny4nKg=(SNs5YvD>Y%!)E~<y>q57ykYJeJ`hNvNGgc_m7s4;4SnxLkrDQbqAq2{PL zYJpmymZ&B2k&jxTR;V><joP3#C;=s)wx}&iM2RRf3EsH6Gm;FGQ3^^y?NB?^9<@iQ zC>3=;9Z*Nq5p_bHoI1Pn+1c$bZg+9JtJ_`O?&fwkx4XOD-R&N3_i($X+dbXx<#sQ( zd%NA+?LKbzaXYCmzoIV+pa4okX()(-C>^Dv43vTTp?;`8>W>DX0cao^hz6lSXfPU# zhM*y6C>n}}p<!q^8jePw5ojbDiAJGOXfzs)#-K51EE<c(p>b$D8jmKR31}jkh$f*) zXfm3Nrl2WkDw>L>p=oG3nvQ0m8E7V&i83?cjjKD;v*0W=8_h;@&>S=u%|#&;Li5l( zl!dZTHp)g}6h`yWe6#>9KshJ}<)U1)5G_QD&?1zF^3Y<m80DjUv;-|d1*iZmMN3fx zMNkw)Q4GaU9L3Qxv<xjr%h3w70u`b{v=XgEtI#U68m&fa&>FNBtwrn5I#h(NZ#a%O znu`wNE%JSMt9(D+CO?F?%Marn@?N}C-iCL{+wpFEbvN7tuNAMyd*uyypL{dkFW-U> z$Q$uN`Br>Lz6~FiH{m1lW_(n>9UqhLz{lk~@d^1Zd{Vv}pOWvvr{#O`8F>pnD{sZ; zWcxeM%l3C(kazI>MR_N_B=5q-vc2vS*<SZ$`2n7POnwkQF57W<Lbl`Zr2GiaUy&ch zPs#TFpO*J<|Eg@q=^1$+_n(#b<LBf9_<7lm_Y3kN?!PD>#xKc7@XPX1{EB=Gzbac! zugNF4|GIn<zagK(Z_20fTk;wFwtN=9BcH?X%IEQW@&)|9d=Y;jU&0^C#rPw+1b-}F z#-GSn@HKNu5&l%Rey_{c?`N|0`?+lWej!`GU&_|+SF-i{wQT)<BU``U%GU39vi1AD zZ2kTqTfaZb*6&ZU_4~7I{r)0bzrV`X?{Bj8`@3xY{vlhxf6CVHU$XW4w`~3XBU``! w%GU3Ha%sOQ0nbZ_gro7im>*2!>nPyG^P}NdvinpjeIOE!#UuH?Js0r)2ggbZAOHXW literal 0 HcmV?d00001 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 GIT binary patch literal 3776 zcmY+{Wn2_n7{~Ez>)NeYqap)}-7X7ucL&A_tDuOup<<$<SlHcO6~yk2d*^lyw>!Dr z-6`|?-xt2x{eGV3%${?0&hyN~#HA&rxm<yuH<+AYgeQ7~Uc+N}{eEw{5$Q4v^8wTF z#1?);7pe#<f{LP|s2D1SiX&?uECI`)k_xVZrQlLjTEU&LjF=5w;s#h2mPO@IIaD5% zM-@;7R1sA~l~5&A8C6DAP!&`aRYld1wI5a&SHc>wG^(j!7OVwpq1vc63RCJ9SV!Cl z>%zLI9;%1xqxz@;YJd!6Wx$5wGT2C54jYRrV7QnGn?M(eKs8ak3G2W}ja&_*#5J&~ zxE3}O*THCUJ!}q3pcbekYKclYYUSLr)+Pt7!Da_-9Mo{Ww<WOEK|8R`L3^;>K?ktI zK}QG0o$s9p>~hc<>~>&w(Zu&ax40L^z-q{Ys-sw?9)NK$40S~Y>V|AqW_A~K)ASHo zp4n4mfo3m}C7QiO7HReobprc}tkmo$YOVd@1ST~AwLk+=3>t(Y(O}dJ4M7djP!xfN zAzQmST-0uk5LIYKiaL^`MD6Ej@gP?oBOZcd#lvu%cm$4z6VU_|j^g8CQ#cVtp-IS% zCZkDc3TlqLs3n?;?4vM2JO&fR9Ox5s;WY6$oG#|UB=H1H7Ei(%a1ok`qEQNJf@Yz~ zC>6z`*(eUBAxra_18p?`zo;S+5LG0C8moUPq^N4fTv0`0o~ZsXUsUZ(hf|o;0@MX9 zM2*oR)D<m8_iCHd2A4n&T8bK>3}mYbEQ4Nx%h6P{0wthKl!#U$A6kW`p)52Vtwu>` z4N699k$oPn6EDE^;zgJ(UV<CM%W$K31#W`YIk*|lKwHpEv=ybGZD<zSj#AMMG#l+i zX=oRkgLWf7+Jo$?aIbg`?h~)W{o)OHK)eYLinrh)XlYLl!zBbCL;-XJ1<_FyLdVct zl!NA>Tr?jYN9iaJEkGxbeH)$>@4!>yU3ePiXTUR}+WlEk{rw!YRO-${`xIj@h^OI2 z@eI5K^K~9CD|(jb6-9MCuZr13uZe2-*F_!P8={^`Zi<<Vy(Q|P-4<0+?uc0=-xXD1 z9)b%AK8(5{3w1}2pdRQ^)Du01dZEWrZ}bG}gPufv(Nm}&dKy{U-DhCFir=%)=3&Ns zPSmlpVL^s^bN>HUV}Bkm=9gYT{n3kP0D1`xL@%R3=oK^=y^4mQ*U(V(IvR%FK*Q0S z$WkqOOVrK$HVh;89c1g@dlwdD=$Yd^jm;tZeR!`4JJtCEs7n=~5yU=3Bhg1_6#5vA zMxUTD=u<QneTK%N&(V1F1+r9QzZ7$ceg!qRukX`0N>v;FR@5Q<4z}Vt-=o&(2h;}r zh}xo`P&@Q9YL9+F9ni0+Bl-<>LcgQV=nrJ6ar`Of5&a8ljep;#f0U|f`>$B|JQn44 mxx)RvKqw_>cp`Wgb-O~T0belEc`+?a@cV)xf2yH8x9dMXG%%O| literal 0 HcmV?d00001 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 GIT binary patch literal 134095 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%0Dsv?L$<qxuF|0Cq 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 AWdHyG literal 0 HcmV?d00001 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 GIT binary patch literal 372283 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 literal 0 HcmV?d00001 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 GIT binary patch literal 291504 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%0A;)Ak64~A`XhFw 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 literal 0 HcmV?d00001 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 GIT binary patch literal 231436 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ªw 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 F{tLg)Cfxu4 literal 0 HcmV?d00001 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 GIT binary patch literal 3779 zcmXZfMRXNO07l`#;o<J^fIxz~hT!h*79cnQk{8_F-QC^YnSpV4cXxLueebIN@0?!r zqVA#^Hl8?YVkndxiI0pP7LFPoABhjgh2xWw;-`gULg8@q1JU8QMyW@oRHZ>_P+F80 zr9<gZdXyezKp9X*lo4e@nNVhw8D&9PPzZ%kR+JTGL)lPvlpW<jIZ#fN6Xim=P;QhP z<w1E+UX&N*L-|mClphs91yDg$5EVj&P+?RU6+uN%QB)KaL&Z>WR2-E+B~VFJ5`|G1 zl|rRZX;d1OL1j=Bib7>kSyT>{Lj$7W{WG{DF)#*|N99okQ~^~)6;UNr2~|dwQ594L zRYg?;RSWKCwP05dcJ*M_2zHHN*9>;eVAl$Etzg#<cI{x-33i=e*9~^vVAl(Fy<pc5 zcKu*SH{dTCpjZ@(8lr|M4#lBHs1a(68lxtt32KU(qGqTWYL1$t7N`YkiCUsos1<6B zTBA0o4Qh+pqIReqYLD8Z4yXg_h&rN9s1xdpI-@SA3+jrxqHd@g>W;dj9;gTEiF%@5 zs2A#udZRw559*8hqJF3!>W})P0R!OuGq}?O;XpJ94MKy_U^D~`LGdUa4MjuIFf<Ge zN5fG9N<bsf2s9FnM5E9sG#ZUYW6&5h7L7&Y&^R<6jYo+n5lui7&_py5O+u4U5=uhJ zC>cdi1f`%9G#O1sQ_vJN6-`Cc&@?n1O-D1(3^WtXM6=K=G#kxEbI=?#7u}r;=gE0+ zzMKyi$OUkrTnHD*MR2iP4423yaH(7hm&s*txm*rc$Q5v<TnSgnRdBUj4cEvuaIIVm z*U5Eoy<87B$PI9#+z2<xO>nc^47bQFaI4%3x5;gAyW9?U$Q^K}+zEHdU2wPD4fn`B zaIf48_sM;5zuXTG$OG`8JO~fTL-4RX43Eeo@TfcrkI7^3xI7L|$P@6SJPA+9Q}DDr z4bR9k@T@!w&&hM}ygUyt$P4hIya+GJOYpM146n#5@T$BDugPohy1Wi=$Q$scya{i~ zTky8L4e!W1@IiRbejk$ddso`;J!!uWOZ$C9+V7*%ejk(e`?$2<C#3y8Ded<uX}?cP z`+Y{*@3Yc=pOg0cytLmJr2W1q?e`^Vzb{MseMQ>utI~d7llJ?%wBI+R{k|#f_bq9^ zZ%g}qN80bZ(th8Q_WQoH-w&kyekkqtBWb@MOZ)vq+V7{*em|4;`?<8=FQol`Ded<w zX}@1f`~61R@3+!^zmxX+y|mvSr2YOV?e`~XzduX+{YBdEuhM>hllJ?&wBJ9Z{r)NK z_b+L`e@pxQN80bd(tiJwsr{CZ4TYkT5|UHKMZ$6Ac#g(~QWBFBA~C_+H1&g|gh)zK KV%YCuL;nN!8Z|Qj literal 0 HcmV?d00001 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 GIT binary patch literal 3780 zcmXZfb#xSG6vkmZFt|Gm5F!xV*=&Nly98O1g#<zfD?rddaCdi?BE^ffU3Lo<sJm0B zpcSYWO1|Iw*WTyc@9f^0x$m5_vGM82>6Yd7xqK;!c6gG@=dzu)%j0on*in{kN9KsM zopIS8G1<zAa-v))7s`!tqdX`N%8T-%d?+6ZLt!XC%8v@50?0xZDu@cALZ}cbj0&S7 zs0b>GilSnu7%Gm6qY|hDDv3&>Qm7OvjY^|3s0=EL%A#_p94e2>qY9`3s)#D0N~jX5 zj4Gols0ylzsv;ZNs2Zw<s-x<t2C9L=Q8=oJYN7}fff6F&^G~xQQ7{Tcqi9qM)k3vV zZ4`rIP#shU)kSqtJyg%AzS+<Erfy*B2BvOk>V~FnWa>tyZfxqtrfy>DCZ=v`>ZYb{ zX6k09Zf@%4rfy;C7N(AD$rLS-136GEibYQ3L~$q%#iMxC3bjJ5QESu&wLxuBThtD< zL+w#})B$xs9Z^Tr33Wo9QD@WzbwOQGSJVx4L)}q#)C2WEJyB283-v<1QE$`-^+A16 zU(^rvL;X>IGyn}i1JOV<2n|Am(O@(L4M9WEP?V4WpMRR29tMY@;b=G-fkvQ_Xe4qW z7aD~|p+uC3l28(IBR3k2Mx!xk3`$1HC<UdUv1lwBhsL2)l#0fq@hA<Yp$TXLN=NBv zBASRi$b-Ddi+sq3{K$_cp-E^mnvABPDJTPFps8ponueyK>1aBdfo7nYXeOG4W}!?J z$b_@S*>H|H2WE*`aIQEP&J*Xs`Qm)IKwJP9iVNW)aS>cBE{03QC2*;@6fP5&!R6v| zxI$b3SBfj)DsdHDEv|-Z#5HiOxE8Jx*TMDTdbmN{05^&o;U;kt+$?T}Tf{AJtGE?z z6Su+b;&!-0+yQrrJK-)E)Faz1>U#HxyE(j9JPh}V2jPD4EIa@M2jD?<FTz8jZu?;v z(o{#p{TzNlybO=Rz)^TiT}^dd)T*4&;S(Hw5eBuBCq+HbQ{o;DpB9h6GvXn5Ry+sK z!GL&P-Ai;|617(sU}zWJi=yt;CGiT~%kWmF7VC=I8tY|IVR!`w72sFlRRuU8D!^Ao z1vn^b8$zOP)@z~yd<_PVG39kpA$(nj72r42)w;i_u4aBqT}9=Fx(e`3Q2~BiRDj<R zwMp;7kY;{Q)Ku^5u%7n^q5}M(sQdhpsHr}NA+7r->gtL<Rre%!<1=*?;Lk+`_zO`1 z{!&zczY-PTuSEs;8yM6B{Z?IV(k)Sm{Z7<E-xl{W<Q;Jz{9aV*et^N_bbl1}P=3;3 zh2gHcdVk$hS1Wp7UA_ArsH*@!6tzf?ME&m1q5}L23~32}6*bjwI(&+mAB(5q6Y&iE zUDONf4;a!F{i*JG4*#XDzWHx;FVOu*)Z6V}QQ`kj)cfnHsCYkv!R#N3c34)p$L;l} g`fO(e|3@8`Kh5j*MVUXR*#|sspWl;a>zu>-AFVqyRR910 literal 0 HcmV?d00001 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 GIT binary patch literal 3746 zcmXxnRd7{T7{&48aB+7yK!`waC%Fmk?h@pZ1QG}#Tmgc+ySuwP2^CuE?)p;d?%uwX z?Em_n_WI47hcmPGIx{CRIVU5>=L>}c;mlMoDlHHWcz!Ps3<h$&SfA&`JQCyilM0Ub z0u@4qP+?RU6+uN%QB)KaL&Z>WR2-E+B~VFJ5|u)wkPrD#X;d1OL1j=`R2G#(<xqK4 z9#udUP(@S`RYH|eWmFkeK~+#yR25Z2)lhX*9o0ZJP)$@5)k3vUZB!f8L3L1FR2S7l z^-z6OA9=__4NwEr5H&=NP$LwDqEKVh7)7IKloA6Up6-ss!dMiC;!qRR1T{rXQ9O!A z%}_Jc95qKRPz$G)?tZp(xs}VUTyE`hYnR)&+{Wd$F1K~Loy+Z9Ztrq?mpi!J!R3xF zcXYXv%bi?~>C9VnMhPeZC89*+M}Cxql29^AMqN-B)D?9_-B35w9d$=NP!H4-^+df; zFVq|LMtx8p)ED(d{ZK#DAN5BA&;T?L4Mc;`AT$^aMnljLG!zX*!_Y7^91TY!&<HdV zjYOl+C^Q<4Mq|(zG!~6T<Ip%X9*svSDe&Rx?(_sW0Zl{`(IhkpO-7SZ00qz#GzF!i zRFsC&P&!ISQ_)m34NXHCC<A4pOf(%$M>Eh2l!da;Of(Z^qii$_%|baS2hB#aQ4j@D z2!&7>g;4}W&>S=e%|&z3JTwpGqFgi|%|{E+0<;h<M2pZOv=}W$OVARu6y0A6mx;^Z za&b9aA+CTc#g%ZCxC*WoSHm^p8n{+m3)hM3;CgXA+#qg%8^w)qleh_P7B|B!;ug47 z+zPje+u(L_JKQ1efIG#VaF@6X?iP2$J>nj?SKJHtiTmJwaX&mD9)JhMgYb}e2p$#> z!z1DmcvL(JkHH6dD)_ir4WBTp;*(}|e9EknPn*^98MA6WYgW(a%qsf4SxsLstLlqp zb$!XKvM-y}_7$`0zG_zA*UT#Xx>=3iFst&LW_5nctkQ3r)%qQ?YR@yP_k6R8ziU?W zkD68eV`g>#xLM^tVOIP1%&PxMv-*F^e2n{W-+UZDZ9ajYF`vZGnor^9%%}15<}>&O z^I80&`5b=9d>+4SzJOmbU&ODPFX7kBm+|Z7EBFobRs5#;8h*=s9lve9f!{IT#P6DK z;rGn9@%!dG_ycnu{?MF{KQiCNADi#t2Xel?&!3pJ-%rij?`LN1_j9xM`-NHi{nD)c zer48vzcy>X-<Y-EZ_V28cV_MPd$acYgIW9i(X9RcWY&IvHfz7Xn6=+u&D!s8X6^TP zv-bOkS^NFdto{CF)_(ssYrp@Pwcmfu+V6kng8jxN_<T{p^iU)#?D?bl+f499vP0?N USoiB$@IWv<90_K7dM?5DKe1a_p#T5? literal 0 HcmV?d00001 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 GIT binary patch literal 3783 zcmXxnWq4Fa6o>KRaB+9IK!`waXR`_J?h<5477_>{tN=k5cXxLvZpEc7H(P@ise7Bc zJJcze_uo(V{GKy&Gc)&`$+K|@87Uc-<qvoQsY!N3vM1oN-L}W)^JLo5mTgBp5oNpM za~`od%7t>F+$cB7gYuxfC@;!~@}c}FKPrF<pn|9%DufCl3t6ZzDvXMtBB&@Tii)9P zs5mN)N}v*`Br1tYp;D+cDvipZGN>#ni^`#Ls5~l<DxeCeBC3cgp-QMSs*I|jDyS-| zimIV%s5+{SY-FPvs0ONuYNA@G7K%U-s5YvNB2gqtjDnA!rbeP+G>Snns1B-w>Y}<R z7R91^s2-}1>Z1mzfl)(KpAAji$i$6I+}Om8P29x9O-$U>#7#}y%*4%1+}y;?P29r7 zElk|f#4SzS%EYZq9Mzgtv_>xELUAY#xse;iqj;2n5>Ok|2DL?PQ9INQwMXqy2h;&| zL>*Bl)CqM)olzIm1$9MTQ8&~Lbw}M%57YzoL_JY2)C=`Sy-^?32lYjLQ9slV^+)~D z05kv%L<7+vGzbkwgV7K)1Pw()(J(X&4M)RKVj_I}G&MZ}jzA;PNHhwKLZi`W<Ut-Z z28}^UC<!H_WaLF&G!~6T<Ip&if>KZ_N=4(*cr*b`KxrrqO+*t>I!Z^A&?J<BGSFl+ z8TpV8`H>$5Pyhu{5KTc-&{Q-PO+(XACdx$9(R4He%|J8JOf(D4LbK6qGzZN=A#^hY z=ZbUTJaHbJFV2Sx#07AnxDYN97s18iVz@+H0+)(Q;WBX<TrMt$E5sFWrMMEV5?8_1 z;%c}?Tm#pNYvDR^9b7N2ha1EVaHF^pZW1@a&EjUbMce|nid*3}aU0w&ZihR>9dM_( z6Ydgs!QJ9+xJTRr_rmOuCht>vAL;$#et1AU01y5@S%2z~(uYVN77xQGp`#riQT7Pg zqcE(~I;QL~vd6{a@Pv2*o)k~QQ_xYNomTcV*)!r9cvd_M&xz;YQ!qQEqdu?ndD0ie z3-F?N5nh7MC3soc%kT;es~)Z@dzI`p@fy4?UWYft8}Mo9=-i)yS!%;)MV-z~Q4Q{h zI;<?{Xl__k3qPm9`h?Gm>W&vgwc(4Js}_C<hPC}$8m#YqTU6b>Eb3ri5s$LpJEG3& zE)1)r?}@sU?u**OtI$ykzox9#{JOGg;WtDr@=Z~n>@Cez>AWrKs(eRO3%@IB3-3Wk zb@jfo+R+E1KKF+jtQP(VW@$$si>El8Y*EYjMAS9=DRk7qpNR*V`?&_|7WzWeS$!$$ zUj0gQ)xclF@D*P5jRxziz7=(md?%_?z8BT)KZq*+A7OYeZ~jSCiT*6AfPaCG8u(Xb zwdUWHRsTK^Rb~%Gt?GBp)vNvx^}p{=QFroRqPFlibhL$klokIK)xVEmb|~lEV_cRM l;q&@~X#v|E$xl+36-@Vg1JUO9Y0dzjHxTrt+ZyMx{sU@pHv<3w literal 0 HcmV?d00001 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 GIT binary patch literal 3801 zcmXxnb#zln7{=knA-FqSpj4o^lcvSpU5bP@&_XFC0u*<5cXwSpX<^wd&APkqcHP~L zZRhvizwY;(Z|2@PGxO%0#3f{;WH=l?zuTXhWJM&q{cg);xxHR@rWNh5tf+^gELVKN zBep<=P$5(p6-Gr+5mXcvMa57tR2&sYB~S@e5|u=yP$}d<4pbVIMrBYLR2G#*<xn|P z9+gKGPz6*GRYa9gB~%$zMpaN1R25Z4)lfB59aTp)Pz_WQ)kL*WEmRxTMs-jfR2S7n z^-w)jAJs<|vQPum05wDnQ6tm{MW6`O7&S(bC=w+`!ThJWBhfG##h@6}1T{fTQBxF) zVo@{H3^hm1Q47?<sHM4|Elu6Z)U8b2+SIL0-Nw{yOx@PhZB5<I)a^{&-qh_)-NDoy zOx@Ac9ZlWI)SXNn)tOavMo#2JaVQSCkPF45c$9z=P#4q%bwyoKH`EPvN8M2m)C2WI zJy9>z3-w05Q6JO?^+kPAKhzKPNBz+NGyn}m1JNKf2n|Mq(GWBQ4MjuIFf<GeN5jzw zGy;u8Bhe@{3XMji(HJxajYVV8I5ZB8N8?dqBFul9J3RqTKoikKGzm>YlhI`4Ms73( zO+iU02_>Us<Ut-Z6-`Cc&@_~SQcx;NMbpuAGy}~*X($cNL^Dx3N=LKMER=yV&}=jt zd65_SkPrEh9|ceV%|Ua}Tr?NWL-SB3%0%<ge6#>9Knu}Av<NLii_v1V1T8^JQO;7h zOk4(+i_75(aRpo{u7s<^RdBVq8m<x7z_sF9xK3OL*Nf}n25|%2C~kzC#7%IsxEXE{ zx4^C9R=7>v2Dgjb;SO;J+$rvayTn~^x40Yb5%<8o;$FB<+z0oI`{4oc06ZujgongK z@UVCo9ubegqvBC`4CV!OqQ`CPNKa_^35K79xjKhaqR!#8Jz4EDntX=IXVuQq-8!fC zIojv#ww7{14(ja}<?L&WzohAx;AQbLyaK~P_^>7iwJTR`Yg?}2Ty4vB@ffpjXmm&` zziC^sxP^0WG5ogO*3k#$EDaCYecgpDyRS{pw)<Mm9Xb0t@4su0SI{1@t)$(v=WF?o z;`>_tW1?1*BWm04i&{&rs85AOed%#gnSMf4rk@m*>8C_x`e{*@<rz_@{j8`=KPM{F z&x^|R3!*apA`IVPyIxXPnSNPRre6`2=~qQ%`ZZCReqGeTz5(+>=lRl`YAe)li3;`G zqC)+Ss8GKvD%9_Z3ibOitQ+=$y1Km|in=d(qK^L~@i>e8SX87x5l_<nR6GSg6Hmj> zMJ4(R@hsghMFsjRQJeF%c!9y+h!^3vqSE}Gs5E~sUSaSLFnkmKsP0wxlc?W`pGAe| z7g3kvS5dF}P1HXB4)a1<^dD;LSLIJJ#E1V9v*6!iHvC7t1OFB8!vA3SHhiG&y?n+v n9gYaE#}`QRTdqj{q&gjebf3o`ZT_(q4DfpV0dKmcaZbno0Z>I1 literal 0 HcmV?d00001 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 GIT binary patch literal 3780 zcmXZfWpGnz7(n60A-FpPD73h1DemrW1&UKj1$TFMcXxMoVOe)~Vcp%8-gAECedfJ4 zH<S5JX40^6!l;B$C@DEMdGxSw#PHbU*l<iZHZd`FYB(ws4o5x|8IEa``cf%XX;2!J z7Nte$P&$+zrAHZ129yzHM43<~lo@44Sx^=fLLrnDWkuOgHk2J@M>$XqloRDdxlk^Y z8|6lMP#%;Q<wf~WK9nEjM+Hy;R1g(Jg-{_>7!^iEP!UuV6-C8RF;pBCM<q}RR1%d$ zVH8HCP$^Uzl}2Sy85DscP+3$Kl|$vwfJpe@H8>+tFbb7N<xvGx0aZj5Q6*FfRYsLj z6;uUPMO6b;3(jY?V6Gm_)q}Z4FxLp?n!#K%m}>=dtzfPl%(a8LPB7OA=DNXLH<;@M zbG=}$AI$ZGIkEwtq5+CV(WoJ6h+<F-YJ?i0#;7rBf|{VFs3~fOnxW>XIckAgpq8j5 zYK2;%)~GdVgW90Bs4Z%T+M)KSJ?eluppK{`>V!I>&Zsl$g1Vrts4MD*x}ol<JL-XY zpq{8F>V<lt-l#X~gZiMps4wb=`l0@)KN>IqK6nkz^guWe4MKy^U^EyFK|@e1ibX@w zP&5n;L&MQ<6o=x_2s8qXL?h8CGzyJIqtO^N28~5y(Ks{?jYs2AJc>sX&;*o#63|36 z5hbETl!TH{GD=1%C<RSIlh9-|8BIY`&{Q-PO+(YrbTl2!Kr_%xG!xB2v(Rib8_hv? z=D@jfE}SRl!TEANTp$;~g>oTWBp1QOaxq*Ym%ycRDO@I(!R2x}Tp?G$m2xFqC0D`K zay48d*TA)MEnFwp!S!-I+#ol=jdCO0Bsam$ax>f_x4^A(E8Hfx!R>N8+#z?sopLAK zC3nHyayQ%~_rSe!FWe{h!ToYSJOJ;{JAn_nJ_rxNd%pEyw};staqE+gx;@JFm^=oL z%j58b^tmVHNw%ltDR^3*hG*m%cvhZ;=j1tfUY>^+;JushqT7q`lDq^j%ggYJ_uhh6 z-Cl*)<TZF*UWYfl*JF26dhBk=D_nfrdvC*s;avlML>llNX~1`-0Y54Y_?|T2$D{#2 zE)DnzX~0iP1Aa;x@YB+OpOFUqtTf=~qyaxK4fq9Vz%NPzeo6XGzAXJFUy%m<sx;u& zqyfJ!4fqXdz;8+eeoGqg+tPsFkp}#(G~oB70lzN|_ycKWA4;>jFAex3X}}-L100o4 zr2T#>53&7B+VAJ`2-`2D{eCI!_bX|?UrYP_M%wSU(tf{__WQlG-yfv?{wVGDCuzSw z%L{zwU!?v1D(&|-X}`ZqEBiy*@1N3s|C09mx4gk~|B?QT{44!s_)n(xTRu7zib#x0 lN*R|Njw#3g(dbZ0d{SI;RPg6C^@7B><dnqtu-8S0{s&3bHJShb literal 0 HcmV?d00001 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 GIT binary patch literal 3782 zcmXZfb#xR-5XbSuVQ_aCAVeUzv)Kf9cL}m23kie}R)C-(xVt-tySs+T-JZL9&JE7} zj!XLc`)lg+s(N;}yQ<&Yn7Fj0G|Tb_Jb~l{J1o%?@YrtK<MVma?MTbEBc6z`-LZL( z=se{^`A~k89~D3aP(f4>6+(qjVN@6uK}AqeR1_6M#gK(8R2&sYB~S@e5|u=yP$^Uz zl}2Sy8B`XPMdeUAR34Q_6;K6K5miK$P$g6uRYp}%6;u^fMb%I>R2@}EHBb#y6V*hu zP%Ts&)kZe5Q5{qV)kSqtJyZ{cp)gb*)kond9K}b#+^6Z0NEnHtP!wu_8lZ-#A&N%P zs1a&}8l%Rj32I{0)bwXl6E`z)GZQyAadQ*5FmVeLw={7}6Sp#PD-*XiacdK|F>xCc zw>5EF6Sp&QI}=B==UcQ#F62TnC<eKa8^xkn6o=wa2h;&|L>*Bl)CqM)olzIm1$9MT zQ8&~Lbw}M%57YzoL_JY2)C=`Sy-^?32lYjLQ9slV^+)~D05kv%L<7+vGzbkwgV7K) z1Pw()(J(X&4M)S#2s8qXL?h8CGzyJIqfvZ3%zc`k9s|dqv1lwBhsL4tXgu;D51N1` zpahhF5>X=ZA}^YVCZb7b5=ufzC>bTA$!Ic~f~KGpl!B(BsVEhtqG@OvN<(RAI+~7r z$cOyMj{+!wf+&b)pc!Z;nu%tiStuQ)quFRSnuF$`xo9q$hvuRAXg*qi7N882l>rxu z3t^_12^Wcr;9_wxTp})kOU0#dnYaut7nj2o;tIG@TnSf+tKe#JHC!XEfosLJaGkgg zt{2zC4dMp4QQQbOiJRbNaWmW^Zh>3Ht#F&T4Q>~=!yV!dxKrE-cZs{;ZgDr<BkqBF z#l3K!xDW0Z_rn9w(UBb#b!1P%Y@Plgn3H*m#fRk#ebf<^>)l6T)={dDDSH4OSN1qO z0Ylo4lggeXdrE7s!_&&1hG&$$0ndsz;W-tbgXhKb@B(zyI~TQ94Sq?yP4Q)zlcBA? zg0rrWzA9dY*R=Q!ybc|;<qa6piQm*(ed$|TtH!%6s`2iK*Ld??@fN%XA83T{i#o(C zQNQp3bVNs4^+UF@n%Sq66`vM0!XZ&3{EVm(epb{7KPPI0pBHruFNoT!7e$TmOQJ^j zW$0*xUxC@WlwMV_cJeh*JNde(5q?8!^{O|O)d;_(tfum9QH}MEiglpxiYk6j)Cj*X zYJ@+4j=KLt7}DC0RICyHSk#z(B5JO3#Dg@$r_j-Ee5ULnvY#uf6Z}HiBV@l6HNanq z$H;yyYJk5HPmujq)Bt}c>gM=f)Brye&#?B9cozNu9o@-4!fdtZPb$7Z@z3H#_=|W6 z{;IWl)o;pbet%b1XY_}to8nIu>kj%$)TQ&csQLXz)JXmd9reb4Fr*K9tm3=5Uoy&N mSz$h}KbR7*-QoNrby>kwzc&zR{+{L)_`HFjFV$9^%laSmz%=>* literal 0 HcmV?d00001 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 GIT binary patch literal 3779 zcmXZfb$Aq46o&Cqd~tVJAduj$A-KD{1qe=n2=4Cgt_4c5LUCwIl3MES?(S}6-uJIP zzvnx5_s+~clPAquOdCHf6iQ5rO`0$|95E&~DK;Dvj!j62ogIz}g~O5eM22IUXM9x8 zP$rZK-HYx;nNenx1!X~5QC5@<WkcCfc9a9<KsixP6ha}C3*|z&QErq6<w1E-UX%~z zL-|pDQ~(t~1yMm%2o*wwQDIaB6+uN&QB({SL&Z^XR05SiB~eLK3Y9{oQE5~Ll|f}u zSyT>{Ltzv~<xzQ50aZX1QAHGiB2Xn%2~|dw(a=bE_cJ&nQ7{TsK~+#yR25Z2)lhX* z9o0ZJP)$@5)k3ub)eg>Q?Vzp`)OCWoZcx_^>Uu$4FR1GWb^V}j5Y!EVx?xZ^4C+Qf z-6*IV2X*71ZW7c@f;zG(yJ(7{Q8a3XnxPmJgPNn}s0C_)TB4Sy6>5cAqt>VmYJ=LM zwx}IyhuWj|r~~SNI--uK6Y7LIqt2)c>VmqWuBaR8hPtEfs0ZqSdZM1F7wUz2qu!_w z>Vx{CzNjDShx()bXaE|32BLvz5E_IAqrqqh8iIxng?B%LGd&CrL&MQ<Gy;u4Bhg3{ zi(=6zGzyJIqtO^N2F0N`G!~6T<Ip%X9*sv6&;&FQO+=H>Bs3XKMpMuf6p!N3R5TS$ zL(|Z7G#w?N1eAypQ4&f*$tW4kKr_%xG!xB2v(Rib8_hv;&|EYZ%|r9hd^8^|Knu`9 zv=A*qcNW3Laxq*Ym%ycRDO@I(!R2x}Tp?G$m2xFqC0D`Kay48d*TA)MEnFwp!S!-I z+#ol=jdCO0Bsam$ax>f_x4^A(E8Hfx!R>N8+#z?sopLAKC3nHyayQ%~_rSe!FWe{h z!ToYSJRlFigYqCeBoD#EFx5wP1g5*IqcF{<f6TSVSbN;Hx8Qv?yXO-&pCCOcPr_3+ zyN&y$dp<4wp$FtO)}DcP&cL&#ZsVN1L3-Zi^Y8*p^-Mkp)4j15UF-3_<l0NDeaN-9 z;bog$dj+O@p0B$0D$UnyJ`Ar*AIc4Rob;x=4sXG9pYLr`xACyNN%JGpGx;b?@d@6M zUSJALm8qs4hBQ-e`(x7iecWcR_X$&H@JUnW_bF4)Rl2G3`?RSi=NVJy_gU%uK4-Ih zUOK-oz%<`TFG@H05=?P^UzXmhS8VpHUNv=oUz5)7>o$8uZ^*Meg*R>XirzBy5Wa2d z{JtZ7zVF(6gs*zf)T8pgsV|uiOg&d0O4oh_Q@tA>n>tpXn0m}UmENn*Y(Bv@J~#ED zd|`Tu^h;A;UtgJ?CjHvfN%_Xq`TbUU>%Ozu_w)DC7xE7<%_I7w^smNGFy$h@`?GX@ zf3exG`qlI@&A-Vj@OPWNqCez0(m!qX*8OFAf%I=vNAe%(3+i8+kJ9`fOwahCD$$`( oL_%C*^5mp&OlAHZjSeNpC&nd31^=67G$h0&B`3s(?TZfm53l_*NB{r; literal 0 HcmV?d00001 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 GIT binary patch literal 3674 zcmXZfb#PQy7{=k^aB+9IK!`waXR`_J?h<5477_>{tN_8?-QC^Y8ECo-EurlcT4-?? zTBty$1})Uc`MrPL@0ssAchBB?-ksT~n3RMR%kuhMzQi~?B;Mt7*-qQ#@wig$aLcyC zJ_xg&(HWP>3}r%@P-c`FWkFd`R+JTGL)lPvlpW<jIZ#fN6Xim=kcBLi8|6lMP#%;Q z<wf~WK9nEjM+Hy;R1g(Jg-{_>7!^iEP!UuV6-C8RF;pBCM<q}RR1%d$rBEqU8kI(6 zP#IJfl||)HIaD5%M>eui1yli5L={mbR0)Nk5L6jeMxiJa#fHK6S93<fVK|CF5vU5P zf~umbC=x}YYN#5jj;f;?sD@EZb3SXDx|XSHnYy;AYn!@`sq2`!uBq#qx}K@)nYzBI z>zlfPsT-KOp{X01x{;|HnL4a7yJ(CY$bq6z6mlXbibl~W2F0Kzs0nI{nxbZ?8ETH2 zqZX(IYKdB+R;U$fjas8Ns10h1+M;%-9cqu-qYkJ8>WDg`PN);=j5?z(s0-?fx}t8V z8|sd_qaLUS>WO-yUZ@x9je4U#s1NFk`l5cQAL@_#qu5yZ{%X$j05|{*L<7+vGzbkw zgOLll&=52P#i2M9kK&OVxzSKG6b(bePy$Loi6{{bN5jzwGy)}|Bs3C@M9C-_jY6YP z3Q9qv(P-pB9^^${<U>B>M}9O0jX`74STqieL#ZegjYs3r1T+CnL=({@Gzm>clhG73 z1x-b1Q{gmm8k{aphcm<(aHcpD&Jt(A+2U+CN1OxaigV#SaUPs6&W8)c1#qFb5H1oI z!NuZYxI|n6mx@c_GI1GPE-r^F#1(L*xDu`sSHacdYPd#R1J{ac;W}|0TraMN8^jH8 zqqq@n5;wuk;%2x-+yb|XTj4es*bTSCbnR+~hIi22Dei>3wN~7t?jE{(#l3K!hL6Ji zFsMx)P**%Co@DqCOgjXRXzc}fR9)TqnAU0=$JIT~@Coq*JSpmfPKl@Jo`!*4@Qk`= z;92o3Jg4Df@H`Cav0qSEyeR5}F2S@*ti7zY7vUB7ks|q_s7R)Xiex}k27@r5;9M1z zvTGVv20s?n{X|p-uZy}>x~L4^5S77CMP=|aQ5pPPR0h8g6}p?ELU&74=)M#cy02hB z=lQm}3f&!1q5E3H3eGp`Ds*>6h3=lH(A^ic_5lnY<Q+W})qSL4z3#`NHu*%{#@eUi zcKA$GtiFW-J?HO4y_Dw~)@gqsDs<nA`?&KD;(qv}cmVz+>KnZj6}ngAVTOMekHB9< z9sXZMh3+>|q5EA_=>C8KJ&o7up61SPM1}584ePh=FLlo`{8l^<---I6_*+!0{((V# z!GA^F`9GMRaW*0xmKEZ0d;Lj1+ZoEgM2F>1_PTxH<}YK$fXD6gdy;L<IjsKy#CRB% literal 0 HcmV?d00001 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 GIT binary patch literal 3779 zcmXZfb$AnL5XbSuVR3g@pj4o^lcvSpU5bP@&_XFC0u*<5cXxNUYqN*+++E;Y;N0(k zzTe+pna?vb$-BEV`#gz>OG`?#EPucgNKUZB5<LNr?Y2EWpC{dpv}`-#xd_`GoBa`; ztsE!^%87EKTqqaHjdG(rC=beu@}hhwAIgvNqXMV^vXF%eqJpRpDufE7!l(!;f{LP| zs2D1SilgGF1S)|_qLQc-Duqg;(x?n7gUX_^s2nPX%A@kA0;+&2qKc>zs)Q<|%BTve zf~umb$VN7*hN_|Js5+{FYM?L_hH9dkC>({O_z3vy)67UDj6_i=3e`fjP;FEjMWbj` z2h~A!QC(CI)ibJZ=Ci(u8<@C(i5r@@p@|!rxRHq)o4B!wo0zzXiJO|ZsfnAJxS5HY zo4C1&TbQ_oi6dHaik8TQTqp*`AUATOSQLxmP#kK7TA|jcHEM&}pth(jYKPjP_NYDT zfI6U#s3YoxI-$;}GwOo6psuJZ>V~?Z?x;KJfqI~xs3+=$dZFH^H|m4>puVUt>WBKF z{-{41fCiv}XdoJd2BE=dFdBk}prL3eijRlSKFv%IgTv5pG#rgUBhW}R5_ymZjY6YP z0!l!MC=q#)7mY@v(HJxaC7~pgjFQn<G!~6R<4_7pLF3VQl!{W(1T+Dqp)@oRO+-HA zLw@8(0Te(%6hxEIBs3XKMpMufl#bHTR5TS$L(|Z7G#$-AGtf*l6U{=i&}@`38_p5u zz`5dFI8U4h=Zo{<0&xLcC@zGH#6@tixEL-Gm%ydsQn*Z92A7M=;R<mDTq&-EtHf1s zwYVCt5!b-A;##;)TnE>S>){4*1KcQXgqy@oaI?4>ZV|V@t>RX=P22{zi`(H2aR=Nf z?u5I<U2wO!8}5N2J+i&xWwQIAqf6MY-u+|`sQ55EC|-kyRD1{?7FB!%Iy%Nt_3Az! z6Zg`4T*U|B37ByLo>cY*Jf-X@cv?IS&%lso@+{2KjXeh)J)`sLJx}ii^&Wv2#q01A z%+fqxR<G{l73l1t_^Ns}NY})DWUs4Ox9*0h;lC-~r1+MoUAPTH+TZ74ruH{O)c$6Q z+TW0<VQ@s<s~1G=?;RLA$uaJV+QEA&*8bjCR@0uPtj_$RvKq6Ol-2&eENXvWQSniJ z_f=8*`x<m~=GR4?>J1fNr1wpjsr`LR)c(FL>QwKDnvHiwUD12cIm<V{udMd>15so4 zp{V`+NWEH(k40VJCo0zdehNc+pr0wLxq2XKaUP1AtItL4?-$|$&itjQE&B?Fv`1fy zdMMwhSiA78vU+`er|dDl`Fmw`>wZvH`};`LAU#&GdVdu4LjDOl8p5ANo$41AU*dOv zg_+vl-^2@Ke-||je~9Y+Q`G+c1)X#B{;lj)_>ZVp-@l^X4F9QD_v(L97x)BbW#76e nmt}?dy#8QHz;=i8chqGCQ~lmRr1@`}UEuQug1%H+buQ~EguyeV literal 0 HcmV?d00001 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 GIT binary patch literal 3780 zcmXZfWpES;07T)#VR3g@Aduj$A-KD{1qe=n2=4Cg?(Xi~<=o-ig>!dTGVlGG{%WSS zcDJXeY8p14IBH@jl$aEoG<sM#Vt8y)Y&a$yn~)GYEgTgJha(?~497G|Jyc3n8k7d5 zMQKqwln$jw=}`uh0cAuPQ6`iLWk#7%7L)~rPzYs3Sy48W4P{5!Q4W*?<wQAAE|d%9 zM!8WQln3QSc~L%;59LSsQ2|r{6+{J5AyfzzMukxkR0I`8MNu(S3>8PkQ3+H6l|&^` z7==+OR0@?wrBNAF21TF<R2G#*<xn{^AQC<}2KPu5j6&s6c~k*aKowC%R0&l=l~H9> z1yw;+QPn`zg8Q>tkgEr|dXQ@bxkiv{2DxUCYX!MhkZT9Ic981?xlWMl2DxsK>jk-9 zkn0Dzevl&@@GTmkXcUbaqJ}62#h^y05o(MYqb8^cYKoeoW~dozj+&zus0C_?TB25{ z6>5!Iqc*4wYKz*UcBma{kJ_USr~~SVI-*Xf6Y7jQqb{fm>WaFeZm1jTj=G~Bs0Zqa zdZJ#a7wV0Aqduq)>WliKeyAVnkNTql1K@*Wa8D0}1JNKf2n|Mq(GWBQ#iCd=6b(hg z&@eO{4M%Y(4vjz~&`2~AjY6Z)Xfzs)L1WNZG!~6R<Is3C9>t@0GyzRO6VXI82~9!? zC;=s+M3jV*P%=tJlhI@}1x-Oy(Nr`IO+(YsbTk9aKr_)yGz-l_v(aoc2hBlqQOaC6 zPtJq$<$Sn6E`ST=LbymSf{W#1xI`|2OXX6yOfG}V<#M<}u7E4$O1Mg{f~)0fxJIsl zYvo$FPOgLN<$Ab5Zh#x*Mz~3Cf}7=LxJ7P(Tjf@`O>TqR<#xD3?tnYxPPj|%g1hBz zxJT}Rd*xoZ58k!k{nCC9Nc%k~?e~zh-^0>=k4XDHD(&}}wBO^>eosjIJt^(?6ihkA zPdM#a`#mG=_pG$vbJBj#OZ&Yb?f0Uz-%HYdFH8HqBJKC8wBKveey>aWy&>)QrnKK% z(tdAC`@JLW_hD(jkH~%eS1EEod{iEQkI94Zad`+nArHeR<q`OlJPMzd$KW&aIDA%~ zfX~U3@Of#!FUZrJeNmo)cjZ}lPo9G>$@B1Kc>%s6FTz*lCHR`W3}2U5;2ZKPd{bV7 zZ^`TMZFvK}BX7cY<t_N0yba%%ci;!`p3mnGrTe`v-S0=z{eCRn?<dmzek$GXXVU$C zF5T}J(*1rZ-S1b@{eCUo?>Ext^S9Fdeka}U_wfEgXZC}q9q^CR0skZ&@Xyi#{~{gm zuhLKcO*-J;r33y$I^aL01O7`o;J>8<{s*Qwm47|!fd7-J11=vO3PmKuB_@wc3dfY= deKb0h9G@7M6cxOjre2T`mz10kANIQF(EqUyHw^#) literal 0 HcmV?d00001 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 GIT binary patch literal 3104 zcmXZe)l*eb9K~@PJ$8$ER3sD=`*Oj=E-X-tD_jLd#2YGhw_taR-CYlk-Q7Of-G70y zzw2qQ&;0hBn!RRDWORCRx@CENE?-Kb9hBtqxooHH@_1YscBp0BA-O_qXH?D-o}=6- zH_C(Zpu8wA%7^ly{3t&vfC``h6o3k%f~XKGge+vC!l*DRf{LJ`s3<CiilO4DI4Xfk zppvL0Duqg+(x@~lgUX<?s4Oan%AxY8JgR^ypg<IeDx!+05~_qMqspiXs)DMbs;C;O zhHPY`>Zm%Zfoh<ds3r<RL8un0g@REqN(h1fS93-}VJHeiVW>8$jq0E}C>({Ox~MLy zhw7pFsJ>AHb3PlG+|cBPCO0y<k;xGzN0{8$<i;j9F}aD!O-*iUax;^gncUpu<|el= zxrNCgEqRKT$blRv5=9~>a-t{{g`!b3YK2;%)~GdVgW90Bs4Z%T+M)KSJ&Hjwr~~SN zI--uK6Y7LIqt2)c>VmqWuBaR8hPtEfs0ZqSdZM1F7wUy#Q7r0>dZRw559*8hqJF3! z>W})PI24ECQ9K%e2B3jxAWBGp|5tOS2f;yTFdB@8pdn}|8j4)Vg@&PFC=n&1B$R~Q z$c=`h;b;UJfs#=&N<k@TBpQiEp;0ImrJ~VjG)hBhXbc*I(os4Zi^d`k@*pqrA|LW0 zKk}n-XdD`k#-j;n0?I%cXd;@3CZS1aGMbF0pebl7nu?~OX=pmSG#$<mXTX`_OgKxN z1!s%1;T&-eoGZ?S^Tc^@zBnH)5EsCO;zGDcTm%=3i{TP+3Ct8TVV0N$mx@c_GI1GP zE-r^F#1(L*xDu`sSHacdYPd#R1J{ac;W}|0TraMN8^jH8qqq@n5;wuk;%2x-+yb|X zTVb}C4G+K<`jQ7VJ;?ODrh1GEqON>V+{Wfh;&ymh+ySqMy6;tSC(~=<E_hws4R45h z;7xHayd~~~x5fSNj(7mx74?Gm#6wK)i-+L@@d$h<9)*v@WAL$f96k|Gz^CF#_)I(n zpNpsA3-JtmDV~L|#B=a9e5wAv5!K(fqWb$zRDa)#>hA|p{rxDazn?_)_p_+}ei7B* zucG?<O;mrsi#l~bMD_QlsQ&&E)!*Nu`uj&zfB%X({S9+iR*=W-^{4u5XE6Wz4$GhB Wb^AiikAKbvkK5<>q}kf%u>JuP5rh^1 literal 0 HcmV?d00001 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 GIT binary patch literal 3692 zcmXxnb#N6|7(nsj@Njo{Kp??gLvVL@3lN+Tk{4WpySqbakpjitTIvSv)V-zd?lL8N zPXF5PH+T2V&d#}W=QVAfG%hI=N{Pfr#*Yd|jgF7RhvUNW$;t6E!!e<7IQqWma9p$W zOSN=mKp9X*lo4e@nNVhw8D&9PP*#)`WkcCec9b3EKsitdg-}kE6Xim=P;QhP<w1E+ zUX&N*L-|mClphs91yDg$5EVj&P+?RU6+uN%QB)KaL&Z>WR2-E+B~VFJ5|u)wP-#>e zl|f}tSyUE<Q5cm&<xqK49#udUP!x(n6;VZ02~|QvqT#)3&`1o7L6uQuR0UN*RZ&$` z4OK(cQFT-U)j%~-%|Nw+K5GSY?O?7Q%yojfPB7OE=DNXLFPQ5EbNyhhAIuGcxj`^D z4CaQx+$fkE1#{zIZXC?fO?ZnYC>F({rl={3Lvg4XYKEGl=BNc~fm))Ls1<63TBFve z4QhkhqPD0VYKPjR_NW8ufI6a%s1xdhI-}003+jTpqOPbL>V~?b?x+XqfqJ5zs2A#m zdZXT`59)*ZqQ0mf>WBKH{%8OifCi$0Xb>8N2BX1f$Pjq%8Z<o=4n@PzFf<$uM<dV( z6p!N3NHh|SLZi@VG#VwK1T+SXL1WQaG!BhJ<I#9D0Zl*?(L^)}O+u5=WR!>!(G)ZV zC7~oV6-`CSC>f=o6cj-bl!{W(G&BuON7K;^Gy}~<Gtn$G3(ZEe(Ht}f%|&z3JTwo@ zNApn{x|IeO$OUkrTnHD*MR2iP4423yaH(7hm&s*txm*rc$Q5v<TnSgnRdBUj4cEvu zaIIVm*U5Eoy<87B$PI9#+z2<xO>nc^47bQFaI4%3x5;gAyW9?U$Q^K}+zEHdU2wPD z4fn`BaIf48_sM;5zuXTGz`JR_$Nm4?7dhzd2f6)_JOmHR!|;ea0*}h0@R&RXkIUom zgggOH!n<jH%u_C(V)?W@4bR9k@T@!w&%xVfd0v|31!<NSefA>HUUJneFH5t$BF*xu z&tB!(Yp$B*byu&mdc#$-yeZA{5owl>O0&Er&GIp6mXAxbd_wvqpOj|#lr+nyr8zt! zt>IZ|md{DEd|sO63(_oaOS8Nq&GJQQmM_Tze5;qG6}}=LVD(k`Abd^Q=<Cu(-;g%? zrnJ$w<U{<_+tOs;ktX}DG}-s$!#w-GJPALL2K=Ek;Jea*KavLgu{_65eIn1pPvr&p znKa<f<t0|XkeA_?@(TP)8t~Wh8mr$(1O8UtVD&qB6Mhfxc#ixaJx6|&o+Cd=&yk;{ z8}=9JhW%B#VSkgJBfm>G>>tt%`=@ln{v|y}{+4dof28NgzcPKpR*nsYqLLF*QYS^i gah3Sr7#m7WOi75u1b-saZ%9svq$VeZy)QQOA7qLkyZ`_I literal 0 HcmV?d00001 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 GIT binary patch literal 3242 zcmXxn)l(H=0ETf3W5vKiu~tDsF)%O=2NVlCutntvM?nGcgo*_gb_aGBcDG*WAK|5n z-JLT!%J;lp?faW=XU>_OXLe@e5^^(gEz9e3`7+b&uymKtWjk$`$K%SgBQ4vGC=+2j z<4Z5mr7DZcqH?GlDv!#e3aA1KKmn*Cs)#C~N~kibjH;k2$U+vXimIYO6o{&!YN$G@ zj%uJ9s3xk3f>02ug=(SNs5YvD>Y%!)E~<y>p<on@>ZAIo0cwCkPzY*>8lpz15o(MY zqb8^cYKod78`-ECYKEGl<|q_}qA(POTA&sv9EGEl2>9=68i|CFC<;ZPmZ&9ag<7F# z6pdP=)~F3?gW96DM(s?W?aYobJI3txX16!HgV`O-?r3&LvpbpH$?RCOW6kbtc4xD@ znBB$fu4Z>NJE9x^q8oA`2Z}>+$cdaN9>t>slz_UU?x+Xqff7+7>WO-yUZ@x9je4U# zs1NFk`l2M1g!-X=s6XnD2A~0GAR34Up+RUc8jOaZA!sNXiiV+KXgC^<l2I}mfkvQ_ zXe1hiMxoJYG#Z1(ps{Ey8i&TA@n}3sNrC^ars)ZA0-A^>qDg2HN=2#2g<NPdnvBv= z8cIj$$c@}+3YvnZqNykYWuQ!yiKd}xXgZpXvQQSvM%gF_<)9g82FgXbXeOG8JjjE* z$cuc)hy2KoW}#VVHkys*pgAZH<)OJ~E}Dntq4{V&T7VXyg=itlNBO7#-7SEN#6@ti zxEL-Gm%ydsQn*Z91`EYPxLjNgSBNX%N^vDzC9Z<2#no_)xCX8j*TQw;I=Eh34>yP# z;6`yH+$3&-o5js=i?{`D6}Q4|;x<?$7QyY}cDO^_0e6Z!;Vy9(+%4{gd&E6(uecZP z6ZgUW;(mBgJO~eohu~rHFgzk2fk(xo@R)cE9v6?pVzC&WfcNw?PU`d|r>DeI@U(au zo)OQ$v*KBJPCN(Ci|645@dCUkUWAv#OYpLI8D0^uz^md_cul+puZ!2=4R}vC-_+?% zPH%~~;BE0Xyd&O$4`4}wp4~%yUj;uBRd9)@f**@2_=%{3pNcB@nW%!Fi~8Lcq6&T~ zs^C|m3VtoB;5VWQek-crccKb@FRI`Vq6+>f9^mPG5*74kQ9*wZ74%n8L4Ok!^mkD~ z{}2`QPf<bt5>N0qe#4Riy><Tlcj;><%3)by9=F$@<+GjPe04Z1e~#Dfi!`4gr8juo MKEEf&)_o4^FR)&yX8-^I literal 0 HcmV?d00001 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 GIT binary patch literal 3779 zcmXZfW0)3u0EY3C>&<q()z)q{x6QV#tv0vSBHOlY+wPp&j&0kv)y{o?n&)@Te3-ee z|NUVaHl8?YVknfD6q_`9SU6&MY*K7ECLEiP5IZd#6$*zVABqgeG)lcxN>v(^2Bk%5 zQ96_krAO&e29yD1L>W;glnG@<nNb#$1%*%uWkp$0Hk1uzN7+#hlmq2NIZ-Z@3*|<+ zQ67{B<wbc>K9mpTNBL0!Q~(u31yLbX2o*+!Q4v%G6-7l+F;ol{N5xSIR05SmB~ciK zQ7Kdkl}4pe8B_*Epa@hJl||)HIW!;=KDY*FBnn2M@~AwjfGVJhs3NL_Dxu1#GOB{A zpsJ{9plZSStQPF*!LA<c8o{m+?3%%@8SGlYt`+Rs!LA+bI>D|J?7G3O8|-?)t{3e3 z!LA?d$OgPc0~C#-QA5-a#h@6}2sJ{DQDf8uH9<{LQ`8JKL(Nfh)B?3YEm2F<3bjJ5 zQESu&wLxuBThtD<L+w#})B$xs9Z^Tr33Wo9QD@WzbwOQGSJVx4L)}q#)C2WEJyB28 z3-v<1QE$`-^+A16U(^rvL;X>IG++RHa1GA%KsXQ$LW9s?G#Cv*Lr^S=MMKe0Gz<+x z!_jaQhvLu(Gy;u8Bhe@{3XMji(HJxajYVV8I5ZB8N8?dEiboUB1T+y%M3c}Ylz<XY zB1%L_C<!H_WHcE~MpMufG!;!n)6g_D9Zg3w&<r#a%|x@%EHoR<Msv^{G#A~S3+Kss zaK4-m7sv&0p<D<T$whFnTnv}UC2*-+3YW=caJgI#SI8A`rCbSD$yIQ*Tn*RAHE^w5 z3)jhYaJ^g)H^>cequdBL$xU#x+zhwKEpV&c3b)B^aJ$?NcgP)Zr`!p5$z5=_+zt20 zJ#eqw3-`%=aKGFS56A=Xpgaf<$wTn4JPeP>Bk-s^3XjQS@VGn<PskJSq&x{v$y4yO zJPpstGw`fD3(v`O@Vq<^FUSk<qPz$%$xHCEybQ0%EAXnk3a`m)@VdMXZ^#?)ro0Jn z$y@NYybbTjJMdw6&wd|~_Ip>_?>%Y1DbjxLOZ$CP+V5l1ejk_i`-HULC#C&9CGGcV zX}`}%`+Zj0?{m_ApNA=)_7}Wszb{JreM#Ey%hG;dk@owlwBOgH{k|^k_YG;kZ%X@p zOWN<-(th88DIU>x;eEg8Js-B;_oe-QAno@<X}=#y`~6tj?<dlJKb7|TnY7=}rTu;( z?e|M*zh6oF{aV`ZH`0E;mG=9cwBPSxil6_3ckTB_X}>>7`~6wk?=RARf0g$8o3!8G zrTzXP?e|Y<zkf;l{af1aKQP62{ukc&i~jTB)PBoHhe8nvaf!*}lEN|N_#KT7CC4Ym WB}E1Qrl}7k#3dys#D{$@I`ls_?lm9) literal 0 HcmV?d00001 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 GIT binary patch literal 3835 zcmXxnby(C{6vpwjb?j~(6$!;|0lT{sV+0fo#9>e|u?ripySuw~bvt3Z!|m=4SMK*c zfBnwqIcJ#5{oVII&qTIQicj)*k^{a#LX0;k))(-3qr5)9-<RqQ^?1D@kA!%m+T}jN zbCn0>L3vSLln>=Y`B8pU02M$5Q9)D)6+(qkVN?VaK_28mMNv^y3>8DgQE^lPl|Us? zNmL4zLZwk@R0fqnWl>pF4wXaYQF&AWRX`O{MN|n@LX}ZvR0UN*RZ&$`4OK(cQFT-U z)j%~-P2@#hR14KYwNY(U2h~AAC<xU>bx|-1M$sYg;nSUwP#B8BP#CI*>Y@6mJ_<+S zr~zt#8lr}%5o+Yr*qzVDu5RM$Ca!Mk>ZY!4=IUmyZtm*lu5RJ#7OrmT>Xxo<<?2?h zZtd#Uu5RP%Hm(k7%PQKU2o!-LQ6!2&QK%hihuWj|r~~SNI--uK6Y7LIqt2)c>VmqW zuBaR8hPtEfs0ZqSdZM1F7wUz2qu!_w>Vx{CzNjDShx()bXaE|32BLvz5E_IAqrqqh z8iIzRp=cNyhK8fzXapL8Mxv2u6dHv_qtPfj8a{lwGd%{5L1WQaG!BhJ<I#BJLq0SC zO+Yay2F0RS6o=x_L^KgiLX%KDibn}30Zm4e(G)ZVO+{1DG&Bt*qC_+uO-D&63C%z= zkRSO`GD=1P6hJ8`1<gb=(JV9z%|^3PDoRCj&>S=u%|-LjJTxE8M+?vbv=A*sY3P1N z8eU{xj2D~J@e=a}ywse5mzlTX<>sAuh4~;}X+DWpnJ?ni=9_qpoTc@qo0rmGYhH=h znYI4)X03mNc_Z^1&71Hh^JctRPTz|&tS@KEE4R_lGH=IQ<W*YVR<rhFoB0s)+woof z`5kJf@1wm_?Xz%~cpmN+ufRR<p12p@&(v1zGixjMo3#}OaE{sst*xCoWY$SIY|iA{ zkC?OYQS%mj%&e1h+^n5EVb)HbH1FW^r_4HOr_H<QpE2*oXU%)?IkUF<yjfd)0cS5_ z{Gzq@<4fiP__A3q_KI0A_Nw_X^ViHr@OAT1e8YSU-!vb`x6CK-ZL@-P2jA7lAB8#V zn0^dq>m1z`&(Xc7;pOmgbrsPk#7lIa)UX2il)4w_KCSLD_>8(&;j`j3_?&nhJ}=&Y zFNnGsUKDT9eM!6xv&B0w2j;AYFN<mL6;ZGHRZ&;sYvK}yUx(S3;TxhN_@;(+{k$cv zVfbwgE0OQ0tGnS{aV^8|iL2oI;tKeIxEg*4vrog1L`D6+s3?Cd>L`99D#)LT%JFBS z&h_V_Zh<dEo$@b5W%?^ok^Wj#qQ4Op=x;^k`8!c@{$5m?e-IVsAH_5L`#*___Rpe{ z{fnq1|0*iTzlplGeiwBq{vj%5e~Jp>U!tzKzePp*AMq56{8v;${}Xi|JP>o^9v0#8 n1o`8VQ>F&IQNjF-jqs!-CdUOr-EZ350e@T|#h>WaT!iO;WL94R literal 0 HcmV?d00001 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 GIT binary patch literal 3827 zcmXxnby$>H6vy$kb?k0^RU{O<9R}>~4vY~{P(&OC6%!j28?d{(yLNFqf$iR9ySr2F z_jmt#&*wSko%hat?>X~KSVUrMqRW-!_xj_aoPcPr-|KiBug~XAae`fr6ZA-s;|VXk zgchm@DuRllqNo@uhKi%&s01p3N}`ge6e@*Eqtd7hDuZ0eh03C`s2nPX%A@kA0;+&2 zqKc>zs)Q<|%BTvef~umbs2Zw<s-x<t2C9K-qME1{s)cH!+NchygX*HXs2-|^>ZAIo z0cwC6qK3#p4r+uNp~k2&YJ!@e02F|lqNXSi1)|6x`0#4ZNH7dWAt(ejL(Ncg)EtGP zP}BmoKrK;A)C#pSYHiMEYZJFIaT^o2HE~-Lw=;1&6Sp^UdlPpsaR(E3G;v20cQSD& z6L&UoXA^fZaTgN@b!8P@ksG;D7z#rk<U!#m97UiA)D3k*-BEYc1NA^XQBTwh^+LT- zZ`23%L48qQ)DQJT{ZW5301ZF`(Lgi^4MKy_U^D~`K||3{Gz<+x!_jaw0*yc;(MU83 zjY6Z*Xfy_mL1WQaG!BhJ<I#9D0Zl*?(L@v(2_Ig~nVtkEp~+}6nu4aFsc0(lA}^YT zrlBYlg`!b3ia{}GI+~7VpcyC@#iBSAhi0OgXcn4<;!!-Bjb@_+lz`@-IVce&qPb`; z@*y8eLP^Mv{3sbEqj_i^nvdqA1!w_EK`Ce<T8I{*MQAZvjFzA!XenBXmZ4=R6%}Nr z;^o#W@Cxe;ywZ9zUS*w$S6lDEYpnO+wbn;)n)Ml+ZhZx>v%Z7Z%h_6QhV?4)8?4jt zMr*BqleN~r*?J50TdcR@t=8M{HaX(}&a`<sOHMsRK3h)Pg}2M;THg+9?Z-~*qtx%h zIr{kBN@pA-y+`Q_aIbg??h~)W{qTW!02X9vD-K#~D-Ky}D-Pp4rH_bu@ked7d`#(V zo_$>04o}!>`J}au%_-}h)StH2HlDHGP5vy-*V@k6^j^~Et@q&z*8A~AYi;u-Yi;vo zoV%RzE8<Fc)m9(I*OXoZuZwHp4O@K--?ToCZ&{zfx2;d&JJzT0U7WACc+aNQQ1@|; z?tT>JZRF<1V6M(jj(Cym0~PCwJg%%-^9k`P#ZRhOjrf$Zm&rb@>}vRovNzzf;!XIR zcndx+-i9xTng}n7cgema-h;W~eV7OHHo<%`6}~L$HNPTi6uv6zt-l6yuW|3|qFV0_ z6>IFgDXypZEfuR1-&R&L;T>@U#qWyg@I6t->3wk>*$-guIryQd!%-lrO+FHJ5<eEz z!Jmj(eAK6+2GwVx=Hlm~#?}|2+WAXS-TalPX8u}KFMlKI7voz|t^A#+PX1n0BmW?t zXU#u~YU`gwb@k7pM)fbEy7*U71MD|Z!|-=eUG|4~n&<v0YP$U;s-yoF&r<x4s1E&C x)HwK0EbR6Wx62jai%Ck3_dA|I{=T|h$q7j@{$TT8wy?k#<4^V_II45I{s*QiSyKQ2 literal 0 HcmV?d00001 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 GIT binary patch literal 1859 zcmXZd={J>86u{w>N^i+fX+T~>rc4=<u8X87O@s#H#WiK>4wW?g>v5hw?ccN3{%}6* zwa(!1;nrakWpk<A_FCMqp30@-WSq)mQb%!f6vs_xn&RZp>1aDu0Ts|$I!ov192HU_ zou~73fiBQRx=2M-M3?9iMHJCxx=dH-3Kdf^U8Sp3LM2p6rBp^`R8Hk|jjqvkx=uIf z231f6-K3jzi*C_vx=nZJ4pmYmRZ$gHQ#IYCyHrCp6jMyKR7-VKNA*-s4b(vQ=pHpv zBP}%H$qYBrjLp<SE!0Y_bf4~18?{k8wNnRmP$zW;b%p!v3jHATgV5cfyF>Sc?g`x+ zx;J!R=)TYoLq81NAG$yEqtK5+4}=~F-SpTi9#eu6G)RM#q$CZ|5Dn8XjnD`^p(iv- zqx6)X(in}=GkQkP={b$lI8D$5y`UHLl3vmzP0}lRMX%{Ky`eYsmfq4kdPh?<Mbk7* z@990w&<xGeEX~mzeV`BYkv`HV`b3}UGtJXHEiB;43^%=qi?l>bv`oviLMxP_6s^)K zt<f5-(>kRoO&hd9o3u$=v_;#rO*^zhU+4?%(k|`M9_`aU9nb+C(jk4Nuauz-WhqNJ z%2A&3^o_pJclu60=m#Cq5&fi}bWF$ei+<5>`b~f65B;UTCu&JVQ9~x3&F|*oWTWpe a5#{%@>0ER88&4N9>0CauAOGJ=ME?NXW<Ava literal 0 HcmV?d00001 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 GIT binary patch literal 3721 zcmXxnb#xSG6vpA=Ft|Gm5F!xV*=&Nly98O1g#<zfD?rdR4N!`Eakt{dwJq7LZQWf` zcXuV<@14K)KIgq--`sD`*@UF5v@FZ=2RwoF6gw)_6Y$t>+vD?jvh7&Qwqx#zvE7M< zKk<bsf{LJ`s3<CiilO4DI4XfkppvL0Duqg+(x@~lgUTQaS*R>3i^`#Ls5~l<DxeCe zBC3cgp-QMSs*I|jDyS-|imIV%s5+{SYM>gZCaQ^Qp<1Xms*UQPI;bwHi|V0zs6MKX z8lVQKA!>+hWTQr?5o(MYqb8^cib7GSDQb$MQ8Y@9fp>q+jKsoN6o=waGt>+<N6k?@ zibpL_3)B*|M6FOOqt<3VTbsI#soR*kt*P6Zx}B-pnYz8H+nc(BsXLguqp3TZx|69p znYy#7JDa+Tsk@jurYm>R6}gZLC7=Z4MsAdd5>XOLLfud|)E#w4Jx~wS6ZJ&BP%qRQ z^+tVAAJiB1Mg34e)F1Un1JD385Di3w&>%Dz4Ms!I5Hu7GMZ?fAG#m{_BhUym5{*Qo z&?qz-jYeb87&I1*MdQ#oG#-sd6VL=S5luwN$?)#4ndwPz5}J%AqbX<#nu?|(5AvXC zXc|gEDJT`CA}{iy>1aBdfo7mIl!nq#I+}@QqFHDb%0L-tHkyqxQ6`#$=AbN;h32BU z$cKE$kNhZr0w{=rXdaq}=A-#&0a}2vQ8rqL7NSLH5n7BEqa|nwT8fsUWoQ}7K?S*| zaIT!Q6X!YJi<dh-idQ(^k5@WAfLA#_habRUwXb&KYs705>*{O8!=&rPTX4OoV>iNr zoCk?FIo^RcJKl}AINpP|IzEWEIo^!7JKlnK$a(7DiNkvGT~7OT+IK771^0+Y;9l`I z+$ZYT{qT-f?Es9dr1_wz=RTxk?<GB~W3`4yU?`9Ds8YSoW8yK=<Kl66LOcN<f?<uu zNu?)APl+0=)8c8;GvXO|7KU%Yb4oQd=f(4+55tI7@`8@dCB3NTi|~?o30@X2!z<zy zcvZX#uffoAcpZlK!5eDUJ>OKbhVvGTXt-`G)%$$}hHrAJM@3E6V=!ND@Q$bl%!eT{ zq*O07tW=xgad8C~dP2>boF|p8A$>~eD)_Wg%~eF{YSL$vYO6l0bS>#~;yU=en#C8y z4Wuu^@O|(lQ8)QA%-1%2Mbuios%D+)HKp4))$8JR_=cMGL~n{3!nf3{Cwg0{hVUJw z`g*)8>ixc_W_=6ZSE^C@K<QR)<3pwTQWS_f_9Gb5YJ99z`}Y&2`Z9bfYOOv~v-a=j zO7&8{P^$g=rBZz#zf!9G`?XT-vTu}X|9&fK>Aq9*dLHn5aU=WzhBcx;iuaTL1oJPz zpGEE8U(~Eq{i;;^_cu}d_jfhxiT)7Ja^^qPtfl))slF<IE7g|#N7Q!ySIvhw)qgNj qc%e9#WkvbC{$NJHc1QE4(q#oR{oX*V`G;B9;PVE8zD!$vF6)2VsV*b{ literal 0 HcmV?d00001 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 GIT binary patch literal 3782 zcmXxnb$k;^7{>9#VR3g@pj4o^lcvSpU5bP@&_XFC0u(K!xclMm?hbdHd(v~i>$$rt zo!_&6?fd<_GucV@*_lt`5;9UUEXyD81X7dih-6Q|W4mpS&*#asqb=KxdML_v$LC*S z^Hl&9Km}1jR0tJ9g;8Nt1QkI=QBhP36+^{Qaa018Ko+u4NmLS*LZwh?R2r2*Wl&jE z7L`NgP<d1yRX`O`MN|=0LX}WuR2fx4RZvw_6;(skP<2!t)j%~+O;i)rLbXtBR2$Vn zbx>VY7um>0^-w)jAJs<<Py-Z!B2Yur5JjR$lo$mcTunxzVKj<CF{lx0gc_s9C>F({ zCa4K&ikhNksF_i7lh5X+Zei*crfzBKmZolH>Q<(1ZR*yhZe!{;rfzHMwx(`p>UO4X zZ|e4@?qKQ;rjF{!Dmo$;a-ldBhup}G;!!+GKnbW5>V!I@&ZrCOg1Vxvs2l2rx})x> z2kL=(qMoQ1>V<lv-lz}igZiSrs2}Qw`lJ4602+V>qJd}-8iWR;!Dt8?f`+1@Xc!uX zhNIzV1R8-xqLFA68ihuq(P#`BgT|t<C@~Q}xSC9lgX7S6G#*Vr6VOC75qXdYO+u4U z5=uhJC>eQ?7fnW!(G)ZVrJxj)ic-;3G!;!l(@+{pL(|c8l#bHT3^W5}pbRt<%|t%r zLw@8(0Te(%6hyPoEHoR<Msv^{l!-FYTr?NWL-WvlG#@QM3(!Ke5G_KBP!<Yh!^Pqf zm<{u?cH$*Cycy;=?Y(%Z<D+<)<NbKK;{$kwoP8Rvbo%G<DjZq~S3B(+c#Ybt;97AF zTqmxE>&5kO0}OA18)077!+4Y99eA_j-FS=RJ$S3*gLs=`{ZiW<Z=t_K&e8atIIP?4 za)#ez_-?iJ81{%-%wBO9gZGL1;C^^t&)@(It)qKTgY^Utsk?&iVa+`ZkHFjw@Tj_a z+Q-CWbdST(Vt7K`6Y!+EIq;Oar{HN(xi}-9p?g+53(vvOa(G@{W$1!<f$l{OUIs70 z@HTiE=5B;nH1`U;Dqe-x#B1<63~TNUn3toEzNxkXa7&YKG5NN-ir*a=T1xk>x?ABr zaXWlOgY{G%6}680qJsXIs9ZiSYE@5&y3v!OzQR+Y?)$W;H9sRN!q19|>~o?r`n;$F zzaZ*udQns;UlJAQkf=b1MeQlMqF$_*#Y6m7uZRlttKt#5uZaru>!JevhIpL8Z;A@^ zTjEK&Z;J}_JE8*puBbr2Co0hIi|6>L4@3p}Ls5aw6E8COBk>aaSiB5B5f$i9MFsjZ zQGxzkyw2P&L~XubirS&R5|!t##oNsNM!W;R74O3D#C!027|wz}h}uVf6m?+zB<jHW zS=6@ji>UYLS5YtjZ=yDi-$m_xe~3DK{uFiC{3Ysi`CHW4^N+Zeukf#^J@-E`|0s%a nSyqJ4>kp;{Y<DF8NL^Mi-R})Vo4=>|1AN{<(3fs&oXh$jw@N_P literal 0 HcmV?d00001 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 GIT binary patch literal 3721 zcmXxnb#xS09L4eCFt|Gm5F!xV*=&Nly98O1g#<zfD?rc?g1fuByE`<rCA3h1x>0v` z0rI|g{+jzazj>3*&b#lNjfzQ0NU<z`z!OM}vqR!N0gvsrJwBf&)eg68JM6hI+Z~;K ziOg0Glmq2NIZ-Z@3*|<+Q67{B<wbc>K9mpTNBL0!Q~+7XLIqJlR0tJ9g;8Nt1QkI= zQBhP36+^{Qaa018KqXO0R0@?srBP{A29-f&QCU<Dl|$uGc~k*aKowC%R0&l=l~H9> z1yw;+QB`Ck8&yNqP<2!t)j%~+2ns<pQB4$zLQ!lOe0DW^BpimL2o!;8p<1Xms*NI1 zB&vhzpt`6os)y<s)i?XIzR3+tZeVgllN*}c$mB*QH#WJk$xTddVscZHo0{Cr<Yp!} zH@UgVElh4<a#%|~MN8yDE)<2LkQ=#CG>S$sC<e7ctx#*!8nr=fP+Qa%wL|Std(<9v zKpjv=)Dd+;ols}g8FfKjP*>Cybwk}ychnvAKs``T)D!hWy-;t|8}&hbP+!y+^+Wwo zf7BlhKm*V~G!P9!gV10!7!5%~&`>lK#m2&CSF@*w!C`1P8jePw5ojbDi9E=IMxjwC z4#lB(6py^fi$<f-Xbc*I5>Nt4M2ToD8jHrEaVQBTq48)uN=C_O0-AtQPzsueCL$m5 zAwTk?01BWW3ZhA95}J%AqbX<#N=2z?Dw>L>p=oG3nvQ0m8E7V&iDsc$C=ESMKZ4Wc zv`u&pzOxEuIOA=2uH$`pp5q;OzT=&E0nVBS7dqn;coELj>c!6ZBI6|*>%%M)uQFZf z+`R#>a=a0*cDx0zal93;b-W9&bG#a_cf1B~z*&0SMvXJHd=t*pf4<pSeTmguG}gnn ziPxBJ7cama@Rq)pouVGSOVl6UE$(LR9&r!cEAEB+M7_WL;(n$F!~^i4cn}^E55dFY zVR%H;#yTn<WqM3J29Jx!;R#XO;-q+z=_&CPJT0DvXT&q`tauil6VJi(;(2&M)YpDd z)b_h1>J45NFSGWFcm-Y+wK=bedcW7j>)d<;-cExz#o6$dm=14?bKvu02Fw)a!aJf0 z_kuW|>5Jk5_>#B~-W3<YEO9ZsCoX|6i%a1v;xc$&Tn-<IE8wf*O8A<nn!hfpDQ}2s z;X`pPYafa0;G5!l_?D;>;%!j}#5<ynzIVmVtbI>Z-QO2=czhu0T>Mbn&f1Se_4i{@ z{e3K|zn_Te@28^r`<bZzelDuNUx@1Om!kUnm8kxHEvmoYi0bdRqWb%tsQ!L0s=q&o z>hF)D`umfp{{AegzrTp;@2{fz`<tl#{w}J&e~9YupQ8Hvm#F^!Evmo&i0bdZqWb%v zsQ&&hs=rUf?EXf$EGxw4^#_vzwmXy`l`boo?Dq!3%`eRC8+_hC(3foMK9}_r+iNe6 literal 0 HcmV?d00001 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 GIT binary patch literal 3542 zcmXxncXSPD9LDk08NGJ~kwWzD<|caYy+pZ^OF~54f~eUDR@tJj#jf6a@2tfZ1jnwr zg|LO~y>eFG?=yeR^EtnH=gggX-Z|$+#iS&pSe8HF2_(kZA@QDo$9CHupU;zOhg-HC z_EMPbj?O+rW-ABEfpVgpC>P3wa--ZR56Xk`qP!>{%7^l!{HOpbfGlL8f~X)WgbJa; zs4yymilCyXC@O}Eq2j1GDuGI%lBgsqg-W5)s5B~r%Am5SEGmb}q4KCas(>n>il`#0 zgesxRs4}X8s-UW<DzcG{s-bGAI;xIppc*Iyg`k?KCJIHNC^ihfIGT=x!*CRVB2X<< z3)M!oQ6!2)bx<8t7u7}eP(7pirl0jqZeVf)lN*}c(BwuYH!``g$&F2JVsaCco0{Cz z<Yp!}Gr76R%}s7$ato8gT5=aHkqfy{6pBJ_<VMjb8pWU()C#pitx;>#2DL$LQCrjw zwL|Sud(;7SKpjy>)CqM$ol$4h1$9APQCHLrbwk}zchm#*Ks`}U)C=`Oy-{z}2lYXH zQD4*#^+Wwpe>4CMKm*Z0GzbksgVA6#1Pwt$(NGi{3tt>fr-#8|XgC^<MxYUBBpQi4 z$b&|qQ78_@p?DOJyvU12qtR##8iNv00!l=QXe=6w#-VX22_>QNXgo?r$!G$afKpHj znusPMAMznT@}mF>pdbpONoW$9j3%QgXbMV2sc0&iil(7yXgZpXW}q2pCYp(6p;;&m zWu@=J>2lgzcs9PY1ZFtnxA7duTku@R>+n3s>+yWY`|v`?$MIsvZ{j76SK+0O*WhK2 z*W%@lH{cbHm*SO<m*G`%hR$E@%ug_1htKQhtcRI%m~If~!i_q4Bitlzf}6$7aEqu1 zw^iKAbep&hZWp)1o#IZoOVlgeE$(KzN8AJV!mPCAc%R04A^XMsOb>_$;6d>qJOnc{ z;9*S<!z1DmcvL(Jk7?~I@VGc1o)8znlUjQcp3-y?Jgw<zct+FL;92o?cusr+zAG+< z=S9{1JyGqsAgVkUMLo$&;tDSHzPJ*8Agb6Oit6=8qITV7aW!kNh${V6QJv2ewI#2K z@38i|s0QB<wI6Sas_e(2D*K73%H9%H+1sKjdq-4d?~1DIJ#hzjbzfA2KNZ#B&qOu& zb5RZcLfp%x9*8RNLs13J5>?<wq6++2JjA8G6jk7_L>2gJQ3d`+JjU85qCR9#MSVxU z6;<Hx#8a&OUQ~g95YI6EQ9KKOg4fdE&*IDQ7cm|FD$a(#iQ2Hgi~5}XA?kDXr#O$b ze~H?#e~a3%|A^YK|B4G)`=6){`%HY5>2ooA!$!C)E5zsZ2a^J}JCuKDE-RSq_Xfhv S-?i)$eBMCNmu%}im-Rn3-~){S literal 0 HcmV?d00001 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 GIT binary patch literal 3691 zcmXxnb#&BN9L4d)A-FpPC>1E~OsB=&U5X6tKntam5uj+d6lZr2?(XjHFvCh$VBLjv zcQ@$!-u#vOIlsI#Y2M8_6PJ*Yl3`i?fG3ceWJe@>0v_9Kdwf1mrX6kBcGP20wmUxW z5SyobC?Cp?@}mN%04j(IqC%(;DvS!FBB%%|ii)CQs2H-4g^Hu%s01p3N}`ge6e@*E zqtd7hDuc?RvZx#?hsvY!r~;~hDx!+05~_qMqspiXs)DMbs;C;OhN`3Ls0ONmYNDE` z7OI76quR(uHmZZ_pt`6os)y>K2o!<pqxvWkMWVzg_~>Z%NHmN_F(?K#Kn+ks)DXp@ zSkwqLLXA;l)C4s#YHIdpQ<IyS+|1<WCO0>^g~=^UZfSB$lUteG%H-B2w>G(r$!$z- zYjRtY+nL<X<f!)CMSJ8zE)<92kQ=#CJc>sNC;@dq9Z*Nq5p_bHP-oN`bwOQFSJV}C zL)}n!)E)IeJy1{76ZJy9P;b;5^+A15U(^@%L;X;H)E^B%1JFP;5Dh|u&|owe4M9WD zP&5<`L&MN;G#rgUBhW}R5{*Km&}cLoB__g0N3*BLz%ghn8jHrEacDdmk37hOCZGu@ z2_>Oql#IN{izcFpXcC%)Qcwy?MX6{qnvABPDJTu4p{ZypN=NBv8k&YOPzIWgrXwHn zAwTk?01BWW3ZfZk2AYXxqFHDb%0!uHHkys*pgCwRnv3S4d1yYGj~1W>C<{HvK8myD ztj%~KzPlRcIOFYjk>mY%vE!Y1iQ`>(Db8ICmpS8;csUMh^$KTviSbH}bu+7+@kYk0 z9dE*G9B;*I9dE<y9Ph^K9k0O~9IwS2ajq`6N#h(X-;Be0)Gf~H%dFn2u`a$tyvTGX zysanSCF)wcMg65c;vUxS75Bn@;y$=v)Ehb=9$<P<JO~eohu~rHFgzk2fk#DconzuL zrpLwO@Pv2*o)q=sPl>0Po)%BTGvXO|Ry+&OiRa*X@jSdBUVs-x{o5~z+F+MOy|OFf z71mxAufl8MHF#aT4sVDz;7xcZ3*HhRhquLSct>0aLt+jLi;Li0QI&dHT*CAjaVdOO zTn3*Lm&06f1$<sy311MOfG>(q!k5IS;5``9cjCULtC+qls>rX1s>Z9LYWJGBj<v6g z>){*X2Kc6^Pr_TGz6fuN`nbI#Zei`aqWb+F3~7tL55sz*4|MVl)_y3ezaNR}?*mc& z{a93gKM~d6Pet|jGg1BhTvUI*5Y^u=MfLY9QT_c|RDZt_)!%PL_4hkb{rz54e}8}> zJ^qiHs=q&p>hI5@`umHh{{AYezrTs<@9(1e`-iCh{wb=ze~Iev-=g~akEs6s3q!i+ z|6o{8^uJEd>u-$9vLbw5e=sdzyCeD8=(2+8es3V!{D#as!RHMGed)H&b6F1ozXvC= literal 0 HcmV?d00001 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 GIT binary patch literal 3454 zcmXxnWpGqi7{>A9aB+9Ife?Y<&Snz=!QCy$k}M<;LRbNUh7f2OW^k7lcXzk6v`lEx zLO-^tA}zE~fthxiod0t_-RC#&Id}Ixd+$55(Xr{t>6YaWcmgSjc4(3(;IZAd$LI58 z*b$a(hkp=myJHG2Q3Wc53ZcTNFe-wIprWWKDu#-o;;1+(fl8o~s3a<dN+Anbs5B~# z%Ahi+EGmo2p>n7^Dvv6l3aBEgh$^8<s4}XIs-P;UDyoXAp=zi)s*Y-)8mK0!iE5!* zs5YvN>YzHPE~<;_p?au3s*h}BqYxB=8lVQKA!>+1Q7CGJ8lf;0h7!VI{?$Aq5ikNp zqDa&jHAYQP6BLD_P*c<tHABr%bJX0Zg?T<(nB3CjmL|6{xs}PSO>S*+8<X3Z+}7l_ zCbu)WoyqM@Zf|l2lRKE)(d3RMhj-#zbV4rVLeVH1xse;ipcoX3Vo_(*8O5PE)CF}x zT~SvQkK$1`)D3k<-BAzJ1NB5bQ7_aB^+vr>AJhl+MSW2})DQJX{m}q401ZR~(I7Mk z4Mu~}5Hti0MMKdrGz<+#!_f#d0*yo?(I_+ujYgx<7&HbYB*6Tud8Wt0v1l9`hsLAv zXabsmJjjD4qKPOGC88vhguKX$CZS1aGMbE%Q8G$FDQF6sf~KOWC>5omX=oZsLuqI_ znvT*@I+}rIARqD}Kk}mh3ZNhgqM2wWnuTVe*=RP(KpAKbnuF$|xo94mhvuXCXaQP) z7NUhH6Xj(c!C7+V7Q7hWUIVk8^2d0I<9&Fk;~n@z$2;*yICm*r=9Ew1<&H1n)s8pe zHI6sqwT`#pb&j{=^^SMp4UX61jgHshO*mJ#+pKc7wr_QoUt;+Vd`r#l6xHi4QJZ&* zyV<)3=4BnidsW^G_lY{!{o;PA2gC#Lpm-1-f;k)EVO0;qBcgurqvBDj$HZgsxOg0% z5cPAN6i-q;C7yz(#nbSNcm|#o&%$%!Ie1<?4=;!p;6+hS$t9Sh#g|pR%;GEJ6?j#= z3a^RR;C1mjyaAu6-<zWPy(OyO98vv#DyrYlMD=@HRKK5#YT*k}{oWDPZ?32Y?}}>h zOHmDeC91)Dq8hvppJvkU191_2C}zP&;$rw%)Zu(B>TsTjI-IAX4(A(Dhx4ttiaUQN zu7-J{X3+Pd-r*lay~00=>)HF0xB>nw>ecu~)OdL&YPviZH40ydTe;OsQM2M#QIqF4 zQFHQ@_z8Poiy9oiiy9n%h#DMkL=BF&;vR1Gr>ME{m#De%x2U=CkEprvPSo6ZFKQzF z3-dBp@JatUUYYMmmt}?ey#8Qnz;=i6Ps(Kl)BN5*g!x-lu)yaH1bu0?*14?z0cX+f ArvLx| literal 0 HcmV?d00001 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 GIT binary patch literal 3800 zcmXxnbzBsA9LDjpb?t5)6$!;|VZrY1z*u1w6cLwQ6%!G=<LvJ4&O7(;!s}$0ORl>+ zJo$Z|`D?!K*YlfU*ylI1uZ@mPO-yw-(!4HjQoI$C;PSdGr{(f^T<KQ0!?MDj2(z3q z`G?4S6+i`0K~xYGLWNLaR2UUOMNm;x6ct0oP;pcol|Uts136GhR1%d!rBG>98kIq1 zP+3$Kl|$uFc~l-%Kow9$R1sA|l~83=8C5}5P*qeFRYTQKbyOYIKs8WJR1?)gwNPzT z8`VK|P+e3PS;#{5P(4&1)kh6b0~CTnP(#!Zg`!Xt7X}|6%^nGd;V1${phl<>YK$7A zNEC^hpeCp(YKoenW=74;{%mgM7G`c?=9Xq|Y35dDZe`}yW^QffHfC;P=C)>TYvy)l zZfEB9W^Qlh4rcCP=CF?3MMo5cqEIx7Mo#2JF(?MbqFB@kbwZs{XVe9CL0wT-)D3k* z-BEYc1NA^XQBTwh^+LT-Z`23%L48qQ)DQJT{ZW5301ZF`(Lgi^4MKy_U^D~`K||3{ zGz<+x!_jaw0*yc;(MU83jY6Z*Xfy_mL1WQa6c+~{AI+W~2gjlDXgr#LCZLIEB61-Y znuI2ycodHkPy%uzH=2wlqbX<#N<@h$2_>PaXeye9rlDk%jHaXMC<UdU8E6JdMX6{e znu$EfgVInM@**$tAs?EBW}(?=HkyOxpmdau=AyZ19-4>dqxon7T7VX!g=i64gfdWG z=4reb2kyd5#Th&C68vBj%(COXc&Y89c$w|}c)9HZcm;mA46d}}^LP~w+<>d?SYCs( zbu(*WP#0S#Zs+9n;tIGyJO?+zybP`0WP1nsX4|{*7TbI9leQ1yt+qGgZML`I?KpS> z?ogbi(|0P~NW9BF`zGFvvvu)3cD#moukE#X9}ep5{qVjzIRJBX@<FA#lSASmE_GNu z43CIM;89WS9}|y}9v6?p6QVwXlQ5`_cS`9g7M~WiOV5aBNY9FA;W<&=o)@*LE{GRc zd{MjzFNv4nW$`k+B3^-4#jEg|cnw|`ufrRnHt$WCvy1eW(p&JhcpKgk@4&mFKC62$ zXCLWPFn2M0TB#nn`=a{wi|Y3oQT=9%>i2=DexDW9?{lL1eO^?*FNi0(tB0cceNj}u zFNx~+Wl{aUBC6k4MfLldsD57;)$bdk`h8PWzi)}^_ia)Az61T+_!n}Ns_uZOx`U$X z&K30xz6%2xT<SehmAx-!l71jAfgeJ@p5Kp@W|8J8RlgrAT}t|isCVS2;&Rf@M7<+F zhko_@g{XeN6xHunqWb+>RKMTAz)Jqmx8f@JoffO#??v_dgBGu5@sFb3S3ik**ZnN6 zWAQK0uYP}3x}NkmaRdBai&f|!O7#-{Q>hC5OR2tm{#L5z_a9Nu@4qlFL$~#xZQaNt uoST2Kh$x36#N$r$C3`JrD8Eso9KMt^w>RAUV9j6PaeIB96ie%(9RCC6c1dpl literal 0 HcmV?d00001 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 GIT binary patch literal 3616 zcmXxnb#PQy6vy%6@Njo{K!`waXR`_J?h<5477_>{tN=mNG{7(|?ch!+P~6=Md0A+i zy1P(!cP01xdw=cu%sKbXm2>aRCM0F0Wm#4*<O`*z*ioszkk9tozCgg2ZO2-+9dlod z?M*EDi7!$yR16hI#Zd`V0+mE1Q7Kdkl}4pe8B_+9MP*SrR1R6lLgi6;Q~^~$6;VZ0 z2~|RsQDsyGRY6rzRa6aCL)B4rR0GvOHBn7e3)MokQEgNQ)j@SpT~rU%L-kR8)BrU= z4N*hX2sJ{DQDbBy8#O^qP*c<tHABr%6pBL4QF9cHqET`Ty!UH*Bo@Y^I24Ckpcbel zYKh`eJZgnnq1LE1YJ=JswKe_O*2L{h+|I=9P2AqZ9ZcN8#2roC(Zroh+{wh9P2AbU zT}<4?#9d9?)x_OQ+|9%>-I+yq<Ut;kfD(`wc~K%tL`f(K^*}vPPt+6jLcLIL)Eo6d zeNbQ27xhE^P=C}P4L}3XKr|2yLW9s?G#Cv*L(ot(6b(be&~P*yjX)#NNHh|SLZi@V zG#ZUTW6)SM7L7yW(0DW+O+XXSL^KgiLX*&BG#Mo)!+XD`r>DRvXeyeDrlDzQI+~7r z$cJX287Kv%pj4EK{K$`HqM2wGnuXF(8cIj$Xf~RS=Abz!17)DOXfDb`nP?uGhq6!> znvdqA01BWW3Zf7Sp)d-g1!w_Uh!&znXc5Xr*=R9ZjFzA!XenBXmZ4>6Ia-cZpcN<w z-OW9QbLE`vIM4NNywddnyvp?+yxR3+c#Z2*_(9i~@midJ2tEu8SHnk?y#&{}gSX=K zuD9V0u6N>%u6N;0uJ_{2t~cN<t~cUsa-QmUxcMvOcj5e#a5pU60rx1Yo!KkuTl>U) z6z>=J!vmsr`Ji}^>>=oA8xAXbnCuZ4*$j^=dlViMb>7Ft<77{WC*Vowtb(VM)mfev zPm?_(o`Gk@v+$gF4xSg!!wcdCcu~9vFF{9ba9LTk&=nZjLh)5)ufl8MHF#aT4sVDz z;1kf%w%>#Wd1P;i+MIkbhpZ!NuL_`}u@P}4#kW<g6TBm?C;O!M5PV8w*TAP?M9VK! zv5xy0QEm3DsEvJ2Ji@1*7qwR}z=%5bMezZOUlO&1m!YG(^NO;X^Q+2kV(e?8Ci%Lk zBYQ(*)j4m9_cQh_Q7_WlqL%Oubadt4RaPr{Pt<Y0ui{7f@&~X$EBa8>b-pWV8Xt*z znm&e(F6<}b<9zv373*R8Ow?X|F0Q5c3yszN{Srp>$b6+@?bX+!-i>cW-IQ-dUH0!p zHUIZ8qPO`6Q7!tTs0RKCI=a6<E2}yGqO9)kucF%QH&L_tU1RmBKg3*?|EH*D^Dj|L z_!~M}!avH2|BAZ5|G~ndZIAO<R#d<r3}=LFZ#4h)JXSa}=nuu3KYm380e>hQ$h1}G GvHk~;j}(jm literal 0 HcmV?d00001 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 GIT binary patch literal 3662 zcmXxnb#xS09L4eCu(&%65F!xV*=&Nly98O1g#<zfD?rdR1S^FWDN@|s-CNjfC0loI zQ-ivDOUe7*`D=ckbKlI)nR$24*|>y^lnjT%=Xd*4ldOnjx8H5KEVtL|&a|Q(mKF6- zl;w&qIK&pH5GsTUqr#{NDuRllqNo@uhKi%&s01p3N}`ge6e@)r$bm|u(x?n7gUX_^ zs2nPX%A@kA0;+&2qKc>zs)Q<|%BTvef~umbs2Zw<s-x<t2C9K-qME1{s)cH!+Nchy zgX*HXs2-|^>ZAI|LKbR(8lZ-#A!>vgp$HU#8l%Q25=ElKDEQ!L_DD30MlmP`H9<{K zQ`8j2qFB@nHABr&bJPO0FluS`XG=4;GIJ|4w>EQYGq*8w8#A{xb6YdFGjlsLw>NWp zGj}j^2Qzmxb4N3GGIJ+0M|I{dIwL1?qBs<XT*!suQ9MdO38)L|g1Vxvs2l2rx})x> z2kL=(qMoQ1>V<lv-lz}igZiSrs2}Qw`lJ4602+V>qJd}-8iWR;!Dt8?f`+1@Xc!uX zhNIzV1R8-xqLFA68ihuq(P#`BgT|t<XdD`c#-s5lF%dpEnms)MPCygUL^KIaLX**C z<VJ2Z1x-OoC<!H_WaL2}G!;!n)6g`Of>KZ_N=4JrbTk9aKxrrq%|tU%I!Z^g&@7aJ zGSF-^8+nlz`H&C!ksk$60L?*j&|EYZ%|r80Cdx$f(R{Q3EkFy=LbM1iLW|L2v;-|d zStvjIIL?-{p2SOWXg$oa<DGb!?Spu^?cI2V?LBxU&RY&w+3{(-+V&OvD9+Wdue0MV z#OrNu#T#sI#~W?$z)#rTi#OTcfH<h_~Q8U2d!59G$++UVfG3+i|Y0woANBx*Ois zli4Hc!R!@v>3!lp&fPEWhX=$1@Sv!7a7a8vdRRORkBCR$QSm4|CLV*wMQx4~;tA4| z;z@W)JOxjSdbMZ7Go)w5v+$gF4xSg!!wcdCcu~9vFNv4nWl@j)il`lRRn#lHCSK#* z>*95IL%acRiZ|gc@fLgv-pPVbix0!wVm7=3gJMu=4r#8q42DFN<{5DX>9gWW_?);3 zJ}*83^TgFK48ywT7nH6ceNkKsUlJdKFT>#D@D-)&;HxmK+jvc>s`0w0p1lD>s>Yj2 zH*u-A#Le(+QQv@fM12C@74`XgPu#}2?~5w*2QZ`^`ymW3W${N^ybFFT>Lx!C)!%$k z{rwaMb*ayks=uF$>hBk#`unA*{@xYU-+Q9^`<1Bvel4oM-@vdo;kQcF-|s~A_j^%K z;|Cbj3;j{4`uh_M>jU+(QuX&2QT_cDhV-m{Q>y;{E~>wOi0bd3qWb%nsQ&&fs=xn; z>hHfWq)*U)Fh5&Q=e|}K6gbA|a71`LzCfDaaz*mb(CG-I`#k<=^Ea_zf!E^?c+)Md Hb2|P9YmgvV literal 0 HcmV?d00001 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 0000000000..829ea12759 --- /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 0000000000..52747329d1 --- /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 0000000000..816e6bd7ff --- /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 7523a5e9cd..328acfde5e 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 d45114696f..fef4a8ae86 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 a9c0a5c879..ccfa4c09b0 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 0000000000..21d7fb9e2f --- /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 f8f57cc536..933c02b3ec 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 6a5858748a..6bf6bb6749 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 0000000000..bd4a459c4a --- /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 09d3f61d6e..b91c393d87 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 b3841031c4..935c43209d 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 0000000000..f81f65faca --- /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 ba619ce1cc..9589136c6b 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 5262ce25dd..f246c871b8 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 a370ad539d..21e6471c06 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 0000000000..b7ca5b4254 --- /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 43028bc600..0000000000 --- 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 d8b57d07a7..0000000000 --- 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 01dd5d0600..0000000000 --- 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 7c83ed413e..0000000000 --- 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 8ad68519e1..b3cb5186fc 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 07b617be4b..d38846730d 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 8d81309544..919ec75882 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 ac469d7cdc..b86b1efd01 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 5fda09bd84..caee9ef7fa 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 55eb156e60..fd0322b49a 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 1569f03e79..855316b180 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 a9d0b525de..78762ba068 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 6f249e1e30..d606a8a0b4 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 26e1b163cb..833a6dec48 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 800b8888eb..6c387d7818 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 4e28eef654..22349420e7 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 c73696a982..7579c21f70 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 3163678470..a3c35c5521 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 | +--------------------------------------------------------------------+ -- GitLab