diff --git a/.gitignore b/.gitignore index 3dcef1ab..9e3ea109 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ composer.lock Build/.phpunit.result.cache Documentation/_make +Documentation-GENERATED-temp/ .DS_Store .idea diff --git a/Documentation-GENERATED-temp/Cache/html/.buildinfo b/Documentation-GENERATED-temp/Cache/html/.buildinfo deleted file mode 100644 index 01c858f4..00000000 --- a/Documentation-GENERATED-temp/Cache/html/.buildinfo +++ /dev/null @@ -1,4 +0,0 @@ -# Sphinx build info version 1 -# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 4f278314d628712f98634f5bb224294c -tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ActionConfiguration/CartController/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ActionConfiguration/CartController/Index.doctree deleted file mode 100644 index 0ab2930d..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ActionConfiguration/CartController/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ActionConfiguration/CartController/showCartAction/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ActionConfiguration/CartController/showCartAction/Index.doctree deleted file mode 100644 index f7a76142..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ActionConfiguration/CartController/showCartAction/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ActionConfiguration/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ActionConfiguration/Index.doctree deleted file mode 100644 index 108b82b7..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ActionConfiguration/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/AjaxConfiguration/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/AjaxConfiguration/Index.doctree deleted file mode 100644 index bba7c701..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/AjaxConfiguration/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Caching/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Caching/Index.doctree deleted file mode 100644 index 01f32a49..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Caching/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Cart/Checkbox/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Cart/Checkbox/Index.doctree deleted file mode 100644 index fe03dc71..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Cart/Checkbox/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Cart/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Cart/Index.doctree deleted file mode 100644 index e137a094..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Cart/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/CurrencyTranslationConfiguration/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/CurrencyTranslationConfiguration/Index.doctree deleted file mode 100644 index 163245de..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/CurrencyTranslationConfiguration/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/FormatConfiguration/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/FormatConfiguration/Index.doctree deleted file mode 100644 index f2ca2b41..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/FormatConfiguration/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Index.doctree deleted file mode 100644 index e896969d..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Main/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Main/Index.doctree deleted file mode 100644 index 95f27dee..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Main/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Order/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Order/Index.doctree deleted file mode 100644 index 40c8cc9c..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Order/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Order/Mail/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Order/Mail/Index.doctree deleted file mode 100644 index 129b0161..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Order/Mail/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Order/NumberGeneratorConfiguration/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Order/NumberGeneratorConfiguration/Index.doctree deleted file mode 100644 index f38b30a4..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/Order/NumberGeneratorConfiguration/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/PaymentMethods/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/PaymentMethods/Index.doctree deleted file mode 100644 index ca3c8b5b..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/PaymentMethods/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/PaymentMethods/MainConfiguration/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/PaymentMethods/MainConfiguration/Index.doctree deleted file mode 100644 index a8cd02ae..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/PaymentMethods/MainConfiguration/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ShippingMethods/FlexPrices/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ShippingMethods/FlexPrices/Index.doctree deleted file mode 100644 index 4d2290af..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ShippingMethods/FlexPrices/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ShippingMethods/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ShippingMethods/Index.doctree deleted file mode 100644 index 26dc2c32..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ShippingMethods/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ShippingMethods/MainConfiguration/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ShippingMethods/MainConfiguration/Index.doctree deleted file mode 100644 index b29ef6c1..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Configuration/ShippingMethods/MainConfiguration/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Index.doctree deleted file mode 100644 index e941dca4..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Installation/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Installation/Index.doctree deleted file mode 100644 index 2a1a05df..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/AdministratorManual/Installation/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/5.0/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/5.0/Index.doctree deleted file mode 100644 index ecf92a13..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/5.0/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.0/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.0/Index.doctree deleted file mode 100644 index e4f9c172..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.0/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Feature-223-AddAddToCartFormFrameworkFinisher.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Feature-223-AddAddToCartFormFrameworkFinisher.doctree deleted file mode 100644 index 3e0e8494..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Feature-223-AddAddToCartFormFrameworkFinisher.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Feature-231-AddViewHelperToShowAdditionalDataInViews.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Feature-231-AddViewHelperToShowAdditionalDataInViews.doctree deleted file mode 100644 index 3fb97c2d..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Feature-231-AddViewHelperToShowAdditionalDataInViews.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Important-226-FixAcceptTermsAndConditionsLabel.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Important-226-FixAcceptTermsAndConditionsLabel.doctree deleted file mode 100644 index 37d28a49..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Important-226-FixAcceptTermsAndConditionsLabel.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Important-228-FixJavaScriptVariableUpdateCountryInTemplate.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Important-228-FixJavaScriptVariableUpdateCountryInTemplate.doctree deleted file mode 100644 index 45fd8031..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Important-228-FixJavaScriptVariableUpdateCountryInTemplate.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Important-235-FixCartOrderFormTemplate.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Important-235-FixCartOrderFormTemplate.doctree deleted file mode 100644 index aea097e7..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Important-235-FixCartOrderFormTemplate.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Important-237-RemoveShowToTopLinkFunctionCallFromJavaScript.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Important-237-RemoveShowToTopLinkFunctionCallFromJavaScript.doctree deleted file mode 100644 index 76f1402e..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Important-237-RemoveShowToTopLinkFunctionCallFromJavaScript.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Index.doctree deleted file mode 100644 index cba678b4..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.1/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.2/Breaking-242-UseDefaultCountrySettingForShippingAddress.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.2/Breaking-242-UseDefaultCountrySettingForShippingAddress.doctree deleted file mode 100644 index bf9e6eaf..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.2/Breaking-242-UseDefaultCountrySettingForShippingAddress.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.2/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.2/Index.doctree deleted file mode 100644 index 501dcad4..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.2/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.3/Important-103-FixSqlStrictMode.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.3/Important-103-FixSqlStrictMode.doctree deleted file mode 100644 index 35239d77..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.3/Important-103-FixSqlStrictMode.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.3/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.3/Index.doctree deleted file mode 100644 index 23ca0925..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.3/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.4/Feature-246-MailAttachmentsHook.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.4/Feature-246-MailAttachmentsHook.doctree deleted file mode 100644 index fa026a22..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.4/Feature-246-MailAttachmentsHook.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.4/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.4/Index.doctree deleted file mode 100644 index b76d5091..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.4/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.5/Breaking-256-ChangeCountryOnlyChangesTaxForFirstProductVariant.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.5/Breaking-256-ChangeCountryOnlyChangesTaxForFirstProductVariant.doctree deleted file mode 100644 index 6a496999..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.5/Breaking-256-ChangeCountryOnlyChangesTaxForFirstProductVariant.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.5/Feature-251-DeclareExtensionCompatibleWithPHP73.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.5/Feature-251-DeclareExtensionCompatibleWithPHP73.doctree deleted file mode 100644 index 2df454ba..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.5/Feature-251-DeclareExtensionCompatibleWithPHP73.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.5/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.5/Index.doctree deleted file mode 100644 index dc3d827a..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.5/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.6/Feature-267-DeclareExtensionCompatibleWithPHP74.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.6/Feature-267-DeclareExtensionCompatibleWithPHP74.doctree deleted file mode 100644 index ba1191d7..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.6/Feature-267-DeclareExtensionCompatibleWithPHP74.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.6/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.6/Index.doctree deleted file mode 100644 index e4137ded..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.6/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Feature-241-AddServiceInterface.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Feature-241-AddServiceInterface.doctree deleted file mode 100644 index 6e4ba165..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Feature-241-AddServiceInterface.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Feature-271-BccForBuyerAndSellerEmail.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Feature-271-BccForBuyerAndSellerEmail.doctree deleted file mode 100644 index 525b89af..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Feature-271-BccForBuyerAndSellerEmail.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Feature-272-AddBuyerEMailForReplyTo.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Feature-272-AddBuyerEMailForReplyTo.doctree deleted file mode 100644 index b1ff198d..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Feature-272-AddBuyerEMailForReplyTo.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Feature-274-AddExtraConditionToOnlyChargeServiceForPhysicalGoods.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Feature-274-AddExtraConditionToOnlyChargeServiceForPhysicalGoods.doctree deleted file mode 100644 index c4453bf7..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Feature-274-AddExtraConditionToOnlyChargeServiceForPhysicalGoods.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Important-263-BugfixForTypeNumInRouteEnhancer.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Important-263-BugfixForTypeNumInRouteEnhancer.doctree deleted file mode 100644 index 6dd1f95c..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Important-263-BugfixForTypeNumInRouteEnhancer.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Index.doctree deleted file mode 100644 index 36b61965..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.7/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.8/Feature-277-AddTaxClassInterface.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.8/Feature-277-AddTaxClassInterface.doctree deleted file mode 100644 index 2788f172..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.8/Feature-277-AddTaxClassInterface.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.8/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.8/Index.doctree deleted file mode 100644 index 9a877d75..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/6.8/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Breaking-288-ChangeMailHandlerToFluidEmail.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Breaking-288-ChangeMailHandlerToFluidEmail.doctree deleted file mode 100644 index d1762c76..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Breaking-288-ChangeMailHandlerToFluidEmail.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Breaking-288-ParameterOfMailAttachmentHookInterfaceWasChanged.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Breaking-288-ParameterOfMailAttachmentHookInterfaceWasChanged.doctree deleted file mode 100644 index d0629ced..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Breaking-288-ParameterOfMailAttachmentHookInterfaceWasChanged.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Breaking-288-RemoveModuleOrderStatistic.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Breaking-288-RemoveModuleOrderStatistic.doctree deleted file mode 100644 index f552e796..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Breaking-288-RemoveModuleOrderStatistic.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Breaking-288-UsePsrEventsForOrderFinishers.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Breaking-288-UsePsrEventsForOrderFinishers.doctree deleted file mode 100644 index e65e96cc..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Breaking-288-UsePsrEventsForOrderFinishers.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Feature-288-ChangeMailHandlerToFluidEmail.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Feature-288-ChangeMailHandlerToFluidEmail.doctree deleted file mode 100644 index a473a3a2..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Feature-288-ChangeMailHandlerToFluidEmail.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Feature-288-DashboardWidgets.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Feature-288-DashboardWidgets.doctree deleted file mode 100644 index 7fa3c268..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Feature-288-DashboardWidgets.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Index.doctree deleted file mode 100644 index b6b45fa7..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.0/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.2/Deprecation-337-SplitUpProcessOrderCreateEvent.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.2/Deprecation-337-SplitUpProcessOrderCreateEvent.doctree deleted file mode 100644 index 62894aba..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.2/Deprecation-337-SplitUpProcessOrderCreateEvent.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.2/Feature-337-SplitUpProcessOrderCreateEvent.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.2/Feature-337-SplitUpProcessOrderCreateEvent.doctree deleted file mode 100644 index 34df1680..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.2/Feature-337-SplitUpProcessOrderCreateEvent.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.2/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.2/Index.doctree deleted file mode 100644 index 1572e38b..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.2/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.3/Feature-339-TaxationOfServiceCostAsAnAncillaryService.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.3/Feature-339-TaxationOfServiceCostAsAnAncillaryService.doctree deleted file mode 100644 index b514e5a6..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.3/Feature-339-TaxationOfServiceCostAsAnAncillaryService.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.3/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.3/Index.doctree deleted file mode 100644 index 193e5361..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.3/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.5/Feature-351-AllowToChangeSettingsPropertyForAllOrderProcessingEvents.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.5/Feature-351-AllowToChangeSettingsPropertyForAllOrderProcessingEvents.doctree deleted file mode 100644 index 2de367ff..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.5/Feature-351-AllowToChangeSettingsPropertyForAllOrderProcessingEvents.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.5/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.5/Index.doctree deleted file mode 100644 index 043ac44f..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/7.5/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/8.0/Breaking-360-MoveFluidPaginationToController.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/8.0/Breaking-360-MoveFluidPaginationToController.doctree deleted file mode 100644 index 80835a32..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/8.0/Breaking-360-MoveFluidPaginationToController.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/8.0/Breaking-360-MoveNumberGeneratorsToEventListeners.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/8.0/Breaking-360-MoveNumberGeneratorsToEventListeners.doctree deleted file mode 100644 index 33ec5804..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/8.0/Breaking-360-MoveNumberGeneratorsToEventListeners.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/8.0/Breaking-360-RemoveSplitUpProcessOrderCreateEventFeatureToggle.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/8.0/Breaking-360-RemoveSplitUpProcessOrderCreateEventFeatureToggle.doctree deleted file mode 100644 index 198dacc7..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/8.0/Breaking-360-RemoveSplitUpProcessOrderCreateEventFeatureToggle.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/8.0/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/8.0/Index.doctree deleted file mode 100644 index 78914644..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/8.0/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/Index.doctree deleted file mode 100644 index dc05090a..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Changelog/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/DeveloperManual/Events/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/DeveloperManual/Events/Index.doctree deleted file mode 100644 index 926b6dd5..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/DeveloperManual/Events/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/DeveloperManual/Hooks/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/DeveloperManual/Hooks/Index.doctree deleted file mode 100644 index b7d3a1f3..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/DeveloperManual/Hooks/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/DeveloperManual/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/DeveloperManual/Index.doctree deleted file mode 100644 index c6330819..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/DeveloperManual/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/DeveloperManual/SignalSlots/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/DeveloperManual/SignalSlots/Index.doctree deleted file mode 100644 index 9f26aded..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/DeveloperManual/SignalSlots/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Index.doctree deleted file mode 100644 index f01c956a..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Modules/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Modules/Index.doctree deleted file mode 100644 index 81953453..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Modules/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Modules/Orders/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Modules/Orders/Index.doctree deleted file mode 100644 index 7c6286eb..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Modules/Orders/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Plugins/Cart/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Plugins/Cart/Index.doctree deleted file mode 100644 index 7fb67a1b..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Plugins/Cart/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Plugins/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Plugins/Index.doctree deleted file mode 100644 index c1c60116..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Plugins/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Plugins/MiniCart/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Plugins/MiniCart/Index.doctree deleted file mode 100644 index bbe45445..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Plugins/MiniCart/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Plugins/Order/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Plugins/Order/Index.doctree deleted file mode 100644 index 48976094..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Plugins/Order/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Records/Coupons/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Records/Coupons/Index.doctree deleted file mode 100644 index 087c1f80..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Records/Coupons/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Records/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Records/Index.doctree deleted file mode 100644 index 1218e89a..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Records/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Records/Orders/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Records/Orders/Index.doctree deleted file mode 100644 index 81a53322..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/EditorManual/Records/Orders/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Index.doctree deleted file mode 100644 index a7d4ef60..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Introduction/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Introduction/Index.doctree deleted file mode 100644 index 7c62d037..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Introduction/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Introduction/NoteOfThanks/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Introduction/NoteOfThanks/Index.doctree deleted file mode 100644 index 49379d1c..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Introduction/NoteOfThanks/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Introduction/Sponsoring/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Introduction/Sponsoring/Index.doctree deleted file mode 100644 index 0d10c2d4..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Introduction/Sponsoring/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/Introduction/Support/Index.doctree b/Documentation-GENERATED-temp/Cache/html/.doctrees/Introduction/Support/Index.doctree deleted file mode 100644 index 36ae1997..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/Introduction/Support/Index.doctree and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/.doctrees/environment.pickle b/Documentation-GENERATED-temp/Cache/html/.doctrees/environment.pickle deleted file mode 100644 index cf9c78eb..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/.doctrees/environment.pickle and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ActionConfiguration/CartController/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ActionConfiguration/CartController/Index.html deleted file mode 100644 index ea62b922..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ActionConfiguration/CartController/Index.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - Cart-Controller-Konfiguration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Cart-Controller-Konfiguration

- -
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ActionConfiguration/CartController/showCartAction/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ActionConfiguration/CartController/showCartAction/Index.html deleted file mode 100644 index baec8961..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ActionConfiguration/CartController/showCartAction/Index.html +++ /dev/null @@ -1,449 +0,0 @@ - - - - - - - - - - - - - showCartAction-Configuration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

showCartAction-Configuration

-
plugin.tx_cart {
-    settings {
-        showCartAction {
-            showPartials {
-                couponForm = true
-
-                # if setting shippingAddressForm to false please disable all validations too
-                shippingAddressForm = true
-
-                shippingMethodForm = true
-                paymentMethodForm = true
-            }
-
-            summary {
-                fields {
-                    cart.net = true
-                    cart.taxes = true
-                    discount.gross = true
-                    service.gross = true
-                    total.gross = true
-                }
-            }
-        }
-    }
-}
-
-
-
-
-

Property

-

plugin.tx_cart.settings.showCartAction.showPartials.paymentMethodForm

-
-
-

Data type

-

boolean

-
-
-

Description

-

Enables/disables the display and selection of configured payment methods -in the shopping cart.

-
-
-

Default

-

true

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.showCartAction.showPartials.shippingMethodForm

-
-
-

Data type

-

boolean

-
-
-

Description

-

Enables/disables the display and selection of configured payment methods -in the shopping cart.

-
-
-

Default

-

true

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.showCartAction.showPartials.couponForm

-
-
-

Data type

-

boolean

-
-
-

Description

-

Enables/disables the display of coupons in the shopping cart. The block -for the input as well as for the and for the display will be shown/hidden.

-
-
-

Default

-

true

-
-
-
-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ActionConfiguration/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ActionConfiguration/Index.html deleted file mode 100644 index f11ca291..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ActionConfiguration/Index.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - - - - - - - - Controller-Action-Konfiguration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Controller-Action-Konfiguration

- -
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/AjaxConfiguration/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/AjaxConfiguration/Index.html deleted file mode 100644 index 5022919b..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/AjaxConfiguration/Index.html +++ /dev/null @@ -1,378 +0,0 @@ - - - - - - - - - - - - - AJAX Configuration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

AJAX Configuration

-

To add products to the shopping cart via AJAX request, a configuration for a -custom page type is needed, because in this case you don’t want to receive the -completely rendered page as response, but only a JSON object,

-
ajaxCart = PAGE
-ajaxCart {
-    typeNum = 2278001
-
-    config {
-        disableAllHeaderCode = 1
-        xhtml_cleaning = 0
-        admPanel = 0
-        debug = 0
-        no_cache = 1
-    }
-
-    10 < tt_content.list.20.cart_cart
-}
-
-
-

This is the supplied configuration for the shopping cart plugin. Products can -be added to the shopping cart via this page type (2278001).

-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Caching/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Caching/Index.html deleted file mode 100644 index cc95964e..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Caching/Index.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - - - - - - - - - - Caching — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Caching

-

A separate cache tag is set for all actions of the ProductController. This can -be used to specifically clear the cache of all pages with a product plugin.

-

PageTS:

-
# clearCacheCmd for product folder with page id 35
-[globalVar = TSFE:id=35]
-    TCEMAIN.clearCacheCmd = cacheTag:tx_cart
-[end]
-
-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Cart/Checkbox/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Cart/Checkbox/Index.html deleted file mode 100644 index b9769d2c..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Cart/Checkbox/Index.html +++ /dev/null @@ -1,538 +0,0 @@ - - - - - - - - - - - - - Checkbox Configuration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Checkbox Configuration

-
plugin.tx_cart {
-    settings {
-        cart {
-            acceptTermsAndConditions.pid = {$plugin.tx_cart.settings.cart.acceptTermsAndConditions.pid}
-            acceptRevocationInstruction.pid = {$plugin.tx_cart.settings.cart.acceptRevocationInstruction.pid}
-            acceptPrivacyPolicy.pid = {$plugin.tx_cart.settings.cart.acceptPrivacyPolicy.pid}
-        }
-
-        validation {
-            orderItem {
-                fields {
-                    acceptTermsAndConditions.validator = Boolean
-                    acceptTermsAndConditions.options.is = true
-                    acceptRevocationInstruction.validator = Boolean
-                    acceptRevocationInstruction.options.is = true
-                    acceptPrivacyPolicy.validator = Boolean
-                    acceptPrivacyPolicy.options.is = true
-                }
-            }
-        }
-    }
-}
-
-
-
-
-

Property

-

plugin.tx_cart.settings.cart.acceptTermsAndConditions.pid

-
-
-

Data type

-

int

-
-
-

Description

-

If a page id is given the translation key tx_cart_domain_model_order_item.accept_terms_and_conditions_with_link -will show a checkbox label with a link to the given page. If the value is empty the -tx_cart_domain_model_order_item.accept_terms_and_conditions_and_conditions -translation key will be used in frontend.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.cart.acceptRevocationInstruction.pid

-
-
-

Data type

-

int

-
-
-

Description

-

If a page id is given the translation key tx_cart_domain_model_order_item.accept_revocation_instruction_with_link -will show a checkbox label with a link to the given page. If the value is empty the -tx_cart_domain_model_order_item.accept_revocation_instruction -translation key will be used in frontend.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.cart.acceptPrivacyPolicy.pid

-
-
-

Data type

-

int

-
-
-

Description

-

If a page id is given the translation key tx_cart_domain_model_order_item.accept_privacy_policy_with_link -will show a checkbox label with a link to the given page. If the value is empty the -tx_cart_domain_model_order_item.accept_privacy_policy -translation key will be used in frontend.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.validation.orderItem.fields.acceptTermsAndConditions.validator

-
-
-

Data type

-

string

-
-
-

Description

-

Add a checkbox for accepting the terms and conditions. If validator is not Boolean -the default template wont render a checkbox.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.validation.orderItem.fields.acceptTermsAndConditions.options.is

-
-
-

Data type

-

string

-
-
-

Description

-

Defines which value is expected for terms and conditions checkbox.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.validation.orderItem.fields.acceptRevocationInstruction.validator

-
-
-

Data type

-

string

-
-
-

Description

-

Add a checkbox for accepting the revocation instruction. If validator is not Boolean -the default template wont render a checkbox.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.validation.orderItem.fields.acceptRevocationInstruction.options.is

-
-
-

Data type

-

string

-
-
-

Description

-

Defines which value is expected for revocation instruction checkbox.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.validation.orderItem.fields.acceptPrivacyPolicy.validator

-
-
-

Data type

-

string

-
-
-

Description

-

Add a checkbox for accepting the rprivacy policy. If validator is not Boolean -the default template wont render a checkbox.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.validation.orderItem.fields.acceptPrivacyPolicy.options.is

-
-
-

Data type

-

string

-
-
-

Description

-

Defines which value is expected for privacy policy checkbox.

-
-
-
-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Cart/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Cart/Index.html deleted file mode 100644 index 372adfca..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Cart/Index.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - - - - - - Cart Configuration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Cart Configuration

- -
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/CurrencyTranslationConfiguration/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/CurrencyTranslationConfiguration/Index.html deleted file mode 100644 index 20d61f8e..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/CurrencyTranslationConfiguration/Index.html +++ /dev/null @@ -1,477 +0,0 @@ - - - - - - - - - - - - - Currency Translation Configuration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Currency Translation Configuration

-

If you want to allow the user to display the prices in a different currency in the store, you can configure this via TypoScript.

-
plugin.tx_cart {
-    settings {
-        currencies {
-            default = 1
-            1 {
-                code = EUR
-                sign = 
-                translation = 1.00
-            }
-        }
-    }
-}
-
-
-
-
-

Property

-

plugin.tx_cart.settings.currency.default

-
-
-

Data type

-

int

-
-
-

Description

-

Defines with which the default currency of a new shopping cart should be.

-
-
-

Default

-

1

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.currency.n

-
-
-

Data type

-

array

-
-
-

Description

-

List of the different currencies available.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.currency.n.code

-
-
-

Data type

-

array

-
-
-

Description

-

Three-digit international currency code according -to ISO 4217 (Wikipedia). -This is among other things for different payment providers and as a -parameter for changing the currency in the shopping cart.

-
-
-

Default

-

EUR

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.currency.n.sign

-
-
-

Data type

-

array

-
-
-

Description

-

Currency symbol, if available for the currency.

-
-
-

Default

-

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.currency.n.translation

-
-
-

Data type

-

array

-
-
-

Description

-

Currency conversion factor. The price of the products is divided by this factor.

-
-
-

Default

-

1.0

-
-
-
-
-
-

Note

-

At the moment there is no automatism to update the factor and adjust it to a -current value. With scheduler task, it should be possible to connect a -corresponding service quite quickly.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/FormatConfiguration/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/FormatConfiguration/Index.html deleted file mode 100644 index 55a57525..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/FormatConfiguration/Index.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - - - - - - - - Currency Format Configuration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Currency Format Configuration

-

To make the templates a bit easier to use, TypoScript can be used to configure -the format specifications for the price output. -These TypoScript specifications are then used in the <cart:format.currency> -ViewHelper.

-
plugin.tx_cart {
-    settings {
-        format {
-            currency {
-                currencySign       = &euro;
-                decimalSeparator   = ,
-                thousandsSeparator = .
-                prependCurrency    = false
-                separateCurrency   = true
-                decimals           = 2
-            }
-        }
-    }
-}
-
-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Index.html deleted file mode 100644 index 85612a17..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Index.html +++ /dev/null @@ -1,390 +0,0 @@ - - - - - - - - - - - - - Configuration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Main/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Main/Index.html deleted file mode 100644 index fcc0917c..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Main/Index.html +++ /dev/null @@ -1,502 +0,0 @@ - - - - - - - - - - - - - Main Configuration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Main Configuration

-
plugin.tx_cart {
-    settings {
-        cart {
-            pid =
-            isNetCart =
-        }
-        order {
-            pid =
-        }
-
-        addToCartByAjax = 2278001
-
-        autoGenerateNumbers = order
-
-        itemsPerPage = 25
-    }
-}
-
-
-
-
-

Property

-

plugin.tx_cart.settings.cart.pid

-
-
-

Data type

-

string

-
-
-

Description

-

Defines the page where the cart plugin is located. This is needed to put -products in the right shopping cart. If settings.addToCartByAjax isn’t -set, the add to cart action will forwards the user to this page.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.cart.isNetCart

-
-
-

Data type

-

boolean

-
-
-

Description

-

Defines whether the shopping cart should be treated as a net shopping -cart. If the shopping cart is a net shopping cart, the price calculations -are all carried out and displayed on the net prices of the products, -otherwise the calculations are made with the gross prices.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.order.pid

-
-
-

Data type

-

string

-
-
-

Description

-

Specifies the folder in which the orders should be stored.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.addToCartByAjax

-
-
-

Data type

-

int

-
-
-

Description

-

Activates the option to add products via AJAX action. There is no -forwarding to the shopping cart page. The value is used as typeNum in -the default templates of extcode/cart-books, extcode/cart-events, -extcode/cart-products and other product extensions. -The response can used to display messages or update the MiniCart-Plugin.

-
-
-

Default

-

2278001

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.autoGenerateNumbers

-
-
-

Data type

-

comma seperated string

-
-
-

Description

-

During the order process, the \Extcode\Cart\Event\Order\NumberGeneratorEvent -is triggered. Generally, the order number is to be generated here. -By adding further values like “invoice” and/or “delivery” these numbers -will also be generated and saved directly after the order. -Further values are also allowed. For this case then own EventListener must -be registered. -If the configuration is empty, all EventListener registered in -extcode/cart on this event will be executed and appropriate numbers will -be generated.

-
-
-

Default

-

order

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.settings.itemsPerPage and/or -module.tx_cart.settings.itemsPerPage

-
-
-

Data type

-

int

-
-
-

Description

-

Defines how many records should be displayed per page in the list action.

-
-
-

Default

-

The default value is 20 if there is no TypoScript configuration.

-
-
-
-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Order/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Order/Index.html deleted file mode 100644 index 50dcb3b8..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Order/Index.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - Order Configuration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Order Configuration

- -
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Order/Mail/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Order/Mail/Index.html deleted file mode 100644 index 68b0d67e..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Order/Mail/Index.html +++ /dev/null @@ -1,583 +0,0 @@ - - - - - - - - - - - - - Email Configuration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Email Configuration

-

Email addresses must be configured for sending emails. This can be done in the backend via the plugin, -but also configured via TypoScript.

-
plugin.tx_cart {
-    mail {
-        buyer {
-            fromAddress = cart.buyer.sender@extco.de
-            ccAddress = cart.buyer.cc1@extco.de, cart.buyer.cc2@extco.de
-            bccAddress = cart.buyer.bcc1@extco.de, cart.buyer.bcc2@extco.de
-            replyToAddress = cart.buyer.reply@extco.de
-            attachments {
-                1 = EXT:theme_cart/Resources/Public/Files/AGB.pdf
-            }
-        }
-        seller {
-            fromAddress = cart.seller.sender@extco.de
-            toAddress = cart.seller.to1@extco.de, cart.seller.to2@extco.de
-            ccAddress = cart.seller.cc1@extco.de, cart.seller.cc2@extco.de
-            bccAddress = cart.seller.bcc1@extco.de, cart.seller.bcc2@extco.de
-        }
-    }
-}
-
-
-
-
-

Property

-

plugin.tx_cart.mail.buyer.fromAddress

-
-
-

Data type

-

string

-
-
-

Description

-

Defines from which sender address the e-mails are sent to the buyer.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.mail.buyer.ccAddress

-
-
-

Data type

-

string

-
-
-

Description

-

Defines to which addresses the e-mail should be sent in CC (Carbon Copy). -Multiple recipients can be given separated by commas.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.mail.buyer.bccAddress

-
-
-

Data type

-

string

-
-
-

Description

-

Defines to which addresses the e-mail should be sent in BCC (Blind Carbon Copy). -Multiple recipients can be given separated by commas.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.mail.buyer.replyToAddress

-
-
-

Data type

-

string

-
-
-

Description

-

Defines to which address should be used as Reply To. -This will override the [‘MAIL’][‘defaultMailReplyToAddress’] configuration.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.mail.buyer.attachments.n

-
-
-

Data type

-

array

-
-
-

Description

-

Defines one or more e-mail attachments to be sent to the buyer. -These can be, for example, documents with the general terms and conditions.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.mail.buyer.attachDocuments.n

-
-
-

Data type

-

array

-
-
-

Description

-

Defines one or more e-mail attachments of the generated PDF documents to be sent to the buyer. -This can be the order confirmation, the invoice or a separate document.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.mail.seller.fromAddress

-
-
-

Data type

-

string

-
-
-

Description

-

Defines from which sender address the e-mails are sent to the seller/shop operator.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.mail.seller.toAddress

-
-
-

Data type

-

string

-
-
-

Description

-

Defines to which recipient addresses the e-mails to the seller/shop operator are sent. -Multiple recipients can be given separated by commas.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.mail.buyer.ccAddress

-
-
-

Data type

-

string

-
-
-

Description

-

Defines to which addresses the e-mail should be sent in CC (Carbon Copy). -Multiple recipients can be given separated by commas.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.mail.buyer.bccAddress

-
-
-

Data type

-

string

-
-
-

Description

-

Defines to which addresses the e-mail should be sent in BCC (Blind Carbon Copy). -Multiple recipients can be given separated by commas.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.mail.seller.attachments.n

-
-
-

Data type

-

array

-
-
-

Description

-

Defines one or more e-mail attachments to be sent to the seller. -These can be, for example, documents with the general terms and conditions.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.mail.seller.attachDocuments.n

-
-
-

Data type

-

array

-
-
-

Description

-

Defines one or more e-mail attachments of the generated PDF documents to be sent to the seller. -This can be the order confirmation, the invoice or a separate document.

-
-
-
-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Order/NumberGeneratorConfiguration/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Order/NumberGeneratorConfiguration/Index.html deleted file mode 100644 index ba817ae8..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/Order/NumberGeneratorConfiguration/Index.html +++ /dev/null @@ -1,454 +0,0 @@ - - - - - - - - - - - - - Number Generator Configuration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Number Generator Configuration

-

Order, invoice and delivery note numbers are created by EventListeners and -stored at the order. These can be configured and thus customized via options -when registering the EventListeners. -The options offer the possibility to add a prefix or suffix to the numbers, -to give an offset to let the first number start at e.g. 10001. Furthermore -you can define via the format how many leading zeros should be used in the -order number. -As in extcode/cart 7.x, the respective counter is stored and updated in -the sys_registry-table.

-

Folgende Optionen stehen zur Verfügung

-
-
-

Property

-

options:prefix

-
-
-

Data type

-

string

-
-
-

Description

-

The prefix is put in front of the generated number.

-
-
-
-
-
-
-

Property

-

opions:suffix

-
-
-

Data type

-

string

-
-
-

Description

-

The suffix is appended to the generated number.

-
-
-
-
-
-
-

Property

-

opions:offset

-
-
-

Data type

-

integer

-
-
-

Description

-

The offset is always added to the counter in the database.

-
-
-
-
-
-
-

Property

-

opions:format

-
-
-

Data type

-

string

-
-
-

Description

-

The format can be used to add leading zeros to the generated number.

-
-
-
-
-

An examples make the usage clear. -The configuration via the options is the same for all numbers using the -generateNumber() method from the \Extcode\Cart\EventListener\Order\Create\Number. -The new counter for the order number should be 23:

-
services:
-
-  Extcode\Cart\EventListener\Order\Create\OrderNumber:
-    arguments:
-      $persistenceManager: '@TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager'
-      $options:
-        prefix: 'DEMO-'
-        suffix: '-SHOP'
-        offset: 10000
-        format: "%09d"
-    tags:
-      - name: event.listener
-        identifier: 'cart--order--create--order-number'
-        event: Extcode\Cart\Event\Order\NumberGeneratorEvent
-        after: 'cart--order--create--order'
-
-
-

The generated order number would look like this: DEMO-000010023-SHOP.

-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/PaymentMethods/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/PaymentMethods/Index.html deleted file mode 100644 index 31bf06da..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/PaymentMethods/Index.html +++ /dev/null @@ -1,590 +0,0 @@ - - - - - - - - - - - - - Payment methods — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Payment methods

-

The payment methods are defined via TypoScript for each shopping cart. -The standard template already includes a payment method (prepayment).

-

With the definition plugin.tx_cart.settings.allowedCountries the output of -the selector in the shopping cart is defined. The options can also be -translated by an own SelectViewhelper.

-
-

Important

-

The provided TypoScript of the extension provides a configuration and -translation for the German-speaking area.

-
-

The parameter plugin.tx_cart.settings.defaultCountry defines which country -should be preselected.

-
-

Important

-

If different payment methods are defined for different countries, the -selection of the invoice address is used for the permitted payment methods. -The country of the shipping address, even if a different shipping address -was specified, is not used.

-
-
-
-

Property

-

plugin.tx_cart.payments.countries.de.options.n.free.from

-
-
-

Data type

-

float

-
-
-

Description

-

If the gross price of the products is greater than or equal to the -specified value, the price for the payment method is 0.00.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.payments.countries.de.options.n.free.until

-
-
-

Data type

-

float

-
-
-

Description

-

If the gross price of the products is less than or equal to the -specified value, the price for the payment method is 0.00.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.payments.countries.de.options.n.fallBackId

-
-
-

Data type

-

int

-
-
-

Description

-

If the payment method is not available, the payment method with -this ID is used.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.payments.countries.de.options.n.available.from

-
-
-

Data type

-

float

-
-
-

Description

-

This payment method is only available if the gross price of the products -is greater than or equal to the specified value, otherwise the fallback -payment method is used.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.payments.countries.de.options.n.available.until

-
-
-

Data type

-

float

-
-
-

Description

-

This payment method is only available if the gross price of the products -is less than or equal to the specified value, otherwise the fallback -payment method is used.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.payments.countries.de.options.n.redirects.success.url

-
-
-

Data type

-

Text

-
-
-

Description

-

If the redirect URL is configured for the payment method used for an -order, the system redirects to the specified URL after a successful -order instead of displaying the confirmation page.

-
-
-
-
-
-

Zone configuration

-

If no individual country configuration can be found, it is also possible to -work with zones in the TypoScript. -This saves a lot of configuration work if you want to deliver to many -countries.

-
plugin.tx_cart {
-    payments {
-        zones {
-            1 {
-                preset = 1
-                countries = de,at,ch
-                options {
-                    1 {
-                        title = Vorkasse
-                        extra = 0.00
-                        taxClassId = 1
-                        status = open
-                    }
-                }
-            }
-        }
-    }
-}
-
-
-
-
-

Property

-

plugin.tx_cart.payments.zones.n

-
-
-

Data type

-

int

-
-
-

Description

-

You can configure up to n different zones.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.payments.zones.n.countries

-
-
-

Data type

-

int

-
-
-

Description

-

List of countries for which this configuration is valid.

-
-
-
-
-
-

Note

-
    -
  • The system first searches for a suitable configuration in the list of country configurations.
  • -
  • The list of zone configurations is then looked through. The first matching configuration is used.
  • -
-
-
-
-

Deactivate payment methods

-

At the moment, the processing does not allow to completely dispense with the -payment methods. A payment method must always be specified be specified. If -there is only one payment method, the selection block can be hidden.

-
plugin.tx_cart {
-     settings {
-         showCartAction {
-             showPartials {
-                paymentMethodForm = false
-             }
-         }
-     }
-}
-
-
-
-
-

Property

-

plugin.tx_cart.settings.showCartAction.showPartials.paymentMethodForm

-
-
-

Data type

-

boolean

-
-
-

Description

-

Enables/disables the display and selection of configured payment methods -in the shopping cart.

-
-
-

Default

-

true

-
-
-
-
- -
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/PaymentMethods/MainConfiguration/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/PaymentMethods/MainConfiguration/Index.html deleted file mode 100644 index ac062495..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/PaymentMethods/MainConfiguration/Index.html +++ /dev/null @@ -1,497 +0,0 @@ - - - - - - - - - - - - - Main configuration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Main configuration

-
plugin.tx_cart {
-    settings {
-        allowedCountries {
-            de = Deutschland
-            at = Österreich
-            ch = Schweiz
-        }
-        defaultCountry = de
-    }
-
-    payments {
-        countries {
-            de {
-                preset = 1
-                options {
-                    1 {
-                        title = Vorkasse
-                        extra = 0.00
-                        taxClassId = 1
-                        status = open
-                    }
-                }
-            }
-            at < .de
-            ch < .de
-        }
-    }
-}
-
-
-
-
-

Property

-

plugin.tx_cart.payments.countries.de.preset

-
-
-

Data type

-

int

-
-
-

Description

-

Defines which payment method is selected by default if the user has not yet selected a different payment method. -If the payment method is not defined when changing the country of account, the payment method defined here for the country of invoice will also be selected.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.payments.countries.de.options.N

-
-
-

Data type

-

array

-
-
-

Description

-

You can configure N different payment methods.

-
-
-

Default

-

options.1

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.payments.countries.de.options.N.title

-
-
-

Data type

-

string

-
-
-

Description

-

Name of the payment method (e.g.: prepayment, cash on delivery).

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.payments.countries.de.options.n.extra

-
-
-

Data type

-

float

-
-
-

Description

-

Costs for the payment method to be billed to the customer (for example, 1.50). -The currency depends on the standard configuration.

-
-
-

Default

-

0.00

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.payments.countries.de.options.n.taxClassId

-
-
-

Data type

-

int

-
-
-

Description

-

ID of the tax class for this payment method. The taxClassId must either be assignable to a defined tax class. -However, the values -1 and -2 are also allowed here. --1 The tax class for the calculation is based on the largest tax class of the products in the shopping cart. --2 The taxes are calculated as a percentage of the tax of the products in the shopping cart.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.payments.countries.de.options.n.status

-
-
-

Data type

-

string

-
-
-

Description

-

The status that the order with this payment method should have by default.

-
-
-
-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ShippingMethods/FlexPrices/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ShippingMethods/FlexPrices/Index.html deleted file mode 100644 index 51c2fa34..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ShippingMethods/FlexPrices/Index.html +++ /dev/null @@ -1,516 +0,0 @@ - - - - - - - - - - - - - Flex Prices — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Flex Prices

-

Sometimes you won’t configure fix prices for an service methods. Especially the shipping costs can -depend on the amount of products in cart. The cart extension provides a service interface and a -default implementation which can handle different kinds of dependencies. -A common condition is the amount of physical products in cart.

-
plugin.tx_cart {
-    shippings {
-        countries {
-           de {
-               preset = 1
-               options {
-                   1 {
-                       title = Standard
-
-                       extra = by_price
-                       extra {
-                           1 {
-                               value = 0.00
-                               extra = 1.50
-                           }
-                           2 {
-                               value = 5.00
-                               extra = 3.00
-                           }
-                           3 {
-                               value = 10.00
-                               extra = 4.00
-                           }
-                           4 {
-                               value = 80.00
-                               extra = 5.00
-                           }
-                       }
-                       taxClassId = 1
-                       status = open
-                   }
-               }
-           }
-           at < .de
-           ch < .de
-        }
-    }
-}
-
-
-
-
-

Property

-

plugin.tx_cart.shipping.countries.de.options.N.extra

-
-
-

Data type

-

string

-
-
-

Description

-
    -
  • by_price
  • -
  • by_price_of_physical_products
  • -
  • by_quantity
  • -
  • by_number_of_physical_products
  • -
  • by_number_of_virtual_products
  • -
  • by_number_of_all_products
  • -
  • by_service_attribute_1_sum
  • -
  • by_service_attribute_1_max
  • -
  • by_service_attribute_2_sum
  • -
  • by_service_attribute_2_max
  • -
  • by_service_attribute_3_sum
  • -
  • by_service_attribute_3_max
  • -
-
-
-
-
-
-
-

Property

-

plugin.tx_cart.shipping.countries.de.options.N.extra.M.value

-
-
-

Data type

-

int

-
-
-

Description

-

Defines the matching condition.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.shipping.countries.de.options.N.extra.M.extra

-
-
-

Data type

-

float

-
-
-

Description

-

Defines the extra value.

-
-
-
-
-
-

Extending Service Calculation

-

Sometimes the shipping method has some special rules. -In Germany the Post provides the so called “Bücherversand” for books. Some rules -apply to this shipping method.

-
    -
  • The weight is included in the price calculation.
  • -
  • Certain lengths and widths must not be exceeded.
  • -
  • Furthermore only books may be sent.
  • -
-

Such special rules cannot be mapped using TypoScript configurations. Therefore, a -separate service class can be implemented for a method, which can then return the -calculated price to the shopping cart.

-
plugin.tx_cart {
-    shippings {
-        countries {
-           de {
-               preset = 1
-               options {
-                   1 {
-                       title = Standard
-                       className = \\MyVendor\\MyExtension\\MyShippingService
-                       taxClassId = 1
-                       status = open
-                   }
-               }
-           }
-        }
-    }
-}
-
-
-
-
-

Property

-

plugin.tx_cart.shipping.countries.de.options.N.className

-
-
-

Data type

-

string

-
-
-

Description

-

Defines the class which implements the \Extcode\Cart\Domain\Model\Cart\ServiceInterface. -This allows you to implement your own service cost calculation per service method. -A valid case is, that you have to decide between serviceAttribute1 (e.g. weight) and -service_attribute2 (e.g. size). This is not configurable through TypoScript and heighly -depends on your delivery service.

-
-
-
-
-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ShippingMethods/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ShippingMethods/Index.html deleted file mode 100644 index 90f02e18..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ShippingMethods/Index.html +++ /dev/null @@ -1,577 +0,0 @@ - - - - - - - - - - - - - Shipping methods — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Shipping methods

-

The shipping methods are defined via TypoScript for each shopping cart. -The standard template already comes with a shipping method (standard).

-

With the definition plugin.tx_cart.settings.allowedCountries the output of -the selector in the shopping cart is defined. The options can also be -translated by an own SelectViewhelper.

-
-

Important

-

The provided TypoScript of the extension provides a configuration and -translation for the German-speaking area.

-
-

The parameter plugin.tx_cart.settings.defaultCountry defines which country -should be preselected.

-
-

Important

-

If different shipping methods are defined for different countries, the -country of the delivery address is used. Only in the case that no different -delivery address has been specified, the selection of the billing address -is used as a basis.

-
-
-
-

Property

-

plugin.tx_cart.shippings.countries.de.options.n.free.from

-
-
-

Data type

-

float

-
-
-

Description

-

If the gross price of the products is greater than or equal to the -specified value, the price for the shipping method is 0.00. -This can be used for free shipping from a defined order value.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.shippings.countries.de.options.n.free.until

-
-
-

Data type

-

float

-
-
-

Description

-

If the gross price of the products is less than or equal to the specified -value, the price for the shipping method is 0.00.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.shippings.countries.de.options.n.available.from

-
-
-

Data type

-

Text

-
-
-

Description

-

Only if the gross price of the products is greater than or equal to the -specified value, this shipping method is available, otherwise the -fallback shipping method will be used.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.shippings.countries.de.options.n.available.until

-
-
-

Data type

-

Text

-
-
-

Description

-

Only if the gross price of the products is less than or equal to the -specified value, this shipping method is available, otherwise the -fallback shipping method will be used.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.shippings.countries.de.options.n.fallBackId

-
-
-

Data type

-

Text

-
-
-

Description

-

If the shipping method is not available, the shipping method with this -ID will be used.

-
-
-
-
-
-

Zone configuration

-

If no individual country configuration can be found, it is also possible to -work with zones in the TypoScript. -This saves a lot of configuration work if you want to deliver to many -countries.

-
plugin.tx_cart {
-    shippings {
-        zones {
-            1 {
-                preset = 1
-                countries = de,at,ch
-                options {
-                    1 {
-                        title = Standard
-                        extra = 0.00
-                        taxClassId = 1
-                        status = open
-                    }
-                }
-            }
-        }
-    }
-}
-
-
-
-

-
-
-
-

Property

-

plugin.tx_cart.shippings.zones.n

-
-
-

Data type

-

int

-
-
-

Description

-

You can configure up to n different zones.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.shippings.zones.n.countries

-
-
-

Data type

-

int

-
-
-

Description

-

List of countries for which this configuration is valid.

-
-
-
-
-
-

Note

-
    -
  • The system first searches for a suitable configuration in the list of country configurations.
  • -
  • The list of zone configurations is then looked through. The first matching configuration is used.
  • -
-
-
-
-

Deactivate shipping methods

-

At the moment, the processing does not allow to completely dispense with the -shipping methods. A shipping method must always be be specified. If there is -only one shipping method, the selection block can be hidden.

-
plugin.tx_cart {
-     settings {
-         showCartAction {
-             showPartials {
-                shippingMethodForm = false
-             }
-         }
-     }
-}
-
-
-
-
-

Property

-

plugin.tx_cart.settings.showCartAction.showPartials.shippingMethodForm

-
-
-

Data type

-

boolean

-
-
-

Description

-

Enables/disables the display and selection of configured shipping methods -in the shopping cart.

-
-
-

Default

-

true

-
-
-
-
- -
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ShippingMethods/MainConfiguration/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ShippingMethods/MainConfiguration/Index.html deleted file mode 100644 index f7a432dd..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Configuration/ShippingMethods/MainConfiguration/Index.html +++ /dev/null @@ -1,497 +0,0 @@ - - - - - - - - - - - - - Main configuration — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Main configuration

-
plugin.tx_cart {
-    settings {
-        allowedCountries {
-            de = Deutschland
-            at = Österreich
-            ch = Schweiz
-        }
-        defaultCountry = de
-    }
-
-    shippings {
-        countries {
-           de {
-               preset = 1
-               options {
-                   1 {
-                       title = Standard
-                       extra = 0.00
-                       taxClassId = 1
-                       status = open
-                   }
-               }
-           }
-           at < .de
-           ch < .de
-        }
-    }
-}
-
-
-
-
-

Property

-

plugin.tx_cart.shippings.countries.de.preset

-
-
-

Data type

-

int

-
-
-

Description

-

Defines which shipping method is selected by default if the user has not yet selected another shipping method. -If the shipping method is not defined when the destination country is changed, the shipping method defined here for the destination country is also selected.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.shippings.countries.de.options.n

-
-
-

Data type

-

array

-
-
-

Description

-

You can configure N different shipping methods.

-
-
-

Default

-

options.1

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.shippings.countries.de.options.n.title

-
-
-

Data type

-

string

-
-
-

Description

-

Name of the shipping type (for example: Standard, Express).

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.shippings.countries.de.options.n.extra

-
-
-

Data type

-

float

-
-
-

Description

-

Shipping costs that are to be billed to the customer (for example: 1.50). -The currency depends on the standard configuration.

-
-
-

Default

-

0.00

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.shippings.countries.de.options.n.taxClassId

-
-
-

Data type

-

int

-
-
-

Description

-

ID of the tax class for this payment method. The taxClassId must either be assignable to a defined tax class. -However, the values -1 and -2 are also allowed here. --1 The tax class for the calculation is based on the largest tax class of the products in the shopping cart. --2 The taxes are calculated as a percentage of the tax of the products in the shopping cart.

-
-
-
-
-
-
-

Property

-

plugin.tx_cart.shippings.countries.de.options.n.status

-
-
-

Data type

-

string

-
-
-

Description

-

The status that the order with this shipping method should have by default.

-
-
-
-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Index.html deleted file mode 100644 index 6eb9de5f..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Index.html +++ /dev/null @@ -1,392 +0,0 @@ - - - - - - - - - - - - - Administrator Manual — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Installation/Index.html b/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Installation/Index.html deleted file mode 100644 index 39f61bd5..00000000 --- a/Documentation-GENERATED-temp/Cache/html/AdministratorManual/Installation/Index.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - - - - - - - - - - Installation — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Installation

-
-

Installation using composer

-

The recommended way to install the extension is by using Composer. -In your composer based TYPO3 project root, just do

-

composer require extcode/cart.

-
-
-

Installation from TYPO3 Extension Repository (TER)

-

Download and install the extension with the extension manager module.

-
-
-

Latest version from git

-

You can get the latest version from git by using the git command:

-
git clone git@github.com:extcode/cart.git
-
-
-
-
-

Preparation: Include static TypoScript

-

The extension ships some TypoScript code which needs to be included.

-
    -
  1. Switch to the root page of your site.
  2. -
  3. Switch to the Template module and select Info/Modify.
  4. -
  5. Press the link Edit the whole template record and switch to the tab Includes.
  6. -
  7. Select Shopping Cart - Cart at the field Include static (from extensions):
  8. -
-
-
-

Product Database / Product Storages

-

Cart itself doesn’t provide any product database or product storage. You can use your own -product table or one of the product extension that I implemented for some use cases.

- ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
extension keycomposer packagegithub repository
cart_booksextcode/cart-booksextcode/cart_books
cart_eventsextcode/cart-eventshttps://github.com/extcode/cart_events
cart_events_plus
cart_gift_cards
cart_productextcode/cart-productshttps://github.com/extcode/cart_products
-

For own product storages you have to implement the ExtcodeCartDomainFinisherCartAddToCartFinisherInterface. -Please have a look at Hooks

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/5.0/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/5.0/Index.html deleted file mode 100644 index 670a228f..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/5.0/Index.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - - - - - - - - 5.0 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - - - Previous - - - -
-
-
- -
-

5.0 Changes

-

The version 5.0.0 is a release for TYPO3 v8.7 only and skipped for TYPO3 v9. Release information for 6.0.0 - 30.11.2018.

-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.0/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.0/Index.html deleted file mode 100644 index a16ee0a1..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.0/Index.html +++ /dev/null @@ -1,473 +0,0 @@ - - - - - - - - - - - - - 6.0 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

6.0 Changes

-
-

Important

-

If upgrading from cart version 4.8.1 or earlier: Please read the documentation very carefully! Please make a backup of your filesystem and database! If possible test the update in a test copy of your TYPO3 instance.

-
-
-

Extracting products to an own cart_products extension

-

In the last month, there where a lot of projects where the product table was extended -to the customer needs. In some cases I come to the result that an own product model -respecting the customer domain would be a better solution. -So I decided to extract all product related code to an own extension. If you updating -from Cart v4.x you have to install the cart_products extension as well.

-

1. migrate database tables

-
RENAME TABLE tx_cart_domain_model_product_product TO tx_cartproducts_domain_model_product_product;
-RENAME TABLE tx_cart_domain_model_product_specialprice TO tx_cartproducts_domain_model_product_specialprice;
-RENAME TABLE tx_cart_domain_model_product_quantitydiscount TO tx_cartproducts_domain_model_product_quantitydiscount;
-RENAME TABLE tx_cart_domain_model_product_bevariantattribute TO tx_cartproducts_domain_model_product_bevariantattribute;
-RENAME TABLE tx_cart_domain_model_product_bevariantattributeoption TO tx_cartproducts_domain_model_product_bevariantattributeoption;
-RENAME TABLE tx_cart_domain_model_product_bevariant TO tx_cartproducts_domain_model_product_bevariant;
-RENAME TABLE tx_cart_domain_model_product_fevariant TO tx_cartproducts_domain_model_product_fevariant;
-RENAME TABLE tx_cart_domain_model_product_tag TO tx_cart_domain_model_tag;
-RENAME TABLE tx_cart_domain_model_product_coupon TO tx_cart_domain_model_coupon;
-RENAME TABLE tx_cart_domain_model_product_product_related_mm TO tx_cartproducts_domain_model_product_product_related_mm;
-RENAME TABLE tx_cart_domain_model_product_tag_mm TO tx_cartproducts_domain_model_product_tag_mm;
-
-ALTER TABLE tx_cart_domain_model_order_address ADD record_type VARCHAR(255) DEFAULT '' NOT NULL;
-ALTER TABLE tx_cart_domain_model_order_address ADD tax_identification_number VARCHAR(255) DEFAULT '' NOT NULL;
-
-ALTER TABLE tt_content CHANGE COLUMN tx_cart_domain_model_product_product tx_cartproducts_domain_model_product_product int(11) unsigned DEFAULT '0' NOT NULL;
-
-
-

2. update cart and install cart_products

-

Update cart and install cart_product using composer or the update in the extension manager. -Include new TypoScript of cart_products.

-

3. migrate some more the database tables

-
UPDATE tx_cart_domain_model_order_address SET record_type="\Extcode\Cart\Domain\Model\Order\BillingAddress" WHERE discr="billing";
-UPDATE tx_cart_domain_model_order_address SET record_type="\Extcode\Cart\Domain\Model\Order\ShippingAddress" WHERE discr="shipping";
-
-UPDATE sys_file_reference SET tablenames="tx_cartproducts_domain_model_product_product" WHERE tablenames="tx_cart_domain_model_product_product";
-
-UPDATE sys_category_record_mm SET tablenames="tx_cartproducts_domain_model_product_product",fieldname="category" WHERE tablenames="tx_cart_domain_model_product_product" AND fieldname="main_category";
-UPDATE sys_category_record_mm SET tablenames="tx_cartproducts_domain_model_product_product" WHERE tablenames="tx_cartproducts_domain_model_product_product" AND fieldname="categories";
-
-
-

4. update all plugins

-

The code summarized different parts of the business logic into a few controller classes. This results in big controller -classes. I decided to split them up in more smaller classes. For an example the updateCountryAction in the the -CartController class was moved to the CartCountryController and renamed to updateAction. This encapsulate one part of -the business logic to an controller and thus allows better expandability. -But that has the consequence that all used plugins has to be updated. The update can’t be done by a simple query statement. -The following query can help you to find the pages where the plugins are installed.

-
SELECT tt_content.uid, tt_content.pid, pages.title FROM tt_content LEFT JOIN pages ON tt_content.pid = pages.uid WHERE list_type LIKE "cart_%";
-
-
-

It gives you the uid of the tt_content element, the page id and the title of the page. You have to update all the plugins -manually through the backend.

-

A second consequence are the changes in the Templates and Partials directories. The template files was moved to some -subdirectories and the links to controller actions was changed. If you have own cart templates you have to move the -files too.

-

5. change checkboxes for acceptTermsAndConditions, acceptRevocationInstruction, and acceptPrivacyPolicy

-

In order to link all the documents and get all agreements checked by an own checkbox the two checkboxes -acceptTerms and acceptConditions was summarized in the new acceptTermsAndConditions checkbox. I add two more checkboxes. -One is the agreement to have read and accept the revocation instructions. And the last is for the privace policy. -If you changed the translations or hide one of the old ones, you have to change the TypoScript configuration and -translation for the new ones.

-
plugin.tx_cart {
-    settings {
-        validation {
-            orderItem {
-                fields {
-                    acceptTermsAndConditions.validator = Boolean
-                    acceptTermsAndConditions.options.is = true
-                    acceptRevocationInstruction.validator = Boolean
-                    acceptRevocationInstruction.options.is = true
-                    acceptPrivacyPolicy.validator = Boolean
-                    acceptPrivacyPolicy.options.is = true
-                }
-            }
-        }
-    }
-}
-
-
-

For more information see: Checkbox Configuration

-

6. check used hooks and signal slots

-

If you extend or override classes, use hooks or signal slots you have to check them carefully. They can be removed or -moved to another location.

-
-
-

Sortierung von Frontend- und Backendvarianten

-

In der Produktkonfiguration können die Frontend und Backendvarianten sortiert werden.

-
-

Important

-

Es ist eine Aktualisierung der Datenbank erforderlich. Da dieses Feld neu hinzu kommt sind keine Probleme zu erwarten.

-
-
-
-

Speichern des Rechungs- und Versandländercodes in den Bestelldaten

-

In der Bestellung werden nun die Ländercodes aus dem TypoScript gespeichert, um in der späteren Verarbeitung auf die -richtige Konfiguration zugreifen zu können.

-
-

Important

-

Es ist eine Aktualisierung der Datenbank erforderlich. Da dieses Feld neu hinzu kommt sind keine Probleme zu erwarten.

-
-
-
-

#59 und #64 Füllen der Rechnungs- und Lieferadresse mit Nutzerdaten

-

In der showCartAction des Warenkorbplugins wird nun ein Hook showCartActionAfterCartWasLoaded bereitgestellt, der -es erlaubt, neben zusätzlichen Änderungen im Warenkorb auch die Rechnungs- und Lieferadresse mit Daten eines -eingeloggten Nutzers vorauszufüllen.

-
-

Important

-

Ein Vorausfüllen der Adressfelder mit Daten aus einem eingeloggten Frontend Benutzer wird es nicht geben. -Zum einen ist das nicht in jedem Fall gewünscht, zum anderen müsste das FrontendUser Model erweitert werden, -um alle relevanten Daten eines Nutzers speichern zu können. Oft werden diese Felder schon an anderer Stelle -bereitgestellt.

-
-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Feature-223-AddAddToCartFormFrameworkFinisher.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Feature-223-AddAddToCartFormFrameworkFinisher.html deleted file mode 100644 index 1ba38ded..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Feature-223-AddAddToCartFormFrameworkFinisher.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - - - - - - - - - - Feature: #223 - Add addToCart form framework finisher — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: #223 - Add addToCart form framework finisher

-

See Issue #223

-
-

Description

-

In order to allow to individualize products when adding them to the cart, a new addToCart finisher for the form framework -allow to load a form and submit the form with the selected product. The fields are handled as frontend variants in the -cart product. They have no intended impact on the price or stock handling.

-

This feature supports all product extension but it’s implemented for cart_events first. It allows to use different forms -to get some more information from the participants like first and last name, twitter handle or preferred food.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Feature-231-AddViewHelperToShowAdditionalDataInViews.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Feature-231-AddViewHelperToShowAdditionalDataInViews.html deleted file mode 100644 index ca8677c3..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Feature-231-AddViewHelperToShowAdditionalDataInViews.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - Feature: #231 - Add ViewHelper to show additionalData in views — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: #231 - Add ViewHelper to show additionalData in views

-

See Issue #231

-
-

Description

-

Some order data will be saved as JSON to the database. -In order show a value from this JSON object cart now provides a ViewHelper.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Important-226-FixAcceptTermsAndConditionsLabel.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Important-226-FixAcceptTermsAndConditionsLabel.html deleted file mode 100644 index 77626be3..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Important-226-FixAcceptTermsAndConditionsLabel.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - - - - - - Important: #226 - Fix accept_terms_and_conditions label — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Important: #226 - Fix accept_terms_and_conditions label

-

See Issue #226

-
-

Description

-

Fix translation in Resources/Private/Partials/Cart/OrderForm/Cart.html.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Important-228-FixJavaScriptVariableUpdateCountryInTemplate.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Important-228-FixJavaScriptVariableUpdateCountryInTemplate.html deleted file mode 100644 index 5b29c823..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Important-228-FixJavaScriptVariableUpdateCountryInTemplate.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - - - - - - Important: #228 - Fix JavaScript variable update_country in template — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Important: #228 - Fix JavaScript variable update_country in template

-

See Issue #228

-
-

Description

-

In EXT:cart/Resources/Private/Templates/Cart/Cart/Show.html the url for the update_country function call wasn’t assigned correctly.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Important-235-FixCartOrderFormTemplate.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Important-235-FixCartOrderFormTemplate.html deleted file mode 100644 index b9cab877..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Important-235-FixCartOrderFormTemplate.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - - - - - - Important: #235 - Fix cart order form template — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Important: #235 - Fix cart order form template

-

See Issue #235

-
-

Description

-

Add a missing class to EXT:cart/Resources/Private/Partials/Cart/OrderForm.html.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Important-237-RemoveShowToTopLinkFunctionCallFromJavaScript.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Important-237-RemoveShowToTopLinkFunctionCallFromJavaScript.html deleted file mode 100644 index 24e20bdc..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Important-237-RemoveShowToTopLinkFunctionCallFromJavaScript.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - - - - - - Important: #237 - Remove showToTopLink-function call from JavaScript — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- - - - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Index.html deleted file mode 100644 index 49801c40..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.1/Index.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - - - - - - - - - - 6.1 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.2/Breaking-242-UseDefaultCountrySettingForShippingAddress.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.2/Breaking-242-UseDefaultCountrySettingForShippingAddress.html deleted file mode 100644 index 519d2ae4..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.2/Breaking-242-UseDefaultCountrySettingForShippingAddress.html +++ /dev/null @@ -1,386 +0,0 @@ - - - - - - - - - - - - - Breaking: #242 - Use defaultCountry setting for shipping address — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Breaking: #242 - Use defaultCountry setting for shipping address

-

See Issue #242

-
-

Description

-

The defaultCountry TypoScript configuration will applied to the shipping address too. -The old logic uses an empty shipping country as an indicator that no shipping address should be used. -The new logic uses the new attribute shippingSameAsBilling within the cart model. -Some fluid templates and JavaScript functions have been changed.

-
-
-

Impact

-

Using the old templates causes the problem that the shipping address will not be hidden and has to be -filled out by the customer.

-
-
-

Affected Installations

-

Instances which use custom partial templates for:

-

EXT:cart/Resources/Private/Partials/Cart/OrderForm.html -EXT:cart/Resources/Private/Partials/Cart/OrderForm/Address/Shipping.html

-

or own JavaScript instead of

-

EXT:cart/Resources/Public/JavaScripts/cart.js.

-
-
-

Migration

-

Replace all conditions on {cart.shippingCountry} in both templates. -Replace the attribute disable='true' in all input fields of the shipping address template -with disabled="{f:if(condition:'{cart.shippingSameAsBilling}', then:'true')}".

-

Add "tx_cart_cart[shipping_same_as_billing]": $("#shipping-same-as-billing").is(":checked"), to -post parameters of the updateCountry function.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.2/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.2/Index.html deleted file mode 100644 index 0619017d..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.2/Index.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - - - - - - - - 6.2 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- - - - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.3/Important-103-FixSqlStrictMode.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.3/Important-103-FixSqlStrictMode.html deleted file mode 100644 index b88ea709..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.3/Important-103-FixSqlStrictMode.html +++ /dev/null @@ -1,368 +0,0 @@ - - - - - - - - - - - - - Important: #103 - Fix exception in sql strict mode — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Important: #103 - Fix exception in sql strict mode

-

See Issue #103

-
-

Description

-

The strict mode of MySQL and MariaDB raises some errors. Removing -the NOT NULL from text fields and adding an passthrough for the -inline relation to tax allows to using the extension in strict mode too.

-
-

Important

-

Some changes to the sql configuration file and TCA require a database update.

-
-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.3/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.3/Index.html deleted file mode 100644 index 828ea6c8..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.3/Index.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - - - - - - - - 6.3 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

6.3 Changes

-

Table of contents

-
- -
- -
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.4/Feature-246-MailAttachmentsHook.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.4/Feature-246-MailAttachmentsHook.html deleted file mode 100644 index dc0e4467..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.4/Feature-246-MailAttachmentsHook.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - - - - - - Feature: #246 - MailAttachmentsHook — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: #246 - MailAttachmentsHook

-

See Issue #246

-
-

Description

-

The new MailAttachmentsHook allows you to add attachments to TYPO3CMSCoreMailMailMessage.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.4/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.4/Index.html deleted file mode 100644 index 09a2d826..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.4/Index.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - - - - - - - - 6.4 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

6.4 Changes

-

Table of contents

-
- -
- -
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.5/Breaking-256-ChangeCountryOnlyChangesTaxForFirstProductVariant.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.5/Breaking-256-ChangeCountryOnlyChangesTaxForFirstProductVariant.html deleted file mode 100644 index 9103fb67..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.5/Breaking-256-ChangeCountryOnlyChangesTaxForFirstProductVariant.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - - - - - - - - - - Breaking: #256 - Change country only changes tax for first product variant — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Breaking: #256 - Change country only changes tax for first product variant

-

See Issue #256

-
-

Description

-

An error is fixed which occurs in connection with the output of gross prices in -the product table of the shopping cart when products have several variants and -the change of the invoicing country assigns new tax classes to the products. -The tax class change now displays the correct gross price for all variants.

-
-
-

Affected Installations

-

The use of the old template and JavaScripts has the consequence that the product -list is not updated if the gross price changes due to the change of the invoicing -country. This only affects installations in which the price of the product is -maintained as the net price.

-

Instances which use net price products and custom partial templates for:

-

EXT:cart/Resources/Private/Templates/Cart/Country/Update.html

-

or own JavaScript instead of

-

EXT:cart/Resources/Public/JavaScripts/cart.js.

-
-
-

Migration

-

Add <f:render partial="Cart/ProductForm" arguments="{cart:cart}"/> to your -EXT:cart/Resources/Private/Templates/Cart/Country/Update.html template file

-

Add $("#form-cart").html($(data).filter("#form-cart").html()); to success -callback of the ajax request in updateCountry function.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.5/Feature-251-DeclareExtensionCompatibleWithPHP73.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.5/Feature-251-DeclareExtensionCompatibleWithPHP73.html deleted file mode 100644 index f1ff63c1..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.5/Feature-251-DeclareExtensionCompatibleWithPHP73.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - Feature: #251 - Declare extension compatible with PHP 7.3 — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: #251 - Declare extension compatible with PHP 7.3

-

See Issue #251

-
-

Description

-

Declare extension compatible with PHP 7.3. -Set state of cart extension to stable.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.5/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.5/Index.html deleted file mode 100644 index ab328cb7..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.5/Index.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - - - - - - - - - - 6.5 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
- - -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.6/Feature-267-DeclareExtensionCompatibleWithPHP74.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.6/Feature-267-DeclareExtensionCompatibleWithPHP74.html deleted file mode 100644 index d1f8323f..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.6/Feature-267-DeclareExtensionCompatibleWithPHP74.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - Feature: #267 - Declare extension compatible with PHP 7.4 — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: #267 - Declare extension compatible with PHP 7.4

-

See Issue #267

-
-

Description

-

Declare extension compatible with PHP 7.4. -Set state of cart extension to stable.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.6/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.6/Index.html deleted file mode 100644 index 35e73ad6..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.6/Index.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - - - - - - - - 6.6 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

6.6 Changes

-

Table of contents

-
- -
- -
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Feature-241-AddServiceInterface.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Feature-241-AddServiceInterface.html deleted file mode 100644 index abea010d..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Feature-241-AddServiceInterface.html +++ /dev/null @@ -1,366 +0,0 @@ - - - - - - - - - - - - - Feature: #241 - Add Service Interface — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: #241 - Add Service Interface

-

See Issue #241

-
-

Description

-

The service is moved to an own class implementing the \Extcode\Cart\Domain\Model\Cart\ServiceInterface. -If the flex price configuration via TypoScript doesn’t fit for the shop, an own service class can calculate -the correct price.

-

More information about the flex price configuration and the service interface can be found -in the Flex Prices documentation.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Feature-271-BccForBuyerAndSellerEmail.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Feature-271-BccForBuyerAndSellerEmail.html deleted file mode 100644 index 2d73b0a5..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Feature-271-BccForBuyerAndSellerEmail.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - Feature: #271 - BCC (Blind Carbon Copy) for Buyer and Seller Email — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: #271 - BCC (Blind Carbon Copy) for Buyer and Seller Email

-

See Issue #271

-
-

Description

-

The email to the buyer or seller can now also be sent to other email addresses than so-called blind copy (BCC). -The configuration is possible via TypoScript as well as in the FlexForm of the shopping cart plugin.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Feature-272-AddBuyerEMailForReplyTo.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Feature-272-AddBuyerEMailForReplyTo.html deleted file mode 100644 index 9beb52fe..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Feature-272-AddBuyerEMailForReplyTo.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - Feature: #272 - Use Buyer Email for replyTo — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: #272 - Use Buyer Email for replyTo

-

See Issue #272

-
-

Description

-

In the emails to the seller, the email address of the buyer is used as replyTo. -In this way it is possible to reply directly to these emails.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Feature-274-AddExtraConditionToOnlyChargeServiceForPhysicalGoods.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Feature-274-AddExtraConditionToOnlyChargeServiceForPhysicalGoods.html deleted file mode 100644 index 2e32468d..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Feature-274-AddExtraConditionToOnlyChargeServiceForPhysicalGoods.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - - - - - - - - Feature: #274 - Add Extra Condition to only Charge Service for Physical Goods — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: #274 - Add Extra Condition to only Charge Service for Physical Goods

-

See Issue #274

-
-

Description

-

The new condition allows you to scale the cost of a service based on the gross -price calculation of all physical products in the shopping cart.

-

More information about the flex price configuration can be found -in the Flex Prices documentation.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Important-263-BugfixForTypeNumInRouteEnhancer.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Important-263-BugfixForTypeNumInRouteEnhancer.html deleted file mode 100644 index f5c5cd57..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Important-263-BugfixForTypeNumInRouteEnhancer.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - - - - - - - - - - Important: #263 - Bugfix for TypeNum in RouteEnhancer — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Important: #263 - Bugfix for TypeNum in RouteEnhancer

-

See Issue #263

-
-

Description

-

Adding a product to cart works correctly using AJAX and with a PageType RouteEnhancer.

-
-
-

Affected Installations

-

All using RouteEnhancer.

-
-
-

Migration

-

You can add following configuration. Please note, that the TypeNum is currently fixed for -compatibility reasons. However, a path segment other than updatecart.html or updatecurrency.html can be used.

-
routeEnhancers:
-  PageTypeSuffix:
-    type: PageType
-    map:
-      updatecart.html: 2278001
-      updatecurrency.html: 2278003
-
-
-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Index.html deleted file mode 100644 index 3b2eae99..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.7/Index.html +++ /dev/null @@ -1,382 +0,0 @@ - - - - - - - - - - - - - 6.7 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
- - -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.8/Feature-277-AddTaxClassInterface.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.8/Feature-277-AddTaxClassInterface.html deleted file mode 100644 index 45f264a4..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.8/Feature-277-AddTaxClassInterface.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - - - - - - - - Feature: #277 - Add TaxClass Interface — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: #277 - Add TaxClass Interface

-

See Issue #277

-
-

Description

-

Parsing the tax classes from TypoScript is moved to an own class implementing of the \Extcode\Cart\Service\TaxClassServiceInterface. -If the tax classes for a cart comes from an API the Interface can be used to load the tax classes through .

-

More information about the \Extcode\Cart\Service\TaxClassServiceInterface can be found -in the tax_class_service_interface documentation.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/6.8/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/6.8/Index.html deleted file mode 100644 index 2c122c1f..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/6.8/Index.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - - - - - - - - 6.8 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

6.8 Changes

-

Table of contents

-
- -
- -
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Breaking-288-ChangeMailHandlerToFluidEmail.html b/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Breaking-288-ChangeMailHandlerToFluidEmail.html deleted file mode 100644 index f5ce560b..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Breaking-288-ChangeMailHandlerToFluidEmail.html +++ /dev/null @@ -1,380 +0,0 @@ - - - - - - - - - - - - - Breaking: #288 - Change MailHandler to FluidEmail — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Breaking: #288 - Change MailHandler to FluidEmail

-

See Issue #288

-
-

Description

-

The changeover from rendering an own standalone view to the FluidEmail -class required adjustments in the e-mail templates and partials.

-
-
-

Affected Installations

-

All installations that use their own templates and partials for the e-mails. -All installations that use an own layout file for the e-mails.

-
-
-

Migration

-

To be able to use your own templates and parts, the folders where the -files are located must be included via $GLOBALS['TYPO3_CONF_VARS']['MAIL']. -The extension has included the following in the ext_localconf.php

-
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['templateRootPaths']['1588829280'] = 'EXT:cart/Resources/Private/Templates/';
-$GLOBALS['TYPO3_CONF_VARS']['MAIL']['partialRootPaths']['1588829280'] = 'EXT:cart/Resources/Private/Partials/';
-
-
-

To ensure the correct order, the own key (UNIX timestamp) must be larger.

-

Furthermore you should compare your own templates and partials with those of the extension.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Breaking-288-ParameterOfMailAttachmentHookInterfaceWasChanged.html b/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Breaking-288-ParameterOfMailAttachmentHookInterfaceWasChanged.html deleted file mode 100644 index 4d6c167a..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Breaking-288-ParameterOfMailAttachmentHookInterfaceWasChanged.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - - - - - - - - - - Breaking: #288 - Parameter of Mail Attachment Hook Interface was Changed — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Breaking: #288 - Parameter of Mail Attachment Hook Interface was Changed

-

See Issue #288

-
-

Description

-

Now that the extension has been changed to \TYPO3\CMS\Core\Mail\FluidEmail instead of \TYPO3\CMS\Core\Mail\MailMessage, -the attachments have to be handled a bit differently. -For this purpose, the first passed parameter and the return parameter have been changed to \TYPO3\CMS\Core\Mail\FluidEmail.

-
-
-

Affected Installations

-

Only installations that have registered their own class on the MailAttachmentsHook and thus add their -own files to the email are affected.

-
-
-

Migration

-

The classes for the first transfer parameter and the return parameter are to be replaced. -It may also be necessary to make adjustments to the class if functions were called on the previous -\TYPO3\CMS\Core\Mail\MailMessage class that are not available in the \TYPO3\CMS\Core\Mail\FluidEmail class.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Breaking-288-RemoveModuleOrderStatistic.html b/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Breaking-288-RemoveModuleOrderStatistic.html deleted file mode 100644 index a7a0e0e9..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Breaking-288-RemoveModuleOrderStatistic.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - - - - - - - - Breaking: #288 - Remove Order Statistics Module — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Breaking: #288 - Remove Order Statistics Module

-

See Issue #288

-
-

Description

-

This module in the backend was poorly supported and offered few possibilities. -It is to be replaced in TYPO3 v10 by one or more Dashboard Widgets.

-
-
-

Affected Installations

-

Installations in which the backend users have used this module intensively can no longer access it. -Possibly the widgets offer an adequate replacement.

-

Otherwise the functionality can be provided by a small extension of your own.

-
-
-

Migration

-

No replacement for this module is planned. Should there be a need, such an extension can be provided.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Breaking-288-UsePsrEventsForOrderFinishers.html b/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Breaking-288-UsePsrEventsForOrderFinishers.html deleted file mode 100644 index f6dd8f83..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Breaking-288-UsePsrEventsForOrderFinishers.html +++ /dev/null @@ -1,382 +0,0 @@ - - - - - - - - - - - - - Breaking: #288 - Use PSR-14 Events for Order Finishers — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Breaking: #288 - Use PSR-14 Events for Order Finishers

-

See Issue #288

-
-

Description

-

Instead of defining the finishers for processing orders via TypoScript, the ProcessOrderCreateEvent event is now -triggered at this point. -The previous finishers are registered accordingly to this event via Service.yaml. -This offers the advantage that you can define with before and after, which dependencies must be fulfilled for -the order, without presetting them completely.

-

Two finishers were also removed in the process. One is the StockFinisher, which each product extension must register -for itself.

-

On the other hand, the PaymentFinisher was also removed. Payment provider extensions must now trigger their own event -and register all required finishers for this event themselves. This gives more flexibility to the payment provider -extensions. For example, when to call the finishers for stock management.

-
-
-

Affected Installations

-

For installations that do not have their own finishers registered, no adjustments should be required. -Installations that have called their own finishers in the ordering process must be registered to the new event.

-
-
-

Migration

-

The finisher class must bring an __invoke() method and gets passed an appropriate event object.

-

Furthermore, the finisher must be configured in the Service.yaml to the event ProcessOrderCreateEvent. -The TypoScript configuration can be removed.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Feature-288-ChangeMailHandlerToFluidEmail.html b/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Feature-288-ChangeMailHandlerToFluidEmail.html deleted file mode 100644 index b48c8a96..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Feature-288-ChangeMailHandlerToFluidEmail.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - Feature: #288 - Change MailHandler to FluidEmail — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: #288 - Change MailHandler to FluidEmail

-

See Issue #288

-
-

Description

-

For a uniform layout of e-mails, TYPO3 has added the FluidEmail class with v10. -Instead of rendering its own standalone view the MailHandler now also uses the new class.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Feature-288-DashboardWidgets.html b/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Feature-288-DashboardWidgets.html deleted file mode 100644 index f7221906..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Feature-288-DashboardWidgets.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - - - - - - - - - - Feature: #288 - Dashboard Widgets — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: #288 - Dashboard Widgets

-

See Issue #288

-
-

Description

-

As a replacement for the backend module, the first two widgets were added. -To use the widgets the dashboard (typo3/cms-dashboard) must be installed.

-
-Cart Dashboard Widgets -

New Widgets: List of Paid but not Shipped Orders, Orders per Day

-
-

The widgets offer a few options so that you can customize them to your own needs. -With independent provider classes you can easily create your own widgets and add them to the widget group “Cart”.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Index.html deleted file mode 100644 index e59501bb..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/7.0/Index.html +++ /dev/null @@ -1,383 +0,0 @@ - - - - - - - - - - - - - 7.0 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
- - -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/7.2/Deprecation-337-SplitUpProcessOrderCreateEvent.html b/Documentation-GENERATED-temp/Cache/html/Changelog/7.2/Deprecation-337-SplitUpProcessOrderCreateEvent.html deleted file mode 100644 index 80a5dcea..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/7.2/Deprecation-337-SplitUpProcessOrderCreateEvent.html +++ /dev/null @@ -1,400 +0,0 @@ - - - - - - - - - - - - - Feature: 337 - Split Up ProcessOrderCreateEvent — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: 337 - Split Up ProcessOrderCreateEvent

-

See Issue #337

-
-

Description

-

In order to better integrate the EventListener in connection with -payment providers, the \Extcode\Cart\Event\ProcessOrderCreateEvent -was split into several events. -These implement a new EventInterface and also the -\Psr\EventDispatcher\StoppableEventInterface.

-
-

Note

-

\Extcode\Cart\Event\ProcessOrderCreateEvent has been marked as -deprecated and will be removed in version 8.x.

-
-

The new events in the order of their dispatch:

-
    -
  • \Extcode\Cart\Event\Order\CreateEvent
  • -
  • \Extcode\Cart\Event\Order\StockEvent
  • -
  • \Extcode\Cart\Event\Order\PaymentEvent
  • -
  • \Extcode\Cart\Event\Order\FinishEvent
  • -
-

The new events can be activated via a feature toggle in LocalConfiguration.php -or AdditionalConfiguration.php:

-
$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['SplitUpProcessOrderCreateEvent'] = true;
-
-
-

The cart extension itself currently registers \Extcode\Cart\EventListener\ProcessOrderCreate\Order -and \Extcode\Cart\EventListener\ProcessOrderCreate\Order on \Extcode\Cart\Event\Order\CreateEvent. -And the extension registers \Extcode\Cart\EventListener\ProcessOrderCreate\Email -and \Extcode\Cart\EventListener\ProcessOrderCreate\ClearCart on \Extcode\Cart\Event\Order\FinishEvent.

-

The product extensions extcode/cart-products, extcode/cart-events, and extcode/cart-books will -register the EventListeners to \Extcode\Cart\Event\Order\StockEvent.

-

The payment methods provider extensions should be registered to the \Extcode\Cart\Event\Order\PaymentEvent. -These should return true for the isPropagationStopped() if the payment process cannot be completed -immediately, to prevent sending emails and clearing the cart session directly. The emails and clearing cart -is then the responsibility of the extension. Of course, the extension itself can send appropriate events and -the EventListener from this extension can be registered to it.

-
-
-

Impact

-

If the feature toggle has been activated, the event -\Extcode\Cart\Event\ProcessOrderCreateEvent will no longer be triggered. -All EventListeners registered to this event must be registered to one of the new events.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/7.2/Feature-337-SplitUpProcessOrderCreateEvent.html b/Documentation-GENERATED-temp/Cache/html/Changelog/7.2/Feature-337-SplitUpProcessOrderCreateEvent.html deleted file mode 100644 index c0663598..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/7.2/Feature-337-SplitUpProcessOrderCreateEvent.html +++ /dev/null @@ -1,400 +0,0 @@ - - - - - - - - - - - - - Feature: 337 - Split Up ProcessOrderCreateEvent — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: 337 - Split Up ProcessOrderCreateEvent

-

See Issue #337

-
-

Description

-

In order to better integrate the EventListener in connection with -payment providers, the \Extcode\Cart\Event\ProcessOrderCreateEvent -was split into several events. -These implement a new EventInterface and also the -\Psr\EventDispatcher\StoppableEventInterface.

-
-

Note

-

\Extcode\Cart\Event\ProcessOrderCreateEvent has been marked as -deprecated and will be removed in version 8.x.

-
-

The new events in the order of their dispatch:

-
    -
  • \Extcode\Cart\Event\Order\CreateEvent
  • -
  • \Extcode\Cart\Event\Order\StockEvent
  • -
  • \Extcode\Cart\Event\Order\PaymentEvent
  • -
  • \Extcode\Cart\Event\Order\FinishEvent
  • -
-

The new events can be activated via a feature toggle in LocalConfiguration.php -or AdditionalConfiguration.php:

-
$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['SplitUpProcessOrderCreateEvent'] = true;
-
-
-

The cart extension itself currently registers \Extcode\Cart\EventListener\ProcessOrderCreate\Order -and \Extcode\Cart\EventListener\ProcessOrderCreate\Order on \Extcode\Cart\Event\Order\CreateEvent. -And the extension registers \Extcode\Cart\EventListener\ProcessOrderCreate\Email -and \Extcode\Cart\EventListener\ProcessOrderCreate\ClearCart on \Extcode\Cart\Event\Order\FinishEvent.

-

The product extensions extcode/cart-products, extcode/cart-events, and extcode/cart-books will -register the EventListeners to \Extcode\Cart\Event\Order\StockEvent.

-

The payment methods provider extensions should be registered to the \Extcode\Cart\Event\Order\PaymentEvent. -These should return true for the isPropagationStopped() if the payment process cannot be completed -immediately, to prevent sending emails and clearing the cart session directly. The emails and clearing cart -is then the responsibility of the extension. Of course, the extension itself can send appropriate events and -the EventListener from this extension can be registered to it.

-
-
-

Impact

-

If the feature toggle has been activated, the event -\Extcode\Cart\Event\ProcessOrderCreateEvent will no longer be triggered. -All EventListeners registered to this event must be registered to one of the new events.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/7.2/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/7.2/Index.html deleted file mode 100644 index 146c05df..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/7.2/Index.html +++ /dev/null @@ -1,379 +0,0 @@ - - - - - - - - - - - - - 7.2 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
- -
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/7.3/Feature-339-TaxationOfServiceCostAsAnAncillaryService.html b/Documentation-GENERATED-temp/Cache/html/Changelog/7.3/Feature-339-TaxationOfServiceCostAsAnAncillaryService.html deleted file mode 100644 index 798da2c6..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/7.3/Feature-339-TaxationOfServiceCostAsAnAncillaryService.html +++ /dev/null @@ -1,382 +0,0 @@ - - - - - - - - - - - - - Deprecation: 339 - Taxation of Service Cost as an Ancillary Service — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Deprecation: 339 - Taxation of Service Cost as an Ancillary Service

-

See Issue #339

-
-

Description

-

In germany and austria the tax for shipping is related to the products in cart. -If you only have products with one tax class you are save, but if you sell books (reduced tax) and shirts (normal tax) -the tax calculation for shipping use both tax classes. Percentage wise, the calculation of the tax is divided. -The new version will add two options to TypoScript for taxClassId configuration. -- taxClassId = -1 for simple calculation, where the tax rate of shipping is based on the highest tax rate in the shopping cart. -- taxClassId = -2 option for the more complicated percentage calculation of the tax.

-
-

Note

-

The configuration of the taxClassId with a negative value is only allowed here. No tax class with negative values -must or may be defined. For compatibility reasons, negative values were inserted at this point. -This configuration will change in the upcoming version for TYPO3 v11.

-
-
-
-

Impact

-

No Impact.

-
-
-

Affected Installations

-

No Installations are infected. There might be some issues on classes extending \Extcode\Cart\Domain\Model\Cart\Extra -or \Extcode\Cart\Domain\Model\Cart\Service.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/7.3/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/7.3/Index.html deleted file mode 100644 index 5b20b3b4..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/7.3/Index.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - - - - - - - - 7.3 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

7.3 Changes

-

Table of contents

-
- -
- -
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/7.5/Feature-351-AllowToChangeSettingsPropertyForAllOrderProcessingEvents.html b/Documentation-GENERATED-temp/Cache/html/Changelog/7.5/Feature-351-AllowToChangeSettingsPropertyForAllOrderProcessingEvents.html deleted file mode 100644 index 03bd8a35..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/7.5/Feature-351-AllowToChangeSettingsPropertyForAllOrderProcessingEvents.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - - - - - - - - - - Feature: 351 - Allow to Change $settings Property for all Order Processing Events — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Feature: 351 - Allow to Change $settings Property for all Order Processing Events

-

See Issue #351

-
-

Description

-

It is in the EventListeners

-
    -
  • ExtcodeCartEventOrderCreateEvent,
  • -
  • ExtcodeCartEventOrderFinishEvent,
  • -
  • ExtcodeCartEventOrderPaymentEvent,
  • -
  • ExtcodeCartEventOrderStockEvent, and
  • -
  • ExtcodeCartEventProcessOrderCreateEvent
  • -
-

possible to use the setSettings() method to change the settings for later EventListeners.

-
-
-

Impact

-

No Impact.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/7.5/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/7.5/Index.html deleted file mode 100644 index 1762730b..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/7.5/Index.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - - - - - - - - 7.5 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- - - - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/8.0/Breaking-360-MoveFluidPaginationToController.html b/Documentation-GENERATED-temp/Cache/html/Changelog/8.0/Breaking-360-MoveFluidPaginationToController.html deleted file mode 100644 index 4e679716..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/8.0/Breaking-360-MoveFluidPaginationToController.html +++ /dev/null @@ -1,372 +0,0 @@ - - - - - - - - - - - - - Breaking: #360 - Move Fluid Pagination to Controller — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Breaking: #360 - Move Fluid Pagination to Controller

-

See Issue #360

-
-

Description

-

In TYPO3 v11 <f:paginate> has been removed and is implemented via the -controller.

-
-
-

Affected Installations

-

All installations are affected by this change.

-
-
-

Migration

-

If the templates for the lists of orders in the frontend or backend have been -overwritten, then these templates must also be adapted.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/8.0/Breaking-360-MoveNumberGeneratorsToEventListeners.html b/Documentation-GENERATED-temp/Cache/html/Changelog/8.0/Breaking-360-MoveNumberGeneratorsToEventListeners.html deleted file mode 100644 index c053ef64..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/8.0/Breaking-360-MoveNumberGeneratorsToEventListeners.html +++ /dev/null @@ -1,380 +0,0 @@ - - - - - - - - - - - - - Breaking: #360 - Move Number Generators To EventListeners — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Breaking: #360 - Move Number Generators To EventListeners

-

See Issue #360

-
-

Description

-

The generation of order, invoice and delivery note numbers has been moved -from Extcode\Cart\Utility\OrderUtility::class to its own EventListener. -The generation is also no longer done via TypoScript and can also no longer -be configured via TypoScript.

-
-
-

Affected Installations

-

All installations are affected by this change.

-
-
-

Migration

-

If the generation of order numbers via TypoScript has been configured -individually (e.g. with prefix or suffix, offset, leading zeros), this -configuration must be transferred to the registration of the service. -On the Number Generator Configuration -page is documented how this can be done. If other elements, such as the -inclusion of or parts of the date, are used via TypoScript, this must -be implemented via a separate EventListener. How this is done can be -read on this page TODO.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/8.0/Breaking-360-RemoveSplitUpProcessOrderCreateEventFeatureToggle.html b/Documentation-GENERATED-temp/Cache/html/Changelog/8.0/Breaking-360-RemoveSplitUpProcessOrderCreateEventFeatureToggle.html deleted file mode 100644 index 6dbbff72..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/8.0/Breaking-360-RemoveSplitUpProcessOrderCreateEventFeatureToggle.html +++ /dev/null @@ -1,397 +0,0 @@ - - - - - - - - - - - - - Breaking: #360 - Remove Split Up ProcessOrderCreateEvent Feature Toggle — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Breaking: #360 - Remove Split Up ProcessOrderCreateEvent Feature Toggle

-

See Issue #360

-
-

Description

-

The configuration ‘SplitUpProcessOrderCreateEvent’ was removed. As a -result, several events are now triggered one after the other when the -order is placed in the frontend.

-

The current sequence of these events is:

-
    -
  • \Extcode\Cart\Event\Order\CreateEvent
  • -
  • \Extcode\Cart\Event\Order\NumberGeneratorEvent
  • -
  • \Extcode\Cart\Event\Order\FinishEvent
  • -
  • \Extcode\Cart\Event\Order\PaymentEvent
  • -
  • \Extcode\Cart\Event\Order\StockEvent
  • -
-

Thereby the \Extcode\Cart\Event\Order\NumberGeneratorEvent was added in -this version and contains in this version the registered event -cart--order--create--order-number which was previously contained in -\Extcode\Cart\Event\Order\CreateEvent .

-
-
-

Affected Installations

-

This affects all installations that have not yet been switched via the -FeatureToggle and have registered their own EventListeners on -Extcode\Cart\Event\ProcessOrderCreateEvent. -Furthermore, installations that have registered their own EventListeners on -\Extcode\Cart\Event\Order\CreateEvent are affected.

-
-
-

Migration

-

In case the FeatureToggle was not activated, but no own EventListeners were -registered, nothing has to be adjusted at all. The ordering process should -be tested.

-

In case the FeatureToggle was not activated and own EventListeners were -registered on Extcode\Cart\Event\ProcessOrderCreateEvent, the registered -EventListeners are to be registered on the new events. The order process -should be checked in any case.

-

In case the FeatureToggle was enabled and own EventListeners were registered -to \Extcode\Cart\Event\Order\CreateEvent, check if these EventListeners must -not be registered to \Extcode\Cart\Event\Order\NumberGeneratorEvent.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/8.0/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/8.0/Index.html deleted file mode 100644 index 40041ad0..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/8.0/Index.html +++ /dev/null @@ -1,372 +0,0 @@ - - - - - - - - - - - - - 8.0 Changes — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
- - -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Changelog/Index.html b/Documentation-GENERATED-temp/Cache/html/Changelog/Index.html deleted file mode 100644 index c3b580ca..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Changelog/Index.html +++ /dev/null @@ -1,430 +0,0 @@ - - - - - - - - - - - - - ChangeLog — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

ChangeLog

-
- -
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/DeveloperManual/Events/Index.html b/Documentation-GENERATED-temp/Cache/html/DeveloperManual/Events/Index.html deleted file mode 100644 index 038939ba..00000000 --- a/Documentation-GENERATED-temp/Cache/html/DeveloperManual/Events/Index.html +++ /dev/null @@ -1,501 +0,0 @@ - - - - - - - - - - - - - Events — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Events

-

The extcode/cart extension already uses events in some places, especially to integrate custom -requirements in the ordering process. You can register your own EventListener for the following -events:

-
-
-

Event Class

-

\Extcode\Cart\Event\CheckProductAvailabilityEvent

-
-
-

Description

-

This event is triggered when it is necessary to check whether a product -is still available in sufficient quantity in the warehouse. The product -extensions should implement an EventListener that checks the products -of this extension. If a product is no longer available or not available -in sufficient quantity, the property $available must be set to false. -In addition, the EventListener can pass messages. -If there is no availability check in the product extension, no -EventListener needs to be implemented.

-
-
-
-
-
-
-

Event Class

-

\Extcode\Cart\Event\ProcessOrderCheckStockEvent

-
-
-

Description

-

The event is triggered in the \Extcode\Cart\Controller\Cart\OrderController::createAction -and allows to cancel the further ordering process if the number of -products in the shopping cart is no longer available in the meantime.

-
-
-
-
-
-
-

Event Class

-

\Extcode\Cart\Event\RetrieveProductsFromRequestEvent

-
-
-

Description

-

This event is triggered when an “addToCart” form is submitted. The -extension passes the form data in this event. Each product extension must -provide an EventListener for its own product type that returns one or -more products based on this form data. It is up to the product extension -how to create these products as instances of the class -\Extcode\Cart\Domain\Model\Cart\Product. Products can be loaded from -the database, but also created based on the form data, or fetched from -another system via an API.

-
-
-
-
-
-
-

Event Class

-

\Extcode\Cart\Event\Order\CreateEvent

-
-
-

Description

-

This event is used by the extension itself, but can be extended by -custom EventListeners. -It is the first event that is called when the order is submitted. -This event implements the StoppableEventInterface.

-
-
-
-
-
-
-

Event Class

-

\Extcode\Cart\Event\Order\NumberGeneratorEvent

-
-
-

Description

-

It is the second event that is called when the order is submitted. -This event is used by the extension itself, but can be extended by -custom EventListeners. The EventListeners that the cart extension -itself registers to this event can very easily be replaced with -custom EventListeners. -The event is also triggered in the backend if an invoice or delivery -number is subsequently generated there, because they should not be -generated automatically during the ordering process. -A Payment provider extensions can also trigger this event if the -payment process was successful and an invoice is to be sent instead -of an order confirmation.

-
-
-
-
-
-
-

Event Class

-

\Extcode\Cart\Event\Order\PaymentEvent

-
-
-

Description

-

This third event in the row can be implemented by payment provider -extensions to forward to the payment provider at this point. In case -of forwarding, the processing of the following events should be -prevented via the StoppableEventInterface, because -\Extcode\Cart\Event\Order\StockEvent and -\Extcode\Cart\Event\Order\FinishEvent are only necessary if the -payment process is successful. -If the payment process is successful, the payment provider extension -should trigger the events \Extcode\Cart\Event\Order\StockEvent and -\Extcode\Cart\Event\Order\FinishEvent itself.

-
-
-
-
-
-
-

Event Class

-

\Extcode\Cart\Event\Order\StockEvent

-
-
-

Description

-

The fourth event should again be used by product extensions if they -provide stock management. The EventListener should perform stock -management for products of this extension. Either count down the stock -counter in the database or tell the product service via an interface -which products were bought how often.

-
-
-
-
-
-
-

Event Class

-

\Extcode\Cart\Event\Order\FinishEvent

-
-
-

Description

-

The fifth and final event in the ordering process is to finish the order. -This is mainly used by the cart extension itself to finalize the order -process. Here, among other things, e-mails are sent. Other extensions can -use this event to generate PDF documents, register users or assign -registered users to another user group.

-
-
-
-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/DeveloperManual/Hooks/Index.html b/Documentation-GENERATED-temp/Cache/html/DeveloperManual/Hooks/Index.html deleted file mode 100644 index 9acfe2f8..00000000 --- a/Documentation-GENERATED-temp/Cache/html/DeveloperManual/Hooks/Index.html +++ /dev/null @@ -1,393 +0,0 @@ - - - - - - - - - - - - - Hooks — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Hooks

-

Some more commonly used hooks are:

-
-
-

Hook Class Name

-

\Extcode\Cart\Controller\Cart\CartController

-
-
-

Hook Name

-

showCartActionAfterCartWasLoaded

-
-
-

Description

-

TODO

-
-
-
-
-
-
-

Hook Class Name

-

\Extcode\Cart\Service\MailHandler

-
-
-

Hook Name

-

MailAttachmentsHook

-
-
-

Description

-

TODO

-
-
-
-
-
-

Note

-

The Hooks will be replaced by events in the upcoming major version.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/DeveloperManual/Index.html b/Documentation-GENERATED-temp/Cache/html/DeveloperManual/Index.html deleted file mode 100644 index ffb32ccd..00000000 --- a/Documentation-GENERATED-temp/Cache/html/DeveloperManual/Index.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - - - - - - - Developer Manual — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Developer Manual

- -
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/DeveloperManual/SignalSlots/Index.html b/Documentation-GENERATED-temp/Cache/html/DeveloperManual/SignalSlots/Index.html deleted file mode 100644 index a7d0e3f1..00000000 --- a/Documentation-GENERATED-temp/Cache/html/DeveloperManual/SignalSlots/Index.html +++ /dev/null @@ -1,425 +0,0 @@ - - - - - - - - - - - - - Signal Slots — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Signal Slots

-

The following SignalSlots are used and dispatched in cart.

-
-
-

Signal Class Name

-

\Extcode\Cart\Utility\CartUtility

-
-
-

Signal Name

-

updateCountry

-
-
-

Description

-

TODO

-
-
-
-
-
-
-

Signal Class Name

-

\Extcode\Cart\Utility\CurrencyUtility

-
-
-

Signal Name

-

updateCurrency

-
-
-

Description

-

TODO

-
-
-
-
-
-
-

Signal Class Name

-

\Extcode\Cart\Utility\OrderUtility

-
-
-

Signal Name

-

changeOrderItemBeforeSaving

-
-
-

Description

-

TODO

-
-
-
-
-
-
-

Signal Class Name

-

\Extcode\Cart\Utility\OrderUtility

-
-
-

Signal Name

-

addProductAdditionalData

-
-
-

Description

-

TODO

-
-
-
-
-
-

Note

-

The SignalSlots will be replaced by Events in the upcoming major version.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/EditorManual/Index.html b/Documentation-GENERATED-temp/Cache/html/EditorManual/Index.html deleted file mode 100644 index a272e58a..00000000 --- a/Documentation-GENERATED-temp/Cache/html/EditorManual/Index.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - - - - - - - - Editor Manual — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
- - -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/EditorManual/Modules/Index.html b/Documentation-GENERATED-temp/Cache/html/EditorManual/Modules/Index.html deleted file mode 100644 index 48623a82..00000000 --- a/Documentation-GENERATED-temp/Cache/html/EditorManual/Modules/Index.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - - - - - - - Module — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Module

-
- -
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/EditorManual/Modules/Orders/Index.html b/Documentation-GENERATED-temp/Cache/html/EditorManual/Modules/Orders/Index.html deleted file mode 100644 index b526098a..00000000 --- a/Documentation-GENERATED-temp/Cache/html/EditorManual/Modules/Orders/Index.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - - - - - - - - Bestellungen — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Bestellungen

-

Das Modul “Bestellungen” listet alle Bestellungen einer Seite (Ordner) auf. Dabei bietet Sie im Gegensatz zur Standard -Listenansicht eine optimierte Darstellung und bessere Suchmöglichkeiten.

-
-Liste aller Bestellungen eines Ordners -

Liste aller Bestellungen eines Ordners

-
-
-Detailansicht einer Bestellung -

Detailansicht einer Bestellung

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/EditorManual/Plugins/Cart/Index.html b/Documentation-GENERATED-temp/Cache/html/EditorManual/Plugins/Cart/Index.html deleted file mode 100644 index f1fffa1b..00000000 --- a/Documentation-GENERATED-temp/Cache/html/EditorManual/Plugins/Cart/Index.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - - - - - - Cart: Warenkorb — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Cart: Warenkorb

-

Diese Plugin zeigt den aktuellen Warenkorb, die darin enthaltenen Produkte und das Formular für die Bestellung.

-
-

Tip

-

Sollen im Warenkorb Coupons verwendet werden können, müssen unter Datensatzsammlung die Seiten angegeben werden, in denen Coupons gespeichert sind.

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/EditorManual/Plugins/Index.html b/Documentation-GENERATED-temp/Cache/html/EditorManual/Plugins/Index.html deleted file mode 100644 index 2e92a93b..00000000 --- a/Documentation-GENERATED-temp/Cache/html/EditorManual/Plugins/Index.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - Plugins — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
- -
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/EditorManual/Plugins/MiniCart/Index.html b/Documentation-GENERATED-temp/Cache/html/EditorManual/Plugins/MiniCart/Index.html deleted file mode 100644 index c2353748..00000000 --- a/Documentation-GENERATED-temp/Cache/html/EditorManual/Plugins/MiniCart/Index.html +++ /dev/null @@ -1,358 +0,0 @@ - - - - - - - - - - - - - Cart: Mini-Warenkorb — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Cart: Mini-Warenkorb

-

Dieses Plugin kann als Miniwarenkorb eingebunden werden und gibt eine Kurzansicht des Warenkorbs aus.

-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/EditorManual/Plugins/Order/Index.html b/Documentation-GENERATED-temp/Cache/html/EditorManual/Plugins/Order/Index.html deleted file mode 100644 index c0067397..00000000 --- a/Documentation-GENERATED-temp/Cache/html/EditorManual/Plugins/Order/Index.html +++ /dev/null @@ -1,358 +0,0 @@ - - - - - - - - - - - - - Cart: Bestellungen — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Cart: Bestellungen

-

Dieses Plugin zeigt die Bestellung des angemeldeten Frontend Benutzers an.

-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/EditorManual/Records/Coupons/Index.html b/Documentation-GENERATED-temp/Cache/html/EditorManual/Records/Coupons/Index.html deleted file mode 100644 index 0f58659a..00000000 --- a/Documentation-GENERATED-temp/Cache/html/EditorManual/Records/Coupons/Index.html +++ /dev/null @@ -1,357 +0,0 @@ - - - - - - - - - - - - - Coupons / Gutscheine — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Coupons / Gutscheine

-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/EditorManual/Records/Index.html b/Documentation-GENERATED-temp/Cache/html/EditorManual/Records/Index.html deleted file mode 100644 index d0dac34e..00000000 --- a/Documentation-GENERATED-temp/Cache/html/EditorManual/Records/Index.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - - - - - - Datensätze — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Datensätze

- -
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/EditorManual/Records/Orders/Index.html b/Documentation-GENERATED-temp/Cache/html/EditorManual/Records/Orders/Index.html deleted file mode 100644 index 509243f4..00000000 --- a/Documentation-GENERATED-temp/Cache/html/EditorManual/Records/Orders/Index.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - - - - - - Bestellungen — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Bestellungen

-

Die Datensätze der Bestellungen enthalten die Daten einer Bestellung und sollen später nicht mehr verändert werden. -Im Backend lassen sich die Datensätze auflisten und öffnen, die Änderungen sind hier nicht möglich. Bitte verwenden -Sie das bereitgestellte Backend-Modul Bestellungen. Dieses Backend-Modul bietet einen optimierten Filter um -Bestellungen schnell aufzufinden. Die übersichtlichere Darstellung einzelner Bestellungen ermöglicht eine bessere -Abarbeitung eingegangener Bestellungen und Veränderung des Status für die Bezahlung und den Versand.

-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Index.html b/Documentation-GENERATED-temp/Cache/html/Index.html deleted file mode 100644 index 7693076d..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Index.html +++ /dev/null @@ -1,523 +0,0 @@ - - - - - - - - - - - - - EXT: Cart — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - -
-
-
- -
-

EXT: Cart

-_images/cart_logo.png - --- - - - - - - - - - - - - - - - - - - - - - -
Classification:cart
Version:8.0.0
Language:en (de)
Description:Cart is an extension providing a shopping solution for TYPO3.
Keywords:cart, shop, shopping, e-commerce, ecommerce, checkout, payment
Copyright:2018
Author:Daniel Gohlke
E-Mail:ext.cart@extco.de
License:This document is published under the Open Publication License -available from http://www.opencontent.org/openpub/
Rendered:2021-10-29 09:57
-

The content of this document is related to TYPO3, -a GNU/GPL CMS/Framework available from www.typo3.org.

-

Table of Contents

-
- -
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Introduction/Index.html b/Documentation-GENERATED-temp/Cache/html/Introduction/Index.html deleted file mode 100644 index a365803f..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Introduction/Index.html +++ /dev/null @@ -1,403 +0,0 @@ - - - - - - - - - - - - - Introduction — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Introduction

-

Cart is an extension providing a shopping solution for TYPO3.

-
-

Description

-

The extension is a small but powerful extension which “solely” adds a shopping cart to your TYPO3 installation and is -well suited for content commerce.

-

The extension allows you to add products to a cart and handles the order process completely. -There are other awesome extensions like extcode/cart-products, extcode/cart-events, and extcode/cart-books to -handle different types of products.

-

Furthermore, you will find some payment provider extensions like extcode/cart-payone, extcode/cart-paypal, -extcode/cart-saverpay, and more to add payment methods to the checkout process.

-
-
-

Features

-
    -
  • makes intensive use of the TYPO3 Core API functionality
  • -
  • very well expandable -- several hooks, signal slots, and interfaces -- API (finisher pipeline) to process the order with possibility to register own tasks -- API to add payment providers -- API to connect your own product extensions
  • -
  • highly configurable through TypoScript
  • -
  • proved Bootstrap templates
  • -
  • backend module to show and utilize orders
  • -
-
-
-

Examples

-
-

Hörgeräte ISMA (hearing aid)

-
-Warenkorb bei Hörgeräte ISMA -
-

www.hoergeraete-isma.de

-
-
-

Weingut Isele (winery)

-
-Warenkorb bei Weingut Isele -
-

www.weingut-isele.de

- -
-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Introduction/NoteOfThanks/Index.html b/Documentation-GENERATED-temp/Cache/html/Introduction/NoteOfThanks/Index.html deleted file mode 100644 index d29d6141..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Introduction/NoteOfThanks/Index.html +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - - - - - - Note of thanks — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Note of thanks

-

A big thank you goes Tritum GmbH for the many hours I was allowed to work on Cart.

-

In particular, I would like to thank Björn. He always has an open ear. He contributed his opinion to many questions -and decisions. Without him, Cart would not be what it is today.

-

Another thanks goes to the testers for their feedback and understanding when I made changes to the data model again and -again.

-

A big thank you also goes out to all the supporters on github.

-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Introduction/Sponsoring/Index.html b/Documentation-GENERATED-temp/Cache/html/Introduction/Sponsoring/Index.html deleted file mode 100644 index 7a7258d8..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Introduction/Sponsoring/Index.html +++ /dev/null @@ -1,367 +0,0 @@ - - - - - - - - - - - - - Sponsoring — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Sponsoring

-

If there is a feature that has not yet been implemented in Cart, you can contact me at any time.

-

There is also the possibility to support the further development independently of new functions.

- -
-

Sponsors

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/Introduction/Support/Index.html b/Documentation-GENERATED-temp/Cache/html/Introduction/Support/Index.html deleted file mode 100644 index 25d9ab2f..00000000 --- a/Documentation-GENERATED-temp/Cache/html/Introduction/Support/Index.html +++ /dev/null @@ -1,370 +0,0 @@ - - - - - - - - - - - - - Support — Shopping Cart(s) for TYPO3 8.0.0 documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - -
-
-
- - -
- - - Next - - - - - - - Previous - - - -
-
-
- -
-

Support

-
-

Slack

-

There is an own channel at the TYPO3 Slack. Please use this cannel to contact us.

-

The URL is: https://typo3.slack.com/messages/ext-cart/

-
-

Note

-

Not registered on Slack? You can join here: http://forger.typo3.org/slack.

-
-
-
-

Support

-

If you need further support, please contact me.

-

This support is not always free!

-
-
- - -
-
- -
-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/_images/CartDashboardWidgets.png b/Documentation-GENERATED-temp/Cache/html/_images/CartDashboardWidgets.png deleted file mode 100644 index 552de77c..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_images/CartDashboardWidgets.png and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_images/List.png b/Documentation-GENERATED-temp/Cache/html/_images/List.png deleted file mode 100644 index abf2beb3..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_images/List.png and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_images/Show.png b/Documentation-GENERATED-temp/Cache/html/_images/Show.png deleted file mode 100644 index 80817ab3..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_images/Show.png and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_images/cart_logo.png b/Documentation-GENERATED-temp/Cache/html/_images/cart_logo.png deleted file mode 100644 index a6e59726..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_images/cart_logo.png and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_images/hoergeraete-isma.de.png b/Documentation-GENERATED-temp/Cache/html/_images/hoergeraete-isma.de.png deleted file mode 100644 index 8e41184a..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_images/hoergeraete-isma.de.png and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_images/weingut-isele.de.png b/Documentation-GENERATED-temp/Cache/html/_images/weingut-isele.de.png deleted file mode 100644 index 1a93a085..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_images/weingut-isele.de.png and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ActionConfiguration/CartController/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ActionConfiguration/CartController/Index.rst.txt deleted file mode 100644 index 933e1b56..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ActionConfiguration/CartController/Index.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -.. include:: ../../../../Includes.txt - -Cart-Controller-Konfiguration -============================= - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - showCartAction/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ActionConfiguration/CartController/showCartAction/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ActionConfiguration/CartController/showCartAction/Index.rst.txt deleted file mode 100644 index dab50d50..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ActionConfiguration/CartController/showCartAction/Index.rst.txt +++ /dev/null @@ -1,69 +0,0 @@ -.. include:: ../../../../../Includes.txt - -showCartAction-Configuration -============================ - -:: - - plugin.tx_cart { - settings { - showCartAction { - showPartials { - couponForm = true - - # if setting shippingAddressForm to false please disable all validations too - shippingAddressForm = true - - shippingMethodForm = true - paymentMethodForm = true - } - - summary { - fields { - cart.net = true - cart.taxes = true - discount.gross = true - service.gross = true - total.gross = true - } - } - } - } - } - -.. container:: table-row - - Property - plugin.tx_cart.settings.showCartAction.showPartials.paymentMethodForm - Data type - boolean - Description - Enables/disables the display and selection of configured payment methods - in the shopping cart. - Default - true - - -.. container:: table-row - - Property - plugin.tx_cart.settings.showCartAction.showPartials.shippingMethodForm - Data type - boolean - Description - Enables/disables the display and selection of configured payment methods - in the shopping cart. - Default - true - -.. container:: table-row - - Property - plugin.tx_cart.settings.showCartAction.showPartials.couponForm - Data type - boolean - Description - Enables/disables the display of coupons in the shopping cart. The block - for the input as well as for the and for the display will be shown/hidden. - Default - true diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ActionConfiguration/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ActionConfiguration/Index.rst.txt deleted file mode 100644 index d6ec3d48..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ActionConfiguration/Index.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -.. include:: ../../../Includes.txt - -Controller-Action-Konfiguration -=============================== - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - CartController/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/AjaxConfiguration/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/AjaxConfiguration/Index.rst.txt deleted file mode 100644 index b7756f01..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/AjaxConfiguration/Index.rst.txt +++ /dev/null @@ -1,28 +0,0 @@ -.. include:: ../../../Includes.txt - -AJAX Configuration -================== - -To add products to the shopping cart via AJAX request, a configuration for a -custom page type is needed, because in this case you don't want to receive the -completely rendered page as response, but only a JSON object, - -:: - - ajaxCart = PAGE - ajaxCart { - typeNum = 2278001 - - config { - disableAllHeaderCode = 1 - xhtml_cleaning = 0 - admPanel = 0 - debug = 0 - no_cache = 1 - } - - 10 < tt_content.list.20.cart_cart - } - -This is the supplied configuration for the shopping cart plugin. Products can -be added to the shopping cart via this page type (2278001). \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Caching/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Caching/Index.rst.txt deleted file mode 100644 index 39c7d831..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Caching/Index.rst.txt +++ /dev/null @@ -1,16 +0,0 @@ -.. include:: ../../../Includes.txt - -Caching -======= - -A separate cache tag is set for all actions of the ProductController. This can -be used to specifically clear the cache of all pages with a product plugin. - -PageTS: - -:: - - # clearCacheCmd for product folder with page id 35 - [globalVar = TSFE:id=35] - TCEMAIN.clearCacheCmd = cacheTag:tx_cart - [end] diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Cart/Checkbox/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Cart/Checkbox/Index.rst.txt deleted file mode 100644 index 46830a1f..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Cart/Checkbox/Index.rst.txt +++ /dev/null @@ -1,122 +0,0 @@ -.. include:: ../../../../Includes.txt - -Checkbox Configuration -====================== - -:: - - plugin.tx_cart { - settings { - cart { - acceptTermsAndConditions.pid = {$plugin.tx_cart.settings.cart.acceptTermsAndConditions.pid} - acceptRevocationInstruction.pid = {$plugin.tx_cart.settings.cart.acceptRevocationInstruction.pid} - acceptPrivacyPolicy.pid = {$plugin.tx_cart.settings.cart.acceptPrivacyPolicy.pid} - } - - validation { - orderItem { - fields { - acceptTermsAndConditions.validator = Boolean - acceptTermsAndConditions.options.is = true - acceptRevocationInstruction.validator = Boolean - acceptRevocationInstruction.options.is = true - acceptPrivacyPolicy.validator = Boolean - acceptPrivacyPolicy.options.is = true - } - } - } - } - } - -.. container:: table-row - - Property - plugin.tx_cart.settings.cart.acceptTermsAndConditions.pid - Data type - int - Description - If a page id is given the translation key *tx_cart_domain_model_order_item.accept_terms_and_conditions_with_link* - will show a checkbox label with a link to the given page. If the value is empty the - *tx_cart_domain_model_order_item.accept_terms_and_conditions_and_conditions* - translation key will be used in frontend. - -.. container:: table-row - - Property - plugin.tx_cart.settings.cart.acceptRevocationInstruction.pid - Data type - int - Description - If a page id is given the translation key *tx_cart_domain_model_order_item.accept_revocation_instruction_with_link* - will show a checkbox label with a link to the given page. If the value is empty the - *tx_cart_domain_model_order_item.accept_revocation_instruction* - translation key will be used in frontend. - -.. container:: table-row - - Property - plugin.tx_cart.settings.cart.acceptPrivacyPolicy.pid - Data type - int - Description - If a page id is given the translation key *tx_cart_domain_model_order_item.accept_privacy_policy_with_link* - will show a checkbox label with a link to the given page. If the value is empty the - *tx_cart_domain_model_order_item.accept_privacy_policy* - translation key will be used in frontend. - -.. container:: table-row - - Property - plugin.tx_cart.settings.validation.orderItem.fields.acceptTermsAndConditions.validator - Data type - string - Description - Add a checkbox for accepting the terms and conditions. If validator is not *Boolean* - the default template wont render a checkbox. - -.. container:: table-row - - Property - plugin.tx_cart.settings.validation.orderItem.fields.acceptTermsAndConditions.options.is - Data type - string - Description - Defines which value is expected for terms and conditions checkbox. - -.. container:: table-row - - Property - plugin.tx_cart.settings.validation.orderItem.fields.acceptRevocationInstruction.validator - Data type - string - Description - Add a checkbox for accepting the revocation instruction. If validator is not *Boolean* - the default template wont render a checkbox. - -.. container:: table-row - - Property - plugin.tx_cart.settings.validation.orderItem.fields.acceptRevocationInstruction.options.is - Data type - string - Description - Defines which value is expected for revocation instruction checkbox. - -.. container:: table-row - - Property - plugin.tx_cart.settings.validation.orderItem.fields.acceptPrivacyPolicy.validator - Data type - string - Description - Add a checkbox for accepting the rprivacy policy. If validator is not *Boolean* - the default template wont render a checkbox. - -.. container:: table-row - - Property - plugin.tx_cart.settings.validation.orderItem.fields.acceptPrivacyPolicy.options.is - Data type - string - Description - Defines which value is expected for privacy policy checkbox. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Cart/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Cart/Index.rst.txt deleted file mode 100644 index 68fe93d5..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Cart/Index.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -.. include:: ../../../Includes.txt - -Cart Configuration -================== - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - Checkbox/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/CurrencyTranslationConfiguration/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/CurrencyTranslationConfiguration/Index.rst.txt deleted file mode 100644 index a8e324cf..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/CurrencyTranslationConfiguration/Index.rst.txt +++ /dev/null @@ -1,82 +0,0 @@ -.. include:: ../../../Includes.txt - -Currency Translation Configuration -================================== - -If you want to allow the user to display the prices in a different currency in the store, you can configure this via TypoScript. - -:: - - plugin.tx_cart { - settings { - currencies { - default = 1 - 1 { - code = EUR - sign = € - translation = 1.00 - } - } - } - } - -.. container:: table-row - - Property - plugin.tx_cart.settings.currency.default - Data type - int - Description - Defines with which the default currency of a new shopping cart should be. - Default - 1 - -.. container:: table-row - - Property - plugin.tx_cart.settings.currency.n - Data type - array - Description - List of the different currencies available. - -.. container:: table-row - - Property - plugin.tx_cart.settings.currency.n.code - Data type - array - Description - Three-digit international currency code according - to `ISO 4217 (Wikipedia) `_. - This is among other things for different payment providers and as a - parameter for changing the currency in the shopping cart. - Default - EUR - -.. container:: table-row - - Property - plugin.tx_cart.settings.currency.n.sign - Data type - array - Description - Currency symbol, if available for the currency. - Default - € - -.. container:: table-row - - Property - plugin.tx_cart.settings.currency.n.translation - Data type - array - Description - Currency conversion factor. The price of the products is divided by this factor. - Default - 1.0 - -.. NOTE:: - At the moment there is no automatism to update the factor and adjust it to a - current value. With scheduler task, it should be possible to connect a - corresponding service quite quickly. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/FormatConfiguration/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/FormatConfiguration/Index.rst.txt deleted file mode 100644 index 576f557e..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/FormatConfiguration/Index.rst.txt +++ /dev/null @@ -1,26 +0,0 @@ -.. include:: ../../../Includes.txt - -Currency Format Configuration -============================= - -To make the templates a bit easier to use, TypoScript can be used to configure -the format specifications for the price output. -These TypoScript specifications are then used in the -ViewHelper. - -:: - - plugin.tx_cart { - settings { - format { - currency { - currencySign = € - decimalSeparator = , - thousandsSeparator = . - prependCurrency = false - separateCurrency = true - decimals = 2 - } - } - } - } diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Index.rst.txt deleted file mode 100644 index 8789258f..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Index.rst.txt +++ /dev/null @@ -1,19 +0,0 @@ -.. include:: ../../Includes.txt - -Configuration -============= - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - Main/Index - Cart/Index - Order/Index - FormatConfiguration/Index - PaymentMethods/Index - ShippingMethods/Index - CurrencyTranslationConfiguration/Index - ActionConfiguration/Index - AjaxConfiguration/Index - Caching/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Main/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Main/Index.rst.txt deleted file mode 100644 index e6ad502f..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Main/Index.rst.txt +++ /dev/null @@ -1,102 +0,0 @@ -.. include:: ../../../Includes.txt - -Main Configuration -================== - -:: - - plugin.tx_cart { - settings { - cart { - pid = - isNetCart = - } - order { - pid = - } - - addToCartByAjax = 2278001 - - autoGenerateNumbers = order - - itemsPerPage = 25 - } - } - -.. container:: table-row - - Property - plugin.tx_cart.settings.cart.pid - Data type - string - Description - Defines the page where the cart plugin is located. This is needed to put - products in the right shopping cart. If settings.addToCartByAjax isn't - set, the add to cart action will forwards the user to this page. - -.. container:: table-row - - Property - plugin.tx_cart.settings.cart.isNetCart - Data type - boolean - Description - Defines whether the shopping cart should be treated as a net shopping - cart. If the shopping cart is a net shopping cart, the price calculations - are all carried out and displayed on the net prices of the products, - otherwise the calculations are made with the gross prices. - -.. container:: table-row - - Property - plugin.tx_cart.settings.order.pid - Data type - string - Description - Specifies the folder in which the orders should be stored. - -.. container:: table-row - - Property - plugin.tx_cart.settings.addToCartByAjax - Data type - int - Description - Activates the option to add products via AJAX action. There is no - forwarding to the shopping cart page. The value is used as typeNum in - the default templates of extcode/cart-books, extcode/cart-events, - extcode/cart-products and other product extensions. - The response can used to display messages or update the MiniCart-Plugin. - Default - 2278001 - -.. container:: table-row - - Property - plugin.tx_cart.settings.autoGenerateNumbers - Data type - comma seperated string - Description - During the order process, the `\Extcode\Cart\Event\Order\NumberGeneratorEvent` - is triggered. Generally, the order number is to be generated here. - By adding further values like "invoice" and/or "delivery" these numbers - will also be generated and saved directly after the order. - Further values are also allowed. For this case then own EventListener must - be registered. - If the configuration is empty, all EventListener registered in - extcode/cart on this event will be executed and appropriate numbers will - be generated. - Default - order - -.. container:: table-row - - Property - plugin.tx_cart.settings.itemsPerPage and/or - module.tx_cart.settings.itemsPerPage - Data type - int - Description - Defines how many records should be displayed per page in the list action. - Default - The default value is 20 if there is no TypoScript configuration. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Order/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Order/Index.rst.txt deleted file mode 100644 index bf659712..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Order/Index.rst.txt +++ /dev/null @@ -1,11 +0,0 @@ -.. include:: ../../../Includes.txt - -Order Configuration -=================== - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - Mail/Index - NumberGeneratorConfiguration/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Order/Mail/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Order/Mail/Index.rst.txt deleted file mode 100644 index 0ad5eb94..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Order/Mail/Index.rst.txt +++ /dev/null @@ -1,147 +0,0 @@ -.. include:: ../../../../Includes.txt - -Email Configuration -==================== - -Email addresses must be configured for sending emails. This can be done in the backend via the plugin, -but also configured via TypoScript. - -:: - - plugin.tx_cart { - mail { - buyer { - fromAddress = cart.buyer.sender@extco.de - ccAddress = cart.buyer.cc1@extco.de, cart.buyer.cc2@extco.de - bccAddress = cart.buyer.bcc1@extco.de, cart.buyer.bcc2@extco.de - replyToAddress = cart.buyer.reply@extco.de - attachments { - 1 = EXT:theme_cart/Resources/Public/Files/AGB.pdf - } - } - seller { - fromAddress = cart.seller.sender@extco.de - toAddress = cart.seller.to1@extco.de, cart.seller.to2@extco.de - ccAddress = cart.seller.cc1@extco.de, cart.seller.cc2@extco.de - bccAddress = cart.seller.bcc1@extco.de, cart.seller.bcc2@extco.de - } - } - } - -.. container:: table-row - - Property - plugin.tx_cart.mail.buyer.fromAddress - Data type - string - Description - Defines from which sender address the e-mails are sent to the buyer. - -.. container:: table-row - - Property - plugin.tx_cart.mail.buyer.ccAddress - Data type - string - Description - Defines to which addresses the e-mail should be sent in CC (Carbon Copy). - Multiple recipients can be given separated by commas. - -.. container:: table-row - - Property - plugin.tx_cart.mail.buyer.bccAddress - Data type - string - Description - Defines to which addresses the e-mail should be sent in BCC (Blind Carbon Copy). - Multiple recipients can be given separated by commas. - -.. container:: table-row - - Property - plugin.tx_cart.mail.buyer.replyToAddress - Data type - string - Description - Defines to which address should be used as Reply To. - This will override the ['MAIL']['defaultMailReplyToAddress'] configuration. - -.. container:: table-row - - Property - plugin.tx_cart.mail.buyer.attachments.n - Data type - array - Description - Defines one or more e-mail attachments to be sent to the buyer. - These can be, for example, documents with the general terms and conditions. - -.. container:: table-row - - Property - plugin.tx_cart.mail.buyer.attachDocuments.n - Data type - array - Description - Defines one or more e-mail attachments of the generated PDF documents to be sent to the buyer. - This can be the order confirmation, the invoice or a separate document. - -.. container:: table-row - - Property - plugin.tx_cart.mail.seller.fromAddress - Data type - string - Description - Defines from which sender address the e-mails are sent to the seller/shop operator. - -.. container:: table-row - - Property - plugin.tx_cart.mail.seller.toAddress - Data type - string - Description - Defines to which recipient addresses the e-mails to the seller/shop operator are sent. - Multiple recipients can be given separated by commas. - -.. container:: table-row - - Property - plugin.tx_cart.mail.buyer.ccAddress - Data type - string - Description - Defines to which addresses the e-mail should be sent in CC (Carbon Copy). - Multiple recipients can be given separated by commas. - -.. container:: table-row - - Property - plugin.tx_cart.mail.buyer.bccAddress - Data type - string - Description - Defines to which addresses the e-mail should be sent in BCC (Blind Carbon Copy). - Multiple recipients can be given separated by commas. - -.. container:: table-row - - Property - plugin.tx_cart.mail.seller.attachments.n - Data type - array - Description - Defines one or more e-mail attachments to be sent to the seller. - These can be, for example, documents with the general terms and conditions. - -.. container:: table-row - - Property - plugin.tx_cart.mail.seller.attachDocuments.n - Data type - array - Description - Defines one or more e-mail attachments of the generated PDF documents to be sent to the seller. - This can be the order confirmation, the invoice or a separate document. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Order/NumberGeneratorConfiguration/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Order/NumberGeneratorConfiguration/Index.rst.txt deleted file mode 100644 index ed587d74..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/Order/NumberGeneratorConfiguration/Index.rst.txt +++ /dev/null @@ -1,81 +0,0 @@ -.. include:: ../../../../Includes.txt -.. _number-generator-configuration: - -Number Generator Configuration -============================== - -Order, invoice and delivery note numbers are created by EventListeners and -stored at the order. These can be configured and thus customized via options -when registering the EventListeners. -The options offer the possibility to add a prefix or suffix to the numbers, -to give an offset to let the first number start at e.g. 10001. Furthermore -you can define via the format how many leading zeros should be used in the -order number. -As in extcode/cart 7.x, the respective counter is stored and updated in -the `sys_registry`-table. - -Folgende Optionen stehen zur Verfügung - -.. container:: table-row - - Property - options:prefix - Data type - string - Description - The prefix is put in front of the generated number. - -.. container:: table-row - - Property - opions:suffix - Data type - string - Description - The suffix is appended to the generated number. - -.. container:: table-row - - Property - opions:offset - Data type - integer - Description - The offset is always added to the counter in the database. - -.. container:: table-row - - Property - opions:format - Data type - string - Description - The format can be used to add leading zeros to the generated number. - - -An examples make the usage clear. -The configuration via the options is the same for all numbers using the -`generateNumber()` method from the `\Extcode\Cart\EventListener\Order\Create\Number`. -The new counter for the order number should be 23: - -:: - - services: - - Extcode\Cart\EventListener\Order\Create\OrderNumber: - arguments: - $persistenceManager: '@TYPO3\CMS\Extbase\Persistence\Generic\PersistenceManager' - $options: - prefix: 'DEMO-' - suffix: '-SHOP' - offset: 10000 - format: "%09d" - tags: - - name: event.listener - identifier: 'cart--order--create--order-number' - event: Extcode\Cart\Event\Order\NumberGeneratorEvent - after: 'cart--order--create--order' - -The generated order number would look like this: DEMO-000010023-SHOP. - - diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/PaymentMethods/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/PaymentMethods/Index.rst.txt deleted file mode 100644 index 174cad8f..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/PaymentMethods/Index.rst.txt +++ /dev/null @@ -1,175 +0,0 @@ -.. include:: ../../../Includes.txt - -Payment methods -=============== - -The payment methods are defined via TypoScript for each shopping cart. -The standard template already includes a payment method (prepayment). - -With the definition plugin.tx_cart.settings.allowedCountries the output of -the selector in the shopping cart is defined. The options can also be -translated by an own SelectViewhelper. - -.. important:: - The provided TypoScript of the extension provides a configuration and - translation for the German-speaking area. - -The parameter plugin.tx_cart.settings.defaultCountry defines which country -should be preselected. - -.. important:: - If different payment methods are defined for different countries, the - selection of the invoice address is used for the permitted payment methods. - The country of the shipping address, even if a different shipping address - was specified, is not used. - -.. container:: table-row - - Property - plugin.tx_cart.payments.countries.de.options.n.free.from - Data type - float - Description - If the gross price of the products is greater than or equal to the - specified value, the price for the payment method is 0.00. - -.. container:: table-row - - Property - plugin.tx_cart.payments.countries.de.options.n.free.until - Data type - float - Description - If the gross price of the products is less than or equal to the - specified value, the price for the payment method is 0.00. - -.. container:: table-row - - Property - plugin.tx_cart.payments.countries.de.options.n.fallBackId - Data type - int - Description - If the payment method is not available, the payment method with - this ID is used. - -.. container:: table-row - - Property - plugin.tx_cart.payments.countries.de.options.n.available.from - Data type - float - Description - This payment method is only available if the gross price of the products - is greater than or equal to the specified value, otherwise the fallback - payment method is used. - -.. container:: table-row - - Property - plugin.tx_cart.payments.countries.de.options.n.available.until - Data type - float - Description - This payment method is only available if the gross price of the products - is less than or equal to the specified value, otherwise the fallback - payment method is used. - -.. container:: table-row - - Property - plugin.tx_cart.payments.countries.de.options.n.redirects.success.url - Data type - Text - Description - If the redirect URL is configured for the payment method used for an - order, the system redirects to the specified URL after a successful - order instead of displaying the confirmation page. - -Zone configuration -"""""""""""""""""" - -If no individual country configuration can be found, it is also possible to -work with zones in the TypoScript. -This saves a lot of configuration work if you want to deliver to many -countries. - -:: - - plugin.tx_cart { - payments { - zones { - 1 { - preset = 1 - countries = de,at,ch - options { - 1 { - title = Vorkasse - extra = 0.00 - taxClassId = 1 - status = open - } - } - } - } - } - } - -.. container:: table-row - - Property - plugin.tx_cart.payments.zones.n - Data type - int - Description - You can configure up to n different zones. - -.. container:: table-row - - Property - plugin.tx_cart.payments.zones.n.countries - Data type - int - Description - List of countries for which this configuration is valid. - -.. NOTE:: - * The system first searches for a suitable configuration in the list of country configurations. - * The list of zone configurations is then looked through. The first matching configuration is used. - -Deactivate payment methods -"""""""""""""""""""""""""" - -At the moment, the processing does not allow to completely dispense with the -payment methods. A payment method must always be specified be specified. If -there is only one payment method, the selection block can be hidden. - -:: - - plugin.tx_cart { - settings { - showCartAction { - showPartials { - paymentMethodForm = false - } - } - } - } - -.. container:: table-row - - Property - plugin.tx_cart.settings.showCartAction.showPartials.paymentMethodForm - Data type - boolean - Description - Enables/disables the display and selection of configured payment methods - in the shopping cart. - Default - true - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - MainConfiguration/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/PaymentMethods/MainConfiguration/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/PaymentMethods/MainConfiguration/Index.rst.txt deleted file mode 100644 index e71379d1..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/PaymentMethods/MainConfiguration/Index.rst.txt +++ /dev/null @@ -1,98 +0,0 @@ -.. include:: ../../../../Includes.txt - -Main configuration -================== - -:: - - plugin.tx_cart { - settings { - allowedCountries { - de = Deutschland - at = Österreich - ch = Schweiz - } - defaultCountry = de - } - - payments { - countries { - de { - preset = 1 - options { - 1 { - title = Vorkasse - extra = 0.00 - taxClassId = 1 - status = open - } - } - } - at < .de - ch < .de - } - } - } - -.. container:: table-row - - Property - plugin.tx_cart.payments.countries.de.preset - Data type - int - Description - Defines which payment method is selected by default if the user has not yet selected a different payment method. - If the payment method is not defined when changing the country of account, the payment method defined here for the country of invoice will also be selected. - -.. container:: table-row - - Property - plugin.tx_cart.payments.countries.de.options.N - Data type - array - Description - You can configure N different payment methods. - Default - options.1 - -.. container:: table-row - - Property - plugin.tx_cart.payments.countries.de.options.N.title - Data type - string - Description - Name of the payment method (e.g.: prepayment, cash on delivery). - -.. container:: table-row - - Property - plugin.tx_cart.payments.countries.de.options.n.extra - Data type - float - Description - Costs for the payment method to be billed to the customer (for example, 1.50). - The currency depends on the standard configuration. - Default - 0.00 - -.. container:: table-row - - Property - plugin.tx_cart.payments.countries.de.options.n.taxClassId - Data type - int - Description - ID of the tax class for this payment method. The taxClassId must either be assignable to a defined tax class. - However, the values `-1` and `-2` are also allowed here. - `-1` The tax class for the calculation is based on the largest tax class of the products in the shopping cart. - `-2` The taxes are calculated as a percentage of the tax of the products in the shopping cart. - -.. container:: table-row - - Property - plugin.tx_cart.payments.countries.de.options.n.status - Data type - string - Description - The status that the order with this payment method should have by default. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ShippingMethods/FlexPrices/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ShippingMethods/FlexPrices/Index.rst.txt deleted file mode 100644 index 3ea8294c..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ShippingMethods/FlexPrices/Index.rst.txt +++ /dev/null @@ -1,138 +0,0 @@ -.. include:: ../../../../Includes.txt - -.. _configuration_shipping_method_flex_price: - -Flex Prices -=========== - -Sometimes you won't configure fix prices for an service methods. Especially the shipping costs can -depend on the amount of products in cart. The cart extension provides a service interface and a -default implementation which can handle different kinds of dependencies. -A common condition is the amount of physical products in cart. - -:: - - plugin.tx_cart { - shippings { - countries { - de { - preset = 1 - options { - 1 { - title = Standard - - extra = by_price - extra { - 1 { - value = 0.00 - extra = 1.50 - } - 2 { - value = 5.00 - extra = 3.00 - } - 3 { - value = 10.00 - extra = 4.00 - } - 4 { - value = 80.00 - extra = 5.00 - } - } - taxClassId = 1 - status = open - } - } - } - at < .de - ch < .de - } - } - } - -.. container:: table-row - - Property - plugin.tx_cart.shipping.countries.de.options.N.extra - Data type - string - Description - * by_price - * by_price_of_physical_products - * by_quantity - * by_number_of_physical_products - * by_number_of_virtual_products - * by_number_of_all_products - * by_service_attribute_1_sum - * by_service_attribute_1_max - * by_service_attribute_2_sum - * by_service_attribute_2_max - * by_service_attribute_3_sum - * by_service_attribute_3_max - -.. container:: table-row - - Property - plugin.tx_cart.shipping.countries.de.options.N.extra.M.value - Data type - int - Description - Defines the matching condition. - -.. container:: table-row - - Property - plugin.tx_cart.shipping.countries.de.options.N.extra.M.extra - Data type - float - Description - Defines the extra value. - -Extending Service Calculation ------------------------------ - -Sometimes the shipping method has some special rules. -In Germany the Post provides the so called "Bücherversand" for books. Some rules -apply to this shipping method. - -- The weight is included in the price calculation. -- Certain lengths and widths must not be exceeded. -- Furthermore only books may be sent. - -Such special rules cannot be mapped using TypoScript configurations. Therefore, a -separate service class can be implemented for a method, which can then return the -calculated price to the shopping cart. - -:: - - plugin.tx_cart { - shippings { - countries { - de { - preset = 1 - options { - 1 { - title = Standard - className = \\MyVendor\\MyExtension\\MyShippingService - taxClassId = 1 - status = open - } - } - } - } - } - } - -.. container:: table-row - - Property - plugin.tx_cart.shipping.countries.de.options.N.className - Data type - string - Description - Defines the class which implements the `\Extcode\Cart\Domain\Model\Cart\ServiceInterface`. - This allows you to implement your own service cost calculation per service method. - A valid case is, that you have to decide between `serviceAttribute1` (e.g. weight) and - `service_attribute2` (e.g. size). This is not configurable through TypoScript and heighly - depends on your delivery service. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ShippingMethods/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ShippingMethods/Index.rst.txt deleted file mode 100644 index be17b455..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ShippingMethods/Index.rst.txt +++ /dev/null @@ -1,168 +0,0 @@ -.. include:: ../../../Includes.txt - -Shipping methods -================ - -The shipping methods are defined via TypoScript for each shopping cart. -The standard template already comes with a shipping method (standard). - -With the definition plugin.tx_cart.settings.allowedCountries the output of -the selector in the shopping cart is defined. The options can also be -translated by an own SelectViewhelper. - -.. important:: - The provided TypoScript of the extension provides a configuration and - translation for the German-speaking area. - -The parameter plugin.tx_cart.settings.defaultCountry defines which country -should be preselected. - -.. important:: - If different shipping methods are defined for different countries, the - country of the delivery address is used. Only in the case that no different - delivery address has been specified, the selection of the billing address - is used as a basis. - -.. container:: table-row - - Property - plugin.tx_cart.shippings.countries.de.options.n.free.from - Data type - float - Description - If the gross price of the products is greater than or equal to the - specified value, the price for the shipping method is 0.00. - This can be used for free shipping from a defined order value. - -.. container:: table-row - - Property - plugin.tx_cart.shippings.countries.de.options.n.free.until - Data type - float - Description - If the gross price of the products is less than or equal to the specified - value, the price for the shipping method is 0.00. - -.. container:: table-row - - Property - plugin.tx_cart.shippings.countries.de.options.n.available.from - Data type - Text - Description - Only if the gross price of the products is greater than or equal to the - specified value, this shipping method is available, otherwise the - fallback shipping method will be used. - -.. container:: table-row - - Property - plugin.tx_cart.shippings.countries.de.options.n.available.until - Data type - Text - Description - Only if the gross price of the products is less than or equal to the - specified value, this shipping method is available, otherwise the - fallback shipping method will be used. - -.. container:: table-row - - Property - plugin.tx_cart.shippings.countries.de.options.n.fallBackId - Data type - Text - Description - If the shipping method is not available, the shipping method with this - ID will be used. - -Zone configuration -"""""""""""""""""" - -If no individual country configuration can be found, it is also possible to -work with zones in the TypoScript. -This saves a lot of configuration work if you want to deliver to many -countries. - -:: - - plugin.tx_cart { - shippings { - zones { - 1 { - preset = 1 - countries = de,at,ch - options { - 1 { - title = Standard - extra = 0.00 - taxClassId = 1 - status = open - } - } - } - } - } - } - -| - -.. container:: table-row - - Property - plugin.tx_cart.shippings.zones.n - Data type - int - Description - You can configure up to n different zones. - -.. container:: table-row - - Property - plugin.tx_cart.shippings.zones.n.countries - Data type - int - Description - List of countries for which this configuration is valid. - -.. NOTE:: - * The system first searches for a suitable configuration in the list of country configurations. - * The list of zone configurations is then looked through. The first matching configuration is used. - -Deactivate shipping methods -""""""""""""""""""""""""""" - -At the moment, the processing does not allow to completely dispense with the -shipping methods. A shipping method must always be be specified. If there is -only one shipping method, the selection block can be hidden. - -:: - - plugin.tx_cart { - settings { - showCartAction { - showPartials { - shippingMethodForm = false - } - } - } - } - -.. container:: table-row - - Property - plugin.tx_cart.settings.showCartAction.showPartials.shippingMethodForm - Data type - boolean - Description - Enables/disables the display and selection of configured shipping methods - in the shopping cart. - Default - true - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - MainConfiguration/Index - FlexPrices/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ShippingMethods/MainConfiguration/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ShippingMethods/MainConfiguration/Index.rst.txt deleted file mode 100644 index 3bcfb38f..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Configuration/ShippingMethods/MainConfiguration/Index.rst.txt +++ /dev/null @@ -1,99 +0,0 @@ -.. include:: ../../../../Includes.txt - -Main configuration -================== - -:: - - plugin.tx_cart { - settings { - allowedCountries { - de = Deutschland - at = Österreich - ch = Schweiz - } - defaultCountry = de - } - - shippings { - countries { - de { - preset = 1 - options { - 1 { - title = Standard - extra = 0.00 - taxClassId = 1 - status = open - } - } - } - at < .de - ch < .de - } - } - } - -.. container:: table-row - - Property - plugin.tx_cart.shippings.countries.de.preset - Data type - int - Description - Defines which shipping method is selected by default if the user has not yet selected another shipping method. - If the shipping method is not defined when the destination country is changed, the shipping method defined here for the destination country is also selected. - -.. container:: table-row - - Property - plugin.tx_cart.shippings.countries.de.options.n - Data type - array - Description - You can configure N different shipping methods. - Default - options.1 - -.. container:: table-row - - Property - plugin.tx_cart.shippings.countries.de.options.n.title - Data type - string - Description - Name of the shipping type (for example: Standard, Express). - -.. container:: table-row - - Property - plugin.tx_cart.shippings.countries.de.options.n.extra - Data type - float - Description - Shipping costs that are to be billed to the customer (for example: 1.50). - The currency depends on the standard configuration. - Default - 0.00 - -.. container:: table-row - - Property - plugin.tx_cart.shippings.countries.de.options.n.taxClassId - Data type - int - Description - ID of the tax class for this payment method. The taxClassId must either be assignable to a defined tax class. - However, the values `-1` and `-2` are also allowed here. - `-1` The tax class for the calculation is based on the largest tax class of the products in the shopping cart. - `-2` The taxes are calculated as a percentage of the tax of the products in the shopping cart. - -.. container:: table-row - - Property - plugin.tx_cart.shippings.countries.de.options.n.status - Data type - string - Description - The status that the order with this shipping method should have by default. - diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Index.rst.txt deleted file mode 100644 index 6ce92e5c..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Index.rst.txt +++ /dev/null @@ -1,11 +0,0 @@ -.. include:: ../Includes.txt - -Administrator Manual -==================== - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - Installation/Index - Configuration/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Installation/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Installation/Index.rst.txt deleted file mode 100644 index ead7b3db..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/AdministratorManual/Installation/Index.rst.txt +++ /dev/null @@ -1,57 +0,0 @@ -.. include:: ../../Includes.txt - -Installation -============ - -Installation using composer ---------------------------- - -The recommended way to install the extension is by using `Composer `_. -In your composer based TYPO3 project root, just do - -`composer require extcode/cart`. - -Installation from TYPO3 Extension Repository (TER) --------------------------------------------------- - -Download and install the extension with the extension manager module. - -Latest version from git ------------------------ -You can get the latest version from git by using the git command: - -:: - - git clone git@github.com:extcode/cart.git - -Preparation: Include static TypoScript --------------------------------------- - -The extension ships some TypoScript code which needs to be included. - -#. Switch to the root page of your site. - -#. Switch to the **Template module** and select *Info/Modify*. - -#. Press the link **Edit the whole template record** and switch to the tab *Includes*. - -#. Select **Shopping Cart - Cart** at the field *Include static (from extensions):* - -Product Database / Product Storages ------------------------------------ - -Cart itself doesn't provide any product database or product storage. You can use your own -product table or one of the product extension that I implemented for some use cases. - -============================== ===================================================================================== ================================================================= -extension key composer package github repository -============================== ===================================================================================== ================================================================= -cart_books `extcode/cart-books `_ `extcode/cart_books `_ -cart_events `extcode/cart-events `_ ``_ -cart_events_plus --- --- -cart_gift_cards --- --- -cart_product `extcode/cart-products `_ ``_ -============================== ===================================================================================== ================================================================= - -For own product storages you have to implement the \Extcode\Cart\Domain\Finisher\Cart\AddToCartFinisherInterface. -Please have a look at `Hooks <../../DeveloperManual/Hooks/Index.html>`__ diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/5.0/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/5.0/Index.rst.txt deleted file mode 100644 index fdd4de86..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/5.0/Index.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -.. include:: ../../Includes.txt - -5.0 Changes -=========== - -The version 5.0.0 is a release for TYPO3 v8.7 only and skipped for TYPO3 v9. `Release information for 6.0.0 - 30.11.2018 <6.0.0.html>`_. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.0/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.0/Index.rst.txt deleted file mode 100644 index 075aa8c8..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.0/Index.rst.txt +++ /dev/null @@ -1,139 +0,0 @@ -.. include:: ../../Includes.txt - -6.0 Changes -=========== - -.. IMPORTANT:: - **If upgrading from cart version 4.8.1 or earlier: Please read the documentation very carefully! Please make a backup of your filesystem and database!** If possible test the update in a test copy of your TYPO3 instance. - -Extracting products to an own cart_products extension -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -In the last month, there where a lot of projects where the product table was extended -to the customer needs. In some cases I come to the result that an own product model -respecting the customer domain would be a better solution. -So I decided to extract all product related code to an own extension. If you updating -from Cart v4.x you have to install the cart_products extension as well. - -**1. migrate database tables** - -.. code-block:: sql - - RENAME TABLE tx_cart_domain_model_product_product TO tx_cartproducts_domain_model_product_product; - RENAME TABLE tx_cart_domain_model_product_specialprice TO tx_cartproducts_domain_model_product_specialprice; - RENAME TABLE tx_cart_domain_model_product_quantitydiscount TO tx_cartproducts_domain_model_product_quantitydiscount; - RENAME TABLE tx_cart_domain_model_product_bevariantattribute TO tx_cartproducts_domain_model_product_bevariantattribute; - RENAME TABLE tx_cart_domain_model_product_bevariantattributeoption TO tx_cartproducts_domain_model_product_bevariantattributeoption; - RENAME TABLE tx_cart_domain_model_product_bevariant TO tx_cartproducts_domain_model_product_bevariant; - RENAME TABLE tx_cart_domain_model_product_fevariant TO tx_cartproducts_domain_model_product_fevariant; - RENAME TABLE tx_cart_domain_model_product_tag TO tx_cart_domain_model_tag; - RENAME TABLE tx_cart_domain_model_product_coupon TO tx_cart_domain_model_coupon; - RENAME TABLE tx_cart_domain_model_product_product_related_mm TO tx_cartproducts_domain_model_product_product_related_mm; - RENAME TABLE tx_cart_domain_model_product_tag_mm TO tx_cartproducts_domain_model_product_tag_mm; - - ALTER TABLE tx_cart_domain_model_order_address ADD record_type VARCHAR(255) DEFAULT '' NOT NULL; - ALTER TABLE tx_cart_domain_model_order_address ADD tax_identification_number VARCHAR(255) DEFAULT '' NOT NULL; - - ALTER TABLE tt_content CHANGE COLUMN tx_cart_domain_model_product_product tx_cartproducts_domain_model_product_product int(11) unsigned DEFAULT '0' NOT NULL; - -**2. update cart and install cart_products** - -Update cart and install cart_product using composer or the update in the extension manager. -Include new TypoScript of cart_products. - -**3. migrate some more the database tables** - -.. code-block:: sql - - UPDATE tx_cart_domain_model_order_address SET record_type="\Extcode\Cart\Domain\Model\Order\BillingAddress" WHERE discr="billing"; - UPDATE tx_cart_domain_model_order_address SET record_type="\Extcode\Cart\Domain\Model\Order\ShippingAddress" WHERE discr="shipping"; - - UPDATE sys_file_reference SET tablenames="tx_cartproducts_domain_model_product_product" WHERE tablenames="tx_cart_domain_model_product_product"; - - UPDATE sys_category_record_mm SET tablenames="tx_cartproducts_domain_model_product_product",fieldname="category" WHERE tablenames="tx_cart_domain_model_product_product" AND fieldname="main_category"; - UPDATE sys_category_record_mm SET tablenames="tx_cartproducts_domain_model_product_product" WHERE tablenames="tx_cartproducts_domain_model_product_product" AND fieldname="categories"; - -**4. update all plugins** - -The code summarized different parts of the business logic into a few controller classes. This results in big controller -classes. I decided to split them up in more smaller classes. For an example the updateCountryAction in the the -CartController class was moved to the Cart\CountryController and renamed to updateAction. This encapsulate one part of -the business logic to an controller and thus allows better expandability. -But that has the consequence that all used plugins has to be updated. The update can't be done by a simple query statement. -The following query can help you to find the pages where the plugins are installed. - -.. code-block:: sql - - SELECT tt_content.uid, tt_content.pid, pages.title FROM tt_content LEFT JOIN pages ON tt_content.pid = pages.uid WHERE list_type LIKE "cart_%"; - - -It gives you the uid of the *tt_content* element, the page id and the title of the page. You have to update all the plugins -manually through the backend. - -A second consequence are the changes in the Templates and Partials directories. The template files was moved to some -subdirectories and the links to controller actions was changed. If you have own cart templates you have to move the -files too. - -**5. change checkboxes for acceptTermsAndConditions, acceptRevocationInstruction, and acceptPrivacyPolicy** - -In order to link all the documents and get all agreements checked by an own checkbox the two checkboxes -acceptTerms and acceptConditions was summarized in the new acceptTermsAndConditions checkbox. I add two more checkboxes. -One is the agreement to have read and accept the revocation instructions. And the last is for the privace policy. -If you changed the translations or hide one of the old ones, you have to change the TypoScript configuration and -translation for the new ones. - -:: - - plugin.tx_cart { - settings { - validation { - orderItem { - fields { - acceptTermsAndConditions.validator = Boolean - acceptTermsAndConditions.options.is = true - acceptRevocationInstruction.validator = Boolean - acceptRevocationInstruction.options.is = true - acceptPrivacyPolicy.validator = Boolean - acceptPrivacyPolicy.options.is = true - } - } - } - } - } - -For more information see: `Checkbox Configuration <../../AdministratorManual/Configuration/Cart/Checkbox/Index.html>`__ - -**6. check used hooks and signal slots** - -If you extend or override classes, use hooks or signal slots you have to check them carefully. They can be removed or -moved to another location. - -Sortierung von Frontend- und Backendvarianten -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -In der Produktkonfiguration können die Frontend und Backendvarianten sortiert werden. - -.. IMPORTANT:: - Es ist eine Aktualisierung der Datenbank erforderlich. Da dieses Feld neu hinzu kommt sind keine Probleme zu erwarten. - -Speichern des Rechungs- und Versandländercodes in den Bestelldaten -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -In der Bestellung werden nun die Ländercodes aus dem TypoScript gespeichert, um in der späteren Verarbeitung auf die -richtige Konfiguration zugreifen zu können. - -.. IMPORTANT:: - Es ist eine Aktualisierung der Datenbank erforderlich. Da dieses Feld neu hinzu kommt sind keine Probleme zu erwarten. - -#59 und #64 Füllen der Rechnungs- und Lieferadresse mit Nutzerdaten -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -In der showCartAction des Warenkorbplugins wird nun ein Hook *showCartActionAfterCartWasLoaded* bereitgestellt, der -es erlaubt, neben zusätzlichen Änderungen im Warenkorb auch die Rechnungs- und Lieferadresse mit Daten eines -eingeloggten Nutzers vorauszufüllen. - -.. IMPORTANT:: - Ein Vorausfüllen der Adressfelder mit Daten aus einem eingeloggten Frontend Benutzer wird es nicht geben. - Zum einen ist das nicht in jedem Fall gewünscht, zum anderen müsste das FrontendUser Model erweitert werden, - um alle relevanten Daten eines Nutzers speichern zu können. Oft werden diese Felder schon an anderer Stelle - bereitgestellt. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Feature-223-AddAddToCartFormFrameworkFinisher.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Feature-223-AddAddToCartFormFrameworkFinisher.rst.txt deleted file mode 100644 index 40d7ed32..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Feature-223-AddAddToCartFormFrameworkFinisher.rst.txt +++ /dev/null @@ -1,19 +0,0 @@ -.. include:: ../../Includes.txt - -===================================================== -Feature: #223 - Add addToCart form framework finisher -===================================================== - -See :issue:`223` - -Description -=========== - -In order to allow to individualize products when adding them to the cart, a new addToCart finisher for the form framework -allow to load a form and submit the form with the selected product. The fields are handled as frontend variants in the -cart product. They have no intended impact on the price or stock handling. - -This feature supports all product extension but it's implemented for cart_events first. It allows to use different forms -to get some more information from the participants like first and last name, twitter handle or preferred food. - -.. index:: API, Frontend, Backend, JavaScript diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Feature-231-AddViewHelperToShowAdditionalDataInViews.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Feature-231-AddViewHelperToShowAdditionalDataInViews.rst.txt deleted file mode 100644 index 3d0d1c59..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Feature-231-AddViewHelperToShowAdditionalDataInViews.rst.txt +++ /dev/null @@ -1,15 +0,0 @@ -.. include:: ../../Includes.txt - -============================================================== -Feature: #231 - Add ViewHelper to show additionalData in views -============================================================== - -See :issue:`231` - -Description -=========== - -Some order data will be saved as JSON to the database. -In order show a value from this JSON object cart now provides a ViewHelper. - -.. index:: Frontend, Fluid diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Important-226-FixAcceptTermsAndConditionsLabel.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Important-226-FixAcceptTermsAndConditionsLabel.rst.txt deleted file mode 100644 index f35e18fb..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Important-226-FixAcceptTermsAndConditionsLabel.rst.txt +++ /dev/null @@ -1,14 +0,0 @@ -.. include:: ../../Includes.txt - -======================================================= -Important: #226 - Fix accept_terms_and_conditions label -======================================================= - -See :issue:`226` - -Description -=========== - -Fix translation in :file:`Resources/Private/Partials/Cart/OrderForm/Cart.html`. - -.. index:: Frontend, Translation, Fluid diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Important-228-FixJavaScriptVariableUpdateCountryInTemplate.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Important-228-FixJavaScriptVariableUpdateCountryInTemplate.rst.txt deleted file mode 100644 index dc7fb85f..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Important-228-FixJavaScriptVariableUpdateCountryInTemplate.rst.txt +++ /dev/null @@ -1,14 +0,0 @@ -.. include:: ../../Includes.txt - -==================================================================== -Important: #228 - Fix JavaScript variable update_country in template -==================================================================== - -See :issue:`228` - -Description -=========== - -In :file:`EXT:cart/Resources/Private/Templates/Cart/Cart/Show.html` the url for the update_country function call wasn't assigned correctly. - -.. index:: Frontend, JavaScript diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Important-235-FixCartOrderFormTemplate.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Important-235-FixCartOrderFormTemplate.rst.txt deleted file mode 100644 index ca9c779c..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Important-235-FixCartOrderFormTemplate.rst.txt +++ /dev/null @@ -1,14 +0,0 @@ -.. include:: ../../Includes.txt - -============================================== -Important: #235 - Fix cart order form template -============================================== - -See :issue:`235` - -Description -=========== - -Add a missing class to :file:`EXT:cart/Resources/Private/Partials/Cart/OrderForm.html`. - -.. index:: Frontend, Fluid diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Important-237-RemoveShowToTopLinkFunctionCallFromJavaScript.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Important-237-RemoveShowToTopLinkFunctionCallFromJavaScript.rst.txt deleted file mode 100644 index 34d0eadb..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Important-237-RemoveShowToTopLinkFunctionCallFromJavaScript.rst.txt +++ /dev/null @@ -1,14 +0,0 @@ -.. include:: ../../Includes.txt - -==================================================================== -Important: #237 - Remove showToTopLink-function call from JavaScript -==================================================================== - -See :issue:`237` - -Description -=========== - -Remove the function call on window.scroll in :file:`EXT:cart/Resources/Public/JavaScripts/cart.js`. - -.. index:: Frontend, JavaScript diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Index.rst.txt deleted file mode 100644 index 7f48dda2..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.1/Index.rst.txt +++ /dev/null @@ -1,30 +0,0 @@ -.. include:: ../../Includes.txt - -6.1 Changes -=========== - -**Table of contents** - -.. contents:: - :local: - :depth: 1 - -Features -^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Feature-* - -Important -^^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Important-* diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.2/Breaking-242-UseDefaultCountrySettingForShippingAddress.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.2/Breaking-242-UseDefaultCountrySettingForShippingAddress.rst.txt deleted file mode 100644 index 08d1e138..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.2/Breaking-242-UseDefaultCountrySettingForShippingAddress.rst.txt +++ /dev/null @@ -1,48 +0,0 @@ -.. include:: ../../Includes.txt - -================================================================ -Breaking: #242 - Use defaultCountry setting for shipping address -================================================================ - -See :issue:`242` - -Description -=========== - -The defaultCountry TypoScript configuration will applied to the shipping address too. -The old logic uses an empty shipping country as an indicator that no shipping address should be used. -The new logic uses the new attribute `shippingSameAsBilling` within the cart model. -Some fluid templates and JavaScript functions have been changed. - - -Impact -====== - -Using the old templates causes the problem that the shipping address will not be hidden and has to be -filled out by the customer. - - -Affected Installations -====================== - -Instances which use custom partial templates for: - -:file:`EXT:cart/Resources/Private/Partials/Cart/OrderForm.html` -:file:`EXT:cart/Resources/Private/Partials/Cart/OrderForm/Address/Shipping.html` - -or own JavaScript instead of - -:file:`EXT:cart/Resources/Public/JavaScripts/cart.js`. - - -Migration -========= - -Replace all conditions on `{cart.shippingCountry}` in both templates. -Replace the attribute :html:`disable='true'` in all input fields of the shipping address template -with :html:`disabled="{f:if(condition:'{cart.shippingSameAsBilling}', then:'true')}"`. - -Add :js:`"tx_cart_cart[shipping_same_as_billing]": $("#shipping-same-as-billing").is(":checked"),` to -post parameters of the `updateCountry` function. - -.. index:: Fluid, Frontend, JavaScript diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.2/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.2/Index.rst.txt deleted file mode 100644 index 0e2c7695..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.2/Index.rst.txt +++ /dev/null @@ -1,20 +0,0 @@ -.. include:: ../../Includes.txt - -6.2 Changes -=========== - -**Table of contents** - -.. contents:: - :local: - :depth: 1 - -Breaking Changes -^^^^^^^^^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Breaking-* diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.3/Important-103-FixSqlStrictMode.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.3/Important-103-FixSqlStrictMode.rst.txt deleted file mode 100644 index 33404516..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.3/Important-103-FixSqlStrictMode.rst.txt +++ /dev/null @@ -1,19 +0,0 @@ -.. include:: ../../Includes.txt - -================================================== -Important: #103 - Fix exception in sql strict mode -================================================== - -See :issue:`103` - -Description -=========== - -The strict mode of MySQL and MariaDB raises some errors. Removing -the NOT NULL from text fields and adding an passthrough for the -inline relation to tax allows to using the extension in strict mode too. - -.. IMPORTANT:: - Some changes to the sql configuration file and TCA require a database update. - -.. index:: Database, TCA diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.3/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.3/Index.rst.txt deleted file mode 100644 index 91a24b7a..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.3/Index.rst.txt +++ /dev/null @@ -1,20 +0,0 @@ -.. include:: ../../Includes.txt - -6.3 Changes -=========== - -**Table of contents** - -.. contents:: - :local: - :depth: 1 - -Important -^^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Important-* diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.4/Feature-246-MailAttachmentsHook.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.4/Feature-246-MailAttachmentsHook.rst.txt deleted file mode 100644 index 122388a0..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.4/Feature-246-MailAttachmentsHook.rst.txt +++ /dev/null @@ -1,14 +0,0 @@ -.. include:: ../../Includes.txt - -=================================== -Feature: #246 - MailAttachmentsHook -=================================== - -See :issue:`246` - -Description -=========== - -The new MailAttachmentsHook allows you to add attachments to \TYPO3\CMS\Core\Mail\MailMessage. - -.. index:: Backend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.4/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.4/Index.rst.txt deleted file mode 100644 index 510fa61d..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.4/Index.rst.txt +++ /dev/null @@ -1,20 +0,0 @@ -.. include:: ../../Includes.txt - -6.4 Changes -=========== - -**Table of contents** - -.. contents:: - :local: - :depth: 1 - -Features -^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Feature-* diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.5/Breaking-256-ChangeCountryOnlyChangesTaxForFirstProductVariant.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.5/Breaking-256-ChangeCountryOnlyChangesTaxForFirstProductVariant.rst.txt deleted file mode 100644 index 24a92b77..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.5/Breaking-256-ChangeCountryOnlyChangesTaxForFirstProductVariant.rst.txt +++ /dev/null @@ -1,43 +0,0 @@ -.. include:: ../../Includes.txt - -========================================================================== -Breaking: #256 - Change country only changes tax for first product variant -========================================================================== - -See :issue:`256` - -Description -=========== - -An error is fixed which occurs in connection with the output of gross prices in -the product table of the shopping cart when products have several variants and -the change of the invoicing country assigns new tax classes to the products. -The tax class change now displays the correct gross price for all variants. - -Affected Installations -====================== - -The use of the old template and JavaScripts has the consequence that the product -list is not updated if the gross price changes due to the change of the invoicing -country. This only affects installations in which the price of the product is -maintained as the net price. - -Instances which use net price products and custom partial templates for: - -:file:`EXT:cart/Resources/Private/Templates/Cart/Country/Update.html` - -or own JavaScript instead of - -:file:`EXT:cart/Resources/Public/JavaScripts/cart.js`. - - -Migration -========= - -Add :html:`` to your -:file:`EXT:cart/Resources/Private/Templates/Cart/Country/Update.html` template file - -Add :js:`$("#form-cart").html($(data).filter("#form-cart").html());` to success -callback of the ajax request in `updateCountry` function. - -.. index:: Fluid, Frontend, JavaScript diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.5/Feature-251-DeclareExtensionCompatibleWithPHP73.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.5/Feature-251-DeclareExtensionCompatibleWithPHP73.rst.txt deleted file mode 100644 index e2765330..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.5/Feature-251-DeclareExtensionCompatibleWithPHP73.rst.txt +++ /dev/null @@ -1,15 +0,0 @@ -.. include:: ../../Includes.txt - -========================================================= -Feature: #251 - Declare extension compatible with PHP 7.3 -========================================================= - -See :issue:`251` - -Description -=========== - -Declare extension compatible with PHP 7.3. -Set state of cart extension to stable. - -.. index:: Backend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.5/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.5/Index.rst.txt deleted file mode 100644 index 36cd02f5..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.5/Index.rst.txt +++ /dev/null @@ -1,30 +0,0 @@ -.. include:: ../../Includes.txt - -6.5 Changes -=========== - -**Table of contents** - -.. contents:: - :local: - :depth: 1 - -Breaking Changes -^^^^^^^^^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Breaking-* - -Features -^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Feature-* diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.6/Feature-267-DeclareExtensionCompatibleWithPHP74.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.6/Feature-267-DeclareExtensionCompatibleWithPHP74.rst.txt deleted file mode 100644 index 8222ed04..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.6/Feature-267-DeclareExtensionCompatibleWithPHP74.rst.txt +++ /dev/null @@ -1,15 +0,0 @@ -.. include:: ../../Includes.txt - -========================================================= -Feature: #267 - Declare extension compatible with PHP 7.4 -========================================================= - -See :issue:`267` - -Description -=========== - -Declare extension compatible with PHP 7.4. -Set state of cart extension to stable. - -.. index:: Backend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.6/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.6/Index.rst.txt deleted file mode 100644 index 611219ef..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.6/Index.rst.txt +++ /dev/null @@ -1,20 +0,0 @@ -.. include:: ../../Includes.txt - -6.6 Changes -=========== - -**Table of contents** - -.. contents:: - :local: - :depth: 1 - -Features -^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Feature-* diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Feature-241-AddServiceInterface.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Feature-241-AddServiceInterface.rst.txt deleted file mode 100644 index b1dcbec0..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Feature-241-AddServiceInterface.rst.txt +++ /dev/null @@ -1,19 +0,0 @@ -.. include:: ../../Includes.txt - -===================================== -Feature: #241 - Add Service Interface -===================================== - -See :issue:`241` - -Description -=========== - -The service is moved to an own class implementing the `\Extcode\Cart\Domain\Model\Cart\ServiceInterface`. -If the flex price configuration via TypoScript doesn't fit for the shop, an own service class can calculate -the correct price. - -More information about the flex price configuration and the service interface can be found -in the :ref:`configuration_shipping_method_flex_price` documentation. - -.. index:: Fluid, Frontend, API diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Feature-271-BccForBuyerAndSellerEmail.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Feature-271-BccForBuyerAndSellerEmail.rst.txt deleted file mode 100644 index e93922ca..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Feature-271-BccForBuyerAndSellerEmail.rst.txt +++ /dev/null @@ -1,15 +0,0 @@ -.. include:: ../../Includes.txt - -================================================================== -Feature: #271 - BCC (Blind Carbon Copy) for Buyer and Seller Email -================================================================== - -See :issue:`271` - -Description -=========== - -The email to the buyer or seller can now also be sent to other email addresses than so-called blind copy (BCC). -The configuration is possible via TypoScript as well as in the FlexForm of the shopping cart plugin. - -.. index:: Backend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Feature-272-AddBuyerEMailForReplyTo.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Feature-272-AddBuyerEMailForReplyTo.rst.txt deleted file mode 100644 index 51ce7b88..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Feature-272-AddBuyerEMailForReplyTo.rst.txt +++ /dev/null @@ -1,15 +0,0 @@ -.. include:: ../../Includes.txt - -=========================================== -Feature: #272 - Use Buyer Email for replyTo -=========================================== - -See :issue:`272` - -Description -=========== - -In the emails to the seller, the email address of the buyer is used as replyTo. -In this way it is possible to reply directly to these emails. - -.. index:: Backend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Feature-274-AddExtraConditionToOnlyChargeServiceForPhysicalGoods.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Feature-274-AddExtraConditionToOnlyChargeServiceForPhysicalGoods.rst.txt deleted file mode 100644 index 465aa9da..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Feature-274-AddExtraConditionToOnlyChargeServiceForPhysicalGoods.rst.txt +++ /dev/null @@ -1,18 +0,0 @@ -.. include:: ../../Includes.txt - -============================================================================= -Feature: #274 - Add Extra Condition to only Charge Service for Physical Goods -============================================================================= - -See :issue:`274` - -Description -=========== - -The new condition allows you to scale the cost of a service based on the gross -price calculation of all physical products in the shopping cart. - -More information about the flex price configuration can be found -in the :ref:`configuration_shipping_method_flex_price` documentation. - -.. index:: Backend, TypoScript diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Important-263-BugfixForTypeNumInRouteEnhancer.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Important-263-BugfixForTypeNumInRouteEnhancer.rst.txt deleted file mode 100644 index a0366690..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Important-263-BugfixForTypeNumInRouteEnhancer.rst.txt +++ /dev/null @@ -1,34 +0,0 @@ -.. include:: ../../Includes.txt - -===================================================== -Important: #263 - Bugfix for TypeNum in RouteEnhancer -===================================================== - -See :issue:`263` - -Description -=========== - -Adding a product to cart works correctly using AJAX and with a PageType RouteEnhancer. - -Affected Installations -====================== - -All using RouteEnhancer. - -Migration -========= - -You can add following configuration. Please note, that the TypeNum is currently fixed for -compatibility reasons. However, a path segment other than `updatecart.html` or `updatecurrency.html` can be used. - -.. code-block:: yaml - - routeEnhancers: - PageTypeSuffix: - type: PageType - map: - updatecart.html: 2278001 - updatecurrency.html: 2278003 - -.. index:: Fluid, TypoScript diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Index.rst.txt deleted file mode 100644 index f468ab56..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.7/Index.rst.txt +++ /dev/null @@ -1,30 +0,0 @@ -.. include:: ../../Includes.txt - -6.7 Changes -=========== - -**Table of contents** - -.. contents:: - :local: - :depth: 1 - -Important -^^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Important-* - -Features -^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Feature-* diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.8/Feature-277-AddTaxClassInterface.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.8/Feature-277-AddTaxClassInterface.rst.txt deleted file mode 100644 index aab80591..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.8/Feature-277-AddTaxClassInterface.rst.txt +++ /dev/null @@ -1,18 +0,0 @@ -.. include:: ../../Includes.txt - -====================================== -Feature: #277 - Add TaxClass Interface -====================================== - -See :issue:`277` - -Description -=========== - -Parsing the tax classes from TypoScript is moved to an own class implementing of the `\Extcode\Cart\Service\TaxClassServiceInterface`. -If the tax classes for a cart comes from an API the Interface can be used to load the tax classes through . - -More information about the `\Extcode\Cart\Service\TaxClassServiceInterface` can be found -in the :ref:`tax_class_service_interface` documentation. - -.. index:: Backend, API diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.8/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.8/Index.rst.txt deleted file mode 100644 index 4d267a34..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/6.8/Index.rst.txt +++ /dev/null @@ -1,20 +0,0 @@ -.. include:: ../../Includes.txt - -6.8 Changes -=========== - -**Table of contents** - -.. contents:: - :local: - :depth: 1 - -Features -^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Feature-* diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Breaking-288-ChangeMailHandlerToFluidEmail.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Breaking-288-ChangeMailHandlerToFluidEmail.rst.txt deleted file mode 100644 index 1efe8e2d..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Breaking-288-ChangeMailHandlerToFluidEmail.rst.txt +++ /dev/null @@ -1,37 +0,0 @@ -.. include:: ../../Includes.txt - -================================================= -Breaking: #288 - Change MailHandler to FluidEmail -================================================= - -See :issue:`288` - -Description -=========== - -The changeover from rendering an own standalone view to the FluidEmail -class required adjustments in the e-mail templates and partials. - -Affected Installations -====================== - -All installations that use their own templates and partials for the e-mails. -All installations that use an own layout file for the e-mails. - -Migration -========= - -To be able to use your own templates and parts, the folders where the -files are located must be included via `$GLOBALS['TYPO3_CONF_VARS']['MAIL']`. -The extension has included the following in the ext_localconf.php - -:: - - $GLOBALS['TYPO3_CONF_VARS']['MAIL']['templateRootPaths']['1588829280'] = 'EXT:cart/Resources/Private/Templates/'; - $GLOBALS['TYPO3_CONF_VARS']['MAIL']['partialRootPaths']['1588829280'] = 'EXT:cart/Resources/Private/Partials/'; - -To ensure the correct order, the own key (UNIX timestamp) must be larger. - -Furthermore you should compare your own templates and partials with those of the extension. - -.. index:: API, Frontend, Backend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Breaking-288-ParameterOfMailAttachmentHookInterfaceWasChanged.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Breaking-288-ParameterOfMailAttachmentHookInterfaceWasChanged.rst.txt deleted file mode 100644 index 8b4c1d06..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Breaking-288-ParameterOfMailAttachmentHookInterfaceWasChanged.rst.txt +++ /dev/null @@ -1,29 +0,0 @@ -.. include:: ../../Includes.txt - -======================================================================== -Breaking: #288 - Parameter of Mail Attachment Hook Interface was Changed -======================================================================== - -See :issue:`288` - -Description -=========== - -Now that the extension has been changed to `\TYPO3\CMS\Core\Mail\FluidEmail` instead of `\TYPO3\CMS\Core\Mail\MailMessage`, -the attachments have to be handled a bit differently. -For this purpose, the first passed parameter and the return parameter have been changed to `\TYPO3\CMS\Core\Mail\FluidEmail`. - -Affected Installations -====================== - -Only installations that have registered their own class on the MailAttachmentsHook and thus add their -own files to the email are affected. - -Migration -========= - -The classes for the first transfer parameter and the return parameter are to be replaced. -It may also be necessary to make adjustments to the class if functions were called on the previous -`\TYPO3\CMS\Core\Mail\MailMessage` class that are not available in the `\TYPO3\CMS\Core\Mail\FluidEmail` class. - -.. index:: Backend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Breaking-288-RemoveModuleOrderStatistic.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Breaking-288-RemoveModuleOrderStatistic.rst.txt deleted file mode 100644 index 730eaeef..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Breaking-288-RemoveModuleOrderStatistic.rst.txt +++ /dev/null @@ -1,28 +0,0 @@ -.. include:: ../../Includes.txt - -=============================================== -Breaking: #288 - Remove Order Statistics Module -=============================================== - -See :issue:`288` - -Description -=========== - -This module in the backend was poorly supported and offered few possibilities. -It is to be replaced in TYPO3 v10 by one or more Dashboard Widgets. - -Affected Installations -====================== - -Installations in which the backend users have used this module intensively can no longer access it. -Possibly the widgets offer an adequate replacement. - -Otherwise the functionality can be provided by a small extension of your own. - -Migration -========= - -No replacement for this module is planned. Should there be a need, such an extension can be provided. - -.. index:: Backend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Breaking-288-UsePsrEventsForOrderFinishers.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Breaking-288-UsePsrEventsForOrderFinishers.rst.txt deleted file mode 100644 index 960433ff..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Breaking-288-UsePsrEventsForOrderFinishers.rst.txt +++ /dev/null @@ -1,39 +0,0 @@ -.. include:: ../../Includes.txt - -====================================================== -Breaking: #288 - Use PSR-14 Events for Order Finishers -====================================================== - -See :issue:`288` - -Description -=========== - -Instead of defining the finishers for processing orders via TypoScript, the `ProcessOrderCreateEvent` event is now -triggered at this point. -The previous finishers are registered accordingly to this event via Service.yaml. -This offers the advantage that you can define with `before` and `after`, which dependencies must be fulfilled for -the order, without presetting them completely. - -Two finishers were also removed in the process. One is the StockFinisher, which each product extension must register -for itself. - -On the other hand, the PaymentFinisher was also removed. Payment provider extensions must now trigger their own event -and register all required finishers for this event themselves. This gives more flexibility to the payment provider -extensions. For example, when to call the finishers for stock management. - -Affected Installations -====================== - -For installations that do not have their own finishers registered, no adjustments should be required. -Installations that have called their own finishers in the ordering process must be registered to the new event. - -Migration -========= - -The finisher class must bring an __invoke() method and gets passed an appropriate event object. - -Furthermore, the finisher must be configured in the Service.yaml to the event `ProcessOrderCreateEvent`. -The TypoScript configuration can be removed. - -.. index:: Backend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Feature-288-ChangeMailHandlerToFluidEmail.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Feature-288-ChangeMailHandlerToFluidEmail.rst.txt deleted file mode 100644 index 620af2d0..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Feature-288-ChangeMailHandlerToFluidEmail.rst.txt +++ /dev/null @@ -1,15 +0,0 @@ -.. include:: ../../Includes.txt - -================================================ -Feature: #288 - Change MailHandler to FluidEmail -================================================ - -See :issue:`288` - -Description -=========== - -For a uniform layout of e-mails, TYPO3 has added the FluidEmail class with v10. -Instead of rendering its own standalone view the MailHandler now also uses the new class. - -.. index:: API, Frontend, Backend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Feature-288-DashboardWidgets.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Feature-288-DashboardWidgets.rst.txt deleted file mode 100644 index b9120329..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Feature-288-DashboardWidgets.rst.txt +++ /dev/null @@ -1,24 +0,0 @@ -.. include:: ../../Includes.txt - -================================= -Feature: #288 - Dashboard Widgets -================================= - -See :issue:`288` - -Description -=========== - -As a replacement for the backend module, the first two widgets were added. -To use the widgets the dashboard (`typo3/cms-dashboard`) must be installed. - -.. figure:: ../../Images/Widgets/CartDashboardWidgets.png - :width: 800 - :alt: Cart Dashboard Widgets - - New Widgets: List of Paid but not Shipped Orders, Orders per Day - -The widgets offer a few options so that you can customize them to your own needs. -With independent provider classes you can easily create your own widgets and add them to the widget group "Cart". - -.. index:: Backend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Index.rst.txt deleted file mode 100644 index b875db61..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.0/Index.rst.txt +++ /dev/null @@ -1,30 +0,0 @@ -.. include:: ../../Includes.txt - -7.0 Changes -=========== - -**Table of contents** - -.. contents:: - :local: - :depth: 1 - -Breaking Changes -^^^^^^^^^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Breaking-* - -Features -^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Feature-* \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.2/Deprecation-337-SplitUpProcessOrderCreateEvent.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.2/Deprecation-337-SplitUpProcessOrderCreateEvent.rst.txt deleted file mode 100644 index 7a2b7d61..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.2/Deprecation-337-SplitUpProcessOrderCreateEvent.rst.txt +++ /dev/null @@ -1,55 +0,0 @@ -.. include:: ../../Includes.txt - -=============================================== -Feature: 337 - Split Up ProcessOrderCreateEvent -=============================================== - -See :issue:`337` - -Description -=========== - -In order to better integrate the EventListener in connection with -payment providers, the `\Extcode\Cart\Event\ProcessOrderCreateEvent` -was split into several events. -These implement a new EventInterface and also the -`\Psr\EventDispatcher\StoppableEventInterface`. - -.. NOTE:: - `\Extcode\Cart\Event\ProcessOrderCreateEvent` has been marked as - deprecated and will be removed in version 8.x. - -The new events in the order of their dispatch: - -- `\Extcode\Cart\Event\Order\CreateEvent` -- `\Extcode\Cart\Event\Order\StockEvent` -- `\Extcode\Cart\Event\Order\PaymentEvent` -- `\Extcode\Cart\Event\Order\FinishEvent` - -The new events can be activated via a feature toggle in :file:`LocalConfiguration.php` -or :file:`AdditionalConfiguration.php`:: - - $GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['SplitUpProcessOrderCreateEvent'] = true; - -The cart extension itself currently registers `\Extcode\Cart\EventListener\ProcessOrderCreate\Order` -and `\Extcode\Cart\EventListener\ProcessOrderCreate\Order` on `\Extcode\Cart\Event\Order\CreateEvent`. -And the extension registers `\Extcode\Cart\EventListener\ProcessOrderCreate\Email` -and `\Extcode\Cart\EventListener\ProcessOrderCreate\ClearCart` on `\Extcode\Cart\Event\Order\FinishEvent`. - -The product extensions extcode/cart-products, extcode/cart-events, and extcode/cart-books will -register the EventListeners to `\Extcode\Cart\Event\Order\StockEvent`. - -The payment methods provider extensions should be registered to the `\Extcode\Cart\Event\Order\PaymentEvent`. -These should return true for the `isPropagationStopped()` if the payment process cannot be completed -immediately, to prevent sending emails and clearing the cart session directly. The emails and clearing cart -is then the responsibility of the extension. Of course, the extension itself can send appropriate events and -the EventListener from this extension can be registered to it. - -Impact -====== - -If the feature toggle has been activated, the event -`\Extcode\Cart\Event\ProcessOrderCreateEvent` will no longer be triggered. -All EventListeners registered to this event must be registered to one of the new events. - -.. index:: Backend, Frontend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.2/Feature-337-SplitUpProcessOrderCreateEvent.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.2/Feature-337-SplitUpProcessOrderCreateEvent.rst.txt deleted file mode 100644 index 7a2b7d61..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.2/Feature-337-SplitUpProcessOrderCreateEvent.rst.txt +++ /dev/null @@ -1,55 +0,0 @@ -.. include:: ../../Includes.txt - -=============================================== -Feature: 337 - Split Up ProcessOrderCreateEvent -=============================================== - -See :issue:`337` - -Description -=========== - -In order to better integrate the EventListener in connection with -payment providers, the `\Extcode\Cart\Event\ProcessOrderCreateEvent` -was split into several events. -These implement a new EventInterface and also the -`\Psr\EventDispatcher\StoppableEventInterface`. - -.. NOTE:: - `\Extcode\Cart\Event\ProcessOrderCreateEvent` has been marked as - deprecated and will be removed in version 8.x. - -The new events in the order of their dispatch: - -- `\Extcode\Cart\Event\Order\CreateEvent` -- `\Extcode\Cart\Event\Order\StockEvent` -- `\Extcode\Cart\Event\Order\PaymentEvent` -- `\Extcode\Cart\Event\Order\FinishEvent` - -The new events can be activated via a feature toggle in :file:`LocalConfiguration.php` -or :file:`AdditionalConfiguration.php`:: - - $GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['SplitUpProcessOrderCreateEvent'] = true; - -The cart extension itself currently registers `\Extcode\Cart\EventListener\ProcessOrderCreate\Order` -and `\Extcode\Cart\EventListener\ProcessOrderCreate\Order` on `\Extcode\Cart\Event\Order\CreateEvent`. -And the extension registers `\Extcode\Cart\EventListener\ProcessOrderCreate\Email` -and `\Extcode\Cart\EventListener\ProcessOrderCreate\ClearCart` on `\Extcode\Cart\Event\Order\FinishEvent`. - -The product extensions extcode/cart-products, extcode/cart-events, and extcode/cart-books will -register the EventListeners to `\Extcode\Cart\Event\Order\StockEvent`. - -The payment methods provider extensions should be registered to the `\Extcode\Cart\Event\Order\PaymentEvent`. -These should return true for the `isPropagationStopped()` if the payment process cannot be completed -immediately, to prevent sending emails and clearing the cart session directly. The emails and clearing cart -is then the responsibility of the extension. Of course, the extension itself can send appropriate events and -the EventListener from this extension can be registered to it. - -Impact -====== - -If the feature toggle has been activated, the event -`\Extcode\Cart\Event\ProcessOrderCreateEvent` will no longer be triggered. -All EventListeners registered to this event must be registered to one of the new events. - -.. index:: Backend, Frontend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.2/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.2/Index.rst.txt deleted file mode 100644 index edd01f67..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.2/Index.rst.txt +++ /dev/null @@ -1,30 +0,0 @@ -.. include:: ../../Includes.txt - -7.2 Changes -=========== - -**Table of contents** - -.. contents:: - :local: - :depth: 1 - -Features -^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Feature-* - -Deprecation -^^^^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Deprecation-* \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.3/Feature-339-TaxationOfServiceCostAsAnAncillaryService.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.3/Feature-339-TaxationOfServiceCostAsAnAncillaryService.rst.txt deleted file mode 100644 index 31e3ed7a..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.3/Feature-339-TaxationOfServiceCostAsAnAncillaryService.rst.txt +++ /dev/null @@ -1,33 +0,0 @@ -.. include:: ../../Includes.txt - -=================================================================== -Deprecation: 339 - Taxation of Service Cost as an Ancillary Service -=================================================================== - -See :issue:`339` - -Description -=========== - -In germany and austria the tax for shipping is related to the products in cart. -If you only have products with one tax class you are save, but if you sell books (reduced tax) and shirts (normal tax) -the tax calculation for shipping use both tax classes. Percentage wise, the calculation of the tax is divided. -The new version will add two options to TypoScript for taxClassId configuration. -- `taxClassId = -1` for simple calculation, where the tax rate of shipping is based on the highest tax rate in the shopping cart. -- `taxClassId = -2` option for the more complicated percentage calculation of the tax. - -.. NOTE:: - The configuration of the taxClassId with a negative value is only allowed here. No tax class with negative values - must or may be defined. For compatibility reasons, negative values were inserted at this point. - This configuration will change in the upcoming version for TYPO3 v11. - -Impact -====== - -No Impact. - -Affected Installations -====================== - -No Installations are infected. There might be some issues on classes extending `\Extcode\Cart\Domain\Model\Cart\Extra` -or `\Extcode\Cart\Domain\Model\Cart\Service`. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.3/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.3/Index.rst.txt deleted file mode 100644 index 436c85a2..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.3/Index.rst.txt +++ /dev/null @@ -1,20 +0,0 @@ -.. include:: ../../Includes.txt - -7.3 Changes -=========== - -**Table of contents** - -.. contents:: - :local: - :depth: 1 - -Features -^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Feature-* \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.5/Feature-351-AllowToChangeSettingsPropertyForAllOrderProcessingEvents.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.5/Feature-351-AllowToChangeSettingsPropertyForAllOrderProcessingEvents.rst.txt deleted file mode 100644 index 762b2050..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.5/Feature-351-AllowToChangeSettingsPropertyForAllOrderProcessingEvents.rst.txt +++ /dev/null @@ -1,25 +0,0 @@ -.. include:: ../../Includes.txt - -================================================================================= -Feature: 351 - Allow to Change $settings Property for all Order Processing Events -================================================================================= - -See :issue:`351` - -Description -=========== - -It is in the EventListeners - -* \Extcode\Cart\Event\Order\CreateEvent, -* \Extcode\Cart\Event\Order\FinishEvent, -* \Extcode\Cart\Event\Order\PaymentEvent, -* \Extcode\Cart\Event\Order\StockEvent, and -* \Extcode\Cart\Event\ProcessOrderCreateEvent - -possible to use the setSettings() method to change the settings for later EventListeners. - -Impact -====== - -No Impact. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.5/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.5/Index.rst.txt deleted file mode 100644 index 74ac269e..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/7.5/Index.rst.txt +++ /dev/null @@ -1,20 +0,0 @@ -.. include:: ../../Includes.txt - -7.5 Changes -=========== - -**Table of contents** - -.. contents:: - :local: - :depth: 1 - -Features -^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Feature-* \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/8.0/Breaking-360-MoveFluidPaginationToController.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/8.0/Breaking-360-MoveFluidPaginationToController.rst.txt deleted file mode 100644 index 7ba65f5d..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/8.0/Breaking-360-MoveFluidPaginationToController.rst.txt +++ /dev/null @@ -1,26 +0,0 @@ -.. include:: ../../Includes.txt - -==================================================== -Breaking: #360 - Move Fluid Pagination to Controller -==================================================== - -See :issue:`360` - -Description -=========== - -In TYPO3 v11 has been removed and is implemented via the -controller. - -Affected Installations -====================== - -All installations are affected by this change. - -Migration -========= - -If the templates for the lists of orders in the frontend or backend have been -overwritten, then these templates must also be adapted. - -.. index:: Template, Frontend, Backend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/8.0/Breaking-360-MoveNumberGeneratorsToEventListeners.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/8.0/Breaking-360-MoveNumberGeneratorsToEventListeners.rst.txt deleted file mode 100644 index dab55570..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/8.0/Breaking-360-MoveNumberGeneratorsToEventListeners.rst.txt +++ /dev/null @@ -1,34 +0,0 @@ -.. include:: ../../Includes.txt - -========================================================= -Breaking: #360 - Move Number Generators To EventListeners -========================================================= - -See :issue:`360` - -Description -=========== - -The generation of order, invoice and delivery note numbers has been moved -from `Extcode\Cart\Utility\OrderUtility::class` to its own EventListener. -The generation is also no longer done via TypoScript and can also no longer -be configured via TypoScript. - -Affected Installations -====================== - -All installations are affected by this change. - -Migration -========= - -If the generation of order numbers via TypoScript has been configured -individually (e.g. with prefix or suffix, offset, leading zeros), this -configuration must be transferred to the registration of the service. -On the :ref:`Number Generator Configuration ` -page is documented how this can be done. If other elements, such as the -inclusion of or parts of the date, are used via TypoScript, this must -be implemented via a separate EventListener. How this is done can be -read on this page TODO. - -.. index:: Frontend, Backend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/8.0/Breaking-360-RemoveSplitUpProcessOrderCreateEventFeatureToggle.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/8.0/Breaking-360-RemoveSplitUpProcessOrderCreateEventFeatureToggle.rst.txt deleted file mode 100644 index 2b7928d1..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/8.0/Breaking-360-RemoveSplitUpProcessOrderCreateEventFeatureToggle.rst.txt +++ /dev/null @@ -1,54 +0,0 @@ -.. include:: ../../Includes.txt - -======================================================================= -Breaking: #360 - Remove Split Up ProcessOrderCreateEvent Feature Toggle -======================================================================= - -See :issue:`360` - -Description -=========== - -The configuration 'SplitUpProcessOrderCreateEvent' was removed. As a -result, several events are now triggered one after the other when the -order is placed in the frontend. - -The current sequence of these events is: - -* `\Extcode\Cart\Event\Order\CreateEvent` -* `\Extcode\Cart\Event\Order\NumberGeneratorEvent` -* `\Extcode\Cart\Event\Order\FinishEvent` -* `\Extcode\Cart\Event\Order\PaymentEvent` -* `\Extcode\Cart\Event\Order\StockEvent` - -Thereby the `\Extcode\Cart\Event\Order\NumberGeneratorEvent` was added in -this version and contains in this version the registered event -`cart--order--create--order-number` which was previously contained in -`\Extcode\Cart\Event\Order\CreateEvent` . - -Affected Installations -====================== - -This affects all installations that have not yet been switched via the -FeatureToggle and have registered their own EventListeners on -`Extcode\Cart\Event\ProcessOrderCreateEvent`. -Furthermore, installations that have registered their own EventListeners on -`\Extcode\Cart\Event\Order\CreateEvent` are affected. - -Migration -========= - -In case the FeatureToggle was not activated, but no own EventListeners were -registered, nothing has to be adjusted at all. The ordering process should -be tested. - -In case the FeatureToggle was not activated and own EventListeners were -registered on `Extcode\Cart\Event\ProcessOrderCreateEvent`, the registered -EventListeners are to be registered on the new events. The order process -should be checked in any case. - -In case the FeatureToggle was enabled and own EventListeners were registered -to `\Extcode\Cart\Event\Order\CreateEvent`, check if these EventListeners must -not be registered to `\Extcode\Cart\Event\Order\NumberGeneratorEvent`. - -.. index:: Template, Frontend, Backend diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/8.0/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/8.0/Index.rst.txt deleted file mode 100644 index aae518cc..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/8.0/Index.rst.txt +++ /dev/null @@ -1,20 +0,0 @@ -.. include:: ../../Includes.txt - -8.0 Changes -=========== - -**Table of contents** - -.. contents:: - :local: - :depth: 1 - -Breaking Changes -^^^^^^^^^^^^^^^^ - -.. toctree:: - :maxdepth: 1 - :titlesonly: - :glob: - - Breaking-* diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/Index.rst.txt deleted file mode 100644 index a3f6f35b..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Changelog/Index.rst.txt +++ /dev/null @@ -1,24 +0,0 @@ -.. include:: ../Includes.txt - -ChangeLog -========= - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - 8.0/Index - 7.5/Index - 7.3/Index - 7.2/Index - 7.0/Index - 6.8/Index - 6.7/Index - 6.6/Index - 6.5/Index - 6.4/Index - 6.3/Index - 6.2/Index - 6.1/Index - 6.0/Index - 5.0/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/DeveloperManual/Events/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/DeveloperManual/Events/Index.rst.txt deleted file mode 100644 index 06c26fed..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/DeveloperManual/Events/Index.rst.txt +++ /dev/null @@ -1,110 +0,0 @@ -.. include:: ../../Includes.txt - -Events -====== - -The extcode/cart extension already uses events in some places, especially to integrate custom -requirements in the ordering process. You can register your own EventListener for the following -events: - -.. container:: table-row - - Event Class - `\Extcode\Cart\Event\CheckProductAvailabilityEvent` - Description - This event is triggered when it is necessary to check whether a product - is still available in sufficient quantity in the warehouse. The product - extensions should implement an EventListener that checks the products - of this extension. If a product is no longer available or not available - in sufficient quantity, the property $available must be set to false. - In addition, the EventListener can pass messages. - If there is no availability check in the product extension, no - EventListener needs to be implemented. - -.. container:: table-row - - Event Class - `\Extcode\Cart\Event\ProcessOrderCheckStockEvent` - Description - The event is triggered in the `\Extcode\Cart\Controller\Cart\OrderController::createAction` - and allows to cancel the further ordering process if the number of - products in the shopping cart is no longer available in the meantime. - -.. container:: table-row - - Event Class - `\Extcode\Cart\Event\RetrieveProductsFromRequestEvent` - Description - This event is triggered when an "addToCart" form is submitted. The - extension passes the form data in this event. Each product extension must - provide an EventListener for its own product type that returns one or - more products based on this form data. It is up to the product extension - how to create these products as instances of the class - `\Extcode\Cart\Domain\Model\Cart\Product`. Products can be loaded from - the database, but also created based on the form data, or fetched from - another system via an API. - -.. container:: table-row - - Event Class - `\Extcode\Cart\Event\Order\CreateEvent` - Description - This event is used by the extension itself, but can be extended by - custom EventListeners. - It is the first event that is called when the order is submitted. - This event implements the StoppableEventInterface. - -.. container:: table-row - - Event Class - `\Extcode\Cart\Event\Order\NumberGeneratorEvent` - Description - It is the second event that is called when the order is submitted. - This event is used by the extension itself, but can be extended by - custom EventListeners. The EventListeners that the cart extension - itself registers to this event can very easily be replaced with - custom EventListeners. - The event is also triggered in the backend if an invoice or delivery - number is subsequently generated there, because they should not be - generated automatically during the ordering process. - A Payment provider extensions can also trigger this event if the - payment process was successful and an invoice is to be sent instead - of an order confirmation. - -.. container:: table-row - - Event Class - `\Extcode\Cart\Event\Order\PaymentEvent` - Description - This third event in the row can be implemented by payment provider - extensions to forward to the payment provider at this point. In case - of forwarding, the processing of the following events should be - prevented via the `StoppableEventInterface`, because - `\Extcode\Cart\Event\Order\StockEvent` and - `\Extcode\Cart\Event\Order\FinishEvent` are only necessary if the - payment process is successful. - If the payment process is successful, the payment provider extension - should trigger the events `\Extcode\Cart\Event\Order\StockEvent` and - `\Extcode\Cart\Event\Order\FinishEvent` itself. - -.. container:: table-row - - Event Class - `\Extcode\Cart\Event\Order\StockEvent` - Description - The fourth event should again be used by product extensions if they - provide stock management. The EventListener should perform stock - management for products of this extension. Either count down the stock - counter in the database or tell the product service via an interface - which products were bought how often. - -.. container:: table-row - - Event Class - `\Extcode\Cart\Event\Order\FinishEvent` - Description - The fifth and final event in the ordering process is to finish the order. - This is mainly used by the cart extension itself to finalize the order - process. Here, among other things, e-mails are sent. Other extensions can - use this event to generate PDF documents, register users or assign - registered users to another user group. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/DeveloperManual/Hooks/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/DeveloperManual/Hooks/Index.rst.txt deleted file mode 100644 index 0e8c36bb..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/DeveloperManual/Hooks/Index.rst.txt +++ /dev/null @@ -1,27 +0,0 @@ -.. include:: ../../Includes.txt - -Hooks -===== - -Some more commonly used hooks are: - -.. container:: table-row - - Hook Class Name - `\Extcode\Cart\Controller\Cart\CartController` - Hook Name - showCartActionAfterCartWasLoaded - Description - TODO - -.. container:: table-row - - Hook Class Name - `\Extcode\Cart\Service\MailHandler` - Hook Name - MailAttachmentsHook - Description - TODO - -.. NOTE:: - The Hooks will be replaced by events in the upcoming major version. \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/DeveloperManual/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/DeveloperManual/Index.rst.txt deleted file mode 100644 index 08cb4874..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/DeveloperManual/Index.rst.txt +++ /dev/null @@ -1,12 +0,0 @@ -.. include:: ../Includes.txt - -Developer Manual -================ - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - Events/Index - SignalSlots/Index - Hooks/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/DeveloperManual/SignalSlots/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/DeveloperManual/SignalSlots/Index.rst.txt deleted file mode 100644 index 943e22fd..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/DeveloperManual/SignalSlots/Index.rst.txt +++ /dev/null @@ -1,45 +0,0 @@ -.. include:: ../../Includes.txt - -Signal Slots -============ - -The following SignalSlots are used and dispatched in cart. - -.. container:: table-row - - Signal Class Name - `\Extcode\Cart\Utility\CartUtility` - Signal Name - updateCountry - Description - TODO - -.. container:: table-row - - Signal Class Name - `\Extcode\Cart\Utility\CurrencyUtility` - Signal Name - updateCurrency - Description - TODO - -.. container:: table-row - - Signal Class Name - `\Extcode\Cart\Utility\OrderUtility` - Signal Name - changeOrderItemBeforeSaving - Description - TODO - -.. container:: table-row - - Signal Class Name - `\Extcode\Cart\Utility\OrderUtility` - Signal Name - addProductAdditionalData - Description - TODO - -.. NOTE:: - The SignalSlots will be replaced by Events in the upcoming major version. \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Index.rst.txt deleted file mode 100644 index 742e373e..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Index.rst.txt +++ /dev/null @@ -1,12 +0,0 @@ -.. include:: ../Includes.txt - -Editor Manual -============= - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - Records/Index - Modules/Index - Plugins/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Modules/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Modules/Index.rst.txt deleted file mode 100644 index 0004fbe4..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Modules/Index.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -.. include:: ../../Includes.txt - -Module -====== - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - Orders/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Modules/Orders/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Modules/Orders/Index.rst.txt deleted file mode 100644 index 1ad13d90..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Modules/Orders/Index.rst.txt +++ /dev/null @@ -1,23 +0,0 @@ -.. include:: ../../../Includes.txt - -.. _de_de_modules-orders: - -Bestellungen -============ - -Das Modul "Bestellungen" listet alle Bestellungen einer Seite (Ordner) auf. Dabei bietet Sie im Gegensatz zur Standard -Listenansicht eine optimierte Darstellung und bessere Suchmöglichkeiten. - -.. figure:: ../../../Images/Modules/Orders/List.png - :width: 640 - :alt: Liste aller Bestellungen eines Ordners - - Liste aller Bestellungen eines Ordners - - -.. figure:: ../../../Images/Modules/Orders/Show.png - :width: 640 - :alt: Detailansicht einer Bestellung - - Detailansicht einer Bestellung - diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Plugins/Cart/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Plugins/Cart/Index.rst.txt deleted file mode 100644 index bb711453..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Plugins/Cart/Index.rst.txt +++ /dev/null @@ -1,9 +0,0 @@ -.. include:: ../../../Includes.txt - -Cart: Warenkorb -=============== - -Diese Plugin zeigt den aktuellen Warenkorb, die darin enthaltenen Produkte und das Formular für die Bestellung. - -.. TIP:: - Sollen im Warenkorb Coupons verwendet werden können, müssen unter Datensatzsammlung die Seiten angegeben werden, in denen Coupons gespeichert sind. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Plugins/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Plugins/Index.rst.txt deleted file mode 100644 index 15010796..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Plugins/Index.rst.txt +++ /dev/null @@ -1,12 +0,0 @@ -.. include:: ../../Includes.txt - -Plugins -======= - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - Cart/Index - MiniCart/Index - Order/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Plugins/MiniCart/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Plugins/MiniCart/Index.rst.txt deleted file mode 100644 index a56a3e41..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Plugins/MiniCart/Index.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -.. include:: ../../../Includes.txt - -Cart: Mini-Warenkorb -==================== - -Dieses Plugin kann als Miniwarenkorb eingebunden werden und gibt eine Kurzansicht des Warenkorbs aus. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Plugins/Order/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Plugins/Order/Index.rst.txt deleted file mode 100644 index ef4a895c..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Plugins/Order/Index.rst.txt +++ /dev/null @@ -1,6 +0,0 @@ -.. include:: ../../../Includes.txt - -Cart: Bestellungen -================== - -Dieses Plugin zeigt die Bestellung des angemeldeten Frontend Benutzers an. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Records/Coupons/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Records/Coupons/Index.rst.txt deleted file mode 100644 index 6200a08c..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Records/Coupons/Index.rst.txt +++ /dev/null @@ -1,4 +0,0 @@ -.. include:: ../../../Includes.txt - -Coupons / Gutscheine -==================== diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Records/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Records/Index.rst.txt deleted file mode 100644 index 2d538487..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Records/Index.rst.txt +++ /dev/null @@ -1,11 +0,0 @@ -.. include:: ../../Includes.txt - -Datensätze ----------- - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - Orders/Index - Coupons/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Records/Orders/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Records/Orders/Index.rst.txt deleted file mode 100644 index c6f74ed3..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/EditorManual/Records/Orders/Index.rst.txt +++ /dev/null @@ -1,10 +0,0 @@ -.. include:: ../../../Includes.txt - -Bestellungen -============ - -Die Datensätze der Bestellungen enthalten die Daten einer Bestellung und sollen später nicht mehr verändert werden. -Im Backend lassen sich die Datensätze auflisten und öffnen, die Änderungen sind hier nicht möglich. Bitte verwenden -Sie das bereitgestellte Backend-Modul :ref:`de_de_modules-orders`. Dieses Backend-Modul bietet einen optimierten Filter um -Bestellungen schnell aufzufinden. Die übersichtlichere Darstellung einzelner Bestellungen ermöglicht eine bessere -Abarbeitung eingegangener Bestellungen und Veränderung des Status für die Bezahlung und den Versand. diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Index.rst.txt deleted file mode 100644 index 922ecfe4..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Index.rst.txt +++ /dev/null @@ -1,60 +0,0 @@ -.. include:: Includes.txt - -.. _start: - -=========================== -EXT: Cart -=========================== - -.. image:: Images/cart_logo.png - :height: 200 - :width: 200 - - -.. only:: html - - :Classification: - cart - - :Version: - |release| - - :Language: - en (de) - - :Description: - Cart is an extension providing a shopping solution for TYPO3. - - :Keywords: - cart, shop, shopping, e-commerce, ecommerce, checkout, payment - - :Copyright: - 2018 - - :Author: - Daniel Gohlke - - :E-Mail: - ext.cart@extco.de - - :License: - This document is published under the Open Publication License - available from http://www.opencontent.org/openpub/ - - :Rendered: - |today| - - The content of this document is related to TYPO3, - a GNU/GPL CMS/Framework available from `www.typo3.org `_. - - **Table of Contents** - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - Introduction/Index - AdministratorManual/Index - DeveloperManual/Index - EditorManual/Index - Changelog/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Introduction/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Introduction/Index.rst.txt deleted file mode 100644 index d140fce5..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Introduction/Index.rst.txt +++ /dev/null @@ -1,63 +0,0 @@ -.. include:: ../Includes.txt - -============ -Introduction -============ - -Cart is an extension providing a shopping solution for TYPO3. - -Description -=========== - -The extension is a small but powerful extension which "solely" adds a shopping cart to your TYPO3 installation and is -well suited for content commerce. - -The extension allows you to add products to a cart and handles the order process completely. -There are other awesome extensions like extcode/cart-products, extcode/cart-events, and extcode/cart-books to -handle different types of products. - -Furthermore, you will find some payment provider extensions like extcode/cart-payone, extcode/cart-paypal, -extcode/cart-saverpay, and more to add payment methods to the checkout process. - -Features -======== - -- makes intensive use of the TYPO3 Core API functionality -- very well expandable - - several hooks, signal slots, and interfaces - - API (finisher pipeline) to process the order with possibility to register own tasks - - API to add payment providers - - API to connect your own product extensions -- highly configurable through TypoScript -- proved Bootstrap templates -- backend module to show and utilize orders - -Examples -======== - -Hörgeräte ISMA (hearing aid) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -.. figure:: ../Images/Examples/hoergeraete-isma.de.png - :width: 320 - :alt: Warenkorb bei Hörgeräte ISMA - -`www.hoergeraete-isma.de `__ - -Weingut Isele (winery) -^^^^^^^^^^^^^^^^^^^^^^ - -.. figure:: ../Images/Examples/weingut-isele.de.png - :width: 320 - :alt: Warenkorb bei Weingut Isele - -`www.weingut-isele.de `__ - - -.. toctree:: - :maxdepth: 5 - :titlesonly: - - Support/Index - Sponsoring/Index - NoteOfThanks/Index diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Introduction/NoteOfThanks/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Introduction/NoteOfThanks/Index.rst.txt deleted file mode 100644 index 744dc557..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Introduction/NoteOfThanks/Index.rst.txt +++ /dev/null @@ -1,14 +0,0 @@ -.. include:: ../../Includes.txt - -Note of thanks -============== - -A big thank you goes `Tritum GmbH `__ for the many hours I was allowed to work on Cart. - -In particular, I would like to thank Björn. He always has an open ear. He contributed his opinion to many questions -and decisions. Without him, Cart would not be what it is today. - -Another thanks goes to the testers for their feedback and understanding when I made changes to the data model again and -again. - -A big thank you also goes out to all the supporters on github. \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Introduction/Sponsoring/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Introduction/Sponsoring/Index.rst.txt deleted file mode 100644 index 2a559ccb..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Introduction/Sponsoring/Index.rst.txt +++ /dev/null @@ -1,16 +0,0 @@ -.. include:: ../../Includes.txt - -Sponsoring -========== - -If there is a feature that has not yet been implemented in Cart, you can contact me at any time. - -There is also the possibility to support the further development independently of new functions. - -* Ask for an invoice. -* `GitHub Sponsors `_ -* `paypal.me `_ -* `patreon.com `_ - -Sponsors --------- \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/_sources/Introduction/Support/Index.rst.txt b/Documentation-GENERATED-temp/Cache/html/_sources/Introduction/Support/Index.rst.txt deleted file mode 100644 index 1d7c074f..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_sources/Introduction/Support/Index.rst.txt +++ /dev/null @@ -1,20 +0,0 @@ -.. include:: ../../Includes.txt - -Support -======= - -Slack ------ -There is an own channel at the TYPO3 Slack. Please use this cannel to contact us. - -The URL is: https://typo3.slack.com/messages/ext-cart/ - -.. note:: - - Not registered on Slack? You can join here: http://forger.typo3.org/slack. - -Support -------- -If you need further support, please contact me. - -**This support is not always free!** \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/_static/ajax-loader.gif b/Documentation-GENERATED-temp/Cache/html/_static/ajax-loader.gif deleted file mode 100644 index 61faf8ca..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/ajax-loader.gif and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/basic.css b/Documentation-GENERATED-temp/Cache/html/_static/basic.css deleted file mode 100644 index 0807176e..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_static/basic.css +++ /dev/null @@ -1,676 +0,0 @@ -/* - * basic.css - * ~~~~~~~~~ - * - * Sphinx stylesheet -- basic theme. - * - * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/* -- main layout ----------------------------------------------------------- */ - -div.clearer { - clear: both; -} - -/* -- relbar ---------------------------------------------------------------- */ - -div.related { - width: 100%; - font-size: 90%; -} - -div.related h3 { - display: none; -} - -div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; -} - -div.related li { - display: inline; -} - -div.related li.right { - float: right; - margin-right: 5px; -} - -/* -- sidebar --------------------------------------------------------------- */ - -div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; -} - -div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; -} - -div.sphinxsidebar ul { - list-style: none; -} - -div.sphinxsidebar ul ul, -div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; -} - -div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; -} - -div.sphinxsidebar form { - margin-top: 10px; -} - -div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; -} - -div.sphinxsidebar #searchbox form.search { - overflow: hidden; -} - -div.sphinxsidebar #searchbox input[type="text"] { - float: left; - width: 80%; - padding: 0.25em; - box-sizing: border-box; -} - -div.sphinxsidebar #searchbox input[type="submit"] { - float: left; - width: 20%; - border-left: none; - padding: 0.25em; - box-sizing: border-box; -} - - -img { - border: 0; - max-width: 100%; -} - -/* -- search page ----------------------------------------------------------- */ - -ul.search { - margin: 10px 0 0 20px; - padding: 0; -} - -ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; -} - -ul.search li a { - font-weight: bold; -} - -ul.search li div.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; -} - -ul.keywordmatches li.goodmatch a { - font-weight: bold; -} - -/* -- index page ------------------------------------------------------------ */ - -table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; -} - -table.contentstable p.biglink { - line-height: 150%; -} - -a.biglink { - font-size: 1.3em; -} - -span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; -} - -/* -- general index --------------------------------------------------------- */ - -table.indextable { - width: 100%; -} - -table.indextable td { - text-align: left; - vertical-align: top; -} - -table.indextable ul { - margin-top: 0; - margin-bottom: 0; - list-style-type: none; -} - -table.indextable > tbody > tr > td > ul { - padding-left: 0em; -} - -table.indextable tr.pcap { - height: 10px; -} - -table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; -} - -img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; -} - -div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; -} - -/* -- domain module index --------------------------------------------------- */ - -table.modindextable td { - padding: 2px; - border-collapse: collapse; -} - -/* -- general body styles --------------------------------------------------- */ - -div.body { - min-width: 450px; - max-width: 800px; -} - -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; -} - -a.headerlink { - visibility: hidden; -} - -h1:hover > a.headerlink, -h2:hover > a.headerlink, -h3:hover > a.headerlink, -h4:hover > a.headerlink, -h5:hover > a.headerlink, -h6:hover > a.headerlink, -dt:hover > a.headerlink, -caption:hover > a.headerlink, -p.caption:hover > a.headerlink, -div.code-block-caption:hover > a.headerlink { - visibility: visible; -} - -div.body p.caption { - text-align: inherit; -} - -div.body td { - text-align: left; -} - -.first { - margin-top: 0 !important; -} - -p.rubric { - margin-top: 30px; - font-weight: bold; -} - -img.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; -} - -img.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; -} - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left; -} - -.align-center { - text-align: center; -} - -.align-right { - text-align: right; -} - -/* -- sidebars -------------------------------------------------------------- */ - -div.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px 7px 0 7px; - background-color: #ffe; - width: 40%; - float: right; -} - -p.sidebar-title { - font-weight: bold; -} - -/* -- topics ---------------------------------------------------------------- */ - -div.topic { - border: 1px solid #ccc; - padding: 7px 7px 0 7px; - margin: 10px 0 10px 0; -} - -p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; -} - -/* -- admonitions ----------------------------------------------------------- */ - -div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; -} - -div.admonition dt { - font-weight: bold; -} - -div.admonition dl { - margin-bottom: 0; -} - -p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; -} - -div.body p.centered { - text-align: center; - margin-top: 25px; -} - -/* -- tables ---------------------------------------------------------------- */ - -table.docutils { - border: 0; - border-collapse: collapse; -} - -table.align-center { - margin-left: auto; - margin-right: auto; -} - -table caption span.caption-number { - font-style: italic; -} - -table caption span.caption-text { -} - -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; -} - -table.footnote td, table.footnote th { - border: 0 !important; -} - -th { - text-align: left; - padding-right: 5px; -} - -table.citation { - border-left: solid 1px gray; - margin-left: 1px; -} - -table.citation td { - border-bottom: none; -} - -/* -- figures --------------------------------------------------------------- */ - -div.figure { - margin: 0.5em; - padding: 0.5em; -} - -div.figure p.caption { - padding: 0.3em; -} - -div.figure p.caption span.caption-number { - font-style: italic; -} - -div.figure p.caption span.caption-text { -} - -/* -- field list styles ----------------------------------------------------- */ - -table.field-list td, table.field-list th { - border: 0 !important; -} - -.field-list ul { - margin: 0; - padding-left: 1em; -} - -.field-list p { - margin: 0; -} - -.field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; -} - -/* -- hlist styles ---------------------------------------------------------- */ - -table.hlist td { - vertical-align: top; -} - - -/* -- other body styles ----------------------------------------------------- */ - -ol.arabic { - list-style: decimal; -} - -ol.loweralpha { - list-style: lower-alpha; -} - -ol.upperalpha { - list-style: upper-alpha; -} - -ol.lowerroman { - list-style: lower-roman; -} - -ol.upperroman { - list-style: upper-roman; -} - -dl { - margin-bottom: 15px; -} - -dd p { - margin-top: 0px; -} - -dd ul, dd table { - margin-bottom: 10px; -} - -dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; -} - -dt:target, span.highlighted { - background-color: #fbe54e; -} - -rect.highlighted { - fill: #fbe54e; -} - -dl.glossary dt { - font-weight: bold; - font-size: 1.1em; -} - -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - -.versionmodified { - font-style: italic; -} - -.system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; -} - -.footnote:target { - background-color: #ffa; -} - -.line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; -} - -.line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; -} - -.guilabel, .menuselection { - font-family: sans-serif; -} - -.accelerator { - text-decoration: underline; -} - -.classifier { - font-style: oblique; -} - -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; -} - -/* -- code displays --------------------------------------------------------- */ - -pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ -} - -span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; -} - -td.linenos pre { - padding: 5px 0px; - border: 0; - background-color: transparent; - color: #aaa; -} - -table.highlighttable { - margin-left: 0.5em; -} - -table.highlighttable td { - padding: 0 0.5em 0 0.5em; -} - -div.code-block-caption { - padding: 2px 5px; - font-size: small; -} - -div.code-block-caption code { - background-color: transparent; -} - -div.code-block-caption + div > div.highlight > pre { - margin-top: 0; -} - -div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; -} - -div.code-block-caption span.caption-text { -} - -div.literal-block-wrapper { - padding: 1em 1em 0; -} - -div.literal-block-wrapper div.highlight { - margin: 0; -} - -code.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -code.descclassname { - background-color: transparent; -} - -code.xref, a code { - background-color: transparent; - font-weight: bold; -} - -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; -} - -.viewcode-link { - float: right; -} - -.viewcode-back { - float: right; - font-family: sans-serif; -} - -div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; -} - -/* -- math display ---------------------------------------------------------- */ - -img.math { - vertical-align: middle; -} - -div.body div.math p { - text-align: center; -} - -span.eqno { - float: right; -} - -span.eqno a.headerlink { - position: relative; - left: 0px; - z-index: 1; -} - -div.math:hover a.headerlink { - visibility: visible; -} - -/* -- printout stylesheet --------------------------------------------------- */ - -@media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/_static/comment-bright.png b/Documentation-GENERATED-temp/Cache/html/_static/comment-bright.png deleted file mode 100644 index 15e27edb..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/comment-bright.png and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/comment-close.png b/Documentation-GENERATED-temp/Cache/html/_static/comment-close.png deleted file mode 100644 index 4d91bcf5..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/comment-close.png and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/comment.png b/Documentation-GENERATED-temp/Cache/html/_static/comment.png deleted file mode 100644 index dfbc0cbd..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/comment.png and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/css/badge_only.css b/Documentation-GENERATED-temp/Cache/html/_static/css/badge_only.css deleted file mode 100644 index 8d0f75c6..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_static/css/badge_only.css +++ /dev/null @@ -1,2 +0,0 @@ -.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../font/fontawesome_webfont.eot");src:url("../font/fontawesome_webfont.eot?#iefix") format("embedded-opentype"),url("../font/fontawesome_webfont.woff") format("woff"),url("../font/fontawesome_webfont.ttf") format("truetype"),url("../font/fontawesome_webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:0.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:285px;color:#fcfcfc;background:#1f1d1d;border-top:2px solid #b34700;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;z-index:400}.rst-versions a{color:#b34700;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version #relatedLinksText{color:#fcfcfc}.rst-versions .rst-current-version #relatedLinksText{padding-left:0.4em}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .fa-spinner,.rst-versions .rst-current-version #relatedLinksText{float:left}.rst-versions .rst-current-version .icon-book,.rst-versions .rst-current-version .icon-spinner,.rst-versions .rst-current-version #relatedLinksText{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#ffc800;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#ffc800;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:#737373;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dt{padding:12px 6px 3px 0}.rst-versions .rst-other-versions dd{display:inline-block}.rst-versions .rst-other-versions dd a{display:block;padding:2px 12px 2px 17px;color:#fcfcfc}.rst-versions .rst-other-versions dd a:hover{background-color:rgba(255,255,255,0.4)}.rst-versions .rst-other-versions dd.nolink{padding:2px 12px}.rst-versions .rst-other-versions dl.versions{max-height:260px;overflow:auto}.rst-versions .rst-other-versions dl.versions dd{display:block}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{height:auto}} -/*# sourceMappingURL=badge_only.css.map */ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/css/t3more.css b/Documentation-GENERATED-temp/Cache/html/_static/css/t3more.css deleted file mode 100644 index ecc672d9..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_static/css/t3more.css +++ /dev/null @@ -1,2 +0,0 @@ -.ui-front{z-index:700} -/*# sourceMappingURL=t3more.css.map */ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/css/theme-no-fonts.css b/Documentation-GENERATED-temp/Cache/html/_static/css/theme-no-fonts.css deleted file mode 100644 index 780710f2..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_static/css/theme-no-fonts.css +++ /dev/null @@ -1,5 +0,0 @@ -*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,.rst-content code,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,.rst-content p.caption,h3{orphans:3;widows:3}h2,.rst-content p.caption,h3{page-break-after:avoid}}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition-generic-admonition,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*! - * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.2.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff?v=4.2.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.2.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-menu-vertical li span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.rst-content code.download span.pull-left:first-child,.pull-left.icon{margin-right:.3em}.fa.pull-right,.wy-menu-vertical li span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.rst-content code.download span.pull-right:first-child,.pull-right.icon{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{font-family:inherit}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa,a .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content p.caption .headerlink,.rst-content p.caption a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-content dl dt .headerlink,.rst-content dl dt a .headerlink,a .rst-content tt.download span:first-child,.rst-content tt.download a span:first-child,a .rst-content code.download span:first-child,.rst-content code.download a span:first-child,a .icon{display:inline-block;text-decoration:inherit}.btn .fa,.btn .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .btn span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.btn .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content p.caption .headerlink,.rst-content p.caption .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .rst-content tt.download span:first-child,.rst-content tt.download .btn span:first-child,.btn .rst-content code.download span:first-child,.rst-content code.download .btn span:first-child,.btn .icon,.nav .fa,.nav .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand,.nav .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content p.caption .headerlink,.rst-content p.caption .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .rst-content tt.download span:first-child,.rst-content tt.download .nav span:first-child,.nav .rst-content code.download span:first-child,.rst-content code.download .nav span:first-child,.nav .icon{display:inline}.btn .fa.fa-large,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .btn span.fa-large:first-child,.btn .rst-content code.download span.fa-large:first-child,.rst-content code.download .btn span.fa-large:first-child,.btn .fa-large.icon,.nav .fa.fa-large,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.nav .rst-content code.download span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.nav .fa-large.icon{line-height:.9em}.btn .fa.fa-spin,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .btn span.fa-spin:first-child,.btn .rst-content code.download span.fa-spin:first-child,.rst-content code.download .btn span.fa-spin:first-child,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.nav .rst-content code.download span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.wy-menu-vertical li span.btn.toctree-expand:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.rst-content code.download span.btn:first-child:before,.btn.icon:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.rst-content code.download span.btn:first-child:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.rst-content tt.download .btn-mini span:first-child:before,.btn-mini .rst-content code.download span:first-child:before,.rst-content code.download .btn-mini span:first-child:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition-generic-admonition{padding:12px;line-height:24px;margin-top:24px;margin-bottom:24px;background:#fff;background:#dbedff;background:#f2ebe3}.wy-alert-title,.rst-content .admonition-title{color:#fff;color:#333;font-weight:bold;display:block;background:#66b3ff;background:#2994ff;background:#ded9d3;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.admonition-generic-admonition{background:#fff4cc;background:#ffefb3;background:#ffd8c2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition-generic-admonition .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-generic-admonition .admonition-title{color:#fff;background:#ffde66;background:#ffc800;background:#ff5e00}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.attention,.rst-content .caution,.rst-content .danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.admonition-todo,.rst-content .wy-alert-warning.admonition-generic-admonition{background:#ffedcc;background:#fac1cd;background:#ffc7cd}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.admonition-todo .wy-alert-title,.rst-content .wy-alert-warning.admonition-generic-admonition .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.admonition-todo .admonition-title,.rst-content .wy-alert-warning.admonition-generic-admonition .admonition-title{color:#fff;background:#f1b47e;background:#dd123d;background:#ff001a}.wy-alert.wy-alert-info,.rst-content .wy-alert-info.note,.rst-content .attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .wy-alert-info.seealso,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.admonition-generic-admonition{background:#fff;background:#dbedff}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .wy-alert-info.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert-info.seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition-generic-admonition .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .wy-alert-info.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-generic-admonition .admonition-title{color:#fff;background:#66b3ff;background:#2994ff}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .wy-alert-success.important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.admonition-generic-admonition{background:#fff;background:#d6eed5}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .wy-alert-success.important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition-generic-admonition .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .wy-alert-success.important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-generic-admonition .admonition-title{color:#fff;background:#5abc55}.wy-alert.wy-alert-neutral,.rst-content .note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .seealso,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .admonition-generic-admonition{background:#f2ebe3}.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .admonition-generic-admonition .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .admonition-generic-admonition .admonition-title{color:#333;background:#ded9d3}.wy-alert.wy-alert-neutral a,.rst-content .note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .seealso a,.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .admonition-generic-admonition a{color:#b34700}.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seealso p:last-child,.rst-content .admonition-todo p:last-child,.rst-content .admonition-generic-admonition p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0px;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all 0.3s ease-in;-moz-transition:all 0.3s ease-in;transition:all 0.3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#5abc55}.wy-tray-container li.wy-tray-item-info{background:#0080ff}.wy-tray-container li.wy-tray-item-warning{background:#e77e23}.wy-tray-container li.wy-tray-item-danger{background:#ffc800}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width: 768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);background-color:#5abc55;text-decoration:none;font-weight:normal;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset;outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#cc5200;color:#fff}.btn:hover{background:#6cc367;color:#fff}.btn:focus{background:#6cc367;outline:0}.btn:active{box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05) inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset;padding:8px 12px 6px 12px}.btn:visited{color:#fff}.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#0080ff !important}.btn-info:hover{background-color:#1a8dff !important}.btn-neutral{background-color:#f2ebe3 !important;color:#333 !important}.btn-neutral:hover{background-color:#e9ded2 !important;color:#333}.btn-neutral:visited{color:#333 !important}.btn-success{background-color:#5abc55 !important}.btn-success:hover{background-color:#4bb246 !important}.btn-danger{background-color:#ffc800 !important}.btn-danger:hover{background-color:#ffce1a !important}.btn-warning{background-color:#e77e23 !important}.btn-warning:hover{background-color:#e98c3a !important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f !important}.btn-link{background-color:transparent !important;color:#b34700;box-shadow:none;border-color:transparent !important}.btn-link:hover{background-color:transparent !important;color:#e65c00 !important;box-shadow:none}.btn-link:active{background-color:transparent !important;color:#e65c00 !important;box-shadow:none}.btn-link:visited{color:#b34700}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#333;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#b34700;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#b34700;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 .3125em 0;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#ffc800}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{float:left;display:block;margin-right:2.3576515979%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.3576515979%;width:48.821174201%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n+1){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.3576515979%;width:31.7615656014%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:6px 0 0 0;font-size:90%}.wy-control-no-input{display:inline-block;margin:6px 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type="datetime-local"]{padding:.34375em .625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9 ;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129FEA}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#ffc800;border:1px solid #ffc800}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#ffc800}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#ffc800}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type="radio"][disabled],input[type="checkbox"][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#333;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f2ebe3;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{width:36px;height:12px;margin:12px 0;position:relative;border-radius:4px;background:#ccc;cursor:pointer;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:before{position:absolute;content:"";display:block;width:18px;height:18px;border-radius:4px;background:#999;left:-3px;top:-3px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{content:"false";position:absolute;left:48px;display:block;font-size:12px;color:#ccc}.wy-switch.active{background:#439f3f}.wy-switch.active:before{left:24px;background:#5abc55}.wy-switch.active:after{content:"true"}.wy-switch.disabled,.wy-switch.active.disabled{cursor:not-allowed}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#ffc800}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 1px #ffc800}.wy-control-group.wy-control-group-error textarea{border:solid 1px #ffc800}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#5abc55}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#ffc800}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e77e23}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#0080ff}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:.3em;display:block}.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:100%;margin:0;overflow:visible;padding:3.2px 8px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #ded9d3}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px}.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:#737373;font-size:90%}.wy-table-tertiary{color:#737373;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f2ebe3}.wy-table-backed{background-color:#f2ebe3}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #ded9d3}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #ded9d3;border-left:1px solid #ded9d3}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #ded9d3}.wy-table-bordered-rows td{border-bottom:1px solid #ded9d3}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #ded9d3}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#b34700;text-decoration:none;cursor:pointer}a:hover{color:#ff8700}a:visited{color:#b34700}html{height:100%;overflow-x:hidden}body{font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;font-weight:normal;color:#333;min-height:100%;overflow-x:hidden;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e77e23 !important}a.wy-text-warning:hover{color:#ec9951 !important}.wy-text-info{color:#0080ff !important}a.wy-text-info:hover{color:#39f !important}.wy-text-success{color:#5abc55 !important}a.wy-text-success:hover{color:#7eca7a !important}.wy-text-danger{color:#ffc800 !important}a.wy-text-danger:hover{color:#ffd333 !important}.wy-text-neutral{color:#333 !important}a.wy-text-neutral:hover{color:#4d4d4d !important}h1,h2,.rst-content p.caption,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Share,Helvetica,Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2,.rst-content p.caption{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #ded9d3;margin:24px 0;padding:0}code,.rst-content tt,.rst-content code{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #bbc1c4;font-size:75%;padding:0 5px;font-family:"Source Code Pro",monospace;color:#ffc800;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{margin-bottom:0}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,article ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{list-style:square}.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{list-style:decimal}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{list-style:decimal;margin-left:24px}.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{margin-bottom:0}.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{margin-bottom:0}.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,article ol li ul li{list-style:disc}h1{font-size:200%;font-weight:normal}h3{font-size:135%;font-weight:normal}h5{font-size:115%;font-weight:normal}code,.rst-content tt,.rst-content code{font-size:14px}p{margin-top:12px;margin-bottom:12px}.codeblock-example{border:1px solid #ded9d3;border-bottom:none;padding:1.3;padding-top:2.6;font-weight:500;background:#fff;position:relative}.codeblock-example:after{content:"Example";position:absolute;top:0px;left:0px;background:#9b58b6;color:#fff}.codeblock-example.prettyprint-example-only{border:1px solid #ded9d3;margin-bottom:1.3}.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight']{padding:0;overflow-x:auto;background:transparent;margin:1px 0 1.3 0}.codeblock div[class^='highlight'],pre.literal-block div[class^='highlight'],.rst-content .literal-block div[class^='highlight'],div[class^='highlight'] div[class^='highlight']{border:none;background:none;margin:0}div[class^='highlight'] td.code{width:100%}.linenodiv pre{border-right:solid 1px #e3ded9;margin:0;padding:.65 .65;font-family:"Source Code Pro",monospace;font-size:14px;line-height:1.3;color:#ccc}div[class^='highlight'] pre{border:1px solid #777;border:2px solid #888;border-radius:4px;color:#fff;display:block;font-family:"Source Code Pro",monospace;font-size:14px;line-height:1.3;margin:0;overflow:auto;padding:3px;white-space:pre}div[class='highlight']{padding:1px}@media print{.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight'],div[class^='highlight'] pre{white-space:pre-wrap}}.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block{border:1px solid #4e4a4a;color:#fff;padding:0px;width:100%;overflow-x:auto;background:#343131;margin:1px 0 24px 0}.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight'] pre{background-color:#151515;color:#E0E0E0}.linenodiv pre{border-right:solid 1px #777;padding-left:2.3333333333px;padding-right:2.3333333333px}.hll{background-color:#303030}.c{color:#D0D0D0}.c1{color:#D0D0D0}.cm{color:#D0D0D0}.cp{color:#D0D0D0}.cs{color:#D0D0D0}.err{color:#af5786}.k{color:#82d3c6}.kc{color:#82d3c6}.kd{color:#82d3c6}.kn{color:#e90}.kp{color:#82d3c6}.kr{color:#82d3c6}.kt{color:#ec6341}.l{color:#4b88b4}.il{color:#4b88b4}.ld{color:#af5786}.m{color:#ec6341}.mf{color:#ec6341}.mh{color:#ec6341}.mi{color:#ec6341}.mo{color:#ec6341}.s{color:#9ac147}.s1{color:#9ac147}.s2{color:#9ac147}.sb{color:#9ac147}.sc{color:#9ac147}.sd{color:#B0B0B0}.se{color:#4b88b4}.sh{color:#9ac147}.si{color:#4b88b4}.sr{color:#9ac147}.ss{color:#9ac147}.sx{color:#9ac147}.n{color:#bf8e55}.na{color:#d27f2d}.nb{color:#bf8e55}.nc{color:#ec6341}.nd{color:#e90}.ne{color:#af5786}.nf{color:#d27f2d}.ni{color:#bf8e55}.nl{color:#bf8e55}.nn{color:#ec6341}.no{color:#af5786}.nt{color:#e90}.nv{color:#af5786}.nx{color:#d27f2d}.py{color:#bf8e55}.bp{color:#bf8e55}.vc{color:#af5786}.vg{color:#af5786}.vi{color:#af5786}.o{color:#ffe16b}.p{color:#E0E0E0}.gd{color:#af5786}.gh{color:#bf8e55}.gi{color:#d27f2d}.gp{color:#B0B0B0}.gu{color:#e90}.ow{color:#e90}.w{color:#bf8e55}.x{color:#E0E0E0}.ge{font-style:italic}.gh{font-weight:bold}.gp{font-weight:bold}.gs{font-weight:bold}.gu{font-weight:bold}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs-extra{margin-bottom:0;color:#a6a6a6;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical header,.wy-menu-vertical p.caption{height:32px;display:inline-block;line-height:32px;padding:0 1.618em;margin-bottom:0;display:block;font-weight:bold;text-transform:uppercase;font-size:80%;color:#555;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:#737373;color:#333;border-right:solid 1px #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li a:hover span.toctree-expand{color:#fff}.wy-menu-vertical li code,.wy-menu-vertical li .rst-content tt,.rst-content .wy-menu-vertical li tt{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:0.8em;line-height:1.6em;color:#a6a6a6}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#333;padding:.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.on a:hover span.toctree-expand,.wy-menu-vertical li.current>a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand{display:block;font-size:0.8em;line-height:1.6em;color:#262626}.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>ul,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>ul,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>ul,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>ul,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>ul,.wy-menu-vertical li.toctree-l8.current li.toctree-l6>ul{display:none}.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul,.wy-menu-vertical li.toctree-l3.current li.toctree-l4.current>ul,.wy-menu-vertical li.toctree-l4.current li.toctree-l5.current>ul,.wy-menu-vertical li.toctree-l5.current li.toctree-l6.current>ul,.wy-menu-vertical li.toctree-l6.current li.toctree-l7.current>ul,.wy-menu-vertical li.toctree-l7.current li.toctree-l8.current>ul,.wy-menu-vertical li.toctree-l8.current li.toctree-l6.current>ul{display:block}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{display:block}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{display:block}.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{display:block}.wy-menu-vertical li.toctree-l4 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l4 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{display:block}.wy-menu-vertical li.toctree-l5 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l5 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{display:block}.wy-menu-vertical li.toctree-l6 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l6 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{display:block}.wy-menu-vertical li.toctree-l7 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l7 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{display:block}.wy-menu-vertical li.toctree-l8 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l8 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{display:block}.wy-menu-vertical li.toctree-l9 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l9 span.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical .local-toc li ul{display:block}.wy-menu-vertical li ul li a{margin-bottom:0;color:#a6a6a6;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:.4045em .809em .4045em 1.618em;display:block;position:relative;color:#a6a6a6;color:#fff}.wy-menu-vertical a:hover{background-color:#4e4a4a;background-color:rgba(255,255,255,0.5);cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#a6a6a6}.wy-menu-vertical a:active{cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-menu-vertical li.toctree-l2>a{padding-left:2.427em;padding-left:2.553894886em;font-size:0.98em}.wy-menu-vertical li.toctree-l3>a{padding-left:4.045em;padding-left:3.5824163888em;font-size:0.96em}.wy-menu-vertical li.toctree-l4>a{padding-left:5.2585em;padding-left:4.4495em;font-size:0.94em}.wy-menu-vertical li.toctree-l5>a{padding-left:6.0675em;padding-left:5.2134157244em;font-size:0.92em}.wy-menu-vertical li.toctree-l6>a{padding-left:6.472em;padding-left:5.9040486692em;font-size:0.9em}.wy-menu-vertical li.toctree-l7>a{padding-left:6.5391512068em;font-size:0.88em}.wy-menu-vertical li.toctree-l8>a{padding-left:7.1302900956em;font-size:0.86em}.wy-menu-vertical li.toctree-l9>a{padding-left:7.6855em;font-size:0.84em}.wy-side-nav-search{z-index:200;text-align:left;padding:0;display:block;color:#fcfcfc;margin-bottom:.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#993d00}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-side-nav-search>a img.logo,.wy-side-nav-search .wy-dropdown>a img.logo{display:block;margin:0 auto;height:auto;width:auto;width:50%;border-radius:0;max-width:50%;background:transparent}.wy-side-nav-search>a.icon img.logo,.wy-side-nav-search .wy-dropdown>a.icon img.logo{margin-top:0.85em;margin-top:0}.wy-side-nav-search{border-bottom:1px solid #666;padding-bottom:6px}.wy-side-nav-search ul.sidebartop{color:#fff;font-size:20px}.wy-side-nav-search ul.sidebartop li.search{font-size:16px}.wy-side-nav-search ul.sidebartop a{display:block;padding:.6472em .809em;color:#fff}.wy-side-nav-search ul.sidebartop a:hover{background-color:rgba(255,255,255,0.2)}.wy-side-nav-search li.docsite{font-family:Share,sans-serif;background-color:#ff8700}.wy-side-nav-search li.docsite a{padding-right:2.2652em}.wy-side-nav-search li.nolink{padding:.6472em .809em}.wy-side-nav-search li.project a{padding-left:2.209em;position:relative}.wy-side-nav-search li.project a:before{position:absolute;font-family:FontAwesome;top:.77664em;left:.87372em;content:""}.wy-nav .wy-menu-vertical header{color:#b34700}.wy-nav .wy-menu-vertical a{color:#a6a6a6}.wy-nav .wy-menu-vertical a:hover{background-color:#b34700;color:#fff}[data-menu-wrap]{-webkit-transition:all 0.2s ease-in;-moz-transition:all 0.2s ease-in;transition:all 0.2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:left repeat-y #fcfcfc;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOERBMTRGRDBFMUUxMUUzODUwMkJCOThDMEVFNURFMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOERBMTRGRTBFMUUxMUUzODUwMkJCOThDMEVFNURFMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4REExNEZCMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4REExNEZDMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EwrlwAAAAA5JREFUeNpiMDU0BAgwAAE2AJgB9BnaAAAAAElFTkSuQmCC);background-size:300px 1px}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:scroll;min-height:100%;background:#343131;z-index:200}.wy-nav-top{display:none;background:#b34700;background:#ff8700;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#ff8700;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;max-width:1600px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:#999}footer p{margin-bottom:12px}.rst-footer-buttons{*zoom:1;margin-top:12px;margin-bottom:12px}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #ded9d3;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #ded9d3;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:#737373;font-size:90%}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1400px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,footer,.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:285px;color:#fcfcfc;background:#1f1d1d;border-top:2px solid #b34700;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;z-index:400}.rst-versions a{color:#b34700;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version #relatedLinksText{color:#fcfcfc}.rst-versions .rst-current-version #relatedLinksText{padding-left:0.4em}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book,.rst-versions .rst-current-version .fa-spinner,.rst-versions .rst-current-version #relatedLinksText{float:left}.rst-versions .rst-current-version .icon-book,.rst-versions .rst-current-version .icon-spinner,.rst-versions .rst-current-version #relatedLinksText{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#ffc800;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#ffc800;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:#737373;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dt{padding:12px 6px 3px 0}.rst-versions .rst-other-versions dd{display:inline-block}.rst-versions .rst-other-versions dd a{display:block;padding:2px 12px 2px 17px;color:#fcfcfc}.rst-versions .rst-other-versions dd a:hover{background-color:rgba(255,255,255,0.4)}.rst-versions .rst-other-versions dd.nolink{padding:2px 12px}.rst-versions .rst-other-versions dl.versions{max-height:260px;overflow:auto}.rst-versions .rst-other-versions dl.versions dd{display:block}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{height:auto}}.admonition{background-color:#fff1e0}.rst-content img{max-width:100%;height:auto !important}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img,.rst-content .section>a>img{margin-bottom:24px}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content .literal-block,.rst-content pre.literal-block{background:transparent;border:1px solid #bbc1c4;color:#333;padding:4px;font-family:"Source Code Pro",monospace;font-size:14px;line-height:1.3}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last,.rst-content .admonition-todo .last,.rst-content .admonition-generic-admonition .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ul li,.rst-content .section ol li{margin-top:12px;margin-bottom:12px}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .line-block{margin-left:24px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#333}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto;display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink{display:none;visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content p.caption .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content p.caption .headerlink:after{visibility:visible;content:"";font-family:FontAwesome;display:inline-block}.rst-content h1:hover .headerlink,.rst-content h2:hover .headerlink,.rst-content p.caption:hover .headerlink,.rst-content h3:hover .headerlink,.rst-content h4:hover .headerlink,.rst-content h5:hover .headerlink,.rst-content h6:hover .headerlink,.rst-content dl dt:hover .headerlink,.rst-content p.caption:hover .headerlink{display:inline-block}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:12px;background:#f2ebe3;border:solid 1px #ded9d3}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Share,Helvetica,Arial,sans-serif;font-weight:bold;background:#ded9d3;padding:6px 12px;margin:-12px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#ffc800;display:inline-block;font-weight:bold;padding:0 6px;color:#000}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:super;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:#555}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none;padding-top:5px}.rst-content table.field-list td>strong{display:inline-block;margin-top:3px}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left;padding-left:0}.rst-content tt,.rst-content tt,.rst-content code{color:#000}.rst-content tt big,.rst-content tt em,.rst-content tt big,.rst-content code big,.rst-content tt em,.rst-content code em{font-size:100% !important;line-height:normal}.rst-content tt .xref,a .rst-content tt,.rst-content tt .xref,.rst-content code .xref,a .rst-content tt,a .rst-content code{font-weight:bold}.rst-content a tt,.rst-content a tt,.rst-content a code{color:#b34700}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:inline-block;margin:6px 0;font-size:90%;line-height:normal;background:#fff;color:#0080ff;border-top:solid 3px #66b3ff;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#66b3ff}.rst-content dl:not(.docutils) dt .headerlink{color:#333;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:#737373}.rst-content dl:not(.docutils) dl dt .headerlink{color:#333;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) code{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) code.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#5abc55;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:bold}.rst-content tt.download,.rst-content code.download{background:inherit;padding:inherit;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{margin-right:4px}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#333}.math{text-align:center}.t3-row{margin-top:30px;margin-bottom:30px;border:1px none #888;border-top:2px solid #8a3700;border-top:2px solid #988d81;background-color:#f2ebe3;padding:0;clear:both}.t3-cell{border-bottom:4px solid #fff;background-color:transparent;padding:0 8px}.t3-cell p.term{font-size:9px;font-weight:normal;color:#b34700;margin:0;padding:0 0 3px 0}.doc .t3-cell,.t3-cell{clear:both}.t3-cell-property,.t3-cell-datatype,.t3-cell-key,.t3-cell-default{float:left;clear:none;font-weight:bold;min-width:30%;border-right:4px solid #fff;margin-right:8px}.bg-typo3-key-color{background-color:#ff8700 !important}.bg-typo3-support-orange-dark{background-color:#e67a00 !important}.bg-typo3-support-orange-light{background-color:#ff9926 !important}.bg-typo3-marker-orange{background-color:#ffd095 !important}.bg-typo3-dark-grey{background-color:#515151 !important}.bg-typo3-mid-grey{background-color:#8c8c8c !important}.bg-typo3-light-grey{background-color:#b9b9b9 !important}.bg-typo3-marker-grey{background-color:#f4f4f4 !important}.bg-typo3-message-valid{background-color:#5abc55 !important}.bg-typo3-message-error{background-color:#dd123d !important}.bg-typo3-message-warning{background-color:#ffc800 !important}.bg-typo3-message-information{background-color:#0080ff !important}.bg-black{background-color:#000 !important}.bg-gray-darker{background-color:#222 !important}.bg-gray-dark{background-color:#333 !important}.bg-gray{background-color:#555 !important}.bg-gray-light{background-color:#999 !important}.bg-gray-lighter{background-color:#ccc !important}.bg-white{background-color:#fff !important}.bg-green{background-color:#5abc55 !important}.bg-offgreen{background-color:#5abc55 !important}.bg-blue{background-color:#0080ff !important}.bg-purple{background-color:#9b58b6 !important}.bg-cobalt{background-color:#354a5f !important}.bg-yellow{background-color:#ffc800 !important}.bg-orange{background-color:#e77e23 !important}.bg-red{background-color:#ffc800 !important}.bg-shell{background-color:#edf1f2 !important}.bg-text-color{background-color:#333 !important}.bg-text-invert{background-color:#fff !important}.bg-text-code-color{background-color:#ffc800 !important}.bg-text-code-background-color{background-color:#fff !important}.bg-text-code-border-color{background-color:#bbc1c4 !important}.bg-text-dark{background-color:#595959 !important}.bg-text-medium{background-color:#737373 !important}.bg-text-light{background-color:#a6a6a6 !important}.bg-text-lighter{background-color:#ccc !important}.bg-table-background-color{background-color:transparent !important}.bg-table-border-color{background-color:#ded9d3 !important}.bg-table-stripe-color{background-color:#f2ebe3 !important}.bg-table-bg-hover-color{background-color:#d9d9d9 !important}.bg-table-head-background-color{background-color:#ded9d3 !important}.bg-input-text-color{background-color:#cad2d3 !important}.bg-input-background-color{background-color:#fff !important}.bg-input-border-color{background-color:#ccc !important}.bg-input-shadow-color{background-color:#ddd !important}.bg-input-focus-color{background-color:#333 !important}.bg-link-color{background-color:#b34700 !important}.bg-link-color-visited{background-color:#b34700 !important}.bg-link-color-hover{background-color:#ff8700 !important}.bg-link-color-alt{background-color:red !important}.bg-button-background-color{background-color:#5abc55 !important}.bg-button-neutral-background-color{background-color:#f2ebe3 !important}.bg-spinner-color{background-color:#b34700 !important}.bg-menu-top-link-color{background-color:#f2f2f2 !important}.bg-menu-background-color{background-color:#343131 !important}.bg-menu-logo-color{background-color:#ff8700 !important}@media screen and (min-width: 1400px){h1,h2,.rst-content p.caption{clear:both}}h1,h2,.rst-content p.caption,h3,h4,h5,h6,legend{margin-top:2em;margin-bottom:.5em}.admonition{padding-left:12px;padding-right:12px}#EditMeOnGitHub{color:#fff;background-color:#ff8700;display:block;padding:6px 10px;border-radius:15px}input[type="text"]{font-size:100%}code,.rst-content tt,.rst-content code{background-color:#fffcf0;border-color:#ffe999}code.file,.rst-content tt.file{color:#f08;border:none;background-color:inherit;padding:0}code.html,.rst-content tt.html{color:#70c;border:none;background-color:inherit;font-weight:normal;padding:0}code.js,.rst-content tt.js{color:#00660e;border:none;background-color:inherit;font-weight:normal;padding:0}code.method,.rst-content tt.method{color:#0059b3;border:none;background-color:inherit;font-weight:bold;padding:0}code.php,.rst-content tt.php{color:#0059b3;border:none;background-color:inherit;font-weight:normal;padding:0}code.py-class,.rst-content tt.py-class{color:#0080ff;border:none;background-color:inherit;font-weight:bold;padding:0}code.ts,.rst-content tt.ts,code.typoscript,.rst-content tt.typoscript{color:#661400;border-color:#ffc2b3;background-color:inherit}code.yaml,.rst-content tt.yaml{color:#0f8a75;border:none;background-color:inherit;font-weight:bold;padding:0}em.aspect{background-color:inherit;color:#bf4040;font-weight:normal;font-style:italic}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{white-space:normal}.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}.rst-content table.field-list td>strong,.rst-content table.field-list .field-name{white-space:normal}div[class^='highlight'] pre{margin-bottom:24px}.rst-content p.caption{font-size:14px;line-height:18px;width:60%;margin:0;padding:0;font-weight:normal;font-style:normal;color:#000}.rst-content p.caption::before{content:"Figure: "}.rst-content p.caption .caption-text{font-style:normal;color:#000}td.field-body p.first{margin-top:0}.panel{background-color:#fff;border:1px solid rgba(0,0,0,0.15);border-radius:4px;box-shadow:0 1px 1px transparent;margin-bottom:20px}.panel-default>*{padding-left:15px;padding-right:15px}.panel-default>span{padding:0}.panel-default>h1,.panel-default>h2,.rst-content .panel-default>p.caption,.panel-default>h3,.panel-default>h4,.panel-default>h5,.panel-default>h6{background-color:#e8e8e8;border-bottom:1px solid rgba(0,0,0,0.1);border-top-left-radius:3px;border-top-right-radius:3px;margin:0;padding-top:12px;padding-bottom:12px}.with-border{border:1px solid #d9d9d9}.with-shadow{box-shadow:0 2px 10px #bababa}.section .sitemap ul{border-left:2px solid #ccc}.section .sitemap ul li{margin-bottom:0;margin-top:0;list-style:none}.section .sitemap ul li li{list-style:none}.section .sitemap ul li li li{list-style:none}.section .sitemap ul li li li li{list-style:none}.section .sitemap ul li li li li li{list-style:none}.section .sitemap ul li li li li li li{list-style:none}.section .sitemap ul li li li li li li li{list-style:none}.section .sitemap ul li li li li li li li li{list-style:none}.rst-content .section ul.compact-list li,.rst-content .section ol.compact-list li,.rst-content .section div.compact-list li{margin-top:0;margin-bottom:0}.rst-content h3{border-bottom:2px solid #ccc}.rst-content .figure>img.with-shadow{margin-bottom:10px}.rst-content ul.horizbuttons-attention-xxxl,.rst-content ul.horizbuttons-important-xxxl,.rst-content ul.horizbuttons-note-xxxl,.rst-content ul.horizbuttons-primary-xxxl,.rst-content ul.horizbuttons-striking-xxxl,.rst-content ul.horizbuttons-tip-xxxl,.rst-content ul.horizbuttons-typo3-xxxl,.rst-content ul.horizbuttons-warning-xxxl{font-size:200%}.rst-content ul.horizbuttons-attention-xxl,.rst-content ul.horizbuttons-important-xxl,.rst-content ul.horizbuttons-note-xxl,.rst-content ul.horizbuttons-primary-xxl,.rst-content ul.horizbuttons-striking-xxl,.rst-content ul.horizbuttons-tip-xxl,.rst-content ul.horizbuttons-typo3-xxl,.rst-content ul.horizbuttons-warning-xxl{font-size:150%}.rst-content ul.horizbuttons-attention-m,.rst-content ul.horizbuttons-important-m,.rst-content ul.horizbuttons-note-m,.rst-content ul.horizbuttons-primary-m,.rst-content ul.horizbuttons-striking-m,.rst-content ul.horizbuttons-tip-m,.rst-content ul.horizbuttons-typo3-m,.rst-content ul.horizbuttons-warning-m{font-size:100%}.rst-content ul.horizbuttons-attention-xxxl>li,.rst-content ul.horizbuttons-attention-xxl>li,.rst-content ul.horizbuttons-attention-m>li{background-color:#2994ff}.rst-content ul.horizbuttons-important-xxxl>li,.rst-content ul.horizbuttons-important-xxl>li,.rst-content ul.horizbuttons-important-m>li{background-color:#ff5e00}.rst-content ul.horizbuttons-note-xxxl>li,.rst-content ul.horizbuttons-note-xxl>li,.rst-content ul.horizbuttons-note-m>li{background-color:#8c8c8c}.rst-content ul.horizbuttons-primary-xxxl>li,.rst-content ul.horizbuttons-primary-xxl>li,.rst-content ul.horizbuttons-primary-m>li{background-color:#ff8700}.rst-content ul.horizbuttons-striking-xxxl>li,.rst-content ul.horizbuttons-striking-xxl>li,.rst-content ul.horizbuttons-striking-m>li{background-color:#9b58b6}.rst-content ul.horizbuttons-tip-xxxl>li,.rst-content ul.horizbuttons-tip-xxl>li,.rst-content ul.horizbuttons-tip-m>li{background-color:#5abc55}.rst-content ul.horizbuttons-typo3-xxxl>li,.rst-content ul.horizbuttons-typo3-xxl>li,.rst-content ul.horizbuttons-typo3-m>li{background-color:#ff8700}.rst-content ul.horizbuttons-warning-xxxl>li,.rst-content ul.horizbuttons-warning-xxl>li,.rst-content ul.horizbuttons-warning-m>li{background-color:#ff001a}.rst-content ul.horizbuttons-attention-xxxl>li,.rst-content ul.horizbuttons-attention-xxl>li,.rst-content ul.horizbuttons-attention-m>li,.rst-content ul.horizbuttons-important-xxxl>li,.rst-content ul.horizbuttons-important-xxl>li,.rst-content ul.horizbuttons-important-m>li,.rst-content ul.horizbuttons-note-xxxl>li,.rst-content ul.horizbuttons-note-xxl>li,.rst-content ul.horizbuttons-note-m>li,.rst-content ul.horizbuttons-primary-xxxl>li,.rst-content ul.horizbuttons-primary-xxl>li,.rst-content ul.horizbuttons-primary-m>li,.rst-content ul.horizbuttons-striking-xxxl>li,.rst-content ul.horizbuttons-striking-xxl>li,.rst-content ul.horizbuttons-striking-m>li,.rst-content ul.horizbuttons-tip-xxxl>li,.rst-content ul.horizbuttons-tip-xxl>li,.rst-content ul.horizbuttons-tip-m>li,.rst-content ul.horizbuttons-typo3-xxxl>li,.rst-content ul.horizbuttons-typo3-xxl>li,.rst-content ul.horizbuttons-typo3-m>li,.rst-content ul.horizbuttons-warning-xxxl>li,.rst-content ul.horizbuttons-warning-xxl>li,.rst-content ul.horizbuttons-warning-m>li{border-radius:5px;color:#fff;display:inline;line-height:2;margin:0 12px 0 0;padding:0 12px;white-space:nowrap}.rst-content ul.horizbuttons-attention-xxxl>li>a,.rst-content ul.horizbuttons-attention-xxl>li>a,.rst-content ul.horizbuttons-attention-m>li>a,.rst-content ul.horizbuttons-important-xxxl>li>a,.rst-content ul.horizbuttons-important-xxl>li>a,.rst-content ul.horizbuttons-important-m>li>a,.rst-content ul.horizbuttons-note-xxxl>li>a,.rst-content ul.horizbuttons-note-xxl>li>a,.rst-content ul.horizbuttons-note-m>li>a,.rst-content ul.horizbuttons-primary-xxxl>li>a,.rst-content ul.horizbuttons-primary-xxl>li>a,.rst-content ul.horizbuttons-primary-m>li>a,.rst-content ul.horizbuttons-striking-xxxl>li>a,.rst-content ul.horizbuttons-striking-xxl>li>a,.rst-content ul.horizbuttons-striking-m>li>a,.rst-content ul.horizbuttons-tip-xxxl>li>a,.rst-content ul.horizbuttons-tip-xxl>li>a,.rst-content ul.horizbuttons-tip-m>li>a,.rst-content ul.horizbuttons-typo3-xxxl>li>a,.rst-content ul.horizbuttons-typo3-xxl>li>a,.rst-content ul.horizbuttons-typo3-m>li>a,.rst-content ul.horizbuttons-warning-xxxl>li>a,.rst-content ul.horizbuttons-warning-xxl>li>a,.rst-content ul.horizbuttons-warning-m>li>a{color:#fff;font-weight:bold}.rst-content ol.bignums-xxl{counter-reset:li-counter}.rst-content ol.bignums-xxl>li{list-style-type:none;margin:36px 0;padding:12px 12px 12px 55.2px;position:relative;background-color:transparent;border-radius:0;border-top:6px solid #ddd}.rst-content ol.bignums-xxl>li>p.first{font-size:24px;font-weight:bold;margin-top:0;line-height:36px}.rst-content ol.bignums-xxl>li::before{background-color:#333;color:#fff;border:6px solid #b3b3b3;background-color:#fff;color:#333;border:6px solid #ddd;border-radius:50%;content:counter(li-counter,decimal);counter-increment:li-counter;font-size:24px;font-weight:bold;line-height:34.2px;margin:0 24px 0 0;position:absolute;text-align:center;left:2.4px;top:7.2px;width:36px;height:36px}.rst-content ol.bignums-attention,.rst-content ol.bignums-tip,.rst-content ol.bignums-important,.rst-content ol.bignums-warning,.rst-content ol.bignums{counter-reset:li-counter}.rst-content ol.bignums-attention>li,.rst-content ol.bignums-tip>li,.rst-content ol.bignums-important>li,.rst-content ol.bignums-warning>li,.rst-content ol.bignums>li{list-style-type:none;margin:24px 0;padding:8px 8px 8px 40px;position:relative;background-color:#f2ebe3;border-radius:5px}.rst-content ol.bignums-attention>li>p.first,.rst-content ol.bignums-tip>li>p.first,.rst-content ol.bignums-important>li>p.first,.rst-content ol.bignums-warning>li>p.first,.rst-content ol.bignums>li>p.first{font-size:16px;font-weight:bold;margin-top:0;line-height:24px}.rst-content ol.bignums-attention>li::before,.rst-content ol.bignums-tip>li::before,.rst-content ol.bignums-important>li::before,.rst-content ol.bignums-warning>li::before,.rst-content ol.bignums>li::before{background-color:#333;border-radius:50%;color:#fff;content:counter(li-counter,decimal);counter-increment:li-counter;font-size:16px;font-weight:bold;line-height:22.8px;margin:0 16px 0 0;position:absolute;text-align:center;left:8px;top:8px;width:24px;height:24px}.rst-content ol.bignums-tip>li{background-color:#d5f6e3}.rst-content ol.bignums-tip>li>p.first{color:#0b8e42}.rst-content ol.bignums-tip>li::before{background-color:#28af60}.rst-content ol.bignums-important>li{background-color:#ffe5d6}.rst-content ol.bignums-important>li>p.first{color:#c24700}.rst-content ol.bignums-important>li::before{background-color:#ff5e00}.rst-content ol.bignums-attention>li{background-color:#d5e9f6}.rst-content ol.bignums-attention>li>p.first{color:#006bb3}.rst-content ol.bignums-attention>li::before{background-color:#3694d3}.rst-content ol.bignums-warning>li{background-color:#ffd6da}.rst-content ol.bignums-warning>li>p.first{color:#cc0014}.rst-content ol.bignums-warning>li::before{background-color:#ff001a}.clear-both{clear:both}.float-left{float:left;margin-right:24px;margin-bottom:12px}.float-right{float:right;margin-left:24px;margin-bottom:12px}.cc{clear:both}.rst-content dl.dl-parameters dt{background-color:#e8dcce;border-bottom:1px solid #fff;border-top:2px solid #988d81;color:#661400;font-weight:normal;margin:30px 0 0 0;padding:6px 12px}.rst-content dl.dl-parameters dd{background-color:#f9f2ec;border-top:2px solid #fff;margin:0 0 30px 0;padding:6px 12px}.rst-content dl.dl-parameters dd p.first .aspect{color:#996833;font-style:normal}.rst-content dl.dl-parameters dd p.first .sep{color:#996833;font-weight:normal;margin:0 .4em}.rst-content dl.dl-parameters dd p.first .sep:nth-of-type(1){margin-left:0}code.kbd,.rst-content tt.kbd,kbd{background-color:#f0f0f0;border-radius:5px;border:1px solid #ccc;box-shadow:0 1px 0 rgba(0,0,0,0.3),0 0 0 2px #fff inset;color:#000;display:inline-block;line-height:1.2;margin:0 .1em -.5em;padding:.2em .5em;text-shadow:0 1px 0 #fff}.before-stealth-btn{margin-bottom:0}.stealth-btn-text{color:#fff}.stealth-btn,.stealth-btn:visited{color:#eee}.stealth-btn:hover,.stealth-btn:hover .stealth-btn-text{color:#ff8700} -/*# sourceMappingURL=theme-no-fonts.css.map */ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/css/theme.css b/Documentation-GENERATED-temp/Cache/html/_static/css/theme.css deleted file mode 100644 index 510094b1..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_static/css/theme.css +++ /dev/null @@ -1,5 +0,0 @@ -*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,.rst-content code,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,.rst-content p.caption,h3{orphans:3;widows:3}h2,.rst-content p.caption,h3{page-break-after:avoid}}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition-generic-admonition,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*! - * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.2.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff?v=4.2.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.2.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-menu-vertical li span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.rst-content code.download span.pull-left:first-child,.pull-left.icon{margin-right:.3em}.fa.pull-right,.wy-menu-vertical li span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.rst-content code.download span.pull-right:first-child,.pull-right.icon{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{font-family:inherit}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{font-family:FontAwesome;display:inline-block;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa,a .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content p.caption .headerlink,.rst-content p.caption a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-content dl dt .headerlink,.rst-content dl dt a .headerlink,a .rst-content tt.download span:first-child,.rst-content tt.download a span:first-child,a .rst-content code.download span:first-child,.rst-content code.download a span:first-child,a .icon{display:inline-block;text-decoration:inherit}.btn .fa,.btn .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .btn span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.btn .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content p.caption .headerlink,.rst-content p.caption .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .rst-content tt.download span:first-child,.rst-content tt.download .btn span:first-child,.btn .rst-content code.download span:first-child,.rst-content code.download .btn span:first-child,.btn .icon,.nav .fa,.nav .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand,.nav .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content p.caption .headerlink,.rst-content p.caption .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .rst-content tt.download span:first-child,.rst-content tt.download .nav span:first-child,.nav .rst-content code.download span:first-child,.rst-content code.download .nav span:first-child,.nav .icon{display:inline}.btn .fa.fa-large,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .btn span.fa-large:first-child,.btn .rst-content code.download span.fa-large:first-child,.rst-content code.download .btn span.fa-large:first-child,.btn .fa-large.icon,.nav .fa.fa-large,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.nav .rst-content code.download span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.nav .fa-large.icon{line-height:.9em}.btn .fa.fa-spin,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .btn span.fa-spin:first-child,.btn .rst-content code.download span.fa-spin:first-child,.rst-content code.download .btn span.fa-spin:first-child,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.nav .rst-content code.download span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.wy-menu-vertical li span.btn.toctree-expand:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.rst-content code.download span.btn:first-child:before,.btn.icon:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.rst-content code.download span.btn:first-child:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.rst-content tt.download .btn-mini span:first-child:before,.btn-mini .rst-content code.download span:first-child:before,.rst-content code.download .btn-mini span:first-child:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition-generic-admonition{padding:12px;line-height:24px;margin-top:24px;margin-bottom:24px;background:#fff;background:#dbedff;background:#f2ebe3}.wy-alert-title,.rst-content .admonition-title{color:#fff;color:#333;font-weight:bold;display:block;background:#66b3ff;background:#2994ff;background:#ded9d3;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .wy-alert-danger.danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.admonition-generic-admonition{background:#fff4cc;background:#ffefb3;background:#ffd8c2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .wy-alert-danger.danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition-generic-admonition .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .wy-alert-danger.danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition-generic-admonition .admonition-title{color:#fff;background:#ffde66;background:#ffc800;background:#ff5e00}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .wy-alert-warning.attention,.rst-content .caution,.rst-content .danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .wy-alert-warning.admonition-todo,.rst-content .wy-alert-warning.admonition-generic-admonition{background:#ffedcc;background:#fac1cd;background:#ffc7cd}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .wy-alert-warning.attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .wy-alert-warning.admonition-todo .wy-alert-title,.rst-content .wy-alert-warning.admonition-generic-admonition .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .wy-alert-warning.attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .wy-alert-warning.admonition-todo .admonition-title,.rst-content .wy-alert-warning.admonition-generic-admonition .admonition-title{color:#fff;background:#f1b47e;background:#dd123d;background:#ff001a}.wy-alert.wy-alert-info,.rst-content .wy-alert-info.note,.rst-content .attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .wy-alert-info.seealso,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.admonition-generic-admonition{background:#fff;background:#dbedff}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .wy-alert-info.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .wy-alert-info.seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition-generic-admonition .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .wy-alert-info.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .wy-alert-info.seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition-generic-admonition .admonition-title{color:#fff;background:#66b3ff;background:#2994ff}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .wy-alert-success.important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.admonition-generic-admonition{background:#fff;background:#d6eed5}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .wy-alert-success.important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition-generic-admonition .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .wy-alert-success.important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition-generic-admonition .admonition-title{color:#fff;background:#5abc55}.wy-alert.wy-alert-neutral,.rst-content .note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .seealso,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .admonition-generic-admonition{background:#f2ebe3}.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .admonition-generic-admonition .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .admonition-generic-admonition .admonition-title{color:#333;background:#ded9d3}.wy-alert.wy-alert-neutral a,.rst-content .note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .seealso a,.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .admonition-generic-admonition a{color:#b34700}.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seealso p:last-child,.rst-content .admonition-todo p:last-child,.rst-content .admonition-generic-admonition p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0px;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all 0.3s ease-in;-moz-transition:all 0.3s ease-in;transition:all 0.3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#5abc55}.wy-tray-container li.wy-tray-item-info{background:#0080ff}.wy-tray-container li.wy-tray-item-warning{background:#e77e23}.wy-tray-container li.wy-tray-item-danger{background:#ffc800}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width: 768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);background-color:#5abc55;text-decoration:none;font-weight:normal;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset;outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#cc5200;color:#fff}.btn:hover{background:#6cc367;color:#fff}.btn:focus{background:#6cc367;outline:0}.btn:active{box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05) inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset;padding:8px 12px 6px 12px}.btn:visited{color:#fff}.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#0080ff !important}.btn-info:hover{background-color:#1a8dff !important}.btn-neutral{background-color:#f2ebe3 !important;color:#333 !important}.btn-neutral:hover{background-color:#e9ded2 !important;color:#333}.btn-neutral:visited{color:#333 !important}.btn-success{background-color:#5abc55 !important}.btn-success:hover{background-color:#4bb246 !important}.btn-danger{background-color:#ffc800 !important}.btn-danger:hover{background-color:#ffce1a !important}.btn-warning{background-color:#e77e23 !important}.btn-warning:hover{background-color:#e98c3a !important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f !important}.btn-link{background-color:transparent !important;color:#b34700;box-shadow:none;border-color:transparent !important}.btn-link:hover{background-color:transparent !important;color:#e65c00 !important;box-shadow:none}.btn-link:active{background-color:transparent !important;color:#e65c00 !important;box-shadow:none}.btn-link:visited{color:#b34700}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#333;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#b34700;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#b34700;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 .3125em 0;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#ffc800}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{float:left;display:block;margin-right:2.3576515979%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.3576515979%;width:48.821174201%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n+1){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.3576515979%;width:31.7615656014%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:6px 0 0 0;font-size:90%}.wy-control-no-input{display:inline-block;margin:6px 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type="datetime-local"]{padding:.34375em .625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9 ;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129FEA}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#ffc800;border:1px solid #ffc800}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#ffc800}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#ffc800}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type="radio"][disabled],input[type="checkbox"][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#333;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f2ebe3;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{width:36px;height:12px;margin:12px 0;position:relative;border-radius:4px;background:#ccc;cursor:pointer;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:before{position:absolute;content:"";display:block;width:18px;height:18px;border-radius:4px;background:#999;left:-3px;top:-3px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{content:"false";position:absolute;left:48px;display:block;font-size:12px;color:#ccc}.wy-switch.active{background:#439f3f}.wy-switch.active:before{left:24px;background:#5abc55}.wy-switch.active:after{content:"true"}.wy-switch.disabled,.wy-switch.active.disabled{cursor:not-allowed}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#ffc800}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 1px #ffc800}.wy-control-group.wy-control-group-error textarea{border:solid 1px #ffc800}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#5abc55}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#ffc800}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#e77e23}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#0080ff}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:.3em;display:block}.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:100%;margin:0;overflow:visible;padding:3.2px 8px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #ded9d3}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px}.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:#737373;font-size:90%}.wy-table-tertiary{color:#737373;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f2ebe3}.wy-table-backed{background-color:#f2ebe3}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #ded9d3}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #ded9d3;border-left:1px solid #ded9d3}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #ded9d3}.wy-table-bordered-rows td{border-bottom:1px solid #ded9d3}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #ded9d3}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#b34700;text-decoration:none;cursor:pointer}a:hover{color:#ff8700}a:visited{color:#b34700}html{height:100%;overflow-x:hidden}body{font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;font-weight:normal;color:#333;min-height:100%;overflow-x:hidden;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#e77e23 !important}a.wy-text-warning:hover{color:#ec9951 !important}.wy-text-info{color:#0080ff !important}a.wy-text-info:hover{color:#39f !important}.wy-text-success{color:#5abc55 !important}a.wy-text-success:hover{color:#7eca7a !important}.wy-text-danger{color:#ffc800 !important}a.wy-text-danger:hover{color:#ffd333 !important}.wy-text-neutral{color:#333 !important}a.wy-text-neutral:hover{color:#4d4d4d !important}h1,h2,.rst-content p.caption,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:Share,Helvetica,Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2,.rst-content p.caption{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #ded9d3;margin:24px 0;padding:0}code,.rst-content tt,.rst-content code{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #bbc1c4;font-size:75%;padding:0 5px;font-family:"Source Code Pro",monospace;color:#ffc800;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{margin-bottom:0}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,article ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{list-style:square}.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{list-style:decimal}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{list-style:decimal;margin-left:24px}.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{margin-bottom:0}.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{margin-bottom:0}.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,article ol li ul li{list-style:disc}h1{font-size:200%;font-weight:normal}h3{font-size:135%;font-weight:normal}h5{font-size:115%;font-weight:normal}code,.rst-content tt,.rst-content code{font-size:14px}p{margin-top:12px;margin-bottom:12px}.codeblock-example{border:1px solid #ded9d3;border-bottom:none;padding:1.3;padding-top:2.6;font-weight:500;background:#fff;position:relative}.codeblock-example:after{content:"Example";position:absolute;top:0px;left:0px;background:#9b58b6;color:#fff}.codeblock-example.prettyprint-example-only{border:1px solid #ded9d3;margin-bottom:1.3}.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight']{padding:0;overflow-x:auto;background:transparent;margin:1px 0 1.3 0}.codeblock div[class^='highlight'],pre.literal-block div[class^='highlight'],.rst-content .literal-block div[class^='highlight'],div[class^='highlight'] div[class^='highlight']{border:none;background:none;margin:0}div[class^='highlight'] td.code{width:100%}.linenodiv pre{border-right:solid 1px #e3ded9;margin:0;padding:.65 .65;font-family:"Source Code Pro",monospace;font-size:14px;line-height:1.3;color:#ccc}div[class^='highlight'] pre{border:1px solid #777;border:2px solid #888;border-radius:4px;color:#fff;display:block;font-family:"Source Code Pro",monospace;font-size:14px;line-height:1.3;margin:0;overflow:auto;padding:3px;white-space:pre}div[class='highlight']{padding:1px}@media print{.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight'],div[class^='highlight'] pre{white-space:pre-wrap}}.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block{border:1px solid #4e4a4a;color:#fff;padding:0px;width:100%;overflow-x:auto;background:#343131;margin:1px 0 24px 0}.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight'] pre{background-color:#151515;color:#E0E0E0}.linenodiv pre{border-right:solid 1px #777;padding-left:2.3333333333px;padding-right:2.3333333333px}.hll{background-color:#303030}.c{color:#D0D0D0}.c1{color:#D0D0D0}.cm{color:#D0D0D0}.cp{color:#D0D0D0}.cs{color:#D0D0D0}.err{color:#af5786}.k{color:#82d3c6}.kc{color:#82d3c6}.kd{color:#82d3c6}.kn{color:#e90}.kp{color:#82d3c6}.kr{color:#82d3c6}.kt{color:#ec6341}.l{color:#4b88b4}.il{color:#4b88b4}.ld{color:#af5786}.m{color:#ec6341}.mf{color:#ec6341}.mh{color:#ec6341}.mi{color:#ec6341}.mo{color:#ec6341}.s{color:#9ac147}.s1{color:#9ac147}.s2{color:#9ac147}.sb{color:#9ac147}.sc{color:#9ac147}.sd{color:#B0B0B0}.se{color:#4b88b4}.sh{color:#9ac147}.si{color:#4b88b4}.sr{color:#9ac147}.ss{color:#9ac147}.sx{color:#9ac147}.n{color:#bf8e55}.na{color:#d27f2d}.nb{color:#bf8e55}.nc{color:#ec6341}.nd{color:#e90}.ne{color:#af5786}.nf{color:#d27f2d}.ni{color:#bf8e55}.nl{color:#bf8e55}.nn{color:#ec6341}.no{color:#af5786}.nt{color:#e90}.nv{color:#af5786}.nx{color:#d27f2d}.py{color:#bf8e55}.bp{color:#bf8e55}.vc{color:#af5786}.vg{color:#af5786}.vi{color:#af5786}.o{color:#ffe16b}.p{color:#E0E0E0}.gd{color:#af5786}.gh{color:#bf8e55}.gi{color:#d27f2d}.gp{color:#B0B0B0}.gu{color:#e90}.ow{color:#e90}.w{color:#bf8e55}.x{color:#E0E0E0}.ge{font-style:italic}.gh{font-weight:bold}.gp{font-weight:bold}.gs{font-weight:bold}.gu{font-weight:bold}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs-extra{margin-bottom:0;color:#a6a6a6;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical header,.wy-menu-vertical p.caption{height:32px;display:inline-block;line-height:32px;padding:0 1.618em;margin-bottom:0;display:block;font-weight:bold;text-transform:uppercase;font-size:80%;color:#555;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:#737373;color:#333;border-right:solid 1px #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li a:hover span.toctree-expand{color:#fff}.wy-menu-vertical li code,.wy-menu-vertical li .rst-content tt,.rst-content .wy-menu-vertical li tt{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:0.8em;line-height:1.6em;color:#a6a6a6}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#333;padding:.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.on a:hover span.toctree-expand,.wy-menu-vertical li.current>a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand{display:block;font-size:0.8em;line-height:1.6em;color:#262626}.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul,.wy-menu-vertical li.toctree-l3.current li.toctree-l4>ul,.wy-menu-vertical li.toctree-l4.current li.toctree-l5>ul,.wy-menu-vertical li.toctree-l5.current li.toctree-l6>ul,.wy-menu-vertical li.toctree-l6.current li.toctree-l7>ul,.wy-menu-vertical li.toctree-l7.current li.toctree-l8>ul,.wy-menu-vertical li.toctree-l8.current li.toctree-l6>ul{display:none}.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul,.wy-menu-vertical li.toctree-l3.current li.toctree-l4.current>ul,.wy-menu-vertical li.toctree-l4.current li.toctree-l5.current>ul,.wy-menu-vertical li.toctree-l5.current li.toctree-l6.current>ul,.wy-menu-vertical li.toctree-l6.current li.toctree-l7.current>ul,.wy-menu-vertical li.toctree-l7.current li.toctree-l8.current>ul,.wy-menu-vertical li.toctree-l8.current li.toctree-l6.current>ul{display:block}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{display:block}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{display:block}.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l4.current li.toctree-l5>a{display:block}.wy-menu-vertical li.toctree-l4 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l4 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l5.current li.toctree-l6>a{display:block}.wy-menu-vertical li.toctree-l5 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l5 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l6.current li.toctree-l7>a{display:block}.wy-menu-vertical li.toctree-l6 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l6 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l7.current li.toctree-l8>a{display:block}.wy-menu-vertical li.toctree-l7 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l7 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l8.current li.toctree-l9>a{display:block}.wy-menu-vertical li.toctree-l8 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l8 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l9.current li.toctree-l10>a{display:block}.wy-menu-vertical li.toctree-l9 a:hover span.toctree-expand{color:#737373}.wy-menu-vertical li.toctree-l9 span.toctree-expand{color:#969696}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical .local-toc li ul{display:block}.wy-menu-vertical li ul li a{margin-bottom:0;color:#a6a6a6;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:.4045em .809em .4045em 1.618em;display:block;position:relative;color:#a6a6a6;color:#fff}.wy-menu-vertical a:hover{background-color:#4e4a4a;background-color:rgba(255,255,255,0.5);cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#a6a6a6}.wy-menu-vertical a:active{cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-menu-vertical li.toctree-l2>a{padding-left:2.427em;padding-left:2.553894886em;font-size:0.98em}.wy-menu-vertical li.toctree-l3>a{padding-left:4.045em;padding-left:3.5824163888em;font-size:0.96em}.wy-menu-vertical li.toctree-l4>a{padding-left:5.2585em;padding-left:4.4495em;font-size:0.94em}.wy-menu-vertical li.toctree-l5>a{padding-left:6.0675em;padding-left:5.2134157244em;font-size:0.92em}.wy-menu-vertical li.toctree-l6>a{padding-left:6.472em;padding-left:5.9040486692em;font-size:0.9em}.wy-menu-vertical li.toctree-l7>a{padding-left:6.5391512068em;font-size:0.88em}.wy-menu-vertical li.toctree-l8>a{padding-left:7.1302900956em;font-size:0.86em}.wy-menu-vertical li.toctree-l9>a{padding-left:7.6855em;font-size:0.84em}.wy-side-nav-search{z-index:200;text-align:left;padding:0;display:block;color:#fcfcfc;margin-bottom:.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#993d00}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-side-nav-search>a img.logo,.wy-side-nav-search .wy-dropdown>a img.logo{display:block;margin:0 auto;height:auto;width:auto;width:50%;border-radius:0;max-width:50%;background:transparent}.wy-side-nav-search>a.icon img.logo,.wy-side-nav-search .wy-dropdown>a.icon img.logo{margin-top:0.85em;margin-top:0}.wy-side-nav-search{border-bottom:1px solid #666;padding-bottom:6px}.wy-side-nav-search ul.sidebartop{color:#fff;font-size:20px}.wy-side-nav-search ul.sidebartop li.search{font-size:16px}.wy-side-nav-search ul.sidebartop a{display:block;padding:.6472em .809em;color:#fff}.wy-side-nav-search ul.sidebartop a:hover{background-color:rgba(255,255,255,0.2)}.wy-side-nav-search li.docsite{font-family:Share,sans-serif;background-color:#ff8700}.wy-side-nav-search li.docsite a{padding-right:2.2652em}.wy-side-nav-search li.nolink{padding:.6472em .809em}.wy-side-nav-search li.project a{padding-left:2.209em;position:relative}.wy-side-nav-search li.project a:before{position:absolute;font-family:FontAwesome;top:.77664em;left:.87372em;content:""}.wy-nav .wy-menu-vertical header{color:#b34700}.wy-nav .wy-menu-vertical a{color:#a6a6a6}.wy-nav .wy-menu-vertical a:hover{background-color:#b34700;color:#fff}[data-menu-wrap]{-webkit-transition:all 0.2s ease-in;-moz-transition:all 0.2s ease-in;transition:all 0.2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:left repeat-y #fcfcfc;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOERBMTRGRDBFMUUxMUUzODUwMkJCOThDMEVFNURFMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOERBMTRGRTBFMUUxMUUzODUwMkJCOThDMEVFNURFMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4REExNEZCMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4REExNEZDMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EwrlwAAAAA5JREFUeNpiMDU0BAgwAAE2AJgB9BnaAAAAAElFTkSuQmCC);background-size:300px 1px}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:scroll;min-height:100%;background:#343131;z-index:200}.wy-nav-top{display:none;background:#b34700;background:#ff8700;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#ff8700;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;max-width:1600px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:#999}footer p{margin-bottom:12px}.rst-footer-buttons{*zoom:1;margin-top:12px;margin-bottom:12px}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #ded9d3;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #ded9d3;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:#737373;font-size:90%}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1400px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,footer,.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:285px;color:#fcfcfc;background:#1f1d1d;border-top:2px solid #b34700;font-family:"Source Sans Pro",Helvetica,Arial,sans-serif;z-index:400}.rst-versions a{color:#b34700;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .icon,.rst-versions .rst-current-version #relatedLinksText{color:#fcfcfc}.rst-versions .rst-current-version #relatedLinksText{padding-left:0.4em}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book,.rst-versions .rst-current-version .fa-spinner,.rst-versions .rst-current-version #relatedLinksText{float:left}.rst-versions .rst-current-version .icon-book,.rst-versions .rst-current-version .icon-spinner,.rst-versions .rst-current-version #relatedLinksText{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#ffc800;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#ffc800;color:#000}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:#737373;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dt{padding:12px 6px 3px 0}.rst-versions .rst-other-versions dd{display:inline-block}.rst-versions .rst-other-versions dd a{display:block;padding:2px 12px 2px 17px;color:#fcfcfc}.rst-versions .rst-other-versions dd a:hover{background-color:rgba(255,255,255,0.4)}.rst-versions .rst-other-versions dd.nolink{padding:2px 12px}.rst-versions .rst-other-versions dl.versions{max-height:260px;overflow:auto}.rst-versions .rst-other-versions dl.versions dd{display:block}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{height:auto}}.admonition{background-color:#fff1e0}.rst-content img{max-width:100%;height:auto !important}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img,.rst-content .section>a>img{margin-bottom:24px}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content .literal-block,.rst-content pre.literal-block{background:transparent;border:1px solid #bbc1c4;color:#333;padding:4px;font-family:"Source Code Pro",monospace;font-size:14px;line-height:1.3}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last,.rst-content .admonition-todo .last,.rst-content .admonition-generic-admonition .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ul li,.rst-content .section ol li{margin-top:12px;margin-bottom:12px}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .line-block{margin-left:24px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#333}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto;display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink{display:none;visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content p.caption .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content p.caption .headerlink:after{visibility:visible;content:"";font-family:FontAwesome;display:inline-block}.rst-content h1:hover .headerlink,.rst-content h2:hover .headerlink,.rst-content p.caption:hover .headerlink,.rst-content h3:hover .headerlink,.rst-content h4:hover .headerlink,.rst-content h5:hover .headerlink,.rst-content h6:hover .headerlink,.rst-content dl dt:hover .headerlink,.rst-content p.caption:hover .headerlink{display:inline-block}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:12px;background:#f2ebe3;border:solid 1px #ded9d3}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:Share,Helvetica,Arial,sans-serif;font-weight:bold;background:#ded9d3;padding:6px 12px;margin:-12px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#ffc800;display:inline-block;font-weight:bold;padding:0 6px;color:#000}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:super;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:#555}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none;padding-top:5px}.rst-content table.field-list td>strong{display:inline-block;margin-top:3px}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left;padding-left:0}.rst-content tt,.rst-content tt,.rst-content code{color:#000}.rst-content tt big,.rst-content tt em,.rst-content tt big,.rst-content code big,.rst-content tt em,.rst-content code em{font-size:100% !important;line-height:normal}.rst-content tt .xref,a .rst-content tt,.rst-content tt .xref,.rst-content code .xref,a .rst-content tt,a .rst-content code{font-weight:bold}.rst-content a tt,.rst-content a tt,.rst-content a code{color:#b34700}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:inline-block;margin:6px 0;font-size:90%;line-height:normal;background:#fff;color:#0080ff;border-top:solid 3px #66b3ff;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#66b3ff}.rst-content dl:not(.docutils) dt .headerlink{color:#333;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:#737373}.rst-content dl:not(.docutils) dl dt .headerlink{color:#333;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) code{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) code.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#5abc55;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:bold}.rst-content tt.download,.rst-content code.download{background:inherit;padding:inherit;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{margin-right:4px}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#333}.math{text-align:center}@font-face{font-family:"Inconsolata";font-style:normal;font-weight:400;src:local("Inconsolata"),url(../fonts/Inconsolata.ttf) format("truetype")}@font-face{font-family:"Inconsolata";font-style:normal;font-weight:700;src:local("Inconsolata Bold"),local("Inconsolata-Bold"),url(../fonts/Inconsolata-Bold.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:normal;font-weight:400;src:local("Lato Regular"),local("Lato-Regular"),url(../fonts/Lato-Regular.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:normal;font-weight:700;src:local("Lato Bold"),local("Lato-Bold"),url(../fonts/Lato-Bold.ttf) format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:400;src:local("Roboto Slab Regular"),local("RobotoSlab-Regular"),url(../fonts/RobotoSlab-Regular.ttf) format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:700;src:local("Roboto Slab Bold"),local("RobotoSlab-Bold"),url(../fonts/RobotoSlab-Bold.ttf) format("truetype")}@font-face{font-family:"Share";font-style:normal;font-weight:400;src:local("Share Regular"),local("Share-Regular"),url(../fonts/Share-Regular.ttf) format("truetype")}@font-face{font-family:"Share";font-style:italic;font-weight:400;src:local("Share Italic"),local("Share-Italic"),url(../fonts/Share-Italic.ttf) format("truetype")}@font-face{font-family:"Share";font-style:normal;font-weight:700;src:local("Share Bold"),local("Share-Bold"),url(../fonts/Share-Bold.ttf) format("truetype")}@font-face{font-family:"Share";font-style:italic;font-weight:700;src:local("Share Bold Italic"),local("Share-BoldItalic"),url(../fonts/Share-BoldItalic.ttf) format("truetype")}@font-face{font-family:'Source Sans Pro';font-weight:400;font-style:normal;font-stretch:normal;src:local("SourceSansPro-Regular"),local("Source Sans Pro"),url("../fonts/SourceSansPro/eot/SourceSansPro-Regular.eot") format("embedded-opentype"),url("../fonts/SourceSansPro/woff/SourceSansPro-Regular.otf.woff") format("woff"),url("../fonts/SourceSansPro/OTF/SourceSansPro-Regular.otf") format("opentype"),url("../fonts/SourceSansPro/ttf/SourceSansPro-Regular.ttf") format("truetype")}@font-face{font-family:'Source Sans Pro';font-weight:400;font-style:italic;font-stretch:normal;src:local("SourceSansPro-It"),local("Source Sans Pro Italic"),url("../fonts/SourceSansPro/eot/SourceSansPro-It.eot") format("embedded-opentype"),url("../fonts/SourceSansPro/woff/SourceSansPro-It.otf.woff") format("woff"),url("../fonts/SourceSansPro/OTF/SourceSansPro-It.otf") format("opentype"),url("../fonts/SourceSansPro/ttf/SourceSansPro-It.ttf") format("truetype")}@font-face{font-family:'Source Sans Pro';font-weight:700;font-style:normal;font-stretch:normal;src:local("SourceSansPro-Bold"),local("Source Sans Pro Bold"),url("../fonts/SourceSansPro/eot/SourceSansPro-Bold.eot") format("embedded-opentype"),url("../fonts/SourceSansPro/woff/SourceSansPro-Bold.otf.woff") format("woff"),url("../fonts/SourceSansPro/OTF/SourceSansPro-Bold.otf") format("opentype"),url("../fonts/SourceSansPro/ttf/SourceSansPro-Bold.ttf") format("truetype")}@font-face{font-family:'Source Sans Pro';font-weight:700;font-style:italic;font-stretch:normal;src:local("SourceSansPro-BoldIt"),local("Source Sans Pro Bold Italic"),url("../fonts/SourceSansPro/eot/SourceSansPro-BoldIt.eot") format("embedded-opentype"),url("../fonts/SourceSansPro/woff/SourceSansPro-BoldIt.otf.woff") format("woff"),url("../fonts/SourceSansPro/OTF/SourceSansPro-BoldIt.otf") format("opentype"),url("../fonts/SourceSansPro/ttf/SourceSansPro-BoldIt.ttf") format("truetype")}@font-face{font-family:'Source Code Pro';font-weight:400;font-style:normal;font-stretch:normal;src:local("SourceCodePro-Regular"),local("Source Code Pro"),url("../fonts/SourceCodePro/eot/SourceCodePro-Regular.eot") format("embedded-opentype"),url("../fonts/SourceCodePro/woff/SourceCodePro-Regular.woff") format("woff"),url("../fonts/SourceCodePro/OTF/SourceCodePro-Regular.otf") format("opentype"),url("../fonts/SourceCodePro/ttf/SourceCodePro-Regular.ttf") format("truetype")}@font-face{font-family:'Source Code Pro';font-weight:700;font-style:normal;font-stretch:normal;src:local("SourceCodePro-Bold"),local("Source Code Pro Bold"),url("../fonts/SourceCodePro/eot/SourceCodePro-Bold.eot") format("embedded-opentype"),url("../fonts/SourceCodePro/woff/SourceCodePro-Bold.woff") format("woff"),url("../fonts/SourceCodePro/OTF/SourceCodePro-Bold.otf") format("opentype"),url("../fonts/SourceCodePro/ttf/SourceCodePro-Bold.ttf") format("truetype")}.t3-row{margin-top:30px;margin-bottom:30px;border:1px none #888;border-top:2px solid #8a3700;border-top:2px solid #988d81;background-color:#f2ebe3;padding:0;clear:both}.t3-cell{border-bottom:4px solid #fff;background-color:transparent;padding:0 8px}.t3-cell p.term{font-size:9px;font-weight:normal;color:#b34700;margin:0;padding:0 0 3px 0}.doc .t3-cell,.t3-cell{clear:both}.t3-cell-property,.t3-cell-datatype,.t3-cell-key,.t3-cell-default{float:left;clear:none;font-weight:bold;min-width:30%;border-right:4px solid #fff;margin-right:8px}.bg-typo3-key-color{background-color:#ff8700 !important}.bg-typo3-support-orange-dark{background-color:#e67a00 !important}.bg-typo3-support-orange-light{background-color:#ff9926 !important}.bg-typo3-marker-orange{background-color:#ffd095 !important}.bg-typo3-dark-grey{background-color:#515151 !important}.bg-typo3-mid-grey{background-color:#8c8c8c !important}.bg-typo3-light-grey{background-color:#b9b9b9 !important}.bg-typo3-marker-grey{background-color:#f4f4f4 !important}.bg-typo3-message-valid{background-color:#5abc55 !important}.bg-typo3-message-error{background-color:#dd123d !important}.bg-typo3-message-warning{background-color:#ffc800 !important}.bg-typo3-message-information{background-color:#0080ff !important}.bg-black{background-color:#000 !important}.bg-gray-darker{background-color:#222 !important}.bg-gray-dark{background-color:#333 !important}.bg-gray{background-color:#555 !important}.bg-gray-light{background-color:#999 !important}.bg-gray-lighter{background-color:#ccc !important}.bg-white{background-color:#fff !important}.bg-green{background-color:#5abc55 !important}.bg-offgreen{background-color:#5abc55 !important}.bg-blue{background-color:#0080ff !important}.bg-purple{background-color:#9b58b6 !important}.bg-cobalt{background-color:#354a5f !important}.bg-yellow{background-color:#ffc800 !important}.bg-orange{background-color:#e77e23 !important}.bg-red{background-color:#ffc800 !important}.bg-shell{background-color:#edf1f2 !important}.bg-text-color{background-color:#333 !important}.bg-text-invert{background-color:#fff !important}.bg-text-code-color{background-color:#ffc800 !important}.bg-text-code-background-color{background-color:#fff !important}.bg-text-code-border-color{background-color:#bbc1c4 !important}.bg-text-dark{background-color:#595959 !important}.bg-text-medium{background-color:#737373 !important}.bg-text-light{background-color:#a6a6a6 !important}.bg-text-lighter{background-color:#ccc !important}.bg-table-background-color{background-color:transparent !important}.bg-table-border-color{background-color:#ded9d3 !important}.bg-table-stripe-color{background-color:#f2ebe3 !important}.bg-table-bg-hover-color{background-color:#d9d9d9 !important}.bg-table-head-background-color{background-color:#ded9d3 !important}.bg-input-text-color{background-color:#cad2d3 !important}.bg-input-background-color{background-color:#fff !important}.bg-input-border-color{background-color:#ccc !important}.bg-input-shadow-color{background-color:#ddd !important}.bg-input-focus-color{background-color:#333 !important}.bg-link-color{background-color:#b34700 !important}.bg-link-color-visited{background-color:#b34700 !important}.bg-link-color-hover{background-color:#ff8700 !important}.bg-link-color-alt{background-color:red !important}.bg-button-background-color{background-color:#5abc55 !important}.bg-button-neutral-background-color{background-color:#f2ebe3 !important}.bg-spinner-color{background-color:#b34700 !important}.bg-menu-top-link-color{background-color:#f2f2f2 !important}.bg-menu-background-color{background-color:#343131 !important}.bg-menu-logo-color{background-color:#ff8700 !important}@media screen and (min-width: 1400px){h1,h2,.rst-content p.caption{clear:both}}h1,h2,.rst-content p.caption,h3,h4,h5,h6,legend{margin-top:2em;margin-bottom:.5em}.admonition{padding-left:12px;padding-right:12px}#EditMeOnGitHub{color:#fff;background-color:#ff8700;display:block;padding:6px 10px;border-radius:15px}input[type="text"]{font-size:100%}code,.rst-content tt,.rst-content code{background-color:#fffcf0;border-color:#ffe999}code.file,.rst-content tt.file{color:#f08;border:none;background-color:inherit;padding:0}code.html,.rst-content tt.html{color:#70c;border:none;background-color:inherit;font-weight:normal;padding:0}code.js,.rst-content tt.js{color:#00660e;border:none;background-color:inherit;font-weight:normal;padding:0}code.method,.rst-content tt.method{color:#0059b3;border:none;background-color:inherit;font-weight:bold;padding:0}code.php,.rst-content tt.php{color:#0059b3;border:none;background-color:inherit;font-weight:normal;padding:0}code.py-class,.rst-content tt.py-class{color:#0080ff;border:none;background-color:inherit;font-weight:bold;padding:0}code.ts,.rst-content tt.ts,code.typoscript,.rst-content tt.typoscript{color:#661400;border-color:#ffc2b3;background-color:inherit}code.yaml,.rst-content tt.yaml{color:#0f8a75;border:none;background-color:inherit;font-weight:bold;padding:0}em.aspect{background-color:inherit;color:#bf4040;font-weight:normal;font-style:italic}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{white-space:normal}.wy-table-responsive table td,.wy-table-responsive table th{white-space:normal}.rst-content table.field-list td>strong,.rst-content table.field-list .field-name{white-space:normal}div[class^='highlight'] pre{margin-bottom:24px}.rst-content p.caption{font-size:14px;line-height:18px;width:60%;margin:0;padding:0;font-weight:normal;font-style:normal;color:#000}.rst-content p.caption::before{content:"Figure: "}.rst-content p.caption .caption-text{font-style:normal;color:#000}td.field-body p.first{margin-top:0}.panel{background-color:#fff;border:1px solid rgba(0,0,0,0.15);border-radius:4px;box-shadow:0 1px 1px transparent;margin-bottom:20px}.panel-default>*{padding-left:15px;padding-right:15px}.panel-default>span{padding:0}.panel-default>h1,.panel-default>h2,.rst-content .panel-default>p.caption,.panel-default>h3,.panel-default>h4,.panel-default>h5,.panel-default>h6{background-color:#e8e8e8;border-bottom:1px solid rgba(0,0,0,0.1);border-top-left-radius:3px;border-top-right-radius:3px;margin:0;padding-top:12px;padding-bottom:12px}.with-border{border:1px solid #d9d9d9}.with-shadow{box-shadow:0 2px 10px #bababa}.section .sitemap ul{border-left:2px solid #ccc}.section .sitemap ul li{margin-bottom:0;margin-top:0;list-style:none}.section .sitemap ul li li{list-style:none}.section .sitemap ul li li li{list-style:none}.section .sitemap ul li li li li{list-style:none}.section .sitemap ul li li li li li{list-style:none}.section .sitemap ul li li li li li li{list-style:none}.section .sitemap ul li li li li li li li{list-style:none}.section .sitemap ul li li li li li li li li{list-style:none}.rst-content .section ul.compact-list li,.rst-content .section ol.compact-list li,.rst-content .section div.compact-list li{margin-top:0;margin-bottom:0}.rst-content h3{border-bottom:2px solid #ccc}.rst-content .figure>img.with-shadow{margin-bottom:10px}.rst-content ul.horizbuttons-attention-xxxl,.rst-content ul.horizbuttons-important-xxxl,.rst-content ul.horizbuttons-note-xxxl,.rst-content ul.horizbuttons-primary-xxxl,.rst-content ul.horizbuttons-striking-xxxl,.rst-content ul.horizbuttons-tip-xxxl,.rst-content ul.horizbuttons-typo3-xxxl,.rst-content ul.horizbuttons-warning-xxxl{font-size:200%}.rst-content ul.horizbuttons-attention-xxl,.rst-content ul.horizbuttons-important-xxl,.rst-content ul.horizbuttons-note-xxl,.rst-content ul.horizbuttons-primary-xxl,.rst-content ul.horizbuttons-striking-xxl,.rst-content ul.horizbuttons-tip-xxl,.rst-content ul.horizbuttons-typo3-xxl,.rst-content ul.horizbuttons-warning-xxl{font-size:150%}.rst-content ul.horizbuttons-attention-m,.rst-content ul.horizbuttons-important-m,.rst-content ul.horizbuttons-note-m,.rst-content ul.horizbuttons-primary-m,.rst-content ul.horizbuttons-striking-m,.rst-content ul.horizbuttons-tip-m,.rst-content ul.horizbuttons-typo3-m,.rst-content ul.horizbuttons-warning-m{font-size:100%}.rst-content ul.horizbuttons-attention-xxxl>li,.rst-content ul.horizbuttons-attention-xxl>li,.rst-content ul.horizbuttons-attention-m>li{background-color:#2994ff}.rst-content ul.horizbuttons-important-xxxl>li,.rst-content ul.horizbuttons-important-xxl>li,.rst-content ul.horizbuttons-important-m>li{background-color:#ff5e00}.rst-content ul.horizbuttons-note-xxxl>li,.rst-content ul.horizbuttons-note-xxl>li,.rst-content ul.horizbuttons-note-m>li{background-color:#8c8c8c}.rst-content ul.horizbuttons-primary-xxxl>li,.rst-content ul.horizbuttons-primary-xxl>li,.rst-content ul.horizbuttons-primary-m>li{background-color:#ff8700}.rst-content ul.horizbuttons-striking-xxxl>li,.rst-content ul.horizbuttons-striking-xxl>li,.rst-content ul.horizbuttons-striking-m>li{background-color:#9b58b6}.rst-content ul.horizbuttons-tip-xxxl>li,.rst-content ul.horizbuttons-tip-xxl>li,.rst-content ul.horizbuttons-tip-m>li{background-color:#5abc55}.rst-content ul.horizbuttons-typo3-xxxl>li,.rst-content ul.horizbuttons-typo3-xxl>li,.rst-content ul.horizbuttons-typo3-m>li{background-color:#ff8700}.rst-content ul.horizbuttons-warning-xxxl>li,.rst-content ul.horizbuttons-warning-xxl>li,.rst-content ul.horizbuttons-warning-m>li{background-color:#ff001a}.rst-content ul.horizbuttons-attention-xxxl>li,.rst-content ul.horizbuttons-attention-xxl>li,.rst-content ul.horizbuttons-attention-m>li,.rst-content ul.horizbuttons-important-xxxl>li,.rst-content ul.horizbuttons-important-xxl>li,.rst-content ul.horizbuttons-important-m>li,.rst-content ul.horizbuttons-note-xxxl>li,.rst-content ul.horizbuttons-note-xxl>li,.rst-content ul.horizbuttons-note-m>li,.rst-content ul.horizbuttons-primary-xxxl>li,.rst-content ul.horizbuttons-primary-xxl>li,.rst-content ul.horizbuttons-primary-m>li,.rst-content ul.horizbuttons-striking-xxxl>li,.rst-content ul.horizbuttons-striking-xxl>li,.rst-content ul.horizbuttons-striking-m>li,.rst-content ul.horizbuttons-tip-xxxl>li,.rst-content ul.horizbuttons-tip-xxl>li,.rst-content ul.horizbuttons-tip-m>li,.rst-content ul.horizbuttons-typo3-xxxl>li,.rst-content ul.horizbuttons-typo3-xxl>li,.rst-content ul.horizbuttons-typo3-m>li,.rst-content ul.horizbuttons-warning-xxxl>li,.rst-content ul.horizbuttons-warning-xxl>li,.rst-content ul.horizbuttons-warning-m>li{border-radius:5px;color:#fff;display:inline;line-height:2;margin:0 12px 0 0;padding:0 12px;white-space:nowrap}.rst-content ul.horizbuttons-attention-xxxl>li>a,.rst-content ul.horizbuttons-attention-xxl>li>a,.rst-content ul.horizbuttons-attention-m>li>a,.rst-content ul.horizbuttons-important-xxxl>li>a,.rst-content ul.horizbuttons-important-xxl>li>a,.rst-content ul.horizbuttons-important-m>li>a,.rst-content ul.horizbuttons-note-xxxl>li>a,.rst-content ul.horizbuttons-note-xxl>li>a,.rst-content ul.horizbuttons-note-m>li>a,.rst-content ul.horizbuttons-primary-xxxl>li>a,.rst-content ul.horizbuttons-primary-xxl>li>a,.rst-content ul.horizbuttons-primary-m>li>a,.rst-content ul.horizbuttons-striking-xxxl>li>a,.rst-content ul.horizbuttons-striking-xxl>li>a,.rst-content ul.horizbuttons-striking-m>li>a,.rst-content ul.horizbuttons-tip-xxxl>li>a,.rst-content ul.horizbuttons-tip-xxl>li>a,.rst-content ul.horizbuttons-tip-m>li>a,.rst-content ul.horizbuttons-typo3-xxxl>li>a,.rst-content ul.horizbuttons-typo3-xxl>li>a,.rst-content ul.horizbuttons-typo3-m>li>a,.rst-content ul.horizbuttons-warning-xxxl>li>a,.rst-content ul.horizbuttons-warning-xxl>li>a,.rst-content ul.horizbuttons-warning-m>li>a{color:#fff;font-weight:bold}.rst-content ol.bignums-xxl{counter-reset:li-counter}.rst-content ol.bignums-xxl>li{list-style-type:none;margin:36px 0;padding:12px 12px 12px 55.2px;position:relative;background-color:transparent;border-radius:0;border-top:6px solid #ddd}.rst-content ol.bignums-xxl>li>p.first{font-size:24px;font-weight:bold;margin-top:0;line-height:36px}.rst-content ol.bignums-xxl>li::before{background-color:#333;color:#fff;border:6px solid #b3b3b3;background-color:#fff;color:#333;border:6px solid #ddd;border-radius:50%;content:counter(li-counter,decimal);counter-increment:li-counter;font-size:24px;font-weight:bold;line-height:34.2px;margin:0 24px 0 0;position:absolute;text-align:center;left:2.4px;top:7.2px;width:36px;height:36px}.rst-content ol.bignums-attention,.rst-content ol.bignums-tip,.rst-content ol.bignums-important,.rst-content ol.bignums-warning,.rst-content ol.bignums{counter-reset:li-counter}.rst-content ol.bignums-attention>li,.rst-content ol.bignums-tip>li,.rst-content ol.bignums-important>li,.rst-content ol.bignums-warning>li,.rst-content ol.bignums>li{list-style-type:none;margin:24px 0;padding:8px 8px 8px 40px;position:relative;background-color:#f2ebe3;border-radius:5px}.rst-content ol.bignums-attention>li>p.first,.rst-content ol.bignums-tip>li>p.first,.rst-content ol.bignums-important>li>p.first,.rst-content ol.bignums-warning>li>p.first,.rst-content ol.bignums>li>p.first{font-size:16px;font-weight:bold;margin-top:0;line-height:24px}.rst-content ol.bignums-attention>li::before,.rst-content ol.bignums-tip>li::before,.rst-content ol.bignums-important>li::before,.rst-content ol.bignums-warning>li::before,.rst-content ol.bignums>li::before{background-color:#333;border-radius:50%;color:#fff;content:counter(li-counter,decimal);counter-increment:li-counter;font-size:16px;font-weight:bold;line-height:22.8px;margin:0 16px 0 0;position:absolute;text-align:center;left:8px;top:8px;width:24px;height:24px}.rst-content ol.bignums-tip>li{background-color:#d5f6e3}.rst-content ol.bignums-tip>li>p.first{color:#0b8e42}.rst-content ol.bignums-tip>li::before{background-color:#28af60}.rst-content ol.bignums-important>li{background-color:#ffe5d6}.rst-content ol.bignums-important>li>p.first{color:#c24700}.rst-content ol.bignums-important>li::before{background-color:#ff5e00}.rst-content ol.bignums-attention>li{background-color:#d5e9f6}.rst-content ol.bignums-attention>li>p.first{color:#006bb3}.rst-content ol.bignums-attention>li::before{background-color:#3694d3}.rst-content ol.bignums-warning>li{background-color:#ffd6da}.rst-content ol.bignums-warning>li>p.first{color:#cc0014}.rst-content ol.bignums-warning>li::before{background-color:#ff001a}.clear-both{clear:both}.float-left{float:left;margin-right:24px;margin-bottom:12px}.float-right{float:right;margin-left:24px;margin-bottom:12px}.cc{clear:both}.rst-content dl.dl-parameters dt{background-color:#e8dcce;border-bottom:1px solid #fff;border-top:2px solid #988d81;color:#661400;font-weight:normal;margin:30px 0 0 0;padding:6px 12px}.rst-content dl.dl-parameters dd{background-color:#f9f2ec;border-top:2px solid #fff;margin:0 0 30px 0;padding:6px 12px}.rst-content dl.dl-parameters dd p.first .aspect{color:#996833;font-style:normal}.rst-content dl.dl-parameters dd p.first .sep{color:#996833;font-weight:normal;margin:0 .4em}.rst-content dl.dl-parameters dd p.first .sep:nth-of-type(1){margin-left:0}code.kbd,.rst-content tt.kbd,kbd{background-color:#f0f0f0;border-radius:5px;border:1px solid #ccc;box-shadow:0 1px 0 rgba(0,0,0,0.3),0 0 0 2px #fff inset;color:#000;display:inline-block;line-height:1.2;margin:0 .1em -.5em;padding:.2em .5em;text-shadow:0 1px 0 #fff}.before-stealth-btn{margin-bottom:0}.stealth-btn-text{color:#fff}.stealth-btn,.stealth-btn:visited{color:#eee}.stealth-btn:hover,.stealth-btn:hover .stealth-btn-text{color:#ff8700} -/*# sourceMappingURL=theme.css.map */ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/doctools.js b/Documentation-GENERATED-temp/Cache/html/_static/doctools.js deleted file mode 100644 index 344db17d..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_static/doctools.js +++ /dev/null @@ -1,315 +0,0 @@ -/* - * doctools.js - * ~~~~~~~~~~~ - * - * Sphinx JavaScript utilities for all documentation. - * - * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. - * :license: BSD, see LICENSE for details. - * - */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; - } - return result; -}; - -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var bbox = span.getBBox(); - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - var parentOfText = node.parentNode.parentNode; - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} - -/** - * Small JavaScript module for the documentation. - */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { - this.initOnKeyListeners(); - } - }, - - /** - * i18n support - */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', - - // gettext and ngettext don't access this so that the functions - // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated === 'undefined') - return string; - return (typeof translated === 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated === 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; - }, - - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; - }, - - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); - }, - - /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 - */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); - }, - - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - if (!body.length) { - body = $('body'); - } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('') - .appendTo($('#searchbox')); - } - }, - - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) === 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, - - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this === '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); - }, - - initOnKeyListeners: function() { - $(document).keyup(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box or textarea - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; - } - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; - } - } - } - }); - } -}; - -// quick alias for translations -_ = Documentation.gettext; - -$(document).ready(function() { - Documentation.init(); -}); diff --git a/Documentation-GENERATED-temp/Cache/html/_static/documentation_options.js b/Documentation-GENERATED-temp/Cache/html/_static/documentation_options.js deleted file mode 100644 index 711a9bf8..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_static/documentation_options.js +++ /dev/null @@ -1,10 +0,0 @@ -var DOCUMENTATION_OPTIONS = { - URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '8.0.0', - LANGUAGE: 'None', - COLLAPSE_INDEX: false, - FILE_SUFFIX: '.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false, -}; \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/_static/down-pressed.png b/Documentation-GENERATED-temp/Cache/html/_static/down-pressed.png deleted file mode 100644 index 5756c8ca..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/down-pressed.png and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/down.png b/Documentation-GENERATED-temp/Cache/html/_static/down.png deleted file mode 100644 index 1b3bdad2..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/down.png and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/file.png b/Documentation-GENERATED-temp/Cache/html/_static/file.png deleted file mode 100644 index a858a410..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/file.png and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/FontAwesome.otf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/FontAwesome.otf deleted file mode 100644 index 81c9ad94..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/FontAwesome.otf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Inconsolata-Bold.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/Inconsolata-Bold.ttf deleted file mode 100644 index 360a232d..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Inconsolata-Bold.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Inconsolata.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/Inconsolata.ttf deleted file mode 100644 index 4b8a36d2..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Inconsolata.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Lato-Bold.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/Lato-Bold.ttf deleted file mode 100644 index e8b9bf6a..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Lato-Bold.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Lato-Regular.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/Lato-Regular.ttf deleted file mode 100644 index 7608bc3e..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Lato-Regular.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/RobotoSlab-Bold.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/RobotoSlab-Bold.ttf deleted file mode 100644 index e6ed0de5..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/RobotoSlab-Bold.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/RobotoSlab-Regular.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/RobotoSlab-Regular.ttf deleted file mode 100644 index 141d6c08..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/RobotoSlab-Regular.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-Bold.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-Bold.ttf deleted file mode 100644 index c9bfb025..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-Bold.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-BoldItalic.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-BoldItalic.ttf deleted file mode 100644 index 4fa5c364..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-BoldItalic.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-Italic.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-Italic.ttf deleted file mode 100644 index cbfe5615..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-Italic.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-Regular.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-Regular.ttf deleted file mode 100644 index dc9378fd..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-Regular.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-TechMono.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-TechMono.ttf deleted file mode 100644 index a52e26a5..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/Share-TechMono.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/eot/SourceCodePro-Bold.eot b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/eot/SourceCodePro-Bold.eot deleted file mode 100644 index 6c5ec04f..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/eot/SourceCodePro-Bold.eot and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/eot/SourceCodePro-Regular.eot b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/eot/SourceCodePro-Regular.eot deleted file mode 100644 index 1163c3d9..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/eot/SourceCodePro-Regular.eot and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/otf/SourceCodePro-Bold.otf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/otf/SourceCodePro-Bold.otf deleted file mode 100644 index 96b48775..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/otf/SourceCodePro-Bold.otf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/otf/SourceCodePro-Regular.otf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/otf/SourceCodePro-Regular.otf deleted file mode 100644 index 8f031da9..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/otf/SourceCodePro-Regular.otf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/svg/SourceCodePro-Bold.svg b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/svg/SourceCodePro-Bold.svg deleted file mode 100644 index 0aacd04e..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/svg/SourceCodePro-Bold.svg +++ /dev/null @@ -1,967 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/svg/SourceCodePro-Regular.svg b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/svg/SourceCodePro-Regular.svg deleted file mode 100644 index 7e02876d..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/svg/SourceCodePro-Regular.svg +++ /dev/null @@ -1,967 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/ttf/SourceCodePro-Bold.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/ttf/SourceCodePro-Bold.ttf deleted file mode 100644 index a56f1fa5..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/ttf/SourceCodePro-Bold.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/ttf/SourceCodePro-Regular.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/ttf/SourceCodePro-Regular.ttf deleted file mode 100644 index b2cff928..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/ttf/SourceCodePro-Regular.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/woff/SourceCodePro-Bold.woff b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/woff/SourceCodePro-Bold.woff deleted file mode 100644 index 6881a3fa..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/woff/SourceCodePro-Bold.woff and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/woff/SourceCodePro-Regular.woff b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/woff/SourceCodePro-Regular.woff deleted file mode 100644 index 55766709..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceCodePro/woff/SourceCodePro-Regular.woff and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/eot/SourceSansPro-Bold.eot b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/eot/SourceSansPro-Bold.eot deleted file mode 100644 index 9f8ba468..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/eot/SourceSansPro-Bold.eot and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/eot/SourceSansPro-BoldIt.eot b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/eot/SourceSansPro-BoldIt.eot deleted file mode 100644 index 4af27846..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/eot/SourceSansPro-BoldIt.eot and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/eot/SourceSansPro-It.eot b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/eot/SourceSansPro-It.eot deleted file mode 100644 index bb3a7324..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/eot/SourceSansPro-It.eot and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/eot/SourceSansPro-Regular.eot b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/eot/SourceSansPro-Regular.eot deleted file mode 100644 index 1c20988e..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/eot/SourceSansPro-Regular.eot and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/otf/SourceSansPro-Bold.otf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/otf/SourceSansPro-Bold.otf deleted file mode 100644 index 33b46480..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/otf/SourceSansPro-Bold.otf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/otf/SourceSansPro-BoldIt.otf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/otf/SourceSansPro-BoldIt.otf deleted file mode 100644 index 4d30b7f4..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/otf/SourceSansPro-BoldIt.otf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/otf/SourceSansPro-It.otf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/otf/SourceSansPro-It.otf deleted file mode 100644 index d1ccf45a..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/otf/SourceSansPro-It.otf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/otf/SourceSansPro-Regular.otf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/otf/SourceSansPro-Regular.otf deleted file mode 100644 index 55fc5339..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/otf/SourceSansPro-Regular.otf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/ttf/SourceSansPro-Bold.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/ttf/SourceSansPro-Bold.ttf deleted file mode 100644 index be46652b..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/ttf/SourceSansPro-Bold.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/ttf/SourceSansPro-BoldIt.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/ttf/SourceSansPro-BoldIt.ttf deleted file mode 100644 index fd5c4f39..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/ttf/SourceSansPro-BoldIt.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/ttf/SourceSansPro-It.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/ttf/SourceSansPro-It.ttf deleted file mode 100644 index c689cd29..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/ttf/SourceSansPro-It.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/ttf/SourceSansPro-Regular.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/ttf/SourceSansPro-Regular.ttf deleted file mode 100644 index a011dff9..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/ttf/SourceSansPro-Regular.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/woff/SourceSansPro-Bold.otf.woff b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/woff/SourceSansPro-Bold.otf.woff deleted file mode 100644 index 0036a549..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/woff/SourceSansPro-Bold.otf.woff and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/woff/SourceSansPro-BoldIt.otf.woff b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/woff/SourceSansPro-BoldIt.otf.woff deleted file mode 100644 index de03ab7f..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/woff/SourceSansPro-BoldIt.otf.woff and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/woff/SourceSansPro-It.otf.woff b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/woff/SourceSansPro-It.otf.woff deleted file mode 100644 index 9cae9b4b..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/woff/SourceSansPro-It.otf.woff and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/woff/SourceSansPro-Regular.otf.woff b/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/woff/SourceSansPro-Regular.otf.woff deleted file mode 100644 index 6bc912b7..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/SourceSansPro/woff/SourceSansPro-Regular.otf.woff and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/fontawesome-webfont.eot b/Documentation-GENERATED-temp/Cache/html/_static/fonts/fontawesome-webfont.eot deleted file mode 100644 index 84677bc0..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/fontawesome-webfont.svg b/Documentation-GENERATED-temp/Cache/html/_static/fonts/fontawesome-webfont.svg deleted file mode 100644 index d907b25a..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_static/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,520 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/fontawesome-webfont.ttf b/Documentation-GENERATED-temp/Cache/html/_static/fonts/fontawesome-webfont.ttf deleted file mode 100644 index 96a3639c..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/fonts/fontawesome-webfont.woff b/Documentation-GENERATED-temp/Cache/html/_static/fonts/fontawesome-webfont.woff deleted file mode 100644 index 628b6a52..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/img/typo3-documentation.png b/Documentation-GENERATED-temp/Cache/html/_static/img/typo3-documentation.png deleted file mode 100644 index a622454e..00000000 Binary files a/Documentation-GENERATED-temp/Cache/html/_static/img/typo3-documentation.png and /dev/null differ diff --git a/Documentation-GENERATED-temp/Cache/html/_static/img/typo3-white.svg b/Documentation-GENERATED-temp/Cache/html/_static/img/typo3-white.svg deleted file mode 100644 index 01b4dc2b..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_static/img/typo3-white.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - diff --git a/Documentation-GENERATED-temp/Cache/html/_static/jquery-1.11.3.js b/Documentation-GENERATED-temp/Cache/html/_static/jquery-1.11.3.js deleted file mode 100644 index 6feb1108..00000000 --- a/Documentation-GENERATED-temp/Cache/html/_static/jquery-1.11.3.js +++ /dev/null @@ -1,10351 +0,0 @@ -/*! - * jQuery JavaScript Library v1.11.3 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-04-28T16:19Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper window is present, - // execute the factory and get jQuery - // For environments that do not inherently posses a window with a document - // (such as Node.js), expose a jQuery-making factory as module.exports - // This accentuates the need for the creation of a real window - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Can't do this because several apps including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// Support: Firefox 18+ -// - -var deletedIds = []; - -var slice = deletedIds.slice; - -var concat = deletedIds.concat; - -var push = deletedIds.push; - -var indexOf = deletedIds.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "1.11.3", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1, IE<9 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: deletedIds.sort, - splice: deletedIds.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var src, copyIsArray, copy, name, options, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type(obj) === "array"; - }, - - isWindow: function( obj ) { - /* jshint eqeqeq: false */ - return obj != null && obj == obj.window; - }, - - isNumeric: function( obj ) { - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - isPlainObject: function( obj ) { - var key; - - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - } catch ( e ) { - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Support: IE<9 - // Handle iteration over inherited properties before own properties. - if ( support.ownLast ) { - for ( key in obj ) { - return hasOwn.call( obj, key ); - } - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call(obj) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && jQuery.trim( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Support: Android<4.1, IE<9 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - var len; - - if ( arr ) { - if ( indexOf ) { - return indexOf.call( arr, elem, i ); - } - - len = arr.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - // Skip accessing in sparse arrays - if ( i in arr && arr[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - while ( j < len ) { - first[ i++ ] = second[ j++ ]; - } - - // Support: IE<9 - // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) - if ( len !== len ) { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var args, proxy, tmp; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: function() { - return +( new Date() ); - }, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.0-pre - * http://sizzlejs.com/ - * - * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-12-16 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + characterEncoding + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - nodeType = context.nodeType; - - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - if ( !seed && documentIsHTML ) { - - // Try to shortcut find operations when possible (e.g., not under DocumentFragment) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document (jQuery #6963) - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType !== 1 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - parent = doc.defaultView; - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent !== parent.top ) { - // IE11 does not have attachEvent, so all must suffer - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Support tests - ---------------------------------------------------------------------- */ - documentIsHTML = !isXML( doc ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( doc.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return doc; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (oldCache = outerCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - outerCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context !== document && context; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is no seed and only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - }); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - }); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; - }); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var i, - ret = [], - self = this, - len = self.length; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); - }, - not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -}); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof rootjQuery.ready !== "undefined" ? - rootjQuery.ready( selector ) : - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.extend({ - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -jQuery.fn.extend({ - has: function( target ) { - var i, - targets = jQuery( target, this ), - len = targets.length; - - return this.filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[0], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.unique( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - do { - cur = cur[ dir ]; - } while ( cur && cur.nodeType !== 1 ); - - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - if ( this.length > 1 ) { - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - ret = jQuery.unique( ret ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - } - - return this.pushStack( ret ); - }; -}); -var rnotwhite = (/\S+/g); - - - -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // First callback to fire (used internally by add and fireWith) - firingStart, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - - } else if ( !(--remaining) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend({ - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -}); - -/** - * Clean-up method for dom ready events - */ -function detach() { - if ( document.addEventListener ) { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - - } else { - document.detachEvent( "onreadystatechange", completed ); - window.detachEvent( "onload", completed ); - } -} - -/** - * The ready event handler and self cleanup method - */ -function completed() { - // readyState === "complete" is good enough for us to call the dom ready in oldIE - if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { - detach(); - jQuery.ready(); - } -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - // Standards-based browsers support DOMContentLoaded - } else if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - - // If IE event model is used - } else { - // Ensure firing before onload, maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", completed ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", completed ); - - // If IE and not a frame - // continually check to see if the document is ready - var top = false; - - try { - top = window.frameElement == null && document.documentElement; - } catch(e) {} - - if ( top && top.doScroll ) { - (function doScrollCheck() { - if ( !jQuery.isReady ) { - - try { - // Use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - top.doScroll("left"); - } catch(e) { - return setTimeout( doScrollCheck, 50 ); - } - - // detach all dom ready events - detach(); - - // and execute any waiting functions - jQuery.ready(); - } - })(); - } - } - } - return readyList.promise( obj ); -}; - - -var strundefined = typeof undefined; - - - -// Support: IE<9 -// Iteration over object's inherited properties before its own -var i; -for ( i in jQuery( support ) ) { - break; -} -support.ownLast = i !== "0"; - -// Note: most support tests are defined in their respective modules. -// false until the test is run -support.inlineBlockNeedsLayout = false; - -// Execute ASAP in case we need to set body.style.zoom -jQuery(function() { - // Minified: var a,b,c,d - var val, div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - // Return for frameset docs that don't have a body - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - if ( typeof div.style.zoom !== strundefined ) { - // Support: IE<8 - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; - - support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; - if ( val ) { - // Prevent IE 6 from affecting layout for positioned elements #11048 - // Prevent IE from shrinking the body in IE 7 mode #12869 - // Support: IE<8 - body.style.zoom = 1; - } - } - - body.removeChild( container ); -}); - - - - -(function() { - var div = document.createElement( "div" ); - - // Execute the test only if not already executed in another module. - if (support.deleteExpando == null) { - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -})(); - - -/** - * Determines whether an object can have data - */ -jQuery.acceptData = function( elem ) { - var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], - nodeType = +elem.nodeType || 1; - - // Do not set data on non-element DOM nodes because it will not be cleared (#8335). - return nodeType !== 1 && nodeType !== 9 ? - false : - - // Nodes accept data unless otherwise specified; rejection can be conditional - !noData || noData !== true && elem.getAttribute("classid") === noData; -}; - - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - var name; - for ( name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - -function internalData( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var ret, thisCache, - internalKey = jQuery.expando, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - // Avoid exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( typeof name === "string" ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; -} - -function internalRemoveData( elem, name, pvt ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var thisCache, i, - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split(" "); - } - } - } else { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = name.concat( jQuery.map( name, jQuery.camelCase ) ); - } - - i = name.length; - while ( i-- ) { - delete thisCache[ name[i] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject( cache[ id ] ) ) { - return; - } - } - - // Destroy the cache - if ( isNode ) { - jQuery.cleanData( [ elem ], true ); - - // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) - /* jshint eqeqeq: false */ - } else if ( support.deleteExpando || cache != cache.window ) { - /* jshint eqeqeq: true */ - delete cache[ id ]; - - // When all else fails, null - } else { - cache[ id ] = null; - } -} - -jQuery.extend({ - cache: {}, - - // The following elements (space-suffixed to avoid Object.prototype collisions) - // throw uncatchable exceptions if you attempt to set expando properties - noData: { - "applet ": true, - "embed ": true, - // ...but Flash objects (which have this classid) *can* handle expandos - "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data ) { - return internalData( elem, name, data ); - }, - - removeData: function( elem, name ) { - return internalRemoveData( elem, name ); - }, - - // For internal use only. - _data: function( elem, name, data ) { - return internalData( elem, name, data, true ); - }, - - _removeData: function( elem, name ) { - return internalRemoveData( elem, name, true ); - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var i, name, data, - elem = this[0], - attrs = elem && elem.attributes; - - // Special expections of .data basically thwart jQuery.access, - // so implement the relevant behavior ourselves - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = jQuery.data( elem ); - - if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice(5) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - jQuery._data( elem, "parsedAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - return arguments.length > 1 ? - - // Sets one value - this.each(function() { - jQuery.data( this, key, value ); - }) : - - // Gets one value - // Try to fetch any internally stored data first - elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - - -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray(data) ) { - queue = jQuery._data( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return jQuery._data( elem, key ) || jQuery._data( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - jQuery._removeData( elem, type + "queue" ); - jQuery._removeData( elem, key ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = jQuery._data( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[0], key ) : emptyGet; -}; -var rcheckableType = (/^(?:checkbox|radio)$/i); - - - -(function() { - // Minified: var a,b,c - var input = document.createElement( "input" ), - div = document.createElement( "div" ), - fragment = document.createDocumentFragment(); - - // Setup - div.innerHTML = "
a"; - - // IE strips leading whitespace when .innerHTML is used - support.leadingWhitespace = div.firstChild.nodeType === 3; - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - support.tbody = !div.getElementsByTagName( "tbody" ).length; - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - support.html5Clone = - document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - input.type = "checkbox"; - input.checked = true; - fragment.appendChild( input ); - support.appendChecked = input.checked; - - // Make sure textarea (and checkbox) defaultValue is properly cloned - // Support: IE6-IE11+ - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // #11217 - WebKit loses check when the name is after the checked attribute - fragment.appendChild( div ); - div.innerHTML = ""; - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<9 - // Opera does not clone events (and typeof div.attachEvent === undefined). - // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() - support.noCloneEvent = true; - if ( div.attachEvent ) { - div.attachEvent( "onclick", function() { - support.noCloneEvent = false; - }); - - div.cloneNode( true ).click(); - } - - // Execute the test only if not already executed in another module. - if (support.deleteExpando == null) { - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - } -})(); - - -(function() { - var i, eventName, - div = document.createElement( "div" ); - - // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) - for ( i in { submit: true, change: true, focusin: true }) { - eventName = "on" + i; - - if ( !(support[ i + "Bubbles" ] = eventName in window) ) { - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) - div.setAttribute( eventName, "t" ); - support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -})(); - - -var rformElems = /^(?:input|select|textarea)$/i, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - var tmp, events, t, handleObjIn, - special, eventHandle, handleObj, - handlers, type, namespaces, origType, - elemData = jQuery._data( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - var j, handleObj, tmp, - origCount, t, events, - special, handlers, type, - namespaces, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - var handle, ontype, cur, - bubbleType, special, tmp, i, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && jQuery.acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - try { - elem[ type ](); - } catch ( e ) { - // IE<9 dies on focus/blur to hidden element (#1486,#12518) - // only reproducible on winXP IE8 native, not IE9 in IE8 mode - } - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, ret, handleObj, matched, j, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var sel, handleObj, matches, i, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - /* jshint eqeqeq: false */ - for ( ; cur != this; cur = cur.parentNode || this ) { - /* jshint eqeqeq: true */ - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: IE<9 - // Fix target property (#1925) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Support: Chrome 23+, Safari? - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Support: IE<9 - // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) - event.metaKey = !!event.metaKey; - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var body, eventDoc, doc, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - try { - this.focus(); - return false; - } catch ( e ) { - // Support: IE<9 - // If we error on focus to hidden element (#1486, #12518), - // let .trigger() run the handlers - } - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - var name = "on" + type; - - if ( elem.detachEvent ) { - - // #8545, #7054, preventing memory leaks for custom events in IE6-8 - // detachEvent needed property on element, by name of that event, to properly expose it to GC - if ( typeof elem[ name ] === strundefined ) { - elem[ name ] = null; - } - - elem.detachEvent( name, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - // Support: IE < 9, Android < 4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - if ( !e ) { - return; - } - - // If preventDefault exists, run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // Support: IE - // Otherwise set the returnValue property of the original event to false - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - if ( !e ) { - return; - } - // If stopPropagation exists, run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - - // Support: IE - // Set the cancelBubble property of the original event to true - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// IE submit delegation -if ( !support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; - if ( form && !jQuery._data( form, "submitBubbles" ) ) { - jQuery.event.add( form, "submit._submit", function( event ) { - event._submit_bubble = true; - }); - jQuery._data( form, "submitBubbles", true ); - } - }); - // return undefined since we don't need an event listener - }, - - postDispatch: function( event ) { - // If form was submitted by the user, bubble the event up the tree - if ( event._submit_bubble ) { - delete event._submit_bubble; - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event, true ); - } - } - }, - - teardown: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !support.changeBubbles ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._just_changed = true; - } - }); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._just_changed && !event.isTrigger ) { - this._just_changed = false; - } - // Allow triggered, simulated change events (#11500) - jQuery.event.simulate( "change", this, event, true ); - }); - } - return false; - } - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event, true ); - } - }); - jQuery._data( elem, "changeBubbles", true ); - } - }); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return !rformElems.test( this.nodeName ); - } - }; -} - -// Create "bubbling" focus and blur events -if ( !support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - jQuery._removeData( doc, fix ); - } else { - jQuery._data( doc, fix, attaches ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var type, origFn; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); - - -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + - "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", - rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, - rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rtbody = /\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - option: [ 1, "" ], - legend: [ 1, "
", "
" ], - area: [ 1, "", "" ], - param: [ 1, "", "" ], - thead: [ 1, "", "
" ], - tr: [ 2, "", "
" ], - col: [ 2, "", "
" ], - td: [ 3, "", "
" ], - - // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, - // unless wrapped in a div with non-breaking characters in front of it. - _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] - }, - safeFragment = createSafeFragment( document ), - fragmentDiv = safeFragment.appendChild( document.createElement("div") ); - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -function getAll( context, tag ) { - var elems, elem, - i = 0, - found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) : - undefined; - - if ( !found ) { - for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { - if ( !tag || jQuery.nodeName( elem, tag ) ) { - found.push( elem ); - } else { - jQuery.merge( found, getAll( elem, tag ) ); - } - } - } - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], found ) : - found; -} - -// Used in buildFragment, fixes the defaultChecked property -function fixDefaultChecked( elem ) { - if ( rcheckableType.test( elem.type ) ) { - elem.defaultChecked = elem.checked; - } -} - -// Support: IE<8 -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - if ( match ) { - elem.type = match[1]; - } else { - elem.removeAttribute("type"); - } - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var elem, - i = 0; - for ( ; (elem = elems[i]) != null; i++ ) { - jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); - } -} - -function cloneCopyEvent( src, dest ) { - - if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { - return; - } - - var type, i, l, - oldData = jQuery._data( src ), - curData = jQuery._data( dest, oldData ), - events = oldData.events; - - if ( events ) { - delete curData.handle; - curData.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - - // make the cloned public data object a copy from the original - if ( curData.data ) { - curData.data = jQuery.extend( {}, curData.data ); - } -} - -function fixCloneNodeIssues( src, dest ) { - var nodeName, e, data; - - // We do not need to do anything for non-Elements - if ( dest.nodeType !== 1 ) { - return; - } - - nodeName = dest.nodeName.toLowerCase(); - - // IE6-8 copies events bound via attachEvent when using cloneNode. - if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { - data = jQuery._data( dest ); - - for ( e in data.events ) { - jQuery.removeEvent( dest, e, data.handle ); - } - - // Event data gets referenced instead of copied if the expando gets copied too - dest.removeAttribute( jQuery.expando ); - } - - // IE blanks contents when cloning scripts, and tries to evaluate newly-set text - if ( nodeName === "script" && dest.text !== src.text ) { - disableScript( dest ).text = src.text; - restoreScript( dest ); - - // IE6-10 improperly clones children of object elements using classid. - // IE10 throws NoModificationAllowedError if parent is null, #12132. - } else if ( nodeName === "object" ) { - if ( dest.parentNode ) { - dest.outerHTML = src.outerHTML; - } - - // This path appears unavoidable for IE9. When cloning an object - // element in IE9, the outerHTML strategy above is not sufficient. - // If the src has innerHTML and the destination does not, - // copy the src.innerHTML into the dest.innerHTML. #10324 - if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { - dest.innerHTML = src.innerHTML; - } - - } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - // IE6-8 fails to persist the checked state of a cloned checkbox - // or radio button. Worse, IE6-7 fail to give the cloned element - // a checked appearance if the defaultChecked value isn't also set - - dest.defaultChecked = dest.checked = src.checked; - - // IE6-7 get confused and end up setting the value of a cloned - // checkbox/radio button to an empty string instead of "on" - if ( dest.value !== src.value ) { - dest.value = src.value; - } - - // IE6-8 fails to return the selected option to the default selected - // state when cloning options - } else if ( nodeName === "option" ) { - dest.defaultSelected = dest.selected = src.defaultSelected; - - // IE6-8 fails to set the defaultValue to the correct value when - // cloning other types of input fields - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var destElements, node, clone, i, srcElements, - inPage = jQuery.contains( elem.ownerDocument, elem ); - - if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { - clone = elem.cloneNode( true ); - - // IE<=8 does not properly clone detached, unknown element nodes - } else { - fragmentDiv.innerHTML = elem.outerHTML; - fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); - } - - if ( (!support.noCloneEvent || !support.noCloneChecked) && - (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - // Fix all IE cloning issues - for ( i = 0; (node = srcElements[i]) != null; ++i ) { - // Ensure that the destination node is not null; Fixes #9587 - if ( destElements[i] ) { - fixCloneNodeIssues( node, destElements[i] ); - } - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0; (node = srcElements[i]) != null; i++ ) { - cloneCopyEvent( node, destElements[i] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - destElements = srcElements = node = null; - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var j, elem, contains, - tmp, tag, tbody, wrap, - l = elems.length, - - // Ensure a safe fragment - safe = createSafeFragment( context ), - - nodes = [], - i = 0; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || safe.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - - tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; - - // Descend through wrappers to the right content - j = wrap[0]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Manually add leading whitespace removed by IE - if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { - nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); - } - - // Remove IE's autoinserted from table fragments - if ( !support.tbody ) { - - // String was a , *may* have spurious - elem = tag === "table" && !rtbody.test( elem ) ? - tmp.firstChild : - - // String was a bare or - wrap[1] === "
" && !rtbody.test( elem ) ? - tmp : - 0; - - j = elem && elem.childNodes.length; - while ( j-- ) { - if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { - elem.removeChild( tbody ); - } - } - } - - jQuery.merge( nodes, tmp.childNodes ); - - // Fix #12392 for WebKit and IE > 9 - tmp.textContent = ""; - - // Fix #12392 for oldIE - while ( tmp.firstChild ) { - tmp.removeChild( tmp.firstChild ); - } - - // Remember the top-level container for proper cleanup - tmp = safe.lastChild; - } - } - } - - // Fix #11356: Clear elements from fragment - if ( tmp ) { - safe.removeChild( tmp ); - } - - // Reset defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - if ( !support.appendChecked ) { - jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); - } - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( safe.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - tmp = null; - - return safe; - }, - - cleanData: function( elems, /* internal */ acceptData ) { - var elem, type, id, data, - i = 0, - internalKey = jQuery.expando, - cache = jQuery.cache, - deleteExpando = support.deleteExpando, - special = jQuery.event.special; - - for ( ; (elem = elems[i]) != null; i++ ) { - if ( acceptData || jQuery.acceptData( elem ) ) { - - id = elem[ internalKey ]; - data = id && cache[ id ]; - - if ( data ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Remove cache only if it was not already removed by jQuery.event.remove - if ( cache[ id ] ) { - - delete cache[ id ]; - - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( deleteExpando ) { - delete elem[ internalKey ]; - - } else if ( typeof elem.removeAttribute !== strundefined ) { - elem.removeAttribute( internalKey ); - - } else { - elem[ internalKey ] = null; - } - - deletedIds.push( id ); - } - } - } - } - } -}); - -jQuery.fn.extend({ - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); - }, null, value, arguments.length ); - }, - - append: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - remove: function( selector, keepData /* Internal Use Only */ ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - } - - // Remove any remaining nodes - while ( elem.firstChild ) { - elem.removeChild( elem.firstChild ); - } - - // If this is a select, ensure that it displays empty (#12336) - // Support: IE<9 - if ( elem.options && jQuery.nodeName( elem, "select" ) ) { - elem.options.length = 0; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map(function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined ) { - return elem.nodeType === 1 ? - elem.innerHTML.replace( rinlinejQuery, "" ) : - undefined; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - ( support.htmlSerialize || !rnoshimcache.test( value ) ) && - ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && - !wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1>" ); - - try { - for (; i < l; i++ ) { - // Remove element nodes and prevent memory leaks - elem = this[i] || {}; - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch(e) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var arg = arguments[ 0 ]; - - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - arg = this.parentNode; - - jQuery.cleanData( getAll( this ) ); - - if ( arg ) { - arg.replaceChild( elem, this ); - } - }); - - // Force removal if there was no new content (e.g., from empty arguments) - return arg && (arg.length || arg.nodeType) ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var first, node, hasScripts, - scripts, doc, fragment, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[0], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[0] = value.call( this, index, self.html() ); - } - self.domManip( args, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[i], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); - } - } - } - } - - // Fix #11809: Avoid leaking memory - fragment = first = null; - } - } - - return this; - } -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - i = 0, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone(true); - jQuery( insert[i] )[ original ]( elems ); - - // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - - -var iframe, - elemdisplay = {}; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var style, - elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - // getDefaultComputedStyle might be reliably used only on attached element - display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? - - // Use of this method is a temporary fix (more like optmization) until something better comes along, - // since it was removed from specification and supported only in FF - style.display : jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = (iframe || jQuery( "