From 4a04499bffb83378f9c1cfba8a39c0c2cb80359d Mon Sep 17 00:00:00 2001 From: Mark Baker Date: Sat, 22 Jan 2022 19:18:26 +0100 Subject: [PATCH] Read conditional styling for cell (#2491) * Allow single-cell checks on conditional styles, even when the style is configured for a range of cells * Work on the CellMatcher logic to evaluate Conditionals for a cell based on its value, and identify which conditional styles should be applied * Refactor style merging and cell matching for conditional formatting into separate classes; this should make it easier to test, and easier to extend for other CF expressions subsequently * Added support for containsErrors and notContainsErrors * Initial work on a wizard to help simplify created Conditional Formatting rules, to ensure that the correct expressions are set * Further work on extending the Conditional Formatting rules to cover more of the options that are available in MS Excel * Prevent phpcs-fixer from removing class @method annotations, used to identify the signature for magic methods used in Wizard classes * Implement `fromConditional()`` method to allow the creation of a CF Wizard from an existing Conditional * Ensure that xlsx Reader picks up the timePeriod attribute for DatesOccurring CF Rules * Allow Duplicates/Uniques CF Rules to be recognised in the Xlsx Reader * Basic Xlsx reading of CF Rules/Styles from element, and not just the element of the worksheet * Add some validation for operands passed to the CF Wizards - remove any leading ``=` from formulae, because they'll be embedded into other formulae - unwrap any string literals from quotes, because that's also handled internally Handle cross-worksheet cell references in cellReferences and Formulae/Expressions * re-baseline phpstan * Update Change Log with details of the CF Improvements --- .php-cs-fixer.dist.php | 2 +- CHANGELOG.md | 19 +- docs/topics/conditional-formatting.md | 765 ++++++++++++++++++ .../images/11-01-CF-Simple-Select-Range.png | Bin 0 -> 7503 bytes docs/topics/images/11-02-CF-Simple-Tab.png | Bin 0 -> 7093 bytes .../11-03-CF-Simple-CellIs-GreaterThan.png | Bin 0 -> 47092 bytes ...11-04-CF-Simple-CellIs-Value-and-Style.png | Bin 0 -> 16039 bytes .../11-05-CF-Simple-CellIs-Highlighted.png | Bin 0 -> 8921 bytes .../11-06-CF-Simple-Cell-Value-Change.png | Bin 0 -> 8330 bytes docs/topics/images/11-07-CF-Wizard.png | Bin 0 -> 25211 bytes .../11-08-CF-Absolute-Cell-Reference.png | Bin 0 -> 14849 bytes .../11-09-CF-Relative-Cell-Reference.png | Bin 0 -> 9286 bytes .../topics/images/11-10-CF-Blanks-Example.png | Bin 0 -> 44032 bytes .../topics/images/11-11-CF-Errors-Example.png | Bin 0 -> 45785 bytes .../topics/images/11-12-CF-Simple-Example.png | Bin 0 -> 51968 bytes ...F-Formula-with-Relative-Cell-Reference.png | Bin 0 -> 46376 bytes .../11-14-CF-Expression-Example-Odd-Even.png | Bin 0 -> 45773 bytes .../11-15-CF-Expression-Sales-Grid-1.png | Bin 0 -> 59703 bytes .../11-16-CF-Expression-Sales-Grid-2.png | Bin 0 -> 61696 bytes docs/topics/images/11-17-CF-Text-Contains.png | Bin 0 -> 45787 bytes .../11-18-CF-Date-Occurring-Examples.png | Bin 0 -> 132245 bytes .../11-19-CF-Duplicates-Uniques-Examples.png | Bin 0 -> 50495 bytes docs/topics/images/11-20-CF-Rule-Order-1.png | Bin 0 -> 39430 bytes docs/topics/images/11-21-CF-Rule-Order-2.png | Bin 0 -> 42465 bytes docs/topics/recipes.md | 2 + phpstan-baseline.neon | 206 +++-- .../01_Basic_Comparisons.php | 174 ++++ .../02_Text_Comparisons.php | 227 ++++++ .../03_Blank_Comparisons.php | 76 ++ .../04_Error_Comparisons.php | 79 ++ .../05_Date_Comparisons.php | 152 ++++ .../06_Duplicate_Comparisons.php | 85 ++ .../07_Expression_Comparisons.php | 147 ++++ .../Calculation/Calculation.php | 2 +- src/PhpSpreadsheet/Cell/Cell.php | 23 +- src/PhpSpreadsheet/Reader/Xlsx.php | 5 +- .../Reader/Xlsx/ConditionalStyles.php | 124 ++- src/PhpSpreadsheet/Style/Conditional.php | 31 +- .../ConditionalFormatting/CellMatcher.php | 312 +++++++ .../CellStyleAssessor.php | 45 ++ .../ConditionalFormatting/StyleMerger.php | 118 +++ .../Style/ConditionalFormatting/Wizard.php | 95 +++ .../ConditionalFormatting/Wizard/Blanks.php | 99 +++ .../Wizard/CellValue.php | 189 +++++ .../Wizard/DateValue.php | 111 +++ .../Wizard/Duplicates.php | 78 ++ .../ConditionalFormatting/Wizard/Errors.php | 95 +++ .../Wizard/Expression.php | 73 ++ .../Wizard/TextValue.php | 163 ++++ .../Wizard/WizardAbstract.php | 197 +++++ .../Wizard/WizardInterface.php | 25 + src/PhpSpreadsheet/Worksheet/Worksheet.php | 23 +- src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php | 162 ++-- tests/PhpSpreadsheetTests/Cell/CellTest.php | 132 +++ .../Reader/Xlsx/Xlsx2Test.php | 6 +- .../ConditionalFormatting/CellMatcherTest.php | 518 ++++++++++++ .../Wizard/BlankWizardTest.php | 118 +++ .../Wizard/CellValueWizardTest.php | 253 ++++++ .../Wizard/DateValueWizardTest.php | 77 ++ .../Wizard/DuplicatesWizardTest.php | 110 +++ .../Wizard/ErrorWizardTest.php | 118 +++ .../Wizard/ExpressionWizardTest.php | 92 +++ .../Wizard/TextValueWizardTest.php | 153 ++++ .../Wizard/WizardFactoryTest.php | 113 +++ .../Writer/Xlsx/ConditionalTest.php | 554 ++++++++++++- .../ConditionalFormatting/CellMatcher.xlsx | Bin 0 -> 35435 bytes 66 files changed, 5965 insertions(+), 183 deletions(-) create mode 100644 docs/topics/conditional-formatting.md create mode 100644 docs/topics/images/11-01-CF-Simple-Select-Range.png create mode 100644 docs/topics/images/11-02-CF-Simple-Tab.png create mode 100644 docs/topics/images/11-03-CF-Simple-CellIs-GreaterThan.png create mode 100644 docs/topics/images/11-04-CF-Simple-CellIs-Value-and-Style.png create mode 100644 docs/topics/images/11-05-CF-Simple-CellIs-Highlighted.png create mode 100644 docs/topics/images/11-06-CF-Simple-Cell-Value-Change.png create mode 100644 docs/topics/images/11-07-CF-Wizard.png create mode 100644 docs/topics/images/11-08-CF-Absolute-Cell-Reference.png create mode 100644 docs/topics/images/11-09-CF-Relative-Cell-Reference.png create mode 100644 docs/topics/images/11-10-CF-Blanks-Example.png create mode 100644 docs/topics/images/11-11-CF-Errors-Example.png create mode 100644 docs/topics/images/11-12-CF-Simple-Example.png create mode 100644 docs/topics/images/11-13-CF-Formula-with-Relative-Cell-Reference.png create mode 100644 docs/topics/images/11-14-CF-Expression-Example-Odd-Even.png create mode 100644 docs/topics/images/11-15-CF-Expression-Sales-Grid-1.png create mode 100644 docs/topics/images/11-16-CF-Expression-Sales-Grid-2.png create mode 100644 docs/topics/images/11-17-CF-Text-Contains.png create mode 100644 docs/topics/images/11-18-CF-Date-Occurring-Examples.png create mode 100644 docs/topics/images/11-19-CF-Duplicates-Uniques-Examples.png create mode 100644 docs/topics/images/11-20-CF-Rule-Order-1.png create mode 100644 docs/topics/images/11-21-CF-Rule-Order-2.png create mode 100644 samples/ConditionalFormatting/01_Basic_Comparisons.php create mode 100644 samples/ConditionalFormatting/02_Text_Comparisons.php create mode 100644 samples/ConditionalFormatting/03_Blank_Comparisons.php create mode 100644 samples/ConditionalFormatting/04_Error_Comparisons.php create mode 100644 samples/ConditionalFormatting/05_Date_Comparisons.php create mode 100644 samples/ConditionalFormatting/06_Duplicate_Comparisons.php create mode 100644 samples/ConditionalFormatting/07_Expression_Comparisons.php create mode 100644 src/PhpSpreadsheet/Style/ConditionalFormatting/CellMatcher.php create mode 100644 src/PhpSpreadsheet/Style/ConditionalFormatting/CellStyleAssessor.php create mode 100644 src/PhpSpreadsheet/Style/ConditionalFormatting/StyleMerger.php create mode 100644 src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard.php create mode 100644 src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Blanks.php create mode 100644 src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/CellValue.php create mode 100644 src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/DateValue.php create mode 100644 src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Duplicates.php create mode 100644 src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Errors.php create mode 100644 src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Expression.php create mode 100644 src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/TextValue.php create mode 100644 src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/WizardAbstract.php create mode 100644 src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/WizardInterface.php create mode 100644 tests/PhpSpreadsheetTests/Style/ConditionalFormatting/CellMatcherTest.php create mode 100644 tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/BlankWizardTest.php create mode 100644 tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/CellValueWizardTest.php create mode 100644 tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/DateValueWizardTest.php create mode 100644 tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/DuplicatesWizardTest.php create mode 100644 tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/ErrorWizardTest.php create mode 100644 tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/ExpressionWizardTest.php create mode 100644 tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/TextValueWizardTest.php create mode 100644 tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/WizardFactoryTest.php create mode 100644 tests/data/Style/ConditionalFormatting/CellMatcher.xlsx diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index c0e8f9d5..a393043d 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -55,7 +55,7 @@ $config 'function_declaration' => true, 'function_to_constant' => true, 'function_typehint_space' => true, - 'general_phpdoc_annotation_remove' => ['annotations' => ['access', 'category', 'copyright', 'method', 'throws']], + 'general_phpdoc_annotation_remove' => ['annotations' => ['access', 'category', 'copyright', 'throws']], 'global_namespace_import' => true, 'header_comment' => false, // We don't use common header in all our files 'heredoc_indentation' => false, // Requires PHP >= 7.3 diff --git a/CHANGELOG.md b/CHANGELOG.md index 575bc4d5..e26a40e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,22 @@ and this project adheres to [Semantic Versioning](https://semver.org). ### Added -- Nothing +- Improved support for Conditional Formatting Rules [PR #2491](https://github.com/PHPOffice/PhpSpreadsheet/pull/2491) + - Provide support for a wider range of Conditional Formatting Rules for Xlsx Reader/Writer: + - Cells Containing (cellIs) + - Specific Text (containing, notContaining, beginsWith, endsWith) + - Dates Occurring (all supported timePeriods) + - Blanks/NoBlanks + - Errors/NoErrors + - Duplicates/Unique + - Expression + - Provision of CF Wizards (for all the above listed rule types) to help create/modify CF Rules without having to manage all the combinations of types/operators, and the complexities of formula expressions, or the text/timePeriod attributes. + + See [documentation](https://phpspreadsheet.readthedocs.io/en/latest/topics/conditional-formatting/) for details + + - Full support of the above CF Rules for the Xlsx Reader and Writer; even when the file being loaded has CF rules listed in the `` element for the worksheet rather than the `` element. + - Provision of a CellMatcher to identify if rules are matched for a cell, and which matching style will be applied. + - Improved documentation and examples, covering all supported CF rule types. ### Changed @@ -25,7 +40,7 @@ and this project adheres to [Semantic Versioning](https://semver.org). ### Fixed -- Nothing +- Various bugs related to Conditional Formatting Rules, and errors in the Xlsx Writer for Conditional Formatting [PR #2491](https://github.com/PHPOffice/PhpSpreadsheet/pull/2491) ## 1.21.0 - 2022-01-06 diff --git a/docs/topics/conditional-formatting.md b/docs/topics/conditional-formatting.md new file mode 100644 index 00000000..d37ea588 --- /dev/null +++ b/docs/topics/conditional-formatting.md @@ -0,0 +1,765 @@ +# Conditional Formatting + +## Introduction + +In addition to standard cell formatting options, most spreadsheet software provides an option known as Conditional Formatting, which allows formatting options to be set based on the value of a cell. + +The cell's standard formatting defines most style elements that will always be applied, such as the font face and size; but Conditional Formatting allows you to override some elements of that cell style such as number format mask; font colour, bold, italic and underlining; borders; and fill colour and pattern. + +Conditional Formatting can be applied to individual cells, or to a range of cells. + +### Example + +As a simple example in MS Excel itself, if we wanted to highlight all cells in the range A1:A10 that contain values greater than 80, start by selecting the range of cells. + +![11-01-CF-Simple-Select-Range.png](./images/11-01-CF-Simple-Select-Range.png) + +On the Home tab, in the "Styles" group, click "Conditional Formatting". This allows us to select an Excel Wizard to guide us through the process of creating a Conditional Rule and defining a Style for that rule. + +![11-02-CF-Simple-Tab.png](./images/11-02-CF-Simple-Tab.png) + +Click "Highlight Cells Rules", then "Greater Than". + +![11-03-CF-Simple-CellIs-GreaterThan.png](./images/11-03-CF-Simple-CellIs-GreaterThan.png) + +Enter the value "80" in the prompt box; and either select one of the pre-defined formatting style (or create a custom style from there). + +![11-04-CF-Simple-CellIs-Value-and-Style.png](./images/11-04-CF-Simple-CellIs-Value-and-Style.png) + +Then click "OK". The rule is immediately applied to the selected range of cells, highlighting all those with a value greater than 80 in the chosen style. + +![11-05-CF-Simple-CellIs-Highlighted.png](./images/11-05-CF-Simple-CellIs-Highlighted.png) + +Any change to the value of a cell within that range will immediately check the rule, and automatically apply the new styling if it applies. + +![11-06-CF-Simple-Cell-Value-Change.png](./images/11-06-CF-Simple-Cell-Value-Change.png) + +If we wanted to set up the same Conditional Formatting rule in PHPSpreadsheet, we would do so using the following code: + +```php +$conditional = new \PhpOffice\PhpSpreadsheet\Style\Conditional(); +$conditional->setConditionType(\PhpOffice\PhpSpreadsheet\Style\Conditional::CONDITION_CELLIS); +$conditional->setOperatorType(\PhpOffice\PhpSpreadsheet\Style\Conditional::OPERATOR_GREATERTHAN); +$conditional->addCondition(80); +$conditional->getStyle()->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_DARKGREEN); +$conditional->getStyle()->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID); +$conditional->getStyle()->getFill()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_GREEN); + +$conditionalStyles = $spreadsheet->getActiveSheet()->getStyle('A1:A10')->getConditionalStyles(); +$conditionalStyles[] = $conditional; + +$spreadsheet->getActiveSheet()->getStyle('A1:A10')->setConditionalStyles($conditionalStyles); +``` + +Depending on the Rules that we might want to apply for a Condition, sometimes an "operator Type" is required, sometimes not (and not all Operator Types are appropriate for all Condition Types); sometimes a "Condition" is required (or even several conditions), sometimes not, and sometimes it must be a specific Excel formula expression. +Creating conditions manually requires a good knowledge of when these different properties need to be set, and with what type of values. +This isn't something that an end-user developer should be expected to know. + +So - to eliminate this need for complex and arcane knowledge - since PHPSpreadsheet verson 1.22.0 there is also a series of Wizards that can assist with creating Conditional Formatting rules, and which are capable of setting the appropriate operators and conditions (including the sometimes complex Excel formula expressions) for a Conditional Rule: + +```php +$wizardFactory = new \PhpOffice\PhpSpreadsheet\Style\ConditionalFormatting\Wizard('A1:A10'); +$wizard = $wizardFactory->newRule(\PhpOffice\PhpSpreadsheet\Style\ConditionalFormatting\Wizard::CELL_VALUE); +$wizard->greaterThan(80); +$wizard->getStyle()->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_DARKGREEN); +$wizard->getStyle()->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID); +$wizard->getStyle()->getFill()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_GREEN); + +$conditional = $wizard->getConditional(); +``` +The Wizards know which operator types match up with condition types, and provide more meaningful method names for operators, and they build expressions and formulae when required; and also work well with an IDE such as PHPStorm. + +--- + +Note that `$conditionalStyles` is an array: it is possible to apply several conditions to the same range of cells. If we also wanted to highlight values that were less than 10 in the the A1:A10 range, we can add a second style rule. + +In Excel, we would do this by selecting the range again, and going through the same process, this time selecting the "Highlight Cells Rules", then "Less Than" from the "Conditional Styles" menu, entering the value "10" in the prompt box, and selecting the appropriate style. + +In PHPSpreadsheet, we would do: + +```php +$conditional2 = new \PhpOffice\PhpSpreadsheet\Style\Conditional(); +$conditional2->setConditionType(\PhpOffice\PhpSpreadsheet\Style\Conditional::CONDITION_CELLIS); +$conditional2->setOperatorType(\PhpOffice\PhpSpreadsheet\Style\Conditional::OPERATOR_LESSTHAN); +$conditional2->addCondition(10); +$conditional2->getStyle()->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_DARKRED); +$conditional2->getStyle()->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID); +$conditional2->getStyle()->getFill()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED); + +$conditionalStyles = $spreadsheet->getActiveSheet()->getStyle('A1:A10')->getConditionalStyles(); +$conditionalStyles[] = $conditional2; + +$spreadsheet->getActiveSheet()->getStyle('A1:A10')->setConditionalStyles($conditionalStyles); +``` +or again, using the Wizard: +```php +$wizardFactory = new \PhpOffice\PhpSpreadsheet\Style\ConditionalFormatting\Wizard('A1:A10'); +$wizard = $wizardFactory->newRule(\PhpOffice\PhpSpreadsheet\Style\ConditionalFormatting\Wizard::CELL_VALUE); +$wizard->lessThan(10); +$wizard->getStyle()->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_DARKGREEN); +$wizard->getStyle()->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID); +$wizard->getStyle()->getFill()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_GREEN); + +$conditional = $wizard->getConditional(); +``` + + +### Order of Evaluating Multiple Rules/Conditions + +`$conditionalStyles` is an array, which not only represents multiple conditions that can be applied to a cell (or range of cells), but also the order in which they are checked. MS Excel will check each of those conditions in turn in the order they are defined; and will stop checking once it finds a first matching rule. This means that the order of checking conditions can be important. + +Consider the following. We have one condition that checks if a cell value is between -10 and 10, styling the cell in yellow if that condition matches; and a second condition that checks if the cell value is equal to 0, styling the cell in red if that matches. + - Yellow if value is between -2 and 2 + - Red if value equals 0 + +If they are evaluated in the order I've described above, and the cell has a value of 0, then the first rule will match (because 0 is between -2 and 2), and the cell will be styled in yellow, and no further conditions will be checked. So the rule that styles the cell in red if the value is 0 will never be assessed, even though that would also match (and is probably what we actually wanted, otherwise why have an explicit rule defined for that condition). + +![11-20-CF-Rule-Order-1.png](./images/11-20-CF-Rule-Order-1.png) + +If the rule order is reversed + - Red if value equals 0 + - Yellow if value is between -2 and 2 + +then the cell containing the value 0 will be rendered in red, because that is the first matching condition; and the between rule will not be assessed for that cell. + +![11-21-CF-Rule-Order-2.png](./images/11-21-CF-Rule-Order-2.png) + +So when you have multiple conditions where the rules might "overlap", the order of these is important. + + +### Reader/Writer Support + +Currently, the following Conditional Types are supported for the following Readers and Writers: + +MS Excel | Conditional Type | Readers | Writers +---|---|---|--- +Cell Value | Conditional::CONDITION_CELLIS | Xlsx | Xlsx, Xls +Specific Text | Conditional::CONDITION_CONTAINSTEXT | Xlsx | Xlsx +| | Conditional::CONDITION_NOTCONTAINSTEXT | Xlsx | Xlsx +| | Conditional::CONDITION_BEGINSWITH | Xlsx | Xlsx +| | Conditional::CONDITION_ENDSWITH | Xlsx | Xlsx +Dates Occurring | Conditional::CONDITION_TIMEPERIOD | Xlsx | Xlsx +Blanks | Conditional::CONDITION_CONTAINSBLANKS | Xlsx | Xlsx +No Blanks | Conditional::CONDITION_NOTCONTAINSBLANKS | Xlsx | Xlsx +Errors | Conditional::CONDITION_CONTAINSERRORS | Xlsx | Xlsx +No Errors | Conditional::CONDITION_NOTCONTAINSERRORS | Xlsx | Xlsx +Duplicates/Unique | Conditional::CONDITION_DUPLICATES | Xlsx | Xlsx +| | Conditional::CONDITION_UNIQUE | Xlsx | Xlsx +Use a formula | Conditional::CONDITION_EXPRESSION | Xlsx | Xlsx, Xls +Data Bars | Conditional::CONDITION_DATABAR | Xlsx | Xlsx + +The following Conditional Types are currently not supported by any Readers or Writers: + +MS Excel | Conditional Type +---|--- +Above/Below Average | ? +Top/Bottom Items | ? +Top/Bottom %age | ? +Colour Scales |? +Icon Sets | ? + +Unsupported types will by ignored by the Readers, and cannot be created through PHPSpreadsheet. + + +## Wizards + +While the Wizards don't simplify defining the Conditional Style itself; they do make it easier to define the conditions (the rules) where that style will be applied. +MS Excel itself has wizards to guide the creation of Conditional Formatting rules and styles. + +![11-07-CF-Wizard.png](./images/11-07-CF-Wizard.png) + +The Wizard Factory allows us to retrieve the appropriate Wizard for the CF Rule that we want to apply. +Most of those that have already been defined fall under the "Format only cells that contain" category. +MS Excel provides a whole series of different types of rule, each of which has it's own formatting and logic. +The Wizards try to replicate this logic and behaviour, similar to Excel's own "Formatting Rule" helper wizard. + +MS Excel | Wizard Factory newRule() Type Constant | Wizard Class Name +---|---|--- +Cell Value | Wizard::CELL_VALUE | CellValue +Specific Text | Wizard::TEXT_VALUE | TextValue +Dates Occurring | Wizard::DATES_OCCURRING | DateValue +Blanks | Wizard::BLANKS | Blanks +No Blanks | Wizard::NOT_BLANKS | Blanks +Errors | Wizard::ERRORS | Errors +No Errors | Wizard::NOT_ERRORS | Errors + +Additionally, Wizards also exists for "Format only unique or duplicate values", and for "Use a formula to determine which cells to format": + +MS Excel | Wizard Factory newRule() Type Constant | Wizard Class Name +---|---|--- +Duplicates/Unique | Wizard::DUPLICATES or Wizard::UNIQUE | Duplicates +Use a formula | Wizard::EXPRESSION or Wizard::FORMULA | Expression + +There is currently no Wizard for Data Bars, even though this Conditional Type is supported by the Xlsx Reader and Writer. + +--- + +We instantiate the Wizard Factory, passing in the cell range where we want to apply Conditional Formatting rules; and can then call the `newRule()` method, passing in the type of Conditional Rule that we want to create in order to return the appropriate Wizard: + +```php +$wizardFactory = new \PhpOffice\PhpSpreadsheet\Style\ConditionalFormatting\Wizard('C3:E5'); +$wizard = $wizardFactory->newRule(\PhpOffice\PhpSpreadsheet\Style\ConditionalFormatting\Wizard::CELL_VALUE); +``` +You can, of course, instantiate the Wizard that you want directly, rather than using the factory; but still remember to pass in the cell range. +```php +$wizard = new \PhpOffice\PhpSpreadsheet\Style\ConditionalFormatting\Wizard\CellValue('C3:E5'); +``` + +That Wizard then provides methods allowing us to define the rule, setting the operator and the values that we want to compare for that rule. +Note that not all rules require values, or even operators, but the individual Wizards provide whatever is necessary; and this document lists all options available for every Wizard. + +Once we have used the Wizard to define the conditions and values that we want; and have defined a style using the `setStyle()` method, then we call the Wizard's `getConditional()` method to return a Conditional object that can be added to the array of Conditional Styles that we pass to `setConditionalStyles()`. + + +### CellValue Wizard + +For the `CellValue` Wizard, we always need to provide an operator and a value; and for the "between" and "notBetween" operators, we need to provide two values to specify a range. + +Condition Type | Wizard Factory newRule() Type Constant | Conditional Operator Type | Wizard Methods | Notes +---|---|---|---|--- +Conditional::CONDITION_CELLIS | Wizard::CELL_VALUE | Conditional::OPERATOR_EQUAL | equals() +| | | Conditional::OPERATOR_NOTEQUAL | notEquals() +| | | Conditional::OPERATOR_GREATERTHAN | greaterThan() +| | | Conditional::OPERATOR_GREATERTHANOREQUAL | greaterThanOrEqual() +| | | Conditional::OPERATOR_LESSTHAN | lessThan() +| | | Conditional::OPERATOR_LESSTHANOREQUAL | lessThanOrEqual() +| | | Conditional::OPERATOR_BETWEEN | between() +| | | Conditional::OPERATOR_NOTBETWEEN | notBetween() +| | | | and() | Used to provide the second operand for `between()` and `notBetween() + +A single operator call is required for every rule (except `between()` and `notBetween`, where the Wizard also provides `and()`); and providing a value is mandatory for all operators. +The values that we need to provide for each operator can be numeric, boolean or string literals (even NULL); cell references; or formulae. + +So to set the rule using an operator, we would make a call like: +```php +$wizard->lessThan(10); +``` +or when setting a `between()` or `notBetween()` rule, we can make use of the fluent interface with the `and()` method to set the range of values: +```php +$wizard->between(-10)->and(10); +``` +Providing a second value using `and()` is mandatory for a `between()` or `notBetween()` range. + +To retrieve the Conditional, to add it to our `$conditionalStyles` array, we call the Wizard's `getConditional()` method. +```php +$conditional = $wizard->getConditional(); +$conditionalStyles = [$conditional]; +``` +or simply +```php +$conditionalStyles[] = $wizard->getConditional(); +``` + +Putting it all together, we can use a block of code like (using pre-defined Style objects): +```php +$cellRange = 'A2:E5'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\CellValue $cellWizard */ +$cellWizard = $wizardFactory->newRule(Wizard::CELL_VALUE); + +$cellWizard->equals(0) + ->setStyle($yellowStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$cellWizard->greaterThan(0) + ->setStyle($greenStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$cellWizard->lessThan(0) + ->setStyle($redStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($cellWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); +``` +You can find an example that demonstrates this in the [code samples](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/ConditionalFormatting/01_Basic_Comparisons.php#L81 "Conditional Formatting - Simple Example") for the repo. + +![11-12-CF-Simple-Example.png](./images/11-12-CF-Simple-Example.png) + + +#### Value Types + +When we need to provide a value for an operator, that value can be numeric, boolean or string literals (even NULL); cell references; or even an Excel formulae. + +##### Literals + +If the value is a literal (even a string literal), we simply need to pass the value; the Wizard will ensure that strings are correctly quoted when we get the Conditional from the Wizard. + +```php +$wizard->equals('Hello World'); +``` +If you weren't using the Wizard, but were creating the Conditional directly, you would need to remember to wrap this value in quotes yourself (`'"Hello World"'`) + +However, a cell reference or a formula are also string data, so we need to tell the Wizard if the value that we are passing in isn't just a string literal value, but should be treated as a cell reference or as a formula. + +##### Cell References + +If we want to use the value from cell `H9` in our rule; then we need to pass a value type of `VALUE_TYPE_CELL` to the operator, in addition to the cell reference itself. + +```php +$wizard->equals('$H$9', Wizard::VALUE_TYPE_CELL); +``` + +![11-08-CF-Absolute-Cell-Reference.png](./images/11-08-CF-Absolute-Cell-Reference.png) + +You can find an example that demonstrates this in the [code samples](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/ConditionalFormatting/01_Basic_Comparisons.php#L103 "Conditional Formatting - Basic Comparisons") for the repo. + +Note that we are passing the cell as an absolute cell reference, "pinned" (with the `$` symbol) for both the row and the column. + +In this next example, we need to use relative cell references, so that the comparison will match the value in column `A` against the values in columns `B` and `C` for each row in our range (`A18:A20`); ie, test if the value in `A18` is between the values in `B18` and `C18`, test if the value in `A19` is between the values in `B19` and `C19`, etc. + +![11-09-CF-Relative-Cell-Reference.png](./images/11-09-CF-Relative-Cell-Reference.png) + +```php +$wizard->between('$B1', Wizard::VALUE_TYPE_CELL) + ->and('$C1', Wizard::VALUE_TYPE_CELL) + ->setStyle($greenStyle); +``` + +This example can also be found in the [code samples](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/ConditionalFormatting/01_Basic_Comparisons.php#L126 "Conditional Formatting - Basic Comparisons") for the repo. + +In this case, we "pin" the column for the address; but leave the row "unpinned". +Notice also that we treat the first cell in our range as cell `A1`: the relative row number will be adjusted automatically to match our defined range; that is, the range that we specified when we instantiated the Wizard (passed in through the Wizard Factory) when we make the call to `getConditional()`. + +##### Formulae + +It is also possible to set the value/operand as an Excel formula expression, not simply a literal value or a cell reference. +Again, we do need to specify that the value is a Formula. + +```php +$cellRange = 'C26:C28'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\CellValue $cellWizard */ +$cellWizard = $wizardFactory->newRule(Wizard::CELL_VALUE); + +$cellWizard->equals('CONCATENATE($A1," ",$B1)', Wizard::VALUE_TYPE_FORMULA) + ->setStyle($yellowStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($cellWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); +``` + +You can find an example that demonstrates this in the [code samples](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/ConditionalFormatting/02_Text_Comparisons.php#L209 "Conditional Formatting - Text Comparisons") for the repo. + +When the formula contains cell references, we again need to be careful with pinning to absolute columns/rows; and when unpinned, we reference based on the top-left cell of the range being cell `A1` when we define the formula. +Here we're defining the formula as `CONCATENATE($A1," ",$B1)`, so we're "pinning" the column references for columns `A` and `B`; but leaving the row unpinned (explicitly set to start from row 1), which is then adjusted to the conditional range when we get the Conditional from the Wizard, and adjusted to the individual rows within that range when MS Excel displays the results. + +![11-13-CF-Formula-with-Relative-Cell-Reference.png](./images/11-13-CF-Formula-with-Relative-Cell-Reference.png) + + +### TextValue Wizard + +While we can use the `CellValue` Wizard to do basic string comparison rules, the `TextValue` Wizard provides rules for comparing parts of a string value. + +For the `TextValue` Wizard, we always need to provide an operator and a value. As with the `CellValue` Wizard, values can be literals (but should always be string literals), cell references, or formula. + +Condition Type | Wizard Factory newRule() Type Constant | Conditional Operator Type | Wizard Methods | Notes +---|---|---|---|--- +Conditional::CONDITION_CONTAINSTEXT | Wizard::TEXT_VALUE | Conditional::OPERATOR_CONTAINSTEXT | contains() +Conditional::CONDITION_NOTCONTAINSTEXT | Wizard::TEXT_VALUE | Conditional::OPERATOR_NOTCONTAINS | doesNotContain() +| | | | doesntContain() | synonym for `doesNotContain()` +Conditional::CONDITION_BEGINSWITH | Wizard::TEXT_VALUE | Conditional::OPERATOR_BEGINSWITH | beginsWith() +| | | | startsWith() | synonym for `beginsWith()` +Conditional::CONDITION_ENDSWITH | Wizard::TEXT_VALUE | Conditional::OPERATOR_ENDSWITH | endsWith() + +The Conditional actually uses a separate "Condition Type" for each option, each with its own "Operator Type", and the condition should be an Excel formula (not simply the string value to check), and with a custom `text` attribute. The Wizard should make it a lot easier to create these conditional rules. + +To create a Conditional rule manually, you would need to do something like: +```php +$cellRange = 'A14:B16'; +$conditionalStyles = []; +$conditional = new Conditional(); +// Remember to use the correct Condition Type +$conditional->setConditionType(Conditional::CONDITION_CONTAINSTEXT); +// Remember to use the correct Operator Type +$conditional->setOperatorType(Conditional::OPERATOR_CONTAINSTEXT); +// Remember to set the text attribute +// Remember to wrap the string literal +$conditional->setText('"LL"'); +// Remember that the condition should be the first element in an array +// Remember that we need a specific formula for this Conditional +// Remember to wrap the string literal +// Remember to use the top-left cell of the range that we want to apply this rule to +$conditional->setConditions(['NOT(ISERROR(SEARCH("LL",A14)))']); +$conditional->setStyle($greenStyle); + +$conditionalStyles[] + +$spreadsheet->getActiveSheet() + ->getStyle($cellRange) + ->setConditionalStyles($conditionalStyles); +``` +But using the Wizard, the same Conditional rule can be created by: +```php +$cellRange = 'A14:B16'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\TextValue $textWizard */ +$textWizard = $wizardFactory->newRule(Wizard::TEXT_VALUE); + +$textWizard->contains('LL') + ->setStyle($greenStyle); +$conditionalStyles[] = $textWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($textWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); +``` +You can find an example that demonstrates this in the [code samples](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/ConditionalFormatting/02_Text_Comparisons.php#L149 "Conditional Formatting - Text Comparisons") for the repo. + +![11-17-CF-Text-Contains.png](./images/11-17-CF-Text-Contains.png) + +There are also examples in that file for `notContains()`, `beginsWith()` and `endsWith()` comparisons; using literal text, and with cell references. + +The actual Excel Expressions used (and that you would need to set manually if you were defining the Conditional yourself rather than using the Wizard) are listed below: + +Conditional Type | Condition Expression +---|--- +Conditional::CONDITION_CONTAINSTEXT | NOT(ISERROR(SEARCH(``,``))) +Conditional::CONDITION_NOTCONTAINSTEXT | ISERROR(SEARCH(``,``))`,LEN(``))=`` +Conditional::CONDITION_ENDSWITH | RIGHT(``,LEN(``))=`` + +The `` always references the top-left cell in the range of cells for this Conditional Formatting Rule. +The `` should be wrapped in double quotes (`"`) for string literals; but unquoted if it is a value stored in a cell reference, or a formula. +The `TextValue` Wizard handles defining these expressions for you. + +As with the operand for the `CellValue` Wizard, you can specify the value passed to `contains()`, `doesNotContain()`, `beginsWith()` and `endsWith()` as a cell reference, or as a formula; and if you do so, then you need to pass a second argument to those methods specifying `Wizard::VALUE_TYPE_CELL` or `Wizard::VALUE_TYPE_FORMULA`. +The same rules also apply to "pinning" cell references as described above for the `CellValue` Wizard. + +```php +$textWizard->beginsWith('$D$1', Wizard::VALUE_TYPE_CELL) + ->setStyle($yellowStyle); +``` + +### DateValue Wizard + +For the `DateValue` Wizard, we always need to provide an operator; but no value is required. + +Condition Type | Wizard Factory newRule() Type Constant | Conditional Operator Type | Wizard Methods | Notes +---|---|---|---|--- +Conditional::CONDITION_TIMEPERIOD | Wizard::DATES_OCCURRING | Conditional::TIMEPERIOD_TODAY | today() +| | | Conditional::TIMEPERIOD_YESTERDAY | yesterday() +| | | Conditional::TIMEPERIOD_TOMORROW | tomorrow() +| | | Conditional::TIMEPERIOD_LAST_7_DAYS | last7Days() +| | | | lastSevenDays() | synonym for `last7Days()` +| | | Conditional::TIMEPERIOD_LAST_WEEK | lastWeek() +| | | Conditional::TIMEPERIOD_THIS_WEEK | thisWeek() +| | | Conditional::TIMEPERIOD_NEXT_WEEK | nextWeek() +| | | Conditional::TIMEPERIOD_LAST_MONTH | lastMonth() +| | | Conditional::TIMEPERIOD_THIS_MONTH | thisMonth() +| | | Conditional::TIMEPERIOD_NEXT_MONTH | nextMonth() + +The Conditional has no actual "Operator Type", and the condition/value should be an Excel formula, and with a custom `timePeriod` attribute. The Wizard should make it a lot easier to create these condition rules. + +![11-18-CF-Date-Occurring-Examples.png](./images/11-18-CF-Date-Occurring-Examples.png) + +The above image shows a grid that demonstrate each of the possible Date Occurring rules, and was generated using [the code samples](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/ConditionalFormatting/05_Date_Comparisons.php#L118 "Conditional Formatting - Dates Occurring Comparisons") + +Typical sample code wod look something like: +```php +$wizardFactory = new Wizard("E2:E19"); +/** @var Wizard\DateValue $dateWizard */ +$dateWizard = $wizardFactory->newRule(Wizard::DATES_OCCURRING); +$conditionalStyles = []; + +$dateWizard->last7Days() + ->setStyle($yellowStyle); + +$conditionalStyles[] = $dateWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($dateWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); +``` + +The actual Excel Expressions used (and that you would need to set manually if you were defining the Conditional yourself rather than using the Wizard) are listed below: + +timePeriod Attribute | Condition Expression +---|--- +today | FLOOR(``,1)=TODAY()-1 +yesterday | FLOOR(``,1)=TODAY() +tomorrow | FLOOR(``,1)=TODAY()+1 +last7Days | AND(TODAY()-FLOOR(``,1)<=6,FLOOR(``,1)<=TODAY()) +lastWeek | AND(TODAY()-ROUNDDOWN(``,0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(``,0)<(WEEKDAY(TODAY())+7)) +thisWeek | AND(TODAY()-ROUNDDOWN(``,0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(``,0)-TODAY()<=7-WEEKDAY(TODAY())) +nextWeek | AND(ROUNDDOWN(``,0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(``,0)-TODAY()<(15-WEEKDAY(TODAY()))) +lastMonth | AND(MONTH(``)=MONTH(EDATE(TODAY(),0-1)),YEAR(``)=YEAR(EDATE(TODAY(),0-1))) +thisMonth | AND(MONTH(``)=MONTH(TODAY()),YEAR(``)=YEAR(TODAY())) +nextMonth | AND(MONTH(``)=MONTH(EDATE(TODAY(),0+1)),YEAR(``)=YEAR(EDATE(TODAY(),0+1))) + +The `` always references the top-left cell in the range of cells for this Conditional Formatting Rule. + + +### Blanks Wizard + +This Wizard is used to define a simple boolean state rule, to determine whether a cell is blank or not blank. +Whether created using the Wizard Factory with a rule type of `Wizard::BLANKS` or `Wizard::NOT_BLANKS`, the same `Blanks` Wizard is returned. +The only difference is that in the one case the rule state is pre-set for `CONDITION_CONTAINSBLANKS`, in the other it is pre-set for `CONDITION_NOTCONTAINSBLANKS`. +However, you can switch between the two rules using the `isBlank()` and `notBlank()` methods; and it is only at the point when you call `getConditional()` that a Conditional will be returned based on the current state of the Wizard. + +Condition Type | Wizard Factory newRule() Type Constant | Conditional Operator Type | Wizard Methods | Notes +---|---|---|---|--- +Conditional::CONDITION_CONTAINSBLANKS | Wizard::BLANKS | - | isBlank() | Default state +| | | | notBlank() +| | | | isEmpty() | Synonym for `isBlank()` +| | | | notEmpty() | Synonym for `notBlank()` +Conditional::CONDITION_NOTCONTAINSBLANKS | Wizard::NOT_BLANKS | - | notBlank()| Default state +| | | | isBlank() +| | | | isEmpty() | Synonym for `isBlank()` +| | | | notEmpty() | Synonym for `notBlank()` + +The following code shows the same Blanks Wizard being used to create both Blank and Non-Blank Conditionals, using a pre-defined `$redStyle` Style object for Blanks, and a pre-defined `$greenStyle` Style object for Non-Blanks. +```php +$cellRange = 'A2:B3'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\Blanks $blanksWizard */ +$blanksWizard = $wizardFactory->newRule(Wizard::BLANKS); + +$blanksWizard->setStyle($redStyle); +$conditionalStyles[] = $blanksWizard->getConditional(); + +$blanksWizard->notBlank() + ->setStyle($greenStyle); +$conditionalStyles[] = $blanksWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($blanksWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); +``` +This example can also be found in the [code samples](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/ConditionalFormatting/03_Blank_Comparisons.php#L58 "Conditional Formatting - Blank Comparisons") for the repo. + +![11-10-CF-Blanks-Example.png](./images/11-10-CF-Blanks-Example.png) + +No operand/value is required for the Blanks Wizard methods; but the Conditional that is returned contains a defined expression with an Excel formula: + +Blanks Type | Condition Expression +---|--- +isBlank() | LEN(TRIM(``))=0 +notBlank() | LEN(TRIM(``))>0 + +The `` always references the top-left cell in the range of cells for this Conditional Formatting Rule. + + +### Errors Wizard + +Like the `Blanks` Wizard, this Wizard is used to define a simple boolean state rule, to determine whether a cell with a formula value results in an error or not. +Whether created using the Wizard Factory with a rule type of `Wizard::ERRORS` or `Wizard::NOT_ERRORS`, the same `Errors` Wizard is returned. +The only difference is that in the one case the rule state is pre-set for `CONDITION_CONTAINSERRORS`, in the other it is pre-set for `CONDITION_NOTCONTAINSERRORS`. +However, you can switch between the two rules using the `isError()` and `notError()` methods; and it is only at the point when you call `getConditional()` that a Conditional will be returned based on the current state of the Wizard. + +Condition Type | Wizard Factory newRule() Type Constant | Conditional Operator Type | Wizard Methods | Notes +---|---|---|---|--- +Conditional::CONDITION_CONTAINSERRORS | Wizard::ERRORS | - | isError() | Default state +| | | | notError() +Conditional::CONDITION_NOTCONTAINSERRORS | Wizard::NOT_ERRORS | - | notError()| Default state +| | | | isError() + +The following code shows the same Errors Wizard being used to create both Error and Non-Error Conditionals, using a pre-defined `$redStyle` Style object for Errors, and a pre-defined `$greenStyle` Style object for Non-Errors. +```php +$cellRange = 'C2:C6'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\Errors $errorsWizard */ +$errorsWizard = $wizardFactory->newRule(Wizard::ERRORS); + +$errorsWizard->setStyle($redStyle); +$conditionalStyles[] = $errorsWizard->getConditional(); + +$errorsWizard->notError() + ->setStyle($greenStyle); +$conditionalStyles[] = $errorsWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($errorsWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); +``` + +This example can also be found in the [code samples](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/ConditionalFormatting/04_Error_Comparisons.php#L62 "Conditional Formatting - Error Comparisons") for the repo. + +![11-11-CF-Errors-Example.png](./images/11-11-CF-Errors-Example.png) + +No operand/value is required for the Errors Wizard methods; but the Conditional that is returned contains a defined expression with an Excel formula: + +Blanks Type | Condition Expression +---|--- +isError() | ISERROR(``) +notError() | NOT(ISERROR(``)) + +The `` always references the top-left cell in the range of cells for this Conditional Formatting Rule. + + +### Duplicates/Unique Wizard + +This Wizard is used to define a simple boolean state rule, to determine whether a cell value matches any other cells with the same value within the conditional cell range, or if the value is unique in that range of cells. +It only has any meaning if it is applied to a range of cells, not to an individual cell. +Whether created using the Wizard Factory with a rule type of `Wizard::DUPLICATES` or `Wizard::UNIQUE`, the same `Duplicates` Wizard is returned. +The only difference is that in the one case the rule state is pre-set for `CONDITION_DUPLICATES`, in the other it is pre-set for `CONDITION_UNIQUE`. +However, you can switch between the two rules using the `duplicates()` and `unique()` methods; and it is only at the point when you call `getConditional()` that a Conditional will be returned based on the current state of the Wizard. + +Condition Type | Wizard Factory newRule() Type Constant | Conditional Operator Type | Wizard Methods | Notes +---|---|---|---|--- +Conditional::CONDITION_DUPLICATES | Wizard::DUPLICATES | - | duplicates() | Default state +| | | | unique() +Conditional::CONDITION_UNIQUE | Wizard::UNIQUE | - | unique()| Default state +| | | | duplicates() + +The following code shows the same Duplicates Wizard being used to create both Blank and Non-Blank Conditionals, using a pre-defined `$redStyle` Style object for Blanks, and a pre-defined `$greenStyle` Style object for Non-Blanks. +```php +$cellRange = 'A2:E6'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\Duplicats $duplicatesWizard */ +$duplicatesWizard = $wizardFactory->newRule(Wizard::DUPLICATES); + +$duplicatesWizard->setStyle($redStyle); +$conditionalStyles[] = $duplicatesWizard->getConditional(); + +$duplicatesWizard->unique() + ->setStyle($greenStyle); +$conditionalStyles[] = $duplicatesWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($duplicatesWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); +``` +This example can also be found in the [code samples](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/ConditionalFormatting/06_Duplicate_Comparisons.php#L66 "Conditional Formatting - Duplicate/Unique Comparisons") for the repo. + +![11-19-CF-Duplicates-Uniques-Examples.png](./images/11-19-CF-Duplicates-Uniques-Examples.png) + +Duplicates/Uniques Conditions are only identified by a Condition Type in Excel, with no operator and no expression. + + +### Expression Wizard + +The `Expression` Wizard expects to be provided with an Expression, an MS Excel formula that evaluates to either false or true. + +Condition Type | Wizard Factory newRule() Type Constant | Conditional Operator Type | Wizard Methods | Notes +---|---|---|---|--- +Conditional::CONDITION_EXPRESSION | Wizard::EXPRESSION or Wizard::FORMULA | - | expression() | The argument is an Excel formula that evaluates to true or false + | | | | formula() | Synonym for `expression()` + +Just as a simple example, here's a code snippet demonstrating expressions to determine if a cell contains an odd or an even number value: +```php +$cellRange = 'A2:C11'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\Expression $expressionWizard */ +$expressionWizard = $wizardFactory->newRule(Wizard::EXPRESSION); + +$expressionWizard->expression('ISODD(A1)') + ->setStyle($greenStyle); +$conditionalStyles[] = $expressionWizard->getConditional(); + +$expressionWizard->expression('ISEVEN(A1)') + ->setStyle($yellowStyle); +$conditionalStyles[] = $expressionWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($expressionWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); +``` +This example can also be found in the [code samples](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/ConditionalFormatting/07_Expression_Comparisons.php#L87 "Conditional Formatting - Odd/Even Expression Comparisons") for the repo. + +![11-14-CF-Expression-Example-Odd-Even.png](./images/11-14-CF-Expression-Example-Odd-Even.png) + +As a more complicated example, let's look at a Sales Grid, and use conditional formatting to highlight sales in the "USA" region: + +```php +$greenStyleMoney = clone $greenStyle; +$greenStyleMoney->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_ACCOUNTING_USD); + +$cellRange = 'A17:D22'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\Expression $expressionWizard */ +$expressionWizard = $wizardFactory->newRule(Wizard::EXPRESSION); + +$expressionWizard->expression('$C1="USA"') + ->setStyle($greenStyleMoney); +$conditionalStyles[] = $expressionWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($expressionWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); +``` +This example can also be found in the [code samples](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/ConditionalFormatting/07_Expression_Comparisons.php#L107 "Conditional Formatting - Sales Grid Expression Comparisons") for the repo. + +![11-15-CF-Expression-Sales-Grid-1.png](./images/11-15-CF-Expression-Sales-Grid-1.png) + +Or we could apply multiple comparisons in the same expression, so to check for all sales for the "USA" region in "Q4", combining them using an Excel `AND()`: +```php +$expressionWizard->expression('AND($C1="USA",$D1="Q4")') + ->setStyle($greenStyleMoney); +``` +This example can also be found in the [code samples](https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/ConditionalFormatting/07_Expression_Comparisons.php#L121 "Conditional Formatting - Sales Grid Expression Comparisons") for the repo. + +![11-16-CF-Expression-Sales-Grid-2.png](./images/11-16-CF-Expression-Sales-Grid-2.png) + +## General Notes + +### Stop If True + + +### Changing the Cell Range + +If you want to apply the same Conditional Rule/Style to several different areas on your spreadsheet, then you can do this using the `setCellRange()` method between calls to `getConditional()`. + +```php +$wizardFactory = new Wizard(); +/** @var Wizard\CellValue $wizard */ +$wizard = $wizardFactory->newRule(Wizard::CELL_VALUE); + +// Apply the wizard conditional to cell range A2:A10 +$cellRange = 'A2:A10'; +$conditionalStyles = []; +$wizard->between('$B1', Wizard::VALUE_TYPE_CELL) + ->and('$C1', Wizard::VALUE_TYPE_CELL) + ->setStyle($greenStyle); + +$spreadsheet->getActiveSheet() + ->getStyle($wizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Apply the same wizard conditional to cell range E2:E10 +$cellRange = 'E2:E10'; +$wizard->setCellRange($cellRange); +$conditionalStyles = []; +$wizard->between('$B1', Wizard::VALUE_TYPE_CELL) + ->and('$C1', Wizard::VALUE_TYPE_CELL) + ->setStyle($greenStyle); + +$spreadsheet->getActiveSheet() + ->getStyle($wizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); +``` + +Because we use cell `A1` as the baseline cell for relative references, the Wizard is able to handle the necessary adjustments for cell references and formulae to match the range of cells that it is being applied to when `getConditional()` is called, so it returns the correct expression. + +### Converting a Conditional to a Wizard + +If you already have a `Conditional` object; you can create a Wizard from that Conditional to manipulate it using all the benefits of the Wizard before using that to create a new version of the Conditional: + +```php +$wizard = Wizard\CellValue::fromConditional($conditional, '$A$3:$E$8'); +$wizard->greaterThan(12.5); + +$newConditional = $wizard->getConditional(); +``` +This is ok if you know what type of Conditional you want to convert; but it will throw an Exception if the Conditional is not of an appropriate type (ie. not a `cellIs`). + +If you don't know what type of Conditional it is, then it's better to use the Wizard Factory `fromConditional()` method instead; and then test what type of Wizard object is returned: +```php +$wizard = Wizard::fromConditional($conditional, '$A$3:$E$8'); +if ($wizard instanceof Wizard\CellValue) { + $wizard->greaterThan(12.5); + + $newConditional = $wizard->getConditional(); +} +``` diff --git a/docs/topics/images/11-01-CF-Simple-Select-Range.png b/docs/topics/images/11-01-CF-Simple-Select-Range.png new file mode 100644 index 0000000000000000000000000000000000000000..b8cca0cb08270a4d0a4ff424776797adb5edfabf GIT binary patch literal 7503 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 f-B~I_4MK`0fG-sf+e`SWw7nH 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 literal 0 HcmV?d00001 diff --git a/docs/topics/images/11-07-CF-Wizard.png b/docs/topics/images/11-07-CF-Wizard.png new file mode 100644 index 0000000000000000000000000000000000000000..99325fe8dc6f2c0a03c85599cafd361c5387d879 GIT binary patch literal 25211 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%0DT;oXet+-mX}8 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 literal 0 HcmV?d00001 diff --git a/docs/topics/images/11-08-CF-Absolute-Cell-Reference.png b/docs/topics/images/11-08-CF-Absolute-Cell-Reference.png new file mode 100644 index 0000000000000000000000000000000000000000..a1816e1f38b7b172b3ccd1ebd34b874045a1ca4b GIT binary patch literal 14849 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 literal 0 HcmV?d00001 diff --git a/docs/topics/images/11-09-CF-Relative-Cell-Reference.png b/docs/topics/images/11-09-CF-Relative-Cell-Reference.png new file mode 100644 index 0000000000000000000000000000000000000000..9fdaf5641e729fe66af2c57bc84c573067aee893 GIT binary patch literal 9286 zcmb_?WmKD6w{C#8P$)%;6)5gnytoA^P^<)ZcP-Eov=lGJwYU^WAh>&rTZ+58HARBU zN%#KF9^X0NxOdzicZ`|jeKSVZnrpq8&wQRaSA@E%0xmW=HUI#?eXR)81OU*5QP&e# z=&1Ljp+Ys(2bzbbf(!sQLb;2&d0->`Mj8O9jKR4vdx*M!?5e2e0RTLo`tw2~8yz?V z0O;pm1Esaz8y_yZ*i!6fV*Vc0z%Jw-aAqll`p|nZwqxZw>X~ak?sBJmx7k79@=5sj z3*ntIL*0?%j}~7T>$$6PIlj;)=c+rfdJj&i8``u|b}7LtbPNk{^_x;i?a-6GG}a)w zMB6vtYEI=m;q8}2X>synL+dsNh%i(5=brSm<(o@!I3HZaJS;4X8~_OXekXtP2mnwg zb|(e^ik~*3)~gj}i1HsI3q!4Rl2!)|5V-fH3VyZT8`FMPTOL7xh5PXdK*Ku`2~jPg z52aBFucrLlAl=U!_by~JHl_YH81HIo0)|`i-?m<`4QapGLtiMj`<`ifEQGExy$aYJ{6?m=O=}2By|36c zduvKUYutS#_NihIBu<#5QQj1Ae>XEjMy+jfII{0@7~LvD)n4tbLlLl^Qr^ZOp}v&T zc3N2OkA#{7jSkB~)_jx)xtvGdguk{vnh*qOYy`&0WJFxqXUPe~8TopQux!@P8`L|) z5OrEHou#sts{k?{@rJ6!{9shn61$C5@Y7DuTS-y?qgC6*MxlBc;L(UW9oprPXPsOEJ=^^ILO_cU7RYe zS!V5~&Bgn5-bU(}())|`7A+CY?j_G{a!;;Ny26gLi^F#)J=7rJ>vX}hdT#%O&joL{ z`{AvvU`tH~;MIcjN$7o7>eYEZJ;AnD>p+vHB^U;AXJ7Ey8s9N-di_2(v8D_$jd`S~miy zz%b(Tl0M@y-(PIskLTI*T9dj0{fsa;h@Oc}=GMab{;hU^2yzb7194k*y-ZR1{3SY` zzTDlymvGyz4{Mrm8;yD7B&d5_w<~7*Z0gNaJqW4gY3M$=6A`I?m%1JU(gOqZTlr6n zMD%V^)A~8r*OOc*OC=$!U&OuYE&4VKmC`?@%Hia!OnJa{C?S6l zWO7Yx=o+A)qSbQ^fKKksR@+=wL}qDYOWwMwQCxRQw%y`QeIX8Q<0}q2C@&AV-ABdF z8nOKbzcu%j<>!$=g7<#uXJL{zwAgOn`UFn42*KPhy3t`_`nQS-v?E-Y)w7k8cjWR` zs7MLg2L(+Ozv>=TxT$1wx}#5vq~OSdA#=O8m#Al1 z+(Mn5YQU95VpDZ>-Tu0m{@E@n?mxU7uSv=@qx~Y4N0(<*j?JL)90@VG-P2jVJFCBZ z`Dq&-aCaiqc7)4=o_l$V2#9&59QbMwg@%~LIuCX8*XXpKJ_H2PZwTo;%qqs(VEY%y zqHtC#s=C~eSRVDqI}P{xA0wW2(9@3||esRM3~2D#fgV>y^&qjFuMCnlEriJ7O5osi34uc0^CTcz1ODnW3aqChzNw9Jh;CNQf$E4tzL^G=L zCfUJU1v(t?$#V0X3C!N5jB6uevMJTHxO{APDI;JsOoIx^7E5k}l_sqc8E9RtnLbQb z$mH&C!&}YB7`b3(x3q+BW9($XeMQ0M;W3oZ5lY3E^o=c7?E5Xa#^x;xxc4*D=>)w_ z?LNaB;%RRK^Okwt@0l0xO-uOfc(mI5=dF6bUi14gbz^ExGi-y{1cXgsdS80<%e1qy zRjiaChCb*il-VTByyD_n8?ppjO~R{Moax~6?${UN)=Y0%-Cq+uEBHOvLqFH9;4c_b z<;_t7sTf{Lp3@zScx<{E2etKtGyuo6==PI*nZ6|(y|LLXibzv_<|ud{PkPE1NHm?% zKM)W3#tmFWSA?Ezv=CY_E5UTFY>bNZ#hw-!!H45!ZGl`73S$L7TcZ^!0_a@@qno_3 zNk6>IH)+BNb3pCcBEw_}(Cb@Gqc1Bx)7ALW+zewoVOqqi?3aN{{g5LX%@T-SlbB0} z-tPASui)&(f|-dKW7ZuC>=jj_s*;|%4=ssm8^cdFN0<&?TpD_Se9e8VD{I7r1YFxn zP$2v!bauD%K5-|hl#M#+GLRD_z|IIh@f=bZcN=dlO7^TuW%y|Y1Ir)$wBQ3>XB3Q)bzifM9*iRswm z1l9!g-H4olenl&sd5#Q;q&q#r``FmXfF+0hrhW7E zt!zs7{F>N7bdsg>p}q7Ihx6uN_@3QEPBu+D^#Nd)d~q5}+>6xknEsjf4vwL^t3mK@ zx#qkDtLI<9v6vB{7!P&SCirb%is#Odrt=AJ?==Iz3*y~AO?fE%;_T?_{Y6SUJ?yrg z46)l@KKkK)Q_`Ql2Yh`A58#Sq3hjy109Ga%hCAKbDwdPUv00=i)XrG=7D|j}m|ybN zKW7~zpPij9kFuI{9CWo|P4#?jkdhZ**R;YL;L~09e)nuUgt-1q6>KXo=uHvla&KEN zVkbGFxXM0{gAb-os;_ zl^Bb-RG+F0@O=)w^Y_2h4mk63%rjBEMT%mzy#n7fbX$efCnS2ke%BRl#VSjcA&%4& zKR14pe1`AP`dthMNLiTirn9%8e)U|{{f2|un{OqwAtM;WU-tePq?gpaEqMl^xx(3D zD4>6x&E-AHsP|mKVY)JX%W0bH;o4kqC>eRk>{+Z}dLM;+Wyf_(ogq5>Y?sB#ZmELn z2S;`Tx7?6JW*m(GzQiO8U1M*j<54})r_$-)K^V|-@Q)?3d_EV!J-L@nUwZPwaM70y zuZ+xbq6Xi znJ2yPpH@VFGH~R~%mqT?eFSl-5`rF7c`pPHnTrjD?syz~xE8zYcs8V)*xt+gA^o^2 z;e|P*qg31dE)+SbaF=W9&9O&{X>Mb1d<*aNq&Ik5UxesaU#%Ki=VkDTOn-74nHj#3 zh3h?t@ubbb5&EWUBhcQ_#8O}GdFxTmy|Z;3vIKR$RP-&hqOB8M&o~!CVt@2>0+&Yh zS88w7d-zuId>u?qAAI+8$$N zVoeYl^ZLG)W+;s^bWxN_naWqTDTZyC-E?SX+ZAb?xZ)A9)j)6S_W)FGKMk$X6i~X( z9?_`g#kL(G0UX)pxP2XI(Rj{LO(u705`I~nx^C@2TAeuB>XeMw>2_4Cm_qjvECT6TIdXIy;>$Kz%W8OX`g@9e^oMF_uTHX+I1 zkeG|4`<++XB)ot0?W8Smb;1!?GK@#W4G-qaxSh`|{jB^I0rn>x`9{U_Ts<7z8#5}z z(4c-{#o;!iEKSp>gwW!-IBEao*gwDy8U??*!5HmR(ql_qdc?ivGvOnyk9e%C@zaLB zu`oBAPxUNT@0X#+56rq424O|$!Oc`VR8-Imvvc8Oql0kyjT)_=h+dmpH6*}F1DlYa z?+n&EmV;@dcs-p}`uSy30o!An@s21m&EMdn!5s?1_bimmc0$z32LY_E1V9*J5`<>% z{(*8;lmBeKwv}N|U$?yP&(ejT6jV1Q!^ouCpQ0#fUtV4(Cd~ z`&`o{$KKe}Qr9k6pXk*!o+7>V@|xt5EA>jQUY;Y8qi?~nGKU6zzKnN}3f*Fmp?CNC z>T-Cn|M;UR*Y2I?(u)Xc?W@zd9?!VOTW)oi6hi0=vB6Fto-WU;(@x=`J7jhAl%=O0 zV&Cd<{-)_9R~502(sE7t^dg5 zGV%C}6g}Gd8Vv5`Hu+I_GB(r+j-yNEV%YHXkqQb*VRz*UmBXzh+_0ymw zoO{CNs1{hBb`a&gZd?v=;oNbq5=p3QX6PZUJ3y%6HQlPctbVoK0*-Aqr=rEEN*-5n zj+xn-8q(hjjPHhQlAT#Q$?YU_Ibtq3N;e?!IUV<1hA3$(FnF&o25@AigRBy-qcv$Q zYRbU84g|anBuimpuWk{`()FV}0Xmyn1GD_6bfKghOQU~nWgdd`O9jxuJAj+YDe#&z zI5jU~bgGSP`=iVKGk4Omuy6Cx&OR6MGpQbh{h;BN+1*$P`bXglQ+Ns4bZvY)Yp4_7~MU7>luLqQQ=IwVKLwI|%~mC0%7N#&e~#Lr`Q^aCmS zblX79-~#;S_C`cjdQMAGapXHI{B5I%J7i_Fk%JxggKwFK#i*EDH8*!vt;BLeyt=$P z$=Y5CXYbI%)42-aVm_AYL-U_FXg?L{u?}1F@)$Ak89?~EZScbfO0i&Jdbg77VL1(y zldp<{_EChCWPtP!5nd>1tySmXI;`uXd>pA_U+XoU5{YA=s6%TX54E*-Z!?72*?m-n zOb(nRl;{;eX)<$1J!vIEr9jqvR~o}l9SE&`w3ekJ0Aw+Sa?rQ@ICc>n%F@nr213(z zRD)c}f&5oW@ISR)|KXqc2a z6zwLl3ky;_$k7{6Nw$mU#dB~sOrUQLV!_x>M>##`#8|~wIJ~L+oM$w*RgDj1zBLBS zP@`FU_I6xPAnA!eXWR@Ja zG4w&pE5|33?*|p!3DgdO-`04g=*CEK^1Rj0+BabimJ(1-8RaFGsJRdMr~|b>NoXO> z*}>@ZK~w#v*p~MLkiW@RW>mghR;7B_GAL4JIVwW(;=$`vm5}5T_1z>kpfKeWtgHsl zG#KermQ=n@z@CGe>huW0IA`W+T?rH|8>iZzeE_vsMPs*Pt7bKxTZZK|P}9{^g|dtL zbuVGQ)bq`@fnwrHpsCiadL+GXVQX$^EcNaRS5q10tSF5!57ht^Dyrmd93OS%0QD za+SnSfRk3_$}VkplXdEsLbG;74RF^5M!a6L@3UNQeDE)k+_sw*nbGTv(8z4l=bY1r zP>K7zyE?VwK@TQe{bj->l@Vq`HGYr-8zr3?Tm9}e=|)fDmMmNQ3OoTldp$+aMU)c^u>4O82hq1=J@%z9su{;PqJ4mV7{JRAHQ95f6a*^AO0Tpf^|HzP z_-wG%m=SXiz_>2tfAa{}qM)E(9308%{3i8}&Vddh+BdH>+Bk zdc4HJfgDEW-9uo0!K^X!fygyYJ7(dmVJJJv|MQ7Px2a_=GLOEY*jyGPH!9-eBw z%Uhyah{GPOiX5m(#WGz_hyH^#^pAyW=VNxux7UqMR5BE*uys5T61SdSEl}I+=5Wi0 zafvOio>t8oMzT)CEsgbPJOxFwU_;FxGE26|3MI97XVQErDSV;f24?VuQv1Ch@#v=jrhmL^KN2AS46tkgu z$Ctit5lGxm_|F$v`apa=QP-8a90L7Uk7Q5`#Xf(OM}U0(;aMP{#6C&A6+PDW!ceZ7 z_^^O03z|n5@uvi=}KKs_6FS{%tw9jri z9q`BM?gq}Q-4(UAS^KnQc0pfUHfce zmzYS0U*yl|uhOC8(!jAAAw~$FH=KS!D};v+QZs)ciFiIk^mg}z-YgdgzAn!Rfxge+ zeaTQBAj`I!BUf@&*{$S?s!o*)`fOj^ic}~T^VNjlraUD%L8CW zn0zE)TBxhSO)QEOL)D~g3|z_dSE2AgqkPWh_KJ*0?j6#h_N@DrAHlQz2Yt-r8A(PQ zNy&apY-Hqq^tk&E6v2RFoifroifD*K-pAa{De`&#pFRb%n+a$22P>1c(%=rdp>Wo< z9oQsQxZA7Mg?$wGpfG44*PUkMj{yseQSGXnCx4X#|C73iR`~}mf55!gsns&!xR-e% z{pzRWn?JQnR0HAqpc*cc`Skf3xAY<5(kXlPiljmOUcenO8fIW|WZVYpqfH+xr04Oo z5WmO9x))TJ5$a*Mn|^=lsajDdqs!%yc04yYi0p7)fK+0x3(AfEV+ZZuSkvElm8k>s z(Y!uo4nat99E5sv&L~_|Yp;=2{Z{%UUL}RmePINXoMNz`p`I&_8ev#y^s*W0aNcJ5{ zK3;>f~{AD}(Ci#-nGq|Vi_0w|_>}!v2EbZ&QON8a{E2nAM z$3IG!OAk#~5P2)pgg#PhjNFKNyB*-VI>)`e#13yU$^s*Tamp({d!Cmy2|Qi|pBGV& zaUd6kBwlWdsY%XWk2Ysl>(Mwex@$YkMUn+e9WJVoYS&R@sun55nnV*PSN?%LH2Y*O zctWr)`%m?8#RPSsI=y0t6Cr#%(*^g*>c-=t^ZV6qmq?8_6kwinIES7cxcyr%(fMUL zA~w6o`1;&~JNk(A-3a17cKAb45Cn9gnC6j{2oxw|VUmhPp@3&us&b?TonDK+DaQG^ z`VyYXI$A5FKnJEPlQ|TjPCwRhd1%1nHPELZQ|6X(LrE?4j5tO02$IAIl~#PezkGeb ztQaTq!(N+aaMn#(4^8!Dd!y1TWJXq6mY76NyYc&}Qvb(rv0i)a!(Nyl4-HETGA2>n zjcahcrL}XwwBh3;7Vo&J9Q%`$GNB^2>V#8CLw3WVBez$(zFQFH$yUGPLCvTuzo;!p zWf!0C#M-P&8x5+jdUCK$e*Ku2pS}7jI!VA#8Y9ubLI~aAq(s-c?z_)}9>s4;sIbA} z$7*w*yemT7rdoeHx%VB>h&rxWzLMm5(D~I$vVK+#OQSGx)x47Iu%t)CUp;RF!+1O5Ny7U}-_0vflG)sHw@)HQsCK~b0hf#~aY)Jp!wg1U-Fgdfl!{+6_ z(C-DcmGq=}>Z2{t?QY;DQJKZ4G$79fM)+d9_DE;|Lkogcza@>;#c&-lCHdUl;e~8| zr4hbdfctY|zK)%pbHg{GVjHB@AAdUWXc7D zXnkl~ky;zREI#@=d0OTDI#;!sp@M9j%GMO*h5)L6DZ-V9Mi8SzTqg>;MGLZoHE1t- z?Yf~c>!7GV;pF_O;AF|PV&2}bN|+zLTjbrAh~1JrGN-f044CIoSpCD~7dAJEONEwHBYSLLOaP+Vi4>^Rr*0U_FwX zMs}wgD=&H3pMB34-L8A%_L-me_?6-xG3(TxrV&wu5JbH9`Ei0K)wl&|i-;r#A5ntQ zR>Baz_S$7I_P!b>%qUk2~CViQL((b=P{W2bf4OAIAzar}^5eh~{utG8(tK9xii~+qxqM z_VzcnNeA1*N2h~-^t~r~-8$g^_|P_!l%!4Jkz(;B(eH>2wyc!XHamHjj(29wdk6KZ zs)gf4YEcBgW4y{t?IQM`B9-#>YpBOivJleUXtRtR4>r7uz>BE#a6tuqtX2y9i36rUu@ zVpQYaCyAd0@uzuDP~w9+ZV-qb3;jZ?nZkP)r=giIQ-}?q!)@Gq?_;(K9tl|E0|XZT zyYBrWp`+&lTQQ-z2U?;5zC_K~Wcy9gP7B5JEqoHX9bjJLQN~(8t=_d&6e)QhnTjFB z(ESt-uRF)^@BY-!7I$JFj8JU&Z6C@5RJSaKLxwnBi&_^|F3)dh9O>`dI8&Q_dJWl}te2!@!(6t+#XtnO#!h#`_ppbGDABV*u z*J9Q5*Z*$c40@o>Zb+@5#`CrR@WI)hj!VA(Q$)!w2gO{g!)xusvabaqa%1{-9+#T( zDh~hvtkmT;;v*iLR#pj~H})nBWodf20051vzeiFmS@jm9=5p0U8;Zrttn#5&0Gjir zi<5RnxjgH;$>w7b`3-WwpMH&+QG~it39j|0W8{lEC=v+t^8oqP_U&s$4Hj#m0Xj5x zGNCB;tlYfe?N!MiCW3m#l+jd;kqm6wg-S!Qz!0`S-w>Doi7ne}3{;PDGaVXRj2f8s zFS=4Z&PUu2a^}7qRN+>O0P7&jLZaEIC-gbbn0uCWtxu||s}tbc-B_QtM)MVl)UrwF z@yY-0LQbwNRJ%OvmsGu8leITdq3B literal 0 HcmV?d00001 diff --git a/docs/topics/images/11-10-CF-Blanks-Example.png b/docs/topics/images/11-10-CF-Blanks-Example.png new file mode 100644 index 0000000000000000000000000000000000000000..503ba28d0aaef25d20cc0e5f7d2a253f38cf1db5 GIT binary patch literal 44032 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 Ws2fyq8M(6C(J%d?uT^rxGw literal 0 HcmV?d00001 diff --git a/docs/topics/images/11-11-CF-Errors-Example.png b/docs/topics/images/11-11-CF-Errors-Example.png new file mode 100644 index 0000000000000000000000000000000000000000..231d26f547ac41bfc3fe2341a9ceb701b04e360b GIT binary patch literal 45785 zcma%j1yozz(l%9Ev{-Ryf#Oo!p)Fe6-6^icowgLW;>F!1xXW9Dd$0s=u;A|cAIf|G zd+++>erGKfCppRN*)x0W*|QU@ASZ#2LWF{ZgoOT4Qd9{E30V&b>7m%Ohrl}rPulx| ze-9j$Bt9UO4Uwz^FCLq{mwk_fR1t}KW%vYm{oGzs(-8@YaPsc&0Rg0M8wsh>_M_-~ z6*s-DYjih~74O~K$mpfO>ioe+ZDX+n((RIRED>YEPfA|Uv5x3aNiN?;+TbR4e0;t9 zDrz<4jZ*Iu4237=uWCI?RDF1Zb7Bmlc|NLk=e0c!?!fo|DWzao0P6DZz&16ZlpNaq z&0`TW?Xh>W+py~?QFV98SFul@hMI85^YeS|x>a97S{4fVyf3OB0L@A;AaTri$)lb}uW68zT(;!`t;=JiVdr_cUP#Kg`l z3oi8^=>FS)u`Q|nIOxMeLmR9ZH5tHIJgz$_WFmBsp3?fE^0|2(t*&n+S&+fafTjgd8l50J*AKf=PL9WjS-;!`g^|K~XWS!9YQE*Q*2 zL*x2CMVS5@S^kft03q{cn8UIo9tUdOX~y2Y`c6Clx4En4%coCfzgbE`Z96WtQ>DD! zC%@g#<8JvFF7Zp$cXLQ&wI_h|vX;9?GwMZ@OIqUEuEMsJvUZbUzYUbTL@PHRyycIt zr-2ttI-$pZKHB3wJV4@kos*)|;<9~_Oq4{tK%M`=+SGJ)F_dKz=XD(1psdt(+Tl7c zz?_6iQOJ(AX2z%``NIMXaxVC@p)h-76w9-XmHqQ?Pp~n~;(mSFYae{^#VssMPZDP;i&NvGHl816e)Uv^Vst1G!&p%Giis?BiMPlM?ajcpwF#kS zr1~|{&kq-T-*4UIYF)MiZ0c;}t+onCRV~4+cdh9?`4gI<_LG}K zVq2gWIKx!Jxa1zDA0ov*s7$-Be!tL6rs`VS7vbmUYs45R5X*d-yL3Jtg?u`H7%Y(< z)v&iwgDBOrN)d3ezD-?d%-x=X9`PCC1-rNi|6B?@+1WDR-axo9XI1Cbsz@w~eEvQ} zOqkrr_s|z7RE~dG=E$|iWowpUekO#wuE>97_k;7vv-74%+H0~fwtL&6m>a^mW_wpW z=c2t9;}(H1_+FoC7HzlO(G=3MaOfe-x-XcD8mPV&X;xg*Nz60cg;8go!flFiKx$^E{sZ+1W_U%r4=q%kb}$OgkU1!x{u(cN!TXwAf$edjulZZ%QDg z&gLz9nuuri9yFpSjhk_Xa$kMXyr$~+=(ytA1WuF-7k|{2z^7KwTsh@S95eKZ_Q`ch zA9J2rL_`niFqYUKZzAqAqnT1^0(!R}%KA{Znm5f4>&9i$LVWcUhaEX!0p>=0zoFL(Cp(L7ibW_g? zhYZMs^**}1U^qg<&9Df)T9$B8p=U>S=|3GZ4ab!Lz1p8l#GLnuqbE8^N0p#mgdlpT zKR0u_rOS%YHY#dWi!L3Q=Zl|`u>0zHiXB?=Qcj$6>&(m+bc@h0CS+>YtaDxS(=Y47 zdF>tp-dFtbwC3q3E7w*J4DPK8KKbDqfN=YVPmZ!im^%~1^8iBhcd@OXzhaDrX9v+! zR~Sn7U~cu03>S0RL`^A*f_uyBs!-P1php!#Zh-<#41h6E5e*f#**p1&O+_1i<_g#1 zB1v^|$=o~|FT=RKER(E0>`h3E>)pd6W{w`i!d+jQsxHdxy}~m|`3YCYHAj5;-j-U* zT?dtDxFqcUN6ZK^;NQdm6T65Og5LsfQb2|-s)AuTex)Q|uQ)M}|uexD~b4>FlqVxBYtYIf%oiR9zMwlI2$UBckeCmb&sH;ln z9xhhv7t(~Q0T$)Jks{#@FSrVEpaQFLk;DmKi{_@{X?KiGPaC$LhV(5g1Lg&(ahm3x zoeRjG9Qqt+kGva7;VO`yzjv*8#%{4TGj&YN#*W;v`%C5ZZMFnpPe+tfIrNkM^P}g2 z1hznE&6*gZ30Sen;=*oGQ?eI8rli{QV_QQVfm&lLA<0!f%5KkP6JC}+LKd+OlsS^64yl(Qkd-vB} zqzO{vSGQ9PCc?s;70XN2ZEO_F87RlC0lcv48y>sI*?=)toAb2kXasd-=F#u)+<3h# zwC2&e%~7UIgJEb=-;T^j?D+}{pd?7}w_OMbzSPBPLrbN@ULZk~zI#gn9a^XJqGJAq zGq~hFk+DfmJ>ko?Th~oHV)~5_i;C;q zB)Y{!T*pQ7mT=HENw6|v<4`SGSkG5Bo+Kh?tp(3MWTXb~!DC9zZvuSk^-sQ_#5J#8 zXQoCqlt1{vT=Tn}nHp<56dsV|ycjgAj?pd+#X4aet><7~RkRcf3P2t3&wjDL_DN%8 zfm3GGF?-LBe?w7=3Z>&2Bq(5kdN>3m%RAy{=6y5OucY0d)#;?dN5A-9%7CN)w1QZl1jPS zSS!%(hC{o^FQ?t=m6w9ZhuM+GO(H(r&W9d~-=!O(8L7uK9OtUw0xEQie;SkM%oIH- zQCuVTohDTHS;XV6*@Qz!Ch)So=Xt6fPk$z1xft4+>8@}ZPnV4~k3c`t0jm`k9X~fh zbnW(|=jqPa6JuH@1ub^uMi=o#eJ7Ra^DE-A`u3~yiyQeZQrVARgHaaoa#Y@>_m~bNy2EW9V_vZ&N@aQD`A0VPOp=GEdBA0VQbZg z0}nPm1{?iUVq5u$r1chF~y`MG+yUjnWzC`P=PFLq^JiS*@HaKrgtikm71UJ8(fgan5k~B| zi?~ii1OcJ+T!Qbg#qmPhY}3zm%{b?v&M^&Qj|Jk#KM;|n0h2A11W5u8PC35_k8;{E z>I|yWWH=L{LB;%)JX2q>nB`*pclYjfyC*QwP-!3&TxK;so~}u5+uP6lb&M!>{=k5} zo#OL0R78`c|G;3LESOCXOURB&Y*8x|NXSIBK25s=A#C2e0*0~Atlrx8V;S_}yvbg_ zXJO7k;E$aE+0X80FZlu+6VRB%9n;tFp6eVTVkyNR~BB6M~? zh0zQzl?|*EJ4}o|gXiome7(~ESD}+D&fr_#e6kc*Qy$R zwTR#5b~&?9)}_b?INmgmjY8p@CE>fO$oD+K*L~q~KA*+`f5jF1>*9YdFdkYVii+q3 z-_n3txeS#{o9dZ?6zF2b&Zai#d7SY(0$+w{Er=Fa<0v*4utsDFx*)EuklneqPDy ze>I2E%%j{TF#ls^13U<0tF1x_b!4DbL}|M@2KnBe`s&MPd;+FPBJ7i5&VzKvX%eSZ zGrPX<(jN5?@zqBQvot2E5U1 zR76ihf&i%ni?&;uNwjYg*RBH@0?>;|5>DlC zTFZmk21iS!Fqpc+(&UT8z5l$Faa&Sx60_ml&2V(nmnnR58~}R|`@+Jv(2#)A@7!~| zy+rDi7?Ur5Tbi1hP86wnJbWYaACQobGYx$kM2v+zFd+^s^haW%96FZty{eG%xNW|I zS8nf>mP{qL;xV*|zcc(FtRlMBF^-9-7TXXWZs(OvgcTI<)rf+KnKN!#3sRn>LK!0U z760YSRRm%}VG!$xh->mGd}Bgg-@BWCKJ!0o1h+1=G$^}IO`;tw;7#0bbV^YHBPT5yGyEkQN?|OmN^1mS{it#Qtvk0L& z>#54yqx2gb$lDNO`bm`qUS@HkOYttgq=|t(Ks-vp0!_ zw$Au}jO7c8>x@mE_eoW{ZmU;=RNz8}8Nzb)ov(WFh;XJE?u2>M&iYms9akudwk54>bJy4&lw&WiRn^19w;<6q(3*!6mD7a zxqq6E^J%P7dpt(*D;N`cAu1X?Ts89azL`DMNbs07s(Tew8o#yDKOlVd&kN@_GSea z9b^fsw2>%rz06bf5Z9FLR1sXrgB7rHPM3vV)+UR23%;~aUbWU1{9TksUBQ#PC~^`G z3*XT~3z!k_ddinn`najAtijk|Aj;wr_Mmv#;j%zup|!E0NJk`|Q*Nkw)soIt-|H!} z6^fB`Azt*DYmbCqze)VKx2>goaY2+PC8Llo_;WKClk`iW@Fk{suDY)L{31IJ=4Wj)uIASd({ zx#K9k9)S+lKlbsDf~NDl)4P%Rm22aTDG4gEte^0IdSC|StjL*qq|dqYGrPbsB@Ojn zioGGS9g<`TnW*Cip*xgC^?H3a0&jF>;Fad|lb@tNl6E0$kAlS`w`r!BQ=s)Le7hm| z?puFl^j|EQ#uj(uqtB<$fAC8UB~8K)cb#8DG`iUmAC0}LxGXK1mE8${yEgf(tSJ!X z^^m^DK>RcQwa)udf2hzh21S)ifH9U>WHwj>#dT*~*;;TvZ%}B%1D79GnCA=^J=r4T z@~~duIRA#HU8cR6iiThN=mgKdi%Sq%WU@8?A+#ov27gyr=&IoOUAQG)3;)Rk8%M*! zQ;V&!8IDtk$C?-MdqG`CZ4bFs%7@aCZtJC3m-R%7;}oI)m^&R-rXCn093Q&L+SJwB z%c?sAB~<3aXL8xK+46)HA?rYASxs}p*A26~PaM^LV~lg^*LC*E4<>ba*w%5Lu2oda zs0u`@Ue=c_!H>r4rWpOL%ZvnD8ao3&&l%J{Eo{?R@NPa7SH-E969|Io^0K#ym#3AT zdzI3_D?JO|vOS(8aU7?*mk2ItlB8iIuqKZp=y!Bg1o<`qMovtfC%wzt2b`w(9_G*T zN~MA zl(1XIAK=4IZ0e!s9*iGTX&F73??xOy8Gy{{gA~g}!7#T6?nn!vi9&HC-ZL6ik){wOr zckMs7Fz>$QY_zJ+2y>}!>9h1}Tzyd7TCt(58zFu_5|RPViMd<37__yf;5(;XXkiX3 zv(@jU4egTp>Ix8lo6M+-2}i~HuXv9Zn+j*m;`c0ca~N)rV;^NQT0w8pU6~z6@BT#$ zMF0F#wG|^>@&?B6zX|^pt<53uIfKFCbiSS!F(M~8=WOty4BKPyQKHowj@s~g{k5UU z#t2q@RRXEnM~O^oSGwa|Y#C$FScRq>qD!*L;WD&;&@xbrXbF(-V)BT{q*)A2GYzBvBrI$Gki?X1ZEd|toJb;_mmA&IQjVi77bJT+Rn|%!gv`dBCL?ye`^98V zOE5aUiwUzoRZ5O4iPPUE^3zV_b;xJSaI9iuyXeTL7R?&h);n@GPp*%wgYAaGf4u){ za}V?*spJ)n<;!nE*m&Lc46Lk*)81i)*QytewuF1rWim=xcz87C<%!E@6kyk)4t6f> zZ)|Kh7Is|u`}?1tpEoo#OifL(n+>6%qi@f*XwQ-U5m83_oXd=jcAc$mgTsnL;V82R zGLj+Zw4Mn|{?1RQ6|+>OACWUcMfvoS4Mfc^@Ggz+oaVEZw6ru-mSzPnQ$^dRZLSuB z=UBs=4T!WcoWx+~jwBC?cR)BX;O69IcLSAQko=NkYsTiTTMx+&a zX&5hnO(m+tucqGK{lCxZA*L4A)+EsWM-u|Cd^o2=e}#2TCzCwandXC!79_v5kT$pS zYpS*(AZmt8ep`G?LT+7%Y0)eMc%*Kha3P9f;=38WD@xG!X#jS*YHQWP7M#XpNl8gP zPqq|8~e2*jpRhbzlv8*;UA5ajLA?XyN@7*U7wj3wnGSt|{kK!vTSTCK4 z`%O1sdj^_p8_k@y>ytJG&K!Xp9WFLAFF4K`o1FTeFTPFLvf}9Cw?i}G5twgaP)_(= z2)p(Z@8gvC!-_}0_Iy@%PH|ad(H6cK!;?s-`sRl6cO1=5z4JDCU(54Y-vx!$CO6p6 zNE$I#pTD8k1-yw(0P9VAP8vpdEmwuU-)WQCWOmblujb~Y*yiq^!msZ)Jdk|8{&RMk zhL+A4yb{s=L3Ijz=7)?~TU)#F{8itilea=-rYLsr?cmq_G2~X?A?heeMn=Yg;o;%I z!NH-SG+swjb93|4ow?PbsRA;v4P|R1vV3^$f?J!W(+5lI&8FfRGMdO*^%}IKeh2tq%^q+Lrq=C25hyZEW9A!G4rpULt2|m6+@ep@bgEs)0@wHPVogA zLMuNipSB}d)q1{K9!#8(p-21BQg`tkvE41i&MLFvGdan17HBiq=)BSw*PmNNDG^anmitYkq+2P@*5`C=HE@?kNE+`0;}dn?LRmnT%bFcm z3nT=>7e@)I6xNXe{=Dm3Q&nIv*w3$3j%9~8B^h!;&He@O8Z(ujx2KIG3sm~j*b8lr zk4d*lxTb4oYasTT5+IWRNHm37MvY%Fs4Q!569M{{}NJJ7f&W)#qTNB!@$J)er z@zL=kj-7O7YUlT$zbz~Gpws?KQMhIso6`eBaig_4YUR6;-ug-jWS*bu57%CjUru>5 z9xHNMVVaOx>6d7~>1S2@{nfG*K6U0p)Zs&mjeh5<#PS{Bfc>uJCEJcx#nUoiF{}F; z?k6_p=9+Yd;PuBdX#+_#tF9XUO($}PY+eU#shdDqw*ni<@SEHN{Rx)(lUl2e?SVx0 zw(D)X+v|nfYba2TuaD*Xp7-nDq~9L;`rI6*rwh0rOtdD_q>o)ggt4RL{Nl9^+1qVfhk)(OVI@9pTBF5q}n|rD8BW9?!t3bqZ#W<986^6$-T#Khq{L!1sVrIfKzE;iw zy+)QbwGji5(U&au#bBBa&mBNelJYFhftciawMMxF8|wznE-pgXM`L%3?+SE#0g8!< z83&3XP+!5K+R+Sg7klJ7PJb z8%m0gp6#BU$Vn=gr}ojdyEOnJkilNujAwQFeKlen<)Jgw#zIE(SHk|#1$~o?b86-6 z342TIdt?36MZt-(d;#*Bs*{lBPIo@SxSbjy58tNT!lG7_@(P=dNlGsA>`1h}moii2 zjtQvDhO@IwdVj@!10VF}H|ucS=*51+P|*+Ht$RO<@h6)Q!wT)>W9daG@$t_e7W_}>CwDBAv$I(VKXP%Zs!sHS zMiE67Or4#_4z>?2>2gia9H7Lj(=PM{ zpqzJV0HDx%(8qAx5p4=$A&GYS3A8kP`n|jb()g7pZbCj0Ka>ra(&nViI`O)dbmVfS z?aMP?0m-`T^TyEQ_BBmx`TR0>1M8f@t+}FN2i$_zDSy20Ns;lA zGFs0oZo73D=`%xlKdo75$KvPy1eLh@0plRi76MDKAU|J1o>4JEN8`E3pK<6RM7zz9 zCgr>>os=yc3wGzNf~vf)G^cWX4h;UZlRJeVc>c*r>|scb#^t(lVR}RzMeAgdio zdx7)I=OwjJ_Ih>=%!Ec_sc z>S)k;{ux;OfWmxL{ba0FSeSE~EC%xPruFK&aB5a%OB}>9)HK4Wsr+q??)><&q?xV6 zXge(yyCA$aS@2zGZo%bxOnUy(bgh3tz?0_5btj%?w_NUqmXCi*9C2{ZifdM^ZV!

`e0DyGzJ267ke%22nLRBQPxkAd}o|i5fDD$;iuZ zeue!S8j6pPmvi)wT@gx5#=_)a<{smfd*ca(7-e!d6m@U?nHsA3K{zziR`^Sk{X_>WGe! zq-u6F6f2>e9LIT3l$4e>nZ07KddpEM}JZo@f4AJhzhZ~YHDUSoWje_!BGtWJnr1DWW;BRwVuw1OW_89 zal$e0#{TxNNiiK%4-5(yzO1QjsneMN*`C%4a`E{{v51uC8Of^dkZ|HC7SJ7|FHxPF zYznmL=shqBfPDHnRo_?>dNL+mS-#NkgQJZU9}kguD*d@r@a+B4U6B0pCc*p+=;*lI zZ8%&vi)gVe5wttja-8fn?mk&KF9k(mBq$pb2_3wIjGKF^dP^gKRM*LFIM4!R%9>XGF+gn-eIV9VoH zXEjR*-OroOr$PZoIJ|0otI4JACF=5YS~ zhp-S4MYG$U(R&Q&L*8HJXEhbZG@X$(RxGcHm}7p$Q-^BGM@eVL&EJ7{5Ae#2m;1{} zY@)++@3?cA ztlY*$a9(e36xU%K0lBqB2*jO-JA1nkQS)Y%Op@9U4q#7xEkB}Kj6sbJ*vN+YB^o|M02#aCN;KiOwk7F%v^&;#l9*S#M!de`3fjo(DiDUUc ztRvw{`#|=r7UnL2{uY4x`D#r0Ec_WJQ^G)7|QzS^2U~t2mk3GHs19v6QR#Iz-VJKw^&g3-$!RTiyDc^mGgT7fY>!R6%Byl) zrOera(~p@Buq`T=ziK^sk{mKetF21Vs#xn30xQsZsw}hGE~Pv@n08e(L4x<4-$akm z*2sjlM7~UX&iW5yU$A>N*_=S>0;>*Vs90gEUwflkYrDF{!35ld0R(mc#vn6NQ^WCz zo&U2thx($uOxx6q6iID+r$Yf6fw;aytA^%_B_p{HdS`d3CUAACaS95SO7z2vZnQi0 z+;%Z1sH7yCM>sh-Js##(haM zg@w7fxq+e|)gNKtuUTu`! zC?yk+?Oq#BjHy~;g!Bsd{{){itZp_YcdkVWU9UJIhJx9H35uegSjh1K#rxjgUYTyw z^4uRjk?3_@U0tQ6`$O;;fC8k}>-?Z-echrZhoo$yO$;sa^hQB8%c%qPe*25as!@nG z0NC4!eu;j2^mVsbK|>L;cXf3&J3G6zwUx+j77!5N;oQ)&9~kjcf$Na+-AnCZbpRdL3D=Ci@XR~laelN#);4`@Y{EP@knE6zjZyOmy?O-xD&L2^0 z@@5%Y-rc==m5}gdp5u->39vte^up$Lb82kEMH;M4$cBbcATPNST00f=8#WO6_$v`G z_HI4(m||#|uCKC)Fdry*Ke#V>^#%HD|jG)V|oG{M_8TRVyO!4yA3fXbhjXJ`5^ zY7{BloVm9?SrW=#u(vl#5efecU#17W`}TA=xDi{yZ_5sB0o7lh5Ea_Y4NU6r}1@v z+K@tEhX(+k>LIX6SOFqa<>{!c_E9u8|4kg`nv*=88G*H9`5_bel;hY!D%Y`Ywpn~K z;rBe#jCDtPNjE*pQSR?Aee3R~*iHvz0XBnvGeXW_F~sIaz=3i1TEpC~Yhn&)%9mw2 z2Pm+^ZMmp{J(Tov-&cEV&F-n!2PXRVqpdkt75O z$?UC^rWXZatrLF;ZPUIR2ClMZvZj_^rxp1?T6xad^*CH60(}JEvzPBCPJ8#Kx!Z4d z&mRq|W8Ud{+1+1*UU`d{@4MdZJ-kXm2@B9C=BI8#O?MS~&Kh6TxEf(&Vh#-2V2&t7A5&v|SA77D(*xDC)f+IMC}wE}xU1>*WF~ zzN0*TUE)8K>d}wP$DiuB+~~nQ-tv-$T{y$QSEgdTB3Q*Eb91cva5iY!O+`>$%2wB5 zCZvkjdK1RIxx^X0WQ!SvGs>Nx&u?dO_SY}$4XU2d8CcKd)<(waDQm z^IW@f6M706MeYw2>{7A_>^18#tHBPVJ`K4JI&%|trAgp(`|Lpkjm(oBuL6;&bx^QN z&W|Do+FzmvWcI;sB%O^e|8}#Br1$dN1PmD(_K(Plq*)ysbPt zO=0-?)uRBL^bR)dD6CTy%1)nfl(_g-(kpSWw%x}D=NnNL6ii2&DwC3K%=wf9QL-~R zORM;l^wjV8H@0_<_q%c#WG`xWr=@PNdCo!g7U*c=Z*bXOW%0UF)=4T(>0Y3AxMJ=CO(aD}io9EA?9|oN>kZzFt75|-Y#S&AskidzYRurJDT)c@I z9K5`vrU6GweoV5ge3%H+YTeW3+Ky*1>GpX#jXB0gi@$5;0??Oq9d7gq#OYcw)7qQO zlcvtcwqP4XFSxBQGMH+Vufu##qEmjfd`V69F*zvAR%0iw{h&}4x+goQKR0fW+sWo9 zGv#HfNiOZ!M4RND=Jl|v(>WB=1HwWI(L$j%Pf}*U5%U+b#$l<+RRS-ZhI^<$?8YI_5#)n|LpB_&lG_Ha4z)1*%?0 zC$BTbO1O>;DSwftp0?gdsDda6=J8m&PKNo1VFh;2x!B1}^~1%1>p)pHN!0>h-^OfT4yOx>4%l8AT8*%u|ZkhZfWY|zZI8u##ak)K?Wf!T0UMuTxYqxguLfp_*w z*f+`|kBXmeQ(LMg@KcTc42s&menaZut!~M+N}$fC83Q>sp+@4}IFo)2h9K&`@)%py zux)J@E|5CE%46Y{0O6bc$Xl@Rm0wypa2CbquwmGH$L{vT?)Xn|T%^mH+&jN-G~)*0 zWrKvP5L3``omkaF@i_Fhw{$dcdEM@xJDxU#=9B#j0{B#(k7w-Wg%|@LoN&cFsJOal zD?PIPI`B%vnUFKaF!6cPoU(})BjQXZ;8FGmxHP7c`Taz^n|Kk%u}$uv`C02q3Ewe6vIA;Ye`lYX^%88bl^ zHkXhqUN($j=d&rSpWFZ5dVz{smA-K`36#7Udg7B#?`7y2o5Sg=VMicwdx^>ZGQRg> z&1Ie;nQl+FDV*u@xNP1x+0AdsjK+VQDOvsy?qhbATu4g)EnN?My5M^YAh6C7d{;o* z#p+JeZtGqsWaJBBfI&2I=K%vM;?czSy!p83YDtetSqbzl>U^-SRJgTi zVcyJT&}LZE)g4N6;}O2U1<${#&Rf@YMQf8khB2}HZ8N!zENgft zN8B|de1Qt_N$E|#mr69>KnhMOnrluys3D)N?d^t5-#0$(ADWv$f zIqXbKXOdLUQ;$_BFiQbILz9H3xkeFq((McV@Ta_taZAXUd}D;{<;TR!y-Mwc2?WaP zMWsn40|EL!FW|#3J)ad@*B?Rz8*o#P4>g`hM=G0~&nh|4ZCQ1#d5nXOzE3$)R{s2K zdA%UBT%>9I>CF!)?IU*Y7RP)o!za$oVzE_Axp8%P0Hb*`Jp1;#?5V`Ndnu6LCio2#B{!Dp@Zclgo_{g4 zZe-?^XkGO)O2-tiL@h+M4m3a1w1TB!#Gu|G77uz}6Os9D#n*O6qzL5FER)~hXx4l&j65yAbFdt>bmLg+fC(AXo51QR*z;d?X@ib17SK9^ulGA?j z94g&!5)HMYvT}o+Qn8p`P(SLX(Dc2r6f}+DQ>KP=yXu=3S6ohN^N~$T&*?hd@CmLi z0IMN8v-1m&X5j05iQ&r1sTsau$vK7ySM6au8cgNclEE|rA zxIjForP@F-QD+0H503KO5ui2&wVpJ3+PWocJ^4yVeuw*FC&?_Dc}wSOHq=zuMe{Xu zauCHZSvM-ymb1dL@{^6S9q@2P(s|rgN_8>n2rej`BYNu3CcQ2shJ_7aWfCV*_zop` z_Oc7>u}oeaXH8@I%6{*rb~#o&9NFZK$$6;H-AXGStxD*SwBCStK79J6lQBix`FuWk2YC=pF$3$v{ekj7ha`@)w_XZ5}@l!CPn z|5}#R*ETlJHVjMdKpls{?x0D6&4RJb3?987OpNQiMT7nnxFY^X2>}obf{jZU{Q=gJ zQH1%yDXPcSFE^;I%8VnH$e2CjYLzEnKCUP$v5KlF2<(6Q=2Cq0baq8=m66ygPzli_ zsG>BD!=RDSKm=Bpy*kpg5O4X@>uqz z2JbM<;)L?$qA-7Aaj(l-&!=^m zf`xXcXnHfVlD_bR0;?SY0%Brms^I;vK)wynvLYK{+WK}gC05<}_UWgWCALO719XCO z73_~%upiR&KTc@n+a1jst*i5`p4n3OjO-ViVO)RW?z=xu=^j^Azbel~ScvBwx_Ks_ z=CT95jSx-_({c20+KoeXr&#qKEAuvs=aOT1r_G})TB}9W0O+x!n ztFXY!ZS_FU6}9uynf*%4f~QVqw-3OLNjh?oJ1qxII|M%I z8q?((MT<0;RNYnEIjta@eqncme&w$4ncd$nCa<9P%uxZ@!n?%M^WW5-HHg`ML2&iY zR^2^>>rZ?e_5kh~=7vf8sXfJ(*_Y(~V#$%-JtgpD{KJZX1v48d8>T=>r$Nrso8zQM z+5`O4BHA{Cocg}Dp@uVV-Kg3pw+9iC)REySWP<&Dz#KbR>g+t~g&V4U9k$8W#OC?w zf-dv6%-UE5I3N-UhNvxfaK;z={|hpG4_nXy0E_wn)Hyjce4 z)YJ4pdhAzsy5-ze=It?~;4GHq?NK6XAhi#j_{r{qF97csCyF_p?ZJWies|{9&uTs$ zvA_eYt1l>!f5Bw#^4!0a{&GFR(mMJhz4l;WGwVz4mm~Dd&IP8s&)ZV~4-Dx3wd^a3 zAmNRc#2)itR9#K%;UTP8cY7Ef=cbcWWU)~FG*R?v6NWZD1 zXSD`#G7fwMw$Dk)$mVOT5}L`&ITWo3qTZDn0t3CGYHVuK*3wcd(Wn6WF<1H%9RG$t z%H0SXZ{t~s$ZnI!-j|JL8v=bOux$7pMsPGJYJOdJY=Y@hqCNM!FVA+m-9O0ZG%159h!1?;kIL;D+8m&y-7!{BNop#Y|hI6^8o3^ z8&UAPkBsL!XL#VVV8iDAx6C8#SJ5|p)w-v0YY-1jfTbIG02irLvK`7EGwRP4$Ux=>uxtp*TcR|>D-IrS^6CYCzuo( zGdzD8oG)MIJ-o^(zw0}o;l0_t+W@!mP?Y;8JV$|VYB0q+4?s=kla9?n_ZQ zF43020s9Fa0Uu{S+p&#q#}ZfMfIzD-^3EL#@LA}9^u!H}{KFvD=0fW1$79CF-Et`O zEVaUDBMDi2 zdLZhTgw*I~jpJu}l!1Mpc?XDcLhx>ssB1r@n^in}zfvXKTR#1ocR)o-BX{_O?3ZOk z94e~OvfXl!*57@=3ccCTJA~eISY2OT&_7ZDc5C8+p76XSz%Szhjr&A4!dauYJcl1A zzuFhx5|AFBxV8UD^C<(V+WJNy`cnHRbsb;_EZ(KT|467k;&{R`;-)i1qFZkw6V^%> z$=qeh?`ur38$~Gv^Fa5!6}+=5z^<;Ya!CA7{@xtn4y(CsyQ(yJrIZ&z%IRC8ot%V< zdW_%ib+}fMr5CZ2BlFdlqPtTetT>rMoD7<+Suo#P1gZ#3UViJHT$cNtsYs-v<>_Y+ zZnIEWkb$arZ9m;Vfd9`cMCjyGmq#DL^^2%by)3hgfv4I@jN273b45QXnN|b6yus~u zA7?A*dWF$61qk)jkXMMYyHhsonNc2rYw1<8oO8b_Ru%F@jC#px0UbO)>3a))d85?4 zzr)(^B>a1G&e(Ebpk=**F}aelm$lfgorI2~p-9C>(bHzqSQ7y~%A-~?3JMe~gqt7h z)naKUP1aOWk&EZQ(L;Y6S30;%zWH4e{z*$;S7?Y;INuWc!-eWPBiW2Aubbc#0OQ>6 z_IBwP&-J{$WWQdgqKsfZ>wx%=!q+~miyo~NrOZ7=QV9}3ky^$^Z#$|fCiCvnxJ;zM zZ$iUCPk@fcDw@5C2M%pC*;*5F9C9Vl#+dW4tON&;_7+MxldgD#;-ME8sF#xsabDFF zz@{tMrRj)TuMYYrcz*Q4!GVXDRJ{=Y5}rl{J`!Ep)F3ilyqXyxgeZ<`fhEYijtHeb zejhMmW*q;Q-6ACo3If|2YLq=OcjfW=`ogs5f!3jwm6n&Lr3kAx%|)%{KlG$v2U3-i z{(|@?;F`(50r9>bz_*M#MkWfUO;w%F*LKb%tPI5HlXB9uT}JbMt+bpksD$HFuTX`w zm+~Gz*$7$3oBE|Ti_6JuOCPSf6p{5;Vu87a?nCBc%>GQN?@#t=zge9XUz`^mj}?Z1 zG0GC!4;zf{jg2-{hegEf?$-gf^UR1G*ve?Wyve>X(!Bf)Gz9CxHXb^6HP#G$z&USv zXA1JA?B-voZ=|ynuwpR~bLKcXm#wmKD8M$HaOF`xE9Od`&(v^6agqJ1TGpb4!StvW zarY}7K;W$0BSqIgDx|5y%$*Z*EN!qpE+yxtiGk*c5CZMt<~QauKV3-qma}&nnM}D- z^fI%Z&`bHQ_$tR!8mBO59%-tMau=gU&-n5!SYmH{?NE})H!YSFD|L#5$`qW+-Sv{#)3REZ%gH#snLz6^Zy#GhxpO#)=^M41 ztmfI2k@cp~ii`{V-6-$Cg%wTN57u0%c+3klfgvzL=db+Tx*cASoW<3isJkK_3F!q@ z7JQB9-^!H4dCn7Aj2~$Dvbx=1Z+a3gVr@?6mb;#OvK?AI&gaO*&~oSZyz0Jo1lzsI zuzsfA#utDrui4WLE0yi@*l>%IzH711%{kE4zEV@T%y#(=w(v9(q}&ls0b!ULQbY?r=CQhzUlyUs4v1dy7~F8)JwXdnlFBC zJjJc$R%e$XUe7A7Wdx%-ui(q#<2ONZw_U)#!%#)l$*dyBy(J^Pr+-V-y6jT5xF^Wn zEGtj>&UujZk+HFHFcquNh+xDjW~hrC$Ad-XlYfWG~*rE#D0K5S*Nx6!mtK`vS(!qP~>7 zS8C_29ErEOM1K37OoW#NXso^7J>3!6%^H_T@CP%Fe(-U6J^GNpQRo6vY6WerYHih% zM+C*l4swy_2BNe=ehy|ZQTdtYcU>osZa_*>>FGu8=G-NT=K><9__9%P=5I`=rI2!NYaqIeACl zBD2TCxQ%R!P6~&{^-@5#8L@v7v)?P|Eadtw%R$3VumS%_5-eB9Sb@Q=2b6rl9xPEh zvw^Cn>$0AE!n;Vl8gvf))4R9(|S6lE1e3phzehR5JG5Ks`2MvxYeE&&k*>F$!2?oL5ErMtUB8U~4>yJ3Kl?#^MD;alK+Ki{+8 zz4!a=<9pxr2ZskNXV&`lbzbLrUT>vety!TS|My4iq{iQ-7&q?(@z>%rf9Yv|o)UM} zlas_zyS1tC;B24wXlTe21!md+4mDfKEl2bF9$n23i!aI@$7(T_^;~mF>(qwCf;`=i zW70hH`n)qodB51sXd|7j2dZ7#9@wG_^d0gWJUtryjz(e#9CCz&d^{1gOI)_R{VNqG z$*G@@Tr%Xf6`Uic!(?q|54c$9*U~G$Uv2afAl72h^IE{(Q0{(l3nuFtp+WTytnOc7 zjMgvYs{Pzk!;UTu;^?N@JF&WgDM@QzhU-~;-6Z~Q!0m`Uifeh^UJE`gF=4@aC9rB3 z3A4BdqWhkv);>Q!&%nSy55y2PX83U#MPwR&j38jc1#+Y03QI;*`tgnGK369a!l-Pq66ucr+i8FM3}Osz)Bkz=`!pV`8R zG!uu4KH(inN5Y8>jbP`>%37y+04RK&Yls>XK#n!SkQVHz(Cdxkh+ie{ciUSa`CXM{Q|ek9or3IHkAqKwEoG z)3STsfD|!p&{=EwxQkQE)DlJNNqM#=?q<$zRZn7Qisy0WiPXM^^!lQmYt&tF<@fHJ z`SoIRuea@$dVFzl8S3gVeuJ&;wC?pJ@GCI~L^0z*#?86$qdh6GG{b=?$Llv+vt#@E zKEm4`$JWDW9(R9Zde;Rfxa0BJDP(@tki~iM!s{wzgM!GTtvE4Xl{9y?KN^uc5a{V{ zn>z7ge$Uuq0g=_T?a`)g;Xjk6aY`yVKf!KzUBTPs;XZJV8Y&4-Lyer^*XO+Jo>CQe zg}l(Vs!uGIJlsv1n>zLJDSR_Jwn)C(Hamf}1CKwPTYn&@HJz-*UK`VlS+7fsO%$=& zi8>tCo_Ei)Z(QYU-o8H6D|54`N8ZlniH_zIq`NHKn+$7v|kt0i*X%|0Kv)VYQQCI>_gBQ~euG}q8S49u+T%_QwAyXzo5P`a) z3JmIJt=ESL<#_v1OV=Z1>4AQ5+1YvcwaFq>0Et!oA*@5(VRap2n-VdMRVq>TsBnCt z3Faor6a~A(3BR&oeW1uSJ+`>C))u*}5It5DYrHDquc70A|A9V-=fMNZmKABnY75=L zN`boHj+2@?ErHy+V0U(FCg=U+Y~){kdq&!`8pl~!`IDUCVV1C!1kAj*tSV5r)Lip| z+7YD?v3@QesVgJA5NM5WSz+Iwt^sHQlVKVXzEj$Mz4rq%_>-=0!PxOwOX64+kTH4z z=q}zc%(UqoW}HHo^a^4+dQRES(>MoiQKIGx(41nU_CUA;*o^J9t)gHyaMTBarW zW68DU6;1evsetU0z(Ru-&6$gR^!32QA>_rB|MmHtbIWm>0~>PD)zo7@N1Gwv-sY%- z_=vK$Ss!s8aIesbE5EHn%s)51 z)i{Vfx2%RKu$gH~&WSJZa-Ow!rmcryA*Ws7`o{={fv491%73lVi}u^Z60B+|ntW;2 z)iJTFTQr3HP0C^s<1;KE!dPtR$4v~r+U;v(x*pPfEzeVIvshc|)?Rv!(i%vL+pGsR zZ-9dViX}k8C;5mxbbnoOK`pMItGZ@fJT2vyN}4G@eKxs6epNAq3dhnkbf4sKeWrbu zAt332Ep5Vc;7sCYJW;vf7q|H@R(7_VC_pzS4}=ncqKPo z)FPIKxrfpuX^a7rZn*w*orEXl#8sP_PF#CmO&ZNd7sfdUxaTJF_ZF7M38L)U0d)m) z7wV$4lrwD@)%KMdZ5~(=SGr52@XBD~M>(DN1{x#=7_-~r$wRMN@6<>wZ=2J z{wq|~^24#4EcZhsycXC=BH}}7L44x)c^n}Ma z@W7%{a`o>#V#SY5a~l}yWnqZ5ZHm+pU;D~KO@at)0^XH35oNVLJwyuM+&uQIO%E?X z8*l9Q^P!X2IrZJO_di|o?)hzgs2}y`nbv`4!sicb&(%<%aa+aWk9ISz!kb(q>)$%h z1|BGLRHr&O6_+6F&jZl`5A>9%t9lla3?p%0o0vBLdnp#k3$AJOZ?BY&-g~h_mjF=E zzEsh8CA>%?ZA1!t?uGA>A?WM-8q&J^x8EX;w82+b^riI&zZb7-(>10~#k)zEtoOL` zKae9EY(Gi)8=T6!U-oP&_MK8P?nM0dI%yxWY`*I`V+@Ssm_E}*m(C-EDPy~7o*3KJ zv}Ikd;06?MBY0;6@MFo8#&BNgN&ENs-T`HN0EptP)*3~~yuJndrE?ha8nrm_&l7hA z*H84EaKw7 zr>YY$RSnnIYqeTicJ6oSEFV`}ea|#3+}@wkSes(x^JniXcl}KUyaJB|;}g)s7(je{ zL;i~`x}3KNCmtyx;{uq2bdCTc0r&ZoLa}BIH--lGuHVRp10quk%*ItZff_%;LM?^! zqV&74G%a<1sI-DT2Jy_57Y}M%%&%2w%3@KwNs&{StdJJ)j8gIN)ff2Oy1=!$`aV7D z3F55QR?N@0h;&-dLswF3WA5s{3F3-Qpu0#`ITbOXUxXZmw3cK=Fn zEL7JQd!@}=il+2uSPu1G-RLo8O$^gvs83-r%W9k0vr(O@in6PwLuG-Q)4G0_-pam8 zo7q=!W1X7O2VNTFS67qtCvhpzo3<#gMFB~#Xb;)}i52?m-6WG2+9lL`5z9v})vqWL zra476wJ_Uyb4PUm-12??%7p1f(}ZbCt;Tgt_>!@Nt#z~3_sj$WbIZcQeIlZ%F`5|1 zocX5GBkvu3u3})sCY?*~!{d<+tjbazlOFE2$38hfj+!;#vXkA+_%GxHY_*WT!Uwea zFRcf*3xkKM5)9_0SC#t*p}+Z@_nY5WIB zTaLhwx;i>K9v&VR78VW;XFy{J2?_D>@f}(0H8eDIlmj@PBtPn6`9?EHz~l?Wb=x;V z%cS~1*)je9D{ViRi1W14jxw?job3m#M$h0kF8r@yY!2`4m#9p(BkA$b6G2B{GKMojs~lt!!2>wM)?;ukJD0%*26Yat zxL2LoQ&!BwrghN@Ws8oRv||X2cC9vw%Vxg{wvRufepo@HS{ih-7?tu#_Y1(M zv(7!vqtzaKE7*RSlq~TkF`3Ai6@dj<6|g~a$9dk{J?Z|?K55Q1<8#6EWEq$HPddSC zsi%7C0Dd<6tO(}NvkL{lD{hw~QY{zBL7|APoob3L0DSHQ(C3lEMUfuAXV!S#bd0^EIdf#vyqb)%?opL z+>aw=?JAwN`jPCD{x=#%_gFf#Gg0lc-!oC|=&6({SIFDh)BHmcB+l)pfFP0bWs6ba ze8^Sl6Bs~rYc_Y?H^-rXT^<2k{bOa=<)Jitq2klz!`8vrOS+7n*B+C#c8SW{COb() zWcZAkBk^WBW1*G4p{+0Y=ARSB6s5ns>}aL8+_kBLy!9Yo=OzCeX?!k(IbyY3eeSWy zrwnK~s&$gzon7|m`Mv5ab00DS*CSI27jmZrza&1O61kiuASA@ln|rO5-q~3L{?XH+ zB9fx@0CMPUrXxBeYtGn|o+q2%!WJUc?i5F)99aGm&-P=KHW~FFh)za9acpeN<>&u~ zv%KU~>e3)KAjnL4VucF&pAoqoH8nMLr=idyDgZ08X20tM0MW3rF1O_kZ)pG%CJtka zmiic8+B~EnX@L1$V=>=gv)a3gJz|wZMt}(#u`-U~zfCWKKmqvxeLwk@Xnflj zv3GAXcQ^me=XxHU|NMFMLl7FJSdl&&Wg(MV9@U?>Bj4%}7lA~mwOa|Y5rHxnN9hdM z+|GB2P5zMB->=M_e|Z!BHQpQhPY(lR^8am?QV3XMf}9^S`zw_#lDc2^6;_ouPnEx= zPT_NPaB^}2xXi$Mev=*jbhuSi2EH|n0zKtV&IOTKCVvPf_cA=0F|BKCZ2XsQH7ori zT1NUu5I}uaGah-1MhRpzFMff@R=6bZykFq*eeuaD^Kb4l@QCkoDE@8`fYpAZcKmbU z`U9u%Ki7X}kNjU##s7^i-@`=UVSY7JR=wN2TIgZlSPSSEqFkQcWyLiuw3*^BR2Hc;%lfeW9d||OdYMYQh_C)*CCB#Fdrl!y+M{Osfit2K2g=X`yJu{ zBRtjUs#(YEFa;BRDJ%@?>moX%(xURl;NkfN=$me&r`qdmVX{%_j76S=1VmR4u2;5{ z$_O8&)rWgBF9t1w!&-b|&YE5i&7Ju_WxWw_Vds7`UUFH&ClP_3iEsH*94!?Jye2rt0ac;G(Y`hwewX^9oC)ART6KW^jRY8 zq{qt%&^+xojRFZ;ROj1H488Z5kh)6c>wc-Z5o>5>T(qKIn)5@ND0g8a_jJo9$i5mJ zI&hf8@N(eZ5_jCz5Ag9AFsFa!iXpIKy(Yh;umUe9_kZ* z|A4COx#c&mj5`lg@zJLoOXWq2*=A~`nCSbQMfvri!c)gZ?@sBW42$(#gVh$9)htF1 zE;>9C&|$oFsK^PI)RUTHd8%)eS*3brX6aeZhitM_bJog9MCdE-deItWQFG@TKoyA&ya{b(;UJF68QQ~ZFCU!&2hs!}plWAp!pqK)b?u_M2kLYHikDERFLtH%1 zlC%{MQBpz3zBj3+iKGfdo@WwBa*5vNl9Y-vJy?A)Jy$&+?odixc)D|~;B049RL!mt z^uyL5S6a}*7n`^joU!iIyGfF&6w4g))1+kX#E8x@LV+>X$YXgW=_CqLrGa6DF)UF} zAh8ia(B)5RKkrHQHUZNqia$giRZkgi14X_FcOI}V&g1`HEn@+k3+Jv#WVWzDxL>zM z77sfarX~_vh{t$9DlOW(>o|x<^xKc6)?5ao!jRxFgP!B`6`RT3FqRJMnvy_B@2}a}&Z*mt!oHFCc0h2a+)M9nqkDxnLK|F|a zMx?m1zw_B6gRp>*T<2qLMF zWF}uZ{yC|Y8c|DcW$Eu$*LBF~rBu6GgFzkGK!)i^^j!+X-PYB?p@3JflqogH7P&~c ztz9S1IH`@(+YmLQo&M82Hv;R6dr>bchOYJSJ_PXsQPZ3%d)!$wZb=`)ue(=k9(Me- zXEYv=e!n6VR$V=pR(V=PiDiCTmS0d%_$dt^!YxU(9lZWCWWB!uvq~%)ZvH_tEX-Tu zJ(@UGJ4p+1-x;d+*xfgB^ZVL18#)MHs7^olc{#o?jnqx!WYLU4O{q zFY*C%+#IiNrqFEQVr>Xa@}eEJUV{Mj@dQpctS(!bPwxiwEw z>7;=PWAgX-3AJc<(W;Y3@b!c+B{iYH%eVMNF`%#G~&nkV0cYmZUqA|q3o)%&6n#Bk8a-FUj^C)M^4_VsXzMt!b!wy{8UBynz+_@Y`vEmgVa#5H_z(Pdg6{4S~>@AsI+Bm_tFcYE~htVnY6}RcGS#~jw7OP+Ud;ss9Oq7?*9g{ z;vpqjiV1QkXc08vNJb^_pVpdK?Uyydl$`)~7c{TC@o^5Uu3Lq*uBvx+)7EpEr1Kz) zXKQ0Z7NiI5w6%T134@JGliPdlHi+ThH*`4+zIx<>`heHPir!F2Vh^*oJV4nuwr|6u zq86F$FnXo;?sU6{rcnRwPDpIT9&W-F&;jmXhA*$aT`@ahF4*YF5S2JqgCG8fnk?3^TOucpZsgrtBlgler^;JcwPP8gIG$?X=%? zJmo}VFfV$|6v2CJxn3iXinm`x6r84LAo=lFGZ-!`nhOb5#J=-}4jAn3H+r)&%n_1bh$>h*bw>KVW7Yya)sd8B}=9yI1UM;R!ej zM2rH+=C5Efjk|>%#R=$4vCV>1yEYd(?HA(Qk(?E1iw4|J9%yoH2oG7QpjL-du7dNf zJu{4v?eHE>=;{STpNgUY zEecqu0?!BgOdb@#R1eI8?)J1b4vKlHrio9c^zWkeidhVG8MS|Rw8fsn6P63sp_xJyJ%@N`-vRl? z6A)K>ma_DeH5&$5yQjt-@u$RotQkUZC$|gH$7!|WmBjf{q!QbnV4_xwx;hS;P9-hn z$7m>!f&SX(pA7nZHyxs5V$juB$sQk`+tdkSwzpg3DxRVb1_ec-6|l-0oXLxM2MfI! zbF}DxJ$B~WeJDsd6F1)qws(G}Vr0EjOs~IGf83+yG-)du`-S!yoF{uH1iVzD+=ANS zO@N}W=>D9qseDI^;G;x13m=uCrKI@ONLQ>0vT(&qv%Fatm+`r45H%&RNMyigMCH1) zEeeVe_5eFJHvDvHkBG#8N~_!fw;UnCCdRezEaGJj=ma@}57SG5b?3!mVKtlRconN2)oI^|qS%iV@;`@`isU7ZY6V^d_h7bp*CC`&@Jtf|E@=pbM9nh|@K@jvHT*h)o7jc9g!F$$)^DjFc;)a6N3kzE8UH?vN=&hJM zfF?c=KqaV86>g6t)E~?qm)4y&xE}ZU$_D)5tLW320i&X+#PU0RNpz5zVIJPehwO_$ z=zs?;cMP#MjeoB;fw0lvQtU9UN<~JEo_@>uCp90p&}knE92fG2x?>&R3M)W#DtmDm zu24!&4cDP4sQe^~@e*s#v; z#AOpk*cMB51jQ>HPe_LFD&+(IBcgTGKy2$VepS`_$z@?|70=)TXG zu__RQ2KWUxlr`sX&o=CtZacC~?SEB8#7!Ybc1cHX3L61e1jWC_`~Mcp{=sp%H6}cR zZ*<%li61xrW^tyo-MEiE;Z7CrFkAS3L3_>lU@aUEd~lsCF81GXD~lTb!&tZn>TU<3 z_{%WICLw9i`wOeYyIxJ!j~RkMiHG0^demAxbiyvKt`kJc0Fe7Hzq>yqj0%4M2SFmHGSLJ+Fvm zHZ+j)@^iK4i-CRsV(>4HGYcyLKTs!0OOEOR7Kxd;`2=8G41l8VPYHx+^@IEXD`Jq& zuLpmDUUeBi1|4*S;o-?zww)YRMgPlG>OZ-*WDo#64IQ&U63r3M|d=YNTyZ|#-dBIuWy_KvWH zSHii=W!*C%ujC1hIzXHJUM5$YzW|`iK5R~$ML$t71`r=$ii$u!TUwSSE*IwI8EsFN z&;u%a#?@g{r_7cK`Rngm&u-rpfSgV0pGT``Zc8!!VV8kGABCPh7Lz!s-Fv4$ZV`NH zp_XH`>g|o)nm#Oe+jM{)9rPgtz>~b=c12ph^AN28`+`Q;bHc%J%;T>nnHrD_b0_s+^nFH!|mtwX-{JuaxpIWvooe6{K z>2f{T*@28KxnKKLLraHP|E9cxK$iZ;nfoD69tZguVLs{8uPb;}Cif30 z=2c1anjrOJVWI8mgHnE7H-CX`A!uc57@oU>XJS}N-oZMEs& zjQ|&skvL_x;>IWP5r$mM|M@bpoj_hD4b3E*M&zSr8oK_x_v7dwK{?GkicTg59nLsVeDMYB zo&kqm9go>4S9WsF{F-;PweM2r;KdEAGG<*P))yY!J5fSuJZ93v4SdCTTMs@!k^oM= zV)YXO9|lFLDa_ieU7LhZclI)dZUa$C=Akfn&O8on-25HTNA10lw~*JM^pn&&Tl-yK zPs4Y1ET~F**R53X)6wpDev~}l+K?hvkkO@Y(aCcV85SMMu2g3ogdy;4y62kAb*t2z z_-b2}-^d%0Xr6k5>mQ}2T{;zq8jVkkY_f=gkk7Eb2LUau2&=bv%{*%OGZfI7^nim; zBVQ*#YF@5==+jS|fX~^Y%U4jD@@&uF)6V$ms>`Cc7(K6=hX;Cy9*$~zA+QaK zO%BHe2FLpXKI`=@X%8c)&|t*Rv$cIbr)rW1pkI*a5D`Ly+7=HGJs4F`E5Y%Ty3wM~50n)0*K9!TS){kyrT zuTK{CCzWegT*+er;|WHNFVK{4m?-|c->2$r*H7YKQxV&O1Z=|m2y6CPPvwA7CbrxI z6@U{j>tPv4e=``;b%$O>z>ON4Bn5ts%tmLK`66YLaTy{NL(I2TK7}r8w|Lm^D)J2x zcGe2e;%Q#9SHHIRDfkq@svznB1;SC{x^hXhX|tsnWnIg$_OTxzP=J zr32eGOrY)+S?)PS#>+BC^|4kp!Q!2RfMo8k&~&GVuJQDH z^oEb=ss;<`W*{oN*>#qA=00Iz?VFl@kjEy{JBalBx;cB!4yi&Ld?m?8pLTuhg?s^! zN&Y?0>;lWzpP|`)6^twv8Kw2y2BPz7>LQw|&{sLRLXXZnUIKt$DmD?oqr1b`e}_zA zN&9+KYk4&F?9C_KegbgXmFiHqVo4yiYltf>&XUKBDqMNNbnZC2RO4{jwRi|o5Po#j zdINyNge{CSi7kYg_@T`N42%60krx9xt?WwAzKYIQWnnDlXjR<#=i1qMF!;;({~5`Ef%C*g$N$Ji0sI;o#XhHrD36 zm8O%$s|Ps?Q6nN9FKRTpbTGarZ4nf2s1}^CG+?y@QXGJg5SN$A8RA%ah&VD|0&OFxXYk`Tfr{`y8xHp$Bi(~slQ_b&e z@&*0(>Ql_IpF=23d7>SpbHf5XuXWKYH7eTJH$dswz(MhSeD`*ZrkZC)s@-|VujZi{ za#{HSUr+s)0`4Rd4c!fnW1Q%_5mw#=vSac|G_HEoSO3vugOzRwI8v2PG zKC@AHD>7WUo`!jsc!^*l4@8=^*>-EeL=mf@-N5C^yM#er2pRsnSFP*2qq@v5A` z6KGRu(p``v-7EX=sdR+)yCqzdh@P50^;|jZrM*W`Nl4k!x5SkIQYC49SB8g{bRTOJ zH3sq-XRd2UVtt_8r4Z`WBPYM%8R@m{Jay*S*Q|2H%-75qHPbv}x#MVqZSLqChL)PD z4Aa)Q-2Rb!Jr@@Z5M78?T*p1o8{(T251of=o0iLveBt|&-5QnW3Go-Tg49pjGVmqQWL-hjxw@ zuONwZpog(}nZVnyQFN{539QV9Z>n`8hQ*D5nG%#t(iZx`vW3H4~dHex`(sEq3Gk^ybX&*Rk4PcK6 z3HLK{fg zrCp-q-w@W=@yh-rULymLeAH7_hA}+M+U4$SQ~PnA?VNR)cb81=gmV2gA9}a!M1g!B z_M=0K;c~xCiiN1j&mKk17fZq0Q)PI|px>=L#x%MbNEFWUWVbil|C_Uv(2igS7{h@& zr=Pa>!1Ft=*@!(q4Kg-T?=>9^f!&RV!dXQUr041{qhK>9$ghd?R3GBjCOES*J=J2zE1lG%@h{L%n-guPtTT)I z@m24L#hN+cdrgj(q?CE9nuwLAWI<&65B)TaYUBxfl0L`0(RNT#4Q<_C-c}<`%_h>0 zXq;o$b?=M0@rq>cudy1JmE1l_Mwx;mA67*`KNwu6_t3PqDWFwQc4P+?OOlv zu#B{Hctc}Rxo|trfZIad8-}v0EniraXr@{#3289*J=3#B;UHCPVSEvSVEk1a#{~;F z!BAcy6Qjh3WG7^gxZTHfVR1YZ>89a7FJI1TZ&eUlIS2i?$Dap-OQ7w-&_+;ME`(x}} z+R&xq7A;Kx3ux3YBQXJJ@O*I|>qGsGNyoD zD%G2znWUjwoUSDAZ0ZvDm$gVWD??Ar#N`rL7d+9TGI5L>ZlEnSF#V2+t8PJpQJAc`X=|yl(A+Q#RsO!fB#tI&{nKSrR9r-w`)^_Npji@pykM)Nr zF%8xD9*(<;(dGoijP3{4wd^h!>Zg$5{pCdoaGqkk7m9%rH{#T?vVbs|%w&UILs%*A zOSnf_SZVbVV`HSIJK6-awztOnZQ>hIGis&jNQV-RiA6`bg*|Dia@~Q(Q5%)u>ALFN z-wl;|)S9Gf2V-Et5>2uB>G5vkq6^NrP&Q2C`~jd3{Q#`iKuGz}HAE-%uGM|V;P7*-1 z$S`h8PJ2-nscNwdB6#d?V%i(U`|b7cM>}N}DWJZ&t-^*(NJzL?*jp3=O8=IY%n$!u zy_Cc#I4r2TVm56auoZFhysO$dspN<>%QW(Ga%J?W!9jmH||_xu=s2lPY_ScNv2@8{&6 z-Q`mvIOluGdpIh~JPL4e*6IKO@xO$^^`HI#5rr~!H8qoOmwLX}Ij9#q%6n|S9kF^F z@CK+V8Ygu_@BR=1Kzau@K|tfulvxS41CU5Oce(mn8&KEpY!@ed6xwL1ZPrzz#!L@B zcg3;!Qw0J5g*Jd9J!xz{i?ila&_a=7lj)xZKHN6ChQfn?S`N_6YciryQeCP$l8BWN zXBYxiJ1t#(QloGli{1D6@ZffY3JU%$%hFwu-y`OXM%fgR89s6SW?M5Xw5gkvbL z#QcFgfe-bL6K6AHGYe0M@m+T1RcpMYHZ-KVY}6N6!r;|~pT7JD#fcV_8Y$N)o*ge@ ze1|9Svnoq(J)^FesbXHq?H?k|Q-}I-0*(O*qKk!t1tIJ9{F0K;u7T~*gl0d>J^|v~ zNvpT{-w1E9o18NCt0HZr*x;X!r^)4Pfe!${jhMFSbo@=#XWRV@r`;Oj3il`St#-q=O`H~H(-lnBIRIOB$VyB};rgQ*o&*z`ndU3adP>JA49t()OZK+_ zfkmCJ4}5ue5EZ@9%8K*AVV_-Sd3NIUEwBsR^z;$8hMyE(*jvoqov-HRyOC<@ybgt5 zoS^3L=l`I5p!-bzU#C^73mk8H9;3SQXSx2%>T1H8-GJS`?Z;rO4MrsFHW0!ptKk5 zf1Vzpem#Pqj}R0RajIgR%o=Merr{Fcx9Ho=0@NMce0_6}>;Qh;5C8h|mt3{yH3}#w zs3H9v3h1S?USi;lk}c70S5Ptx0TiPG`9S^Ong8t(Zcglb$^T+V+B^@KM7*y60)&So zBX7NO0P~2HuMt<+3r+hkx%sme_xAPxFK%3Vr8nv|AzJOY-~S9K5lE{cokSTBkCOfi zK759eM?o-1*P_*KIb8L3Pkk4*m)#7#%K;qO|6Kogu0Br}TL30{`NEehqdVM7!++nO z+41ZF&Ql5jq8rDvU!$1~hcBk1YUgW+x2X)JHdoQ`*+X*OI0>U1pE*iXb7XRCc$%6Z zC2BL@slLGgaGBkuUkva6eckq=6lt0-GYL{nGbE0hS#^7`(r>26AAN@g15uw7aUA0O z&9s2o8Rsv+(5w8H!dz|7TeT;88d9^sS1haAcW2bOURFUV{muPksYR~JQ&X06CAQLl z)yH4tfesHQg)$K{=&2eDzl31yMypxr5xa~tDKW^5F2p9_lbEmk(>|CxKcyRxe=m}8Wh!sjJHZp24{}J55$lmu%p#ktRRaERt zXP%CPBjeAZ9JiRADvC>cmhXqn3^C~a$xXMt?BP6R==|JfSUI%S@!d|os~BZ&5V4)b zi4~x1=hboN{YZh6!WH;sM3in*K&w=WL=alcueA(KOvqknj>8TvU|SSag|yn`N(S6x zlrtd;pONK6nWKT62B#_8!q^n%!b$K!v&wzl=GU~)n}?8qB(AU+R1R$vJ7T%{j_w8a zg!sxk7^P@|$lkoWL|4BmzNf;a1R}HRfSv*83k+8iJC!MB;n;_ugOhxsLa8!3V@2Ch z$Y>$*g~fP{B=gee97QvRIZFRcg=F(*+t72F5a>NtkuDw6Wu-VB#mMPX=Yj#l09Xhi zfN{bAR8F{fzT85WA|E7Qfp`!KcuqrVzt|HKpPlQe!fFg=+GZQ6@b=ZF4z0Aan4MbG zwdW)E164fq*6XId%pL#Yd3+^~?uE_cxR*>4)sd}-`C9~FGW2(RLzR|JW|x+t0`Z$4 zf@JPz?K1cXLqBgdx^PzN1t?8VA$MRzcCbifg+@#BMg=Pv9QSnrreO#T>np@}5aRy; zMBhKIZ1i(Qtal`~a1LFM|MN8~x<8>D+MOthem>qg6{TB>Qz_{y3EwaV3TmZ^kD zcV7I&kyR~Fkf91@SyX$dP5#<+pr@;1rCu@JPP)r;%*#HW@Sa6o>W@ih`e-`U3L#vD z*y^wBCt+6JT<-a!INsHQ74D{g<8g`<+2=_wqD-nv8=pmqLnsP&>GArwCoyo1=4U1D z6u@fD@oQzK=8`M3ElNtVO0Pl_j~*H|eu#zR=f+yHpA6 z_ze9b-rM!OEaiv#IlQ?8sOC{9!m*_YuweApL_}vof$~nnz z!X=W)IGQSckym4T22OT|Vzc0(gfqKQX91+b3}?PfmAzDfUFz$&K#?zvY{i4_FOq2Mcv6r}#{;tqdDY1iaw>X(=;7QIp06Ky<{KerOfBvkydCjM+CE2q$suq9Zpxb3`{33>22m zsBGyg@LmKU1TeHMq3>!VeB}0ffbx3i>ZQw$tWPZpP0KTlaz^_$_@BT478Ug+?^!2g z2skt#&Q2dAZZ_?=aYVDCTmZ8dz^pFxQ|kr%$ziD4P?esaD})Z7VKLCFRdfZD+yZp$J%Fc)PKio2Cor>vajwfsF=Q&?nt8s*HTrhUG%* zCGE}l3+lo=3EeO?dHcsTrazhkCrY#i@kN`72YTVxlr50RL6ngsT->far*M8XGYq^?<809? z`l+eMO9=&^xrC?z>sFlPQ}wskgGJ6)iuj;%{gtN}((i0PKQXO^)NmHd**?)zY?34SA_cQr!@+4gf7zU<3|jss9w`}b8i~b7q6ez9$P0l^TR+(I94;hW z23P%+87${o*j*CRlI~JzFdtf+OF~S-IlHG8!hi>#tLxf>lTDo~{5sR**z+_6V^SL( ze=cA}f`tJTONOYhtB5W;JwFkK<@sYpbAM zIc1JqWLd5GhcyN+pimZW;T){=;XfeV^^#*)6I0*=kP6)ukojVz?gtE%iZxV>>%7fg zf`TYrz4Bqmq|>`QYFBQ1(iEJlknJeH5X`C_382cBVXdsK^&p_TP*Lq`Ae`yJdRMC6 zZM$4E-`77$N;{=YgE+IDaat=ea7M$OS`$s#ti@+7zMF1E_v_j9^lnBZ?o>l3udbo% zQLI*^imW|#aZ->jFKc#tX>n@zjAuJ#AWl%Z5@xe~cix+PV(~oGtnozj=Y5rufU)Sb z{we8N-8Y{Mv*}ut*r#<}#h2I3)guuv%=8thj<-3(in_U@?WEr`V!f-@qx#LM();%w8_^u(ePGxu^aufn-DTeX)_nI0dKIr(a8mOETjyrb# zakb{OT|H8gLf|{D=m@7)NBg7qGx?SQ;m|FC{G_D|lv869wr22-WswCChFTK$Jmrv& z-VwByP^z%}LNv7`4m@yvzjCq!pOkxavGUr|S65VyZEm-U) zb%FNo;pONv(3gS(QVb&rFXfWLNj;F)hY8JEN~k)594sA|WOEi0GcUkiCPl*{cUH@4 zc>O#^du{6c^|r;uGC1witP`DLj!q>T+(edhZy&e6^!30)GCU>6>%;LR@>sPzn2L?T zp)_oScp7UWVQSV!NoiesJB;7+SvDU3pwHumai7Bb{Ua4>G6`i7T9Iw!ds4K4Ih_EM z_W}-XtrQZh}kXI8MR{s7ucVjVd963=&ot)g1nXIT>PR=h03@zH_?G*$H5?PmG4~g$Q$$3o|d90jynYF&;yHwd? zemv(5U+Z=j{QYUEG*~lUyoq{Aaj{Ci|HDQ8cC{7(EhT|E=lG((E=dR12c#|Jn3WJ=V<-I#aCvW~$ zv9%QM-}A zF;!#%vHDXi6LZ*UuG$2c@Qm=rlQy8vJ8Lm;KcU*sv{nDs z*w#l$keU!5Ka$nk|Iu@5P)Jw5J+{f@mJRa0puhzCreKQK2A8aYOO}@;!0GMpI2a65 z$`Hqf*0k^|yT`my*Upn*2IywTQj?!-eucQ%ihROZ_6p==E zND8`7ujBCW-1PqtUbsQuRA!HY{b*_a4zfZ2S@rce<}LPIo%QmI1IaWmpm)H9QYkz! zPg@k_x1D%|o2W~ETq(H%b?>Ljw3#~Z{PM9MmFcKc)SV_!jabVDDpX=(VeQXWi!VTl zt8alB&@b%YRg+f#Ugf0IV1w>qoCx|2@rVwSL;l89^R^+sv>R;vX;Kgf45(Y>hLhND zkq4kF3WlZuP7e5&Zz!E(Pz(|H~J>zfw%WuFLlOC;E^$+5x_BY62@yAX7=7s~` zf52AI|3Ke%bpvc(Hmdoe9`Uss8-6H$rThaRkWm|+kl%b5aJ}!=5A`zwfI&6hGm@Zf zW4s$imO~JG2VJ#yJWe?2?931D&;P;-qm0#w&Jzrm5`=VBfI4sh9z0Iet}^le)OOurO(kDD zt|B5t5G)YsMOZ~TC{?6LQHqQ7CWwG^>BRtR2_j8JL8K{24TR7^nh;r}cL^nEPx-m0TA-ss}@{A0yQz@WJO3e7Tv`?-;PSrY5Qdm8HyrCB5t@9zM+`7fC5%;~@KD zvZ7xsNVs*B%a~42Ebj5?&a{&yw`O1TPs#YKAzp%;AhB@hOnmQMI;oU!1kO%_^cAEb zldm0Z+`SL}EBWE_V}}@_IYy@T8)t+gqo7FYE~ake_DFH)*oqCbSy^M|bE#A$WagVV z7U~cuVV?+OWrV^mv;Pzyh=p01kwY^cXuY^N3o=;&`*0-9ZsHF>Hz;EmC|^DDoP9FP zabUWu)0Fb~rxS==yH3ac%V!4K`}*tz>>Q^bRL>z;iXD@lk$3MHxEH%Pg%ZO_=dwD2C5M^Fv7P>o- za`NSid-HCO7>myzc}dRXN^k^S@dPZNJJ%9Io!MPy{DeG*Qj#rS0=j_a8{Oa(v7;l; zviANpkO9@avV3B39K`FyFw1zO3k!9%o?8Ky10w$$!c&0dFlB6p3+KUzIwTSaa>pKA z_;dQYuFlTnnVI{f`M|#mm=1RuK1rr{Ld@--Oo5<&f0cgeUj?de5JYF)G+SZwP6EDV z)Q-?_Py+KBU{Ek$yb3+1WDoUpGJP>2t|!13**~Ej-Ai3Uu;E`Sdr_p<>V|jQO8*S* zlRpE*N)*_*We?@x(5H%WR=ysW6^(E0-g+wdV}U;i&9TGgIjUrNt)=SvBBT?M(D)sFtDI|)lT)Appm&v_uu z%{DDzMoNf7UwHLB_IlW-;=T~U$`b!|U*Q7~)~rYb=WnfQmIHs%QCob3q%*NDX2Q#W zl$Op`V}ql^?>{8Mq@9{;D?b+@**VW&c^hA5c1W!WR+3@OL80{i?wtK3@q`e9-t#3C z;kP4l9fWTa%YPyYKbEmCA;3i!$ie<~2H*3UF;uxGD0UBzB{qPzNY3(LQb&pd{53Xf zH;whyZs z^p@+BCO5DAhZ?Rsb?byjZ(L0{*`hNF>N?dXYDH4#5IO}` zB7F0F<6G=(6bgqM6-r%YyGnYbe6P>p#|GV3W}$Iqecg8lj*+fwa~cXNMhC?N3oj&j z6lzdVkQ*6D|FgfCLlmDxBpzz)nxjM(+I{l5$#^Rvld|crdjSX|7CMpIFoIR@as-~G z!kvk{l%r2ripjV=w;$!0cf*8ZJ$=8cA@9RL5+&Psq-lDbLL5gY+{h2IQw~NrmI~ed zuF)0&Aq9aVX{)eXmM7tZcblq}4R;TRDoQW8_xws#dSBR0UQi@77v~$J;re}L^7aN? z#!SUyl8A)R#IDYe#aoxhzb`!v*;|Ww!NvdV-1x6#WC!==iH7Zk?Gl0UiCF%fXm4Ro zRqi)W#V@kWCls9jY&>0i)ZC=Xzk-nxLiVcURW?J|;I~Zp(hOxoqy1*c73#n-E=18b5ug zzMY+&?fVmtsH`k8%cKb5teKul{Ls+6H&6F13Qop-{0)R3HAF2 z$mf6dSDiUQJ5?cd#}eB_MV?8r>pz}s8S^1L9+W`s->(V@)(55rV@>AwY|pIUZC%r| zyBB2AuatQ97eRf=`$6_lnIsF*@!z52d@G@w{QwG+$D92z(Du4eW8mDeUN>+|1^Hx`Ja{rSPw*ln%II6Wm8QBSfL?5uUH1k<4xqHNZ$LF#A-<(0SPHcj3Yhc$hEI#rqm#n#SpjF1EJDPG#2KY~vMej-S#l5XOH0`i^9FA80eQ8{z9r$e zd}-KSf@s-V1Ysk(CqbMk4ETz1ZU@K_ehl*ME~W*jXmF~Eo3Caw(nD1M&DNpet*k1< zG59Cur5zo)6N)36n|77Hz1!bMdQxCsm%SvUF`K{a?vZIUj(?ikY5w$#O> z?j@Q$K~)S~^UM$}X^PTi{Ognl0H#*k8QSAeN)#u zwX60%0?OqiS>QDb+y+n^R23u>%ixgtdy}it2~y7tt(sZ1#(q|NAABdz$|^Zc6;44X z1rm9NIm?J=^WszHY`wu&z`)^sl7T}V!bte6zpYKrE-8|~n|I`{SwIUunsB`_Vzc4P zw|&W&N`Wg8}(5wa-hePTY*N@B_U3!y*-jIK<&Y!^I}vcw;lUa}raE zmwcf)dHUR2T74FXxb4l*8dCV7Sytf6ugE3l7t15-oqije(>N_#lVMohyy!Svqer_t zkGPbip{kdoV8%JV)UI394~;Dqsi{=?-VO^~EQ!t?J29R~fBRWUiR!tUyH=Nys)ri1 zFSs5QP;Au5e>lWxV^lYEo|jrs{JPYN?Ce_0xTMX-@n)Y6_sYcD`nAf1mOTkvimSs* zlJJ&A`R?7-gGZgA7p38mZ)$=|HqNcRc7Jar;Htj}4;J`PpO@!uU)n7jC->n2^t9z9 zOkK&n!ZHtEMpmx6KIS(irri$&m~ecM^|_wcTIw^upw1iQkuY$YiCQ3685QvS>Izi< zbe}(`|A=&lDEG6~p!ceN51NhZeeUWN!vogv$=Qv?mKwk6N1>jbXGk5sbI?iVl9%Gs zK?c7|0k6X+l;gBXC_nI3`D|tB_+o|e@Tb}Oo;7Bhul?Qg*P z*4@26EYFpX%RFquW05yNF3rwyjZ5Ab@5^=>X{);+{btjr#wQpWUd@_#w|%6z;-hd4bS zx7WLjUSRPwO8uCkSyx)Y+(H$-ex5!avmo|Jwdr%jX_is#I>dy1D^t*n`eNJ4k~7!! ze7}uHxD2wO+Iu zqBCV>W?#fHs12_OLwqY$=I0zte2U_G|F;1Pv9k>acAIYwIE%4JKA-YrzP~98344n(^i;1$HzSTl4^jHF zIktT>)#O${m2uEDBD^d`OhjQVE!OICF&&$d0-=3A))L5KzQLNVG3}hBp6=EcmnwRv z+1R*AdsVCgJn}35M6frTu>%uJv(v?FvEDo7Gpk-p@Q@|?cg|vs5i}S3^>YulTVWBe zuF)n-qt7yb%QRi1#Xi*a!f^SkeEe{F>aA7Dat6N4>^16)=LD{B0aZOuy^cdo_Cc_nJsEn?@51tP(|KwU-}@Iy|)Fy~!5w%GsaS zVyRt<>Hw~yMFo0)_ab#K-&rQl{UPSDL3OK@X8cOhat@O5a+^g%iG1%I!y{M+E$UsG zZA-VardT;o%;nnLaS8oSW-Lc-UG>m%`*7a*@6Rk7| zM~pA=?yNK$`IIuYyh{aFt(}+Sq*MQT8o&C1XY;7W@?AD%uc10G}Q+Ax+V_OBNL%yLd42pXOeamVR}GUeS5}ngzBF08n|IK^ z(8xu{OHn!2PoExEYR|>RHQEy2U+nzeEKG-NctTU9#wd4NztJK&_Jh}9(NB1)nq9KN z#iFj9stqIlb?3ejBe`^0=-$}=Wen}va**M~js_yW#~g-$QNp=zRlh1qU7xRG155#{ zW62SVWn0x2gsD4l!PKX;#U7_$a27}xe43nQf0`?*^R21hYy}{3{TODG;A7pIAnUg> zlhWgo|C|yO~~K}N}y{ky*TP1bkyc-jM3b{%*K37u4vt~B}K1b zn!A9E+`Gz;z5qPK@2kE|-Yw(fyk`Bn<5W~YR4G__e142^&;chPt+wo&P2OkOjp7dInN=8A-=EC|k&(O?O#E3xih5Vc z%+;}px1+P^$hD-%))q}GkqVxeCM5~yBFJkAq4$7GlTi4g)l*odVef(v6&dX>+A}Cx z-QXLqMo)zvxOO~mgAqcXwApZtLT7;pkK`HhaCbcdETs2?^s@Ni`I2_@u;+?7V`5AU z(?Uk#$8~@CsZ%B~!(&1ario+C;RV=3TW|Sr{hIXt=p|5Z?Hr4EDq~{?XjxsWQa^q1 z(l^{4j2Bq=xRu~{doKmAno(nQx9)-1f}|=Er+vQJmQ2^4pmH%b?%TYp? zn?7Spz!o;!O-i96paF?t*Dxci?lbeMiB#YLcx{8QtL}0aN$7?y*S-f8)$!uhDjxJm5KyAOEl8X(M6SIFQ(Sz1JqOkbxT^ z)%d(cBt4&Ig8%j(KNh950D80*R>zeYTwxM^%3-8o#dFGMgX2ow4b#mB=#R{2rQhl7 z559m$4^=TcOjio&9pR4Vf<>LP`uVmLZ>GT!=*e7n15*vLtgP#kJb2maZlT18r{?~v z!=@A0{KhHD}w9#9pGI^EK!FF z`@Yhpe~=b3(o7J8W(jFdqXZ1?VeNeleZ1SfZ$YC%iJiS{|JjIPaH XLKOToS=jeB1aVeV)>J|%T)FjsX=kix literal 0 HcmV?d00001 diff --git a/docs/topics/images/11-12-CF-Simple-Example.png b/docs/topics/images/11-12-CF-Simple-Example.png new file mode 100644 index 0000000000000000000000000000000000000000..0dc1f13c7c75e04b00f3f51e011470554e4afe4f GIT binary patch literal 51968 zcmc$`1yodD_dkrHpp+s?mm(lt0)wQ|EiEnG4BbOWcjpk&4Fb|7(k(6B-7$3h@4)wY ze$O}F=lA~Cde?gIx(s(_?mcIpz0cY4+53$DM=4=+6nqo}1O#+Z5dm2Qgom352#9Ep z?gO7l#F!WW|L$4K3V%Q->LXkS-aIgPFZmt;p(GUbQtKh`{;`FKvNZw%-YER<9_~Qb zHUdIdw5Y&)c?XTHt0yimMv_i%q<_2_DZg&Y!zGn@TuZ`RMWVzslJQa1t%9QJ#T%p- zwG+oC3q>@K6XsGvYvfa@TM{z1&HZN;)ls&EURTYEnX2cvKAUnc3hip|j}bug@>6O0 z7%2GsfYZ9KImMC&V3uayGLKj8jSFy83KYl(qiiGg%``uH6#bwF9y*dzmMfo2PU_d>8rjb z(*HQ;x>#{rIR12w2Oj$ASzr*ovzhyGkNao%^XLDy6MzJGKf27IkfY!q;m`j}5*h-6 zdy5dMCl<5;v&stnjywP5Rp@wu&<3fU6+&k5`r&_P7Vs^=FO0XISPT%dUte?>{jC3V z{=GY(aWzH|C(Qm&)a zK5tMvM_fA&Ozd!jarI#vw3VW0&ySn}ENVNr5igh1{)9YcR8r97h@GzN-820zK zy^qgI4pw<@&R9~;f`}hCdhCQ`Pq1%qY;F!=iHYee%DX|Nlz-oduY5>EeuuxIc!I}* zQ>^|eixOQN#KL8@<`568acqM z95ksfgY04<%lBtp1hc?ivFr`GzE&TKS{%nTU`kVKc~WR6;MwbD@a0iM%C2152fEmh zRY);+)%gsV>#$T}w!;vbs$oAS4K5fj6=uLvok_CTK?sz^Evihb>S@svMi(;Yt>_C)W^}bTL~PsPVhpjd2MsD%E@uM&S%uT{*%b^ z;K^rtvfHWIu@17YOsGam*KJDsMcD&N_6)BFA%{1KCNyALZHjDcI4V!QR^x%aV!AZ# zH!;?h>L>(h@@&pjJj`=GYTYz%m`WVIN#7xS_ou+(l_<%Jg0uTqDmo@eP`9p`p;4Ynw&9fv-dyG2z^ zU|`u5BPiF3ql59>VZi|dn1YEgw2;`N;4pFF!G^x}%0SK;R2(%|k9fJ?*Sj41G&K>; zH#*WhyCKT@T|K|A#X5#i0QppJDl6kzTuvzrR8~bw71il9LD(g^`9pmbc8L2U`(iL- zmMvX}$8(K~y%jN1*sV}3eFSe}Xv~pR60lsk& zrQVjS-iUaee<-#k-9+pB)8LkUxbENx#3S5YCwOTelEDqFfcAR3D6_p+(J+od8E?2M z54-U)?_9qrxw_Ex-`_W=$|U$nPPtHE74Bm>&{MYTfYEgZ{uSa~in z)H(#vagW>*k!#rFm%(D#F5IzhJ;1GZibn{eO&O;#z8Vx8Fl)gDS0a6iNR*j?NLT=o zjJcYz;ah2W=UG`*6o{1DcV`jiibMl4IjOI3DvN&;DEIlbn$@emtBp=MIfjl@-&~HR zYxZAW0l6#lb&%a!W3EIin!bJ>Yt7z`9C{_{nw9JQM1r3rs~)Z_9y&`O%6>ftI=xeE zWMc~jfwLVGa@96JSMDZ9G@4W%zze02*Qzh51(h^g1`@AHbc(U`@nxjE2(E8@MUPgTu*-5Bld1}AT($SOO#6D+oRN({3>OELa zafImc#XZXu#{N`~m>|eA=hsl;a5_wHjcb=DJ_ME+LguZGO0`^)Q9T8H(Gzl*g#Aq& z8i`l^a~a{l0gvL28M0UfB}EWpJ=Is+v-jan9u0gPs^njvOh9)$;?w41eO zNY=%@>Njtwq&N~yRP#IZ>MVU2lNf_c*SJw*x=86&ZB9zJg+#Wxz-7I!;+tsL%EVr* z7PvwyABx3J#|Fm#N$Pud`4`<#dMa+>Pj$bx5QZ0^y z4)Jdv*ndx@Wc5c%bOfQYG>$;sQv1b& zFeOt#jeR=LNKv3aZ?%zv*zOC9Ygc@hO@;p4TbN-Lf zQF=ydoeMp>2_J40j48+CwI8vlC(f@`R?OJAfkCy3r<-qne_j$w>@TY6ED#yFN$-=Y z4Emj1WZ*XSVrNMzgrwiub*8#c0+o|m-{;9{@GT?x5^Yi1e^+r)PWafh@BiVk1Q7;X zkAFyN?u_n|znf{0jyc`r2Fwp`ueZm)PuF#pb9;B~)IA*DdHkcHFTp@pu;Ldl0;li- z*ZfAHF6Wf<7(~a`K)zIe*5pZ1!%5NhhX0%S=-PJc#-P1W-Ft~p>gH?r%PAi45(c1- z)cmZM*wu9w4{G8lUC`Hj6}$=CZ=D4z%05J*!te;vX$J7y8wvWZBxLgCt^ERm7C2>z z>|X%GW026aPYxmTs(;w78%;!!1W7%U-~Xi~(peb8Y$lD>SeylG6L-x+q3uz(J##en z_|+8;O1aurD5HVZ$}~WJO#BeCZSPjp;gV zSHm9M;Yqu+=SVhql^C;v8BV5DwBY)AUqU(Fc=6!f*`9?c+VDtjyPEH1MG&XgEn{U9 z?F+H9(GGP>)F>?UHRLHMSG@>%lF85)mIUyIaQ$O0d3Q<-RdF&{dr*=j{;3yGMSpTxDd@RsB!FDzf^{2+?_Z_J$ ziy38&({|I4+4|G8+yjJ|)a19e8&kU)Cx(;Wspg4-9sZzp;+{4KmY)Zouk9SyhS)y< zCg_#A6c-N2w~v5>&R{`JzT%sanRxfYLzd;kW-{q2da8I1>!yX6auXb%i;AGdTNe~? z5rFC6vsCOt=qlcw{{Gp^KGmw+%At_YY(Ch)? zzx?$-3xy%iEA!8(BlHlgSH#6O)) z(I$U#RRPZx7)%rkNSFk2BziqSuq=Xt@@Lxqxrc$W9G8~A`rQ8z6~L|Rm4VFJCU~cK zlpg^hNbJT|x|aCE=+;cV^FoWi(*tGxKa&Vdd>og(Cgg?wunZ)^^ie)VoQuYrlN);1 zGZ`i{gdc0)FVhHMPyZF*Bs=d^J07mAVSiyS+g0BEq}-()}Bm=UwRa)K1sp?#rJcXc)Iwe80n+_Lafnf*$e%gSnIs zwKFtuZohay>dOLp*{^Ixj?E_jh@J=L48v1cB1ovN*lwx_=Me&Ym1T zUZO{cup)SiCcgTsp4reC&5?jZ49I)vP)Lg0!b!ELxU!UenYEX|NnT3FFelr9-&%4h z7#^@AxCdo~H&IdNYkaH9G@4I*#jWK9GM4B())OnV`Jk$xo5d|WIJs_^-#UOTsS919 z=+#^9u<&H9Pof(LuFs)sd7dFkD}$144T0kOiOpreYP4@)KV`s!Jj&985f9r1R|DoR zC3}4&X*Q_~laiS;OU;+FQYCGVx#Wu%S*K=%b#Hp6168IbNXD0>bknRE(iPdql+t&0 z+xb6Z5kA|oJx)8RPGif$SKfG!>stHj(b;qrd?F%{hS(U(yom0lBADNjjPhd5s+n0E z;9t42Gm1_xjH$>QjFa&BHPZ0?rnm#!5B4@UR9(e`Dclpw3YZ= z##PN^<@&wy8_ZGNTKO+5Jrn9B&Aq{$#?NfKMy&t>y(jZcRT*L`8O-TbwDi?By6#li*!-@wt}Rjm@@5ZHre< zzLD=m?W-y?f5u2!u323@nox_`WoDswa)?tUoYly#0NgE0letU* zBmG|eu&J`22+pQ3&I3wMx#~evmrM@Xs!V-P;}F5I1-zmiIrH+7!LlZ?^r{(5;g~J| z;Rn=8boFTLFzxz;^f!`L(PiqgAVr~;@F)BGw(6N!gpniqp;{8+2aFV|wlo(epTMv8 zg+FV4d{aCiS7>K9wa7R{-*3^9MqQLi_&bjO)r19^P_Gkog-3-U$^7Z?Bx_}6_UTde z?b@^wnTc(Z@yWj!o-!*R0pP$xvdW=A1$?`vQv$5S?!kor}A4nHH!+5-xj&Ey{wjpYly_Qs|Xjmede` zxUpr{e6Hv?cKNo6n1`fdpGcj^^mMrP`_g*+X_1nI2>qv~VD{(}RJcSsSkmb|7yFX2 z{e;Wko3OcTN}soc|MZ9c*uSuq!)6Cnczt=YY;zy0vqhKeTQm*3ph9B6>@Q~cqX@aU zW_X189ubB+y$QeLgNO47Ak)ql(`6HIG8x`g`|ELn@V zMfa_xa-|H9?23LV$G#nx1&J4j%H3}d9ox>+Or5a?gT>9Z> z`;*>|>_AXT*P>=a+?JC(!8b@;mq@|8HO81Rzr2HkLLpG7e_!9hKx~m0Z-Q)+yS}Is zYe*n~95z-S8z!?`{e5_QTK^fL>SB$tnF(yI+;=wDfecQ90QMWO`4O*u>SUU~Q|j;6 z{wXAeHfRNkwl>_~F(2QqN>bj8$forjLq7*y+Y}DHMJw)^UjuYFcvKa>k2&Ov2#ZD{ zLUQE2!KNoivZnVbJ>gyADQaL5_@aGb$uy75&J&KNS!B@X0aF>VRt%$83b7REd%7~p z$MAe)Ux~~ft|jpJV}t@KdKTvwv`zu3!WZYTDw4X2MOoJn;-|VFnqq?AfGYyj;(~j+ z6!pzcel6eXY9}9X(qdy)wVpFU`AQ8z%X4n*<_4vGg}#c}!P@8_olCYfN*LqmFK4&1 zfYmyao;}y{^4LP8fL5cUqV$t$5wWO74*SCOv+#B^P6=op@}Qi?mDf~mM-E=a%SjqX z^a9^z#%G6JZEJ7VDh*IScfI!`YyN#J4J)apxw)^zgfjiyCsTEfhewaXD*7hwj}%Ba zS|2Q7SxxmNaRvqk!XB0S{6AovK%h-*)}MCEV}uUwe>CXtlhaBx;r;Ouzx4FHl&!WB zQC1dZX@h^{UWXZAAam7wHRALL!Cl5wc!&Y^wA9nU;=x@s{qI+xBl^?nUDxbxS^>XY zr#C9cS?uO9p>9YBpKYAyu^XNOt9z~p?x#3eEU67TrLO@#DZ=OBclq=AY5huC75kHa zLlXi2EKJV=1!efTZm0egj`C>c&8z$_m?r5ex;mEt5+$x$H9U^}&l4aci(CgzIl}+y z$lU51gh!mrpxgTqw1ofe6{$PnC335)x~i3(w~4DL*lYHdC8=K=aXly=Vx&e(Cmrd@!L~9f(@X2x8*X`oi*8b|K{k5f#R~2gxb5K#ov+=ZEIH|dn zU|7niPREyNA+z#<%kTR&T8Yj@mPK&~HTy?qLL86FOrOdWvXKQ9{HE*2>1F=8l1l48 znx&-XwQv+oQh0s&rl#2I5VB@q#8R`s)E1U*UAIli^# zGYIu71i9Cu>11x@dn$h_yn#=-nat!Sj_OjgrpjU-=P$&pL81mqGo*5$wqvE1ht&5g zIvF>Pz8VE+O%)NDKkbH7x8u;o=9&L&eNZVYl6*DpYv?!%`;5&IeYkw;HIe3ifPPU%|iU#;9^ z(rwj`Pv<6EDa6RY z;`q`9Rv|TZ>(GbM8DJs8b%G^dt26iHu@rU!w35j>nd|C^S27*%70>lElYzStGAM)5 zFxH_KFCm_FOeIrw{VytOPb%{tXH7$cCzIKbH*h*ENqxf_;B&(b#cpRR7rB0Y)@qi0 zsX04nKQgO}N+!#-aQkP}WJ`4hOlV+s;7C0EE1#r?aJ`RA9&+!hbgR`{qn^m2KE!j` zgbA4cqtbVAg)H9cHi^FU#BhD5{o|5afX%-g-Q&lY~F*R`1-ODA(HR;f0OX|?Y>K^q;8p~}S`w$fq z5SyREH|td?ZjcqdQN7Gj=iCDiG$~S`R}uf{CQMClW0X<>wd3bFIGdQd=zk8$fe>GU zjv6ld|8MmB|3tmw44!4#Cf%VXin9))`5Qa=jumAlDapQ=NBb*TC56SYCnG{Mp8LKn?eZ9`El`_WbFh0*ra3x+H1eZ-im zmI(HEZDQj}$YtMDZoGL3EzQRwsi+?V9DkefCw=|`NQ%7AvIweoK3~>+AUcKVS36C! zJl&M(gnwBvj#gTQSDQT%my?Ct))E-(D>x;1$=+poy5Oq(IaOn3|CM;ld)lAQCB!WL zT8@m}h(tX8!DVr23w8X*@Z~E1Z&iL@iQa9YUOn_B4O=&1Z*?q2HaIHKpo>>}NIuZb zJWN?MFaE)<#1+oCU?T8f7`-N7>DbI-y}@nLq~Ta~{sX-GuL#bUpR5?P63<532&TBI zJlPKfB@j6>Kk!d589%PuN+G`h_{m4j+&{Oq?sPmrvi$-P2Xb<7IQ*Klzm6O_%+12) z$r4V$w1gV1{FPc?k^8w(3RFAtRtSKLFy`8D-hf{QWD7=}cPD0e@36XUD{dTI+nKb- zZ6GH+iW;`C{0YT0811>He4Ssv7!EIvR5k9e70d{e`l=9w>R0>)c#&x z`uq!o>)&)K4s^raJeM%147ubL54fcgkpntB-1!8^xuzC8QV^JxAeu|-v; zr!%o6v!%k4-i?Yvvk(13Mgu)pWfhFspF9)_k<0a>F^VUDy3kUX_px3|9lrQ7Xb;gs zYz`bXiNV*?4JYax7)#MC%ZN^PE&3McwvIWXTs)7fa}=|lwaiPNQ!p;5r4paQVz%Hx zXYyH86VuFgq}hT5ky`@c!vnEu7ry?@eki)nZ?l;ZM7BoO`>wW338)YxfJR^Hj}eYu{rl& zmY}=$;X`ATx=B;q(9QQ(-9=wf)=~Rv%jmCgawn$Et0+CUT1^ zR&mW*Ev{nZB;=#ax8<8yn7X!%ss<>W3tO?iy6LR}DCM>yyj!L{rfUnSW%v!$NG(dK z314V2W4ZqkyaO=1Y&E3p%L8Gh-UR2fQ-IW|V6j<=gm<<(_Qm2X5YHZe==~98?QBwh zto-0(-(Z?$v)`M{5bK@lw&rd6bpqWby2@sy;6Zc0-GYyka5^USvf8?){iLd7^?!lD z0BcEYsbZTtk-Fv{_%ee$zM^5cM}0)1WV}4a{WBN~&l-*w#{>aO3^>B*{xOue`|=-M zY7{s)j4p^J2mAPaOABQYAD#W?H|%I%63Ms2ALZ}7#IrsP0U=9xjRml!!Y%R!;FN8hIj+`h zJ2`xgCFc8PM^HW@bU4(u>0=2lwij{;e2>xtnDbujEb zl7Z&x74#x_-+H&&;!Ek z2l)v)FpTO@Fws8Icl_E+Sz?JTC!c8F!E;%z8sqRTR#pmVyhCIHk5IwQcu+DrI`Zgw zkb5t)u=P%6^E$!uLi|Dh(A$xP6oRGVwJG<9e`xkH;gOUY;akgKlNsM61IrG|)vP_& z<$g$(rg{C@RnZjNETU*_NP6?7YxSoXxgR2_D=HP-3>OBSJT4g<((0X$;Ydro7=!2G z#76HGkjb`Z;FXsC@yJnp3KzF6z63APf6DKrW=_w~%+gR=M-hEIuSq=;9^)9ueSqEW zL74zR;dJcVkKeXj)}UTQNm@6vF^0$|CA*CCV59h~h;7hc?rf+u%x@%_=`u~lrviTo zuH%`*oRC&~NoLEZ8M9_w+Q*&lBj|b?-zdyI<{97nL#w+^5{d?o69mKWAB;9eS}jLT zag0Bg<7mnJ@*<2zzM8-iQ37z`*Gg^k!a9aZMKCU{pj&co@Zv8XQ6|sB6`KA8Hw{-8 z7=*PsNjbNR@!W0LDCGK5()z)Bt6b`GsPBEU_FVa&(NhS>3kxDI^2Tz-m$5eAyDOTp zj!>O+YY}5Vg4^7Tv51lq2)MCu2n(HKB3t;W*Z-*XX+Ke}s|VF0Q&RzCp9p6%!1u}e zUTk=1f;)LG)AI6^le9_T^w$COSRYqvs+}52*dH#h)B!~}1|fqyQejgqv=Z1rdzioo@nQ+P&+n^km<$`k0F?@f49rzKXf^OBB}2AHj@ zJ9t7Ry<#dSrq@8@?3;|_3u=<`?ximq@-h!G4Oqo$U%Fz3f6t5gG*IzwVJkgb@8Z{T z`0qUA0MsYl8}dMV2tR$%r23$r%)axQs!sr0oq>ESkm?ZcY z1q(z4>Dn}ERMtRA2hfE3H|pQj*4e~_9I@YL-kftLxK=w_djNVr)#(9(*RNl#{06Kp z3TS@CA6OqMzoK^z_$NdM4s85K66U`s+JErgY2e5V`*TT&5&nTv_IgWeXk1nLdhA0k zNkRn1^Z(|VBOnM-(s+_Jpo~1%^{?8ZqNg7v>%jkWaT;J4;#F>$h47CU%K!M-|4U}+ zZ-a^zLNe&@SAsj_swZ0}PMAS{(>^jLxXV5z%F^!r6J(f*)BMaUdqkEPagT~$n0?r0 zxCl4hZIM9-*q-smlNq!~DQRn$y{`Nyxr!u*Eocme>yl+|3DxuJ9~lbD*6XQWgvopX zkvZ>-xrNg$e73VO*x-PR%pM3~>Cbn*I8PEzdt)6*0N(ABd94sBc2L5|vGneA zqe~{CgUa!I;BQbM6?Gq{F3I%-oj6yL_y;%(I_~LOSk0mzDA}0*_#({h2V|bN0DZR; z4gtPIm={8#JW;3Zruv-m(VA{DIrgedmxM;0FJpV`Fv*qG0c_&{^<18>8h&6 z=Gc&j48I;WeKbTD01LWFr|2*CWXiU%ej^M|yvsMD1Rf$4#EWVgpKMgOXSgvue9}1J zH0uf8;NZKKyHjp`HDh$Ky=dy4l3?tdnAAd~>TrbxH7(oTgC8>mt8lVrGQ*qVEnr_R z6zN=!T16^1YM=}x3|S|<7d;T(+3c8m2MK>Dz0cE|)Y6AP7#ht>OF+g~$jLyM*(U z)txhDmdy^{!pD&Ds-78yMX`QwC?m4JR;Q^q7V3G`=xQCBh_uA2up=~uAcsInuw`HO zCv8aWuwi5p0ICCc2t*Gf5&MoT*$HkHyAY+2`)A^r&x)3iKu>Xm@4VQQPcZv}3FADu zo!I8#{Z4AjYMh@dRq_OG8y{f- z_Y|8=nO|4e9dU7>ERoSbbVfY+80DqrCB}t)=tGLK^=-v!39}%H1x_l*23DXm}xOJ7p+$MV?$ z)Kl1anbQDbC8DArUSOz7WO+O=R0=V)q?RdBc=8;FIA$c*eJU-Ps3^o>0H?j;U8Kbz z&zC-IqQIelqDM(i#2 zw}8WO_cpU!x=OuF$%~?>%G&3j`1&y0t?RcPuv@;x4GO+{2DH8Y<}Yec`CB!gx-X^XY@B7dbm%d}F z0hHPEAAsEX?!(!^>9BPKd}ArYbzHqbI~xI~&GW!IK#X-prC5L}$2rMKwfLLdZ6yd#CH@C5)Y z69ywa3#51WG2pjy?5Nn41?sgGov*Kp%#6;Q;x%rQS_lZPqLiLPSHs5f4Ms)@a*7$* zqJn}l>9@}#?D22Fv*pLZ3;jJC92q8epMD7wLdtHGJ~Ge{fKc6jt{BlS&qfYvd=!%f@5;sJDs5Dl*`j-bTrm{7 z@3VvsRhHCye)$9Izs7fNC$e9A4@SB!gA7Tf>y8%M-tan$x20T>+?0L07#~AMmOkIy z=+7Q#*$*M&?BiG^x`vMU=zyaJ-*5tUQy4a93ph^2FM# z)M?~~rJvg)l9Yi=fBSdIqT6NYO=>&&0ciXOP;2&=HTRddy3Y*8rh-|SmeE3@e>z^J z{|xBg)a~W7Z-;cdF&VZ<&Q)dUY+=p197-~S?)?S|^lx+!`Tktx@)tVi!HL@(Ny984 z#q?HAO}C2r`r6tHB{MVL*`u2HhWP5Lb)OvCpr=s366q2jB0UR{S>4C~v26aC3*n-P zM4eBa&xO!%&@eDIN}|wg?72o7oODv~X{h3rWv*ZxdVRhh$wg*CNY{(J*E%~>)yGs~ zTi9X#>a})~$+XZ!AvVnax+Ne3$3VEW&6ac;ErfmFiplu*jNA3u>S|BCPVfZsg9}FH zrvH_h8ThLYs-bg$K&f!s-C55`ZuUv6S9&ZZf{6Hh&Mz(~B@;4)!&v{aSKu#ibKAzl zvr3Q%A#yRypyR|qGR(!eOrab2ppLi3jRVrbBz!)nBm{q%oPT*6B)_N@Mr)~qo-q(% znLwzFOCy}V1y6^Ap~40T0$$fruKpen&;Dn+?Jw7WliKHmM>wVyv^I(CwVLAQ z3Mb)rL)?fjL&x88b$@xdSv=9#$47o1Ul5)1JOBcs!6T$uUBLZz9)QbZwd9BI3b42F zxV)HSW#VG*;r}`X=E?i`_gO$XZ9zg zfG$k@yS@F(+CP1ixq4I7cC%r9%2nyi0 zqU1YAruOdw$y!71I{J|oNx=pnasI+UEmd`eV{788dNTs`V~T|#Y2Na#xy#MQYZ|>j z>hYok1F_Yuds!FTg1ZaQLh?OA?8=N4L>-mG6Yd7;ezf+C2~#_O7cX%qTk*u7mnDC- zirnHTUvxBwRU9520SBKs^%}0?AoelmGD7ystPoZ^StxD5aPRl4M0@x{OE8j7;v#nI~jqJy!uYs|M_UElh%_3#pI*yDE9N`^52hY zLTe66CD=N~3b%)K(mO;Ra$%((H^Ybi)JZ&smgBI8rIkCd)NtSxH(99P39O5zcrE<2 zg;`sa`&pF)Gl=YyXI^DxSw&jf2VySF7gIM`IhEw^zKDfn@(4xs)C%N3ZP!}6pK~%K zo)^vqcQz4xV`5@}V!z56Clf=%wUTyXXFxuO4E|-do1=j=4PhXEvXub6mIx;<3p`y5 zn|p~rOg_dt`VJ1}RTR;ux5;W~%w(=2=UHWfzOau-4x}&8S7lcGv`i-~lcm6Zfd<<1UPCIO)HX(l3^_}>jWi1pJb&`)Xo8U#rEC@y&wC!VV3)*aF@9Y%6{Yr zJ&KNzgtDO*77U{Xf1TOhHY1A=6H|4xO%F*`RKgoni!?Fif4XO6zuEB^pu~uty=J5M zi5^CFzN=u}eYSc!@yVcr11s)Z`C(EfJERdu&{r=-z$+;`4^R$ilEk%=}2b-GYWkg9+A3~yq82JDJ$A5F4ex_ zNn==&;cNkE6q$Q=YC4;&bHtvx8Z$haMRDfdIcAe&o1Jes*mb<=J#yyS-xll4s)Gx6 zd(7VkB3F-O$Ud}4AW-jX@(*PSEs=En>V)F@#l3|%zzGgqA!u^bUk&kIMH2UOhP;+? z7-avDfR|Y6Z6Yb@G5U4Gk$YQ-{CQ68&EJDs)K`o?UyI5T$k+x(95&O>jP3GRCP zp;xMysPbnjj_nt&8en>CGsrefJlMEiLrGOZP(0g#Q$YqyN$nB7wq4aW>ik2p!FBX8 z%$$7;%EnqItE~@dqGr*_ZPpTCEhbwX1rJ$6O@fNdCSe5+vU>8^OdMK=Gd3Vu_1$lZ z?fjD~b!Zn6N5uEAkOi!{pTlK$y0qU;a+$x$#p}zUg}sNB6XeZkcrJ5klpLe8#LDo8m^69!!dNj#+MH=-`!) z_t=9)rrHt;?rZoE~iZB+dQ>gFx}9~*v{iJ|amRSjyU7p39eR{+4Mdm_h$EvM&Q$B$;Hx0iz z9L%$^Sh|0ls%ryG>4q`)Dxv`Rm|O-12W0_Lo6*_V_UrVc8!#aXNz`aozz!F+x*A2G zX3~0Qmm`*%TX^b|kVA1<^fO?y<>vO5X?Q$h8RY3Wg+v#jG!}2Ryj1UJ-pn<5=oHMV z-bm2Aqtmw%OZew!{bOZ&+j8Za9_E)&uJYk1cbB3{mU6|De_=LO+KKmk(1jH{`;2~nz@Z8)SPUEQ{cf{CMboPhnmd;ePkU9pN>vP_K zP6}1={Jf1yvq^mksNys&0kUZPq0vJ83u4g}X|TbAPa_^qY{OAdqv$w0?Lk@dij!yj z>@avSpbKl6)~k~&k44%3E@RbVS$U(*T>N4j{WO|X4YIA^ehm$lFQl0%S&A>WcV2Q6uFOo>i{-xfXuNg zyg}w?WJ_nJiu^%aSw2taVvMd#lE`C3f-|qLYXMx3t8va``tiElHEXjsk_BRu!iHQH z#$27Ewksp!LQ~3(e`FSR#Y*+j6=GDbXJ5ONOwE%T@?QX*bu;%?6Uiq}@!x~;^P7bhc=C;V=uWuKah1-9t ziRc(yQ(c>h*~A*bwoIKw_3y%gb-kk$C9fGdGC9e}xtQrwDdY0ibeWb8t*av%`>pQ; zPH8eA5?{6OAwZ2$4VC(qQ_5hu&YEcSbq3qk59(RL{i3_JoGQxi(x!GJpUWk#fl$Yv zZGrr>6A|t&kWOOLsYJEwSv<=CN4ZCWkTD1yR+H=j^K)47mXYxrpqH5PB!4jhj(>DW z1PUr@XiNylN}T1OK?bn4k3s7U8H<3MRyO#UGSMQ za6C*FwT#*~H6ic?)CdzwRmg1I^8LZ9%7hnI=wof7m*dUQy5CPkVGSfdNjJ!r&x}+ zoLjy?b0Q=1J%*wE(?PJqW7kr5xQIJyV4GvS`z=^buXiOwCr!Z>$#FLeg8EEmxvffpe*WV=J)>qA09wl>cffye8B&W`|d{`D6&np;E)YMc^ zPyo|EWt}CnW?AsAS<>H_4BkNJrZL!b+>fhFSctA&!k>f*AZywcTV+o9j6Vn%7uoub z&JD$fn1kA~8J!lE;r2@W2e-&-S%~;DfsZvvzqWa$ZKO7mz%5Os&tIHP!F2oM>(lVx zv3(WV3JRKyy@}Bqh~IQos9e#hJ7aZvnuY2f@LKZ0N2fcj8bRF2$vnxkbRRyH*a zZW@|kHnNvrp1^5g0un5xeNuvgg~qQd%Q7oQP07bhzdOp=CD%OUyt{=stm$4)mIpK& zZ&IGDS^;LZlAcsLYRE$P2#y0IIPi(L!T$q4Zt&q>R~-KT&h7x|O+4H+b2Gy@10zGj z?KR?GEO2rF06E)+8H7lLZfo1kehkAC@)woZxZTgK&X0Uss_(4@u%^^KqnBcZetQH8)Poy9cAM2@1i+(@ZcLyxr%SC zrm!rq?d=ZpGxMp$YCE zL1BYvF%bYt?!>akqvJz??V>kFg+(mgi*cTJr0*%+)!vnubxAI2Iw)?7&ukvxs#9fG>SNvsz0bi>$rJ$H9My!Bd_Egg9M# zEWgE{-PK^u7Nm1zD-(Mc9R1LwGO#$;J7nLNq)y}3xuaP#Gogv9wxfVf&s2?g+I*j{ zGEYq}O5)YOcv2iS*)&j|85G>TxzY&k9+?wabo~R z)t$EPZ_MyTz-`lu?fbL-{;GbdXTtJ%&Ic4l4oJHlptn5=F!> z_}5F3((*{FfRfc{biF!hIN>f~3@c7{zRq;CF8)OZ#Kd;f40lONe^xd&MFj;S>mDXx z8NxT>$p{m%>i6Jw%^@fQcy+bjbd9Z32iSVGkNkF1+UsQiTt~wQGt;#QQw4l9cF4I6 z_d-gcYGp(dTsUq`Jn4X5+*mr;3FsJ48=ee>thBd)uL+bLz6Hzyb+LLT2taZjkkdfq=x`W9CBth;QBm$%K`;ns-P3R2J%taROejWIP`FrOL*E-yqL!#B$>U`?x;Zvm%Rr?d_yRl z^98wGmtOCyfK*WqJq14=GV=&bl?)tUobHU>(P(`kZq@63JEh1P<*NjJ=NBuDyy8y~ zIle%3y|C8>;REhD*jAQTRHgi28vOD??ZSnF+ju{Ys`S265BBo#;qDe&Phe;QQ&j7?ApT%2y46=Gg$-^Q(@(thR0Lil1ym69k zx1-o;(L)L5QsQ2fI)h&}1%LWo1PnB1@R)h=JXN3qLtOFo){wM1QzgKx8u57ABOhkhn*N6)xi zji1$Wo{h%lc2fRI4xO0%CeQ!}O(kv(Y)8%FzID(IHH*~a>iXU&0p!CGWVA^hf5(ah z+nte(%j+QK7uJ!NQ;ji6HahZ3H#NyGh*zX2#J#s1c2s4+OCBkL!YrG0Td$wJtcQD^ zUdljN`5#%AX+$T*7`4&MjCj3jYMGahoayqru>+iscS1B(D$kX;>38PLPUfvV!xO_K z=IaIs#=nglizzF|(|I4R?A8XCHgc(klE*BSf8W`$P7X5jTtPBPa6+8+fh7ZzqAiDO zNZIX%X7W7b1X}T2`;Fa?ONnRJZqS+S)7TdwI9K8EowBKKvCQEDnHfFHLw7FI|e|~8UbTgpg#E;_$zhD;xJe|pk1|SnJ!dD`PsGD!Vs(zafTtt zW8ghTHgH);2hgT$PJ16`-8f3mLlxQd6UMktDtumV z`lM>gzv;}Dvefx6Fj6~Ed0J1~j$NIPHI9<80lstnW1^1HUTr&iBx&LJkzsv)J*Dp+aAaS$D-m{vH~O2N`&}_a`xPE?G7($Ol5p z=6$}O@;rr9>BfM4`LR2pOGN$L=Uz-^<4RXKb7im@ z)Z?i)H1tS>#Nbctj_3I_`X-LBg7 z3=7=+BgdunVlB$qvG{EjH&@+NX1`uTY-?Lkp`8h}Busf@>+0$?hIy4q&(kVR8+s{K zk~k6^EOB4dMKvkc*sM#t9$*PSTLqBtlPT-|c!OjPw`&(}pne0veO9)24h?OK8Th3F ztM8UFcHzJxd@g~~{(7^nrBLoUoeX-qi0rF~pCy?lJ?}o~%eI?7Xt&<^*==&hr@-Je z(vEEx`AtCsp8~Z^m%2%4DNrcSvNcmoKOV23UCDtu0PB~*lGM!W#%cqoR#Z%l9-eHu zp0JU#gd9Vk|L(PEt9Tm>wXm+O#qD%74b`4&(3ru)YBWu$K%wudt+XtNPF3^ZndDHl zeMSGrWz8wEH3vsq@dfYMt8vNgN%{hfll*RqF3V=nc7og9r}Zrua$b5xfxWZ%MP5#e zCWU2(twz^eR8$lw0;G7p5~FG^BL|EbL6;v8yK5OzbYPmOz9&fNhR;sr?acm^bszK% zOYs8CRh7+p(Ip}}{y|B(%_}(&_~`oJqBZMXZoP zk7+FN5j7iTlm%I7YSLPT(L#72Mep$&4;LZJIQGuc-sv*2%iMI<#b>eVA<3sx3?$>g zAia+z+KtFpkoWs6)+11}`@dajCVWzP&6B_*JrG5I!C40C@dktqv5zMUU0fca^T(Ol zuU)OcwZ<pQhlLPY5N%=ZZH1wM`YKcu~7 zSR7rOE!@PBKyU~I2<|S8CnUH94>XcA7Tm3|7zCHbJ;9wo;~Lx{xVw9R#_cO0?>o<& znKRd1->F{>G*z{$cJ110-D|B4%;W@=5KOd6DyrO?ScZ~2eyfgFi;Z7NEhcFxlDP2> zoNX?+DbG^8)8nZuH+I}6)!%n?X$f6A%b=246+|$^SU&B^*gTFZ0LRu7=i?J#3)1j} zN*L$H%JdE;c^a>a=d125rb}JV59Cq#l4A*jV64^72pD-{PMKPqtwjPju~>vk)26$Y z&V<7XZm9cw^_zJzUB}nHAW7DrC0DlnfewnR727?DA*WP@3RTM*!I&#Hlo7$o zumfuJIK!xZV8rW)tyqSK+s}to0bN=tm%1mfY+B~@n%8_J(Lqcak+}xBP#s)od{`+s z-hF6Ow47UaHI#!zR7z`60HbPVd>zGuC1EkgxX@l-zk24N=|`2_4vjgGx(Izurpu&4 zNufCXu4LEsa)%^gYqqV`GEPyi431f-qD(y#IsN(PJe!_;#%@AqY_kN;mJ2t+FMKNj z4T{ecIoz{K)!-U(_c&m(J}oKg;TZDFwc^XGGB6`OgT>d;8IKZatcYmP7e z6d|9c$}<&Gv+_-~E(J}bY2IN>aYZNBET3pTsNXo& zigwggNGBZ(UvW`>Pt((V4CsRgb^Z_}6{cngwIS6Te5qjtWkZNE%mE8M<3s`{!c}0! zzW)_G3Xn9>VLr@BOGOgre`*qpLBnBj>gC$TO=#hVEJ=13%UW+ z7>@AO*IR|+*sOXz0gru^KZFFev#ryf6q`NmR%Se+g>gEW>vQbX7K`KwXh&UilTuZd z5PEJoyCdxCrZ*;V+5=LN>%N3Ni-FM_E!;`wyj8dZ;GWeb;28i845Fe8#0Yu=rN^XZi7LZilfs@Gj0Jg~$f#~HjbR2IrTct;Z3$;Pt8(b1IloqT#I#OKGoySFwF5TzSXbuJjJ z`(y~VyL>u~*=QO9PSa4V{^F=Cvdb&Dopq|p9fKB?fK~pb5-^!Q%Al>KP(^~1oV=SlGt;?rdb{2VukvhL?<$KEv zT^4gICJNXmqNM##w6?f%<+JkALMp%;MQ4!-LrNC;AA0jX80#E{X=Fd1XxW&~)IF+C z7OF@pr*>2G!-S!`@5F zUowrYaY?97!n7T3uZtd^P|M4U-pP)<@)6-%*Q z@BDqF?SqWWT-YbKClN5rh!df)7=Orhewotc1F4{YKndjnaWz%m)=LV;eQ8z0Vm%D! zCV5UV|G)Ei4`F|_k97aot;BiqJ-Ln5F|2SUF=X%q~A zM6bka1k^}z3k{bO>rVh=+9VWVs&qF<$?R7rR5FNE$^GmXP@^6C_}v?*)8a#Z<7Efz4`ftLPrcI*cWm0mIbt&D>R)i z|81sA3j9fEOdQdr%XR!mz+F{X*>Y!)6Y^bh`%TWA{ zpPAZarX+lIzHbVW+U%EQ8+w&!V_#1d#A<*gNmxWD8JypTm;kKXlv`S=WY@e!UNG~_ zXokcj@EM?za)xjK?}>z7(o?e2hCH*&%R32my9{5r0AS67(R5ubMY0})D?{*roqbC| z9}7#79LXHF0R5s5?REsn5-pPTE~I>W7aT{JMZzgZZYErNV)T45j7dHB?ez4eR3nC6 zk1W>JzIw$q_5rqjI5$u%em@+~`0tFACL$mT3hx4b|G=)pZxF8$ywKoTy@kH~%c@Fx z?)JY@*-UQwDG*$o$bfzat5#sULn)>gQJ^@0V#whuFw#=WL;v=4nNsn2`1s&{*d+a zr!^qJRKVB6*cd06^AneW+uX3!9lD2{V2_L9V?@$L99e_Zqm%pO-!v6E`zBBq zzy1nhwIPV**+9eLNa@Iw@mgH9ybF@>E#?AW4g$9#haTJWRGrTWV~{{Usuvo6mQzsrCJX8GMnF!|3!SSkv9Y zpKry3-xXKVrhBW(Burm(IYn$PfIczh`F!Y*`*L_-=YjJp$ujLGcE4q2EeboZ*?K|c zdN%M>HxCW@cb%%V1WXWk1R4dPP@J_?m!$kD84;qj=|Xm!75J(l!4idby%!rf1+^{f zwDQcAv*-I;DzE9%ebx>cpe!}ljP0Gd9~cUrN#cqe$PapTWQ2ap+$GGq>?yC8ZSFPF zvnJY19C>)`dx@K(Ecy~|GqWb1;cmQrA>woSrn_)nQ17??%h~UH?X8dfMfrDx*rZ8; zN*ubs8ZtGvBQMw)`7GqRuGkxAdFq-YxY5N`_s5HEG{Z+h4trorrAZ5RfxUSA^RuYC zA*wMz>&(&uO*fw#FHeqZWB?K-t(*Pm(hd&~mpZR@#bjo{ZT_-Hot?EwU5{rgRdzl; zj`HCLTrr~0o<8lTDqJjF48MG6LB{PHB!`*Jz6)=XW^u+1l zMX$~KSID>o?79=W1wp;8tj_i7(3bayU2K;Zik_zfiNdazKn=MoQ8=UaQoV+SZ$u$iRzze6l*n?#J_q+>oTgj9082 zm~HHj4u2|chszpwMuTCnQbgj3V zmCWL&^SUk9ZZ*_RT(`reZEh4D3K^-kg$`D7sPq?v zE|sQNoHS`n=AZdCDGPR8F2hANxD{A={re_M)`Fvi4=&|_+B>AJNI2`+Vl`bAsn$>pYv9Cg`@QeQCV-rwAH%6-zj6&6lXh*4lM zlfKWx|A@;d&5BkQO3@`vy4xI!WKv_MAQ+$mq#sWJX^z+xX%zc6eckM-KW9=5=9>2) zI)(0QOe22ioqCT8P8$k_eQGUaW(qua{cN^0sw1d8b0oDhE|+3-%|@Gis*?V6zIpk6 zPNVK<%-^)>Pcq?A9k=xdiFRYBP0{M*x~p6QsnFxL+T&-9r)~Mi&4gC$!4!lvGg`(T z>4a|`iiFgg=f9&pbj4|%K?W{@@zao5%@FYP^Qf`s^(Zl2Ss96r(=+i_4p5o7EZpD( z$Iu#Fl_vW$D3qnbQ3hID4?nv&S|PYvXJR~E?kimO{wf_$ZxWLkZ|de3Dxax?qG9{5<>mN%J0l{A zjyWj4hqxX@jP&Opv`>;Sg9#hUE|-HLGiL_pg_11!;0yHT*1C$TpIWpuY?BP4wiA-2 z+cq{YPQHC%l*^?Knpq4)HCh)i(o zrfC%pX?W~zltY#%kUc;h8@DmODaK>GFL2;W45LYQJ`>q3z0i_-+_2kBhqs;u^o@H! z-;mJru3WL!eQToYFg(t7DAR*C(y^XBA~*L|Bi86soSD_hG(O?ms3xPBc=Y^Z+r`g3 zEle{f$*kTw=go-_N2C6A{rQX6>7;9MEIVYe7aDYzCt*|?1yj3|ah}zGic^N5`SvGQ zK5Ydhd#gT|ZK?|FT%@Wg+A>L6+2l4)zukLiAY$W|6yc`nHbWy*`c~Ct5R!|Or`&rL z82sfo({)vRnYu^AueDir{yHV%Ye)3+wf|Lt97|@NNprN!Y6b}NQv>8NGgn`_|BqsM zfWWS&Ot@nGPn`>CK8z824$nrnv=tV+H?-EZdo=rSb-lh0PJUDz@bF#EF6H@{lFWE> z(NNz}qfa$h7R(tgRAAmVas_}jzWa-h#Meh6aw(h!*lz;*Il2okdq6_xsV*=F zsNchzoDkOkW9fXBJ{4VTW?hR^$o9ZE!>VyfF{EfXJmyy@VdgSTp4@sHgD(y^@|ZX^ zoO)C-wVTHsQ9h4ciksHFn)!ko)VXTP`K6QyKKC6B*L8yLkk`DxPw~-&qLid2;yn$b##|!-{c01~E?-a( zy+ESk(gG2%`1tbi;7~19R#L^KCn_T2hkFw&{@Q{Zvdr)FMABOA%2%ux*#as<0&}F$ zS|js0%o?JlpY5-YZak|z%MonTyPBk#Qf!J^Wj~wSvZ|?^;Bg-)J-{MPv(lEGraSgg zX?=;0Qz%b(7T*-gVh6l|Z_nBYIO|kG-P!}r^P+)Gz_1&>qx&=?rP@Zrz^PV1vH10aRGV4-5REmpg27@ix_fiX#flf0;$-qY$;yLUHVZ9)fV)_(-q*gOfMRKH=`D89DM zmRk!&ETpB>oo?%mTy)Rt{hdCzbp)@x;g9Dr+tjeys~|G7{3*&@yhCSafxp(hQKwP6 zpTJW(!`bb+&ts-6Gy6ynHfyurz_}-dzAx727{gFdHuOE`>luS=)`sS;wV(B-V%02t6rS zN0Drib=UK#{uUjB-H%ctRZiCWN0h{q&PlN zz1Dl`vG!>u+VC@SBUbVElcdNrkp^?ouUHpeeZFf; zJ^G6F^RnZp^C@$_yW0wjaH#y$Pl*6n?isbue!}SdpS3^UGdYog&EHJVS?!O+O0eVFDq@skYKZGj!Do+K`(M6%%FLdz|)tAll??W=q;z5w!z zRXvZ({iKUc_G6X(RF)fOYRgf8R8F!tZd6v6uRDC13SPotgwL^|_+~0Y2 z9No|NJUm785f$A%PkY1TJW1ksQqF8N#J@0A=WIy5&FPw=#@dfAZKo+dZcYHMJO?YvUSfXJ&;T60^Z;~oCz$0H{}fG*+|>@TC{O~F1_ zeG1y)(^b>ax%k2Y_}O>JDi*&^upXlWJ?DB848AUKUavcl!`ET_u7!@ktUB96zNq=; zub_}SSj41=Rr#sCKzE57=Ahe48>nv=Cx>jOn))W>1WN2iGyk5a? zT>Z6XBkhUvMZbIgx4a95p)?m*+;9l+pK-IqtEAGE@0SzZ9z;2^nm|oyES?j~ggE$L zUsof8aNbCLLBD*S|JRh;{CC#YZ?I_je)qj8tL%-gaNcU*6mEb2;X|92xkO{#l#q@b zkpPrR0*hSaJj;Id_m3|RvGTP_Ovj20VeWi@IV^bwV0$EzJTF~%K-7-cz4>`BxN;Wz zAKc06*!2~iYqKraDl%w4KiO{$BylQMeft*dxH&r6IeUBdi) zNm%}`&tWlB$I24-BDeUkFReK#k@o;9? z?T$q0*mx`x$GdK4s{Ey(YdZ+ci;GD*Yzf6M8}Y3=>^AW6HH`n4KLiDjnpfd zl1w<4>||SQ0weHZRRSoIUp~%fTV=iA1q=Ws&NZ5#f%;n*1_@EVa&-R7rNEwitMUL! z-v3JrcwiyfvHM%)-jiz$38wV*)Bkd}D+hkX$jBHAwxKM^yuEh+i7oV9&1Ip_{IE8p z|9)i@VpsgVR3$i#buO;ge!&BE9T#og0qFYW;Cz$@TOh5%MJf?0A8(`rXCo%v*e?tC zB@CX~|D$3hd%uGE9`zyK)BLcQ3eR|L6sh&E5mg!Y6h43?zE+q0v`NiDxaz``~a0eyq>bW|+1s z)#cA2k#qxek1?&g2l1ItFwPhT@sh6&YJh;==b#kbmDAF_*x0?&0~GB=!v!24+@~LB zW5(k8PfZx#Qyy?D0%^yK)zo@LMx`4kYKgFj#O1wA*+F>+6{J|o+uGseYoYXU`9$Oc z$Nh$bPwKu@=@sbgsr=~hKpVBg|36l zluXg{3X|gEFI4D({CnetQ@;W;TviKt6It%-5sGtR>V*~*V$6AJHH1P_gk0fBT|4$2iC)FLHB-=D)gm;GC#Hv5zZ2o7VhU!)+ zvu8MTuO{g*kN+^GsIa0s=Yn|T;^7_KosWELjo|e<$Rd4N9-mv6S&+W)DNSySt!&zX zj(49rzVO3e^n+(|t{N@}xeUu?`dvHr!$&z6Zcx$pG&;Z9wR>Fp3kx=)3Hh;PSm|7UE$Wl`!SYno)fWn9%(mODMHFypSJW{3^zjEDOgiBsoTrMY&0 zg4`uavpJWa8%hrSj~db+v(8`UkUz-e#9#YSiU$&7o9l z_T>IEHfBI@^R4t$PgP0jO70EBWseVkiZtRou)JID$M8GGsjP@$OW!3 zO5vW5ma0+@V^l@d3p_Q*V?JusWk-nj(O5TqGI6!okD_d}N$4|F#UeBai*r&vm8pE8 z?dw#FQ1@=(bqXu5kO{59OPr`8S$5+`7^OH1OEOngri;73m3HcHe7HDi#LZQxJUs~} zon5v4iaPxc?nJEuo+y<}em}g+%tn}$5YfO99JyyFa}XUu9sRf2xfn@bhC-(d-#)C; zeDynVT+XBC9thD#hmcb3Je)FakE4~&AwY21fudg@zd;UR2mK{{Th&CkVjtG`rqY9*C!}hN8mgjWf zchk3|v+Ca}TjW^m=%du2h;@06e$XCJ$-u6>@Xxqi3?%XWxv#KV_%kE`XJ6H-)ti_G-x_4lrTXLTQ^s8f z@jJST2v7(L!r>ia(!X+27T&t+tSfV7zm8Sr-+NEFsve8$A2Wu-H5)n(Pu(e7j=ElY z>@I0{K|QVgKY5~~oD_tQ#8M+n_eafh_OvO7z064_Z1_~(&|oeOzBXM(Eo2g8a&Dgd zNv%T>)FjBZawQ6u-QD}g)I2w>pLc_fY66BwtMe+EK^0s?D zn=&pDSqjF>r$Gpv;^X>zMNGD6Lk4I*9a7$A||y$fIGPF38AN% zlHMT?5j=^noKv-@WvKhm7!_VrTkB%W(QC|^#ijj){MS!xQR6$0giqqE2Zx-p%pY<6 z{>(TA>G=!2;NU5mX?5g^TK@4C-o7FVnLgRX@>c3`mB zT0t|E3?G*@-hBvzAE|t#e!?eJsSKI_#@;CuFBl_=)U~2XANtMcAb6+6f)$o0*}qcgGKn*gymQiOI#mw-Xt>y|@o(1&@NMSpQiH z@jPM?~M6MTIWu z``xU_*krQjQxnSA1>a+0tbaaZ4cb60OoreKo(&t?&Ge+ZhOs_TY)A+m94MWZHO^!9 zif7rg^BE_eDs@SAOb^>JFeMN1@6noQ$j@_VURZk8o~rBa9=8P@5Rw`n@0XtSvBSbI zV2Adfvc)H-u5?LN@Cu{7D-MmC<8f*w7*HX^P+}lGLuLB4!PGl~&p}sAp@0BMlx@kT zOw`!KpY;o~rMU}q`xzXa5zmNvd$mRe46y$+98lQJD0e$0HWiyq7ESGl5H{*&)Nvno zdm8~}UEq?fx6CYzBy3{bt(EEiGM$)?$22kQ;F%Zu_?1%~_83epj>ut<9Oy)Dz!+_t zrnx@q78_rTj8AO((H8C|tnX}`9q_n42{+Q7PUZBYwk8Q-RdHSgotI>ki?bwWJITZ> zv?DM*Cr2FzOeAe`L8u_#Zj@O1eT zjY1)ntHA5&+u5{!DtsLjqD`B@kY4}_u>GX7wsf?{{gHk8>Ro3(U$^?b*x1-XJPp82 z6eH?+S#Gls6bU$700UlJ0^khTfOH`PmE5`~(TBpTjR|-TAxp%HfyNBkH|hu_a*Q;naL3|RlJZL;*`iZK(d#v@tIdlSt;!F+x_gm4eX4Q0p>2-$Xe6_-2-uI5qMjn6jemCtef%@eeII19fVb`s zYH+^#!csLoN&Ddcb{95w5Pzrrv!ee_6_0W)$#gvI%e}2q|IxE)e=QvT>|fxn&G^5` zrwJ^K&E{v$A}|F!T4AsH0mHD{n^Oef(IS5qa!KueJon8r{BUPRl-`|U3$R}9OxI*z z0YK=get8N2LOV4_ul2ASp$OP@Tqv+f)ZBfD3D`CTT@N>1AWw;iMgim$eaECLnnOP= zCAFbJZ0K#z|3LLBz!iWK*PjFt2U#8#EeZ(KqGyc5A1$ZWCa~qX91oM5hwk6v(-7W&5+QOCaW-5( zb8fU>*XBI5xpuk<@`}>Y_{)iJo>G_(K_5dkAn)+-h!S9c;^3Y^Kw#p%RGKvu?%%uD zN)cdkQJiaW3iC=NO8KCmGSI+pC=OGlkG+10|J<<1R=zo?#B<4EZy`+1P~`7_uQo#p zacqf8mM*#$Qdp;;H5Nv9*VJiW@2!nhBAN7MWz6IPDP| zx7mPeoF&_15T2A@3~U2VStlkQf>KilJ`B8SImOr>EVUZAyR=k^TR9%k-`}wM@>1LJZB=&m9VEgq zK-2R_>dmA#6fC6}85H-4WyVTVpBBB=dZL>!Tl!?ftEwkn6=!H__jBS>FyS`NL_m~V zXn{vm9UD<$O|NwOZAh1-~^_xvg~t#t6i z24{e+{;OaPZt5~21Edd26p7A(F8X60-nfg>w7zC*SYR5b)6gWnWKEWTwV>ymg4 zOK$ZJlmJKIJ#hcNnuP>J?NfWn6Io-6Nlme2mNpk`d|%wu-7?&g2%pS6n$d?*5eqfA zK>ym~xFLCde*lyXIqMqLgBn5$;}f+a# z39CIp+z+l9x|)(j;$=T`Iyg2}X|@ zYU=%>(=8|s4NSKkdjkgZxRbYu4c&9*gmc-o%#TWXpkR*s*7kP%C9uJKaZBE59oxW_vPm?6`FQ?ZmuqD-95P9I?@XE^QMehn#7l(yS6A5!Px^{x}=_#&wmg|La z>?*+dQ=A3UhfO*~4zAPe14$s;u23pTWC*pyGZoN|Ti0wji+0tablyp53vu&2!9^L? zjN=(r+4}vxPJbu2edCsrU>e2YHd}$pxU*;of9#?RYt8(fg`un7n1->Fg`KM|@YQr& zuKUkA^?4a-LGrj~DifW#AxopLL>)yEYgev|^4%I1DB)K7#&y(QcPVy+2P_YBjAJf3 z#*FH6glYRI;?DB2`5?)K<8B-z<+~y9)hX7iaFVpWf~iw2ghL!}h5SqNYR1ZD(g+Q(*ccxuaDBaS7jT~>jReEn+2*|jD*^VVjS*k{&YBG1j5?M-g0JW^xeVvd9 z6_9)=;{;=r2sTmC2@8t6UKy+-$5=kg+?>@(v94*VAza4QhMPmgA(jlsU@1K__D%aC zbtv_QQIQGgMSiDpR$g*4x|QZ-Tgh@`reiH~ux@2$zv;|l?_#LsMAkG6&x6B`a_0O3 zK9h;2&c@2I9T%!gmU`UjNdgHqT`9P#(+IpSK1&;%x6bg{2U7P5J9ab0sLAYEtSmU^ z9H}jw_j4UYtGX@g5x02OiHkFWPUM$pI|4P=C32Nlz=^&!Nz8n)e6M4Fgg%~()ewv8;Fwi%Xti-X}d6!7}!OO^0}zCZmrxDM1Vm^B!A1h3EYVCpmPL zbLEIXC}f$HPY|0W<)6BS=CQzcO_8Zkj(MVN$L*lVNwRKn1dj}T{ zSEMID8{`jV*cP>B*@$U5>5I{<&%Az#c=Ej|?3l{o-7qI(?YFE+bhUO)mxk6|n_qUL zjA=Y{EAwfPgJlQM<{6L0X>{G19m%zD4u;D^mJy=9jSf!cm8-3^VFf%-SDjP|cu3{} zDVFl2i|d!BzNrz<&BTzgiiNtz3k5v^sY%{7{b!M6cRp4d6o{o|`lwrOi4(ABDn)BEue>F4eg1 zHdVVOmUoGOJA#{>-!HirjOKt*W5PL3`ZWlMTGm%|2UA*lfF~o{W{V{hLpFCF(d3`T zG?c)0GOSX$8H_;Kz5s!w@k5l`OjO3R1GLIoJp`F(#QlD~ z#acYPWU6D#TSyD>XZ5B+pEZALa=4X?*Zb$9I3*e$m@$YENVz>#!5o%EdvuH1!kPcK;P}xZJCrRP=O}0Ynv$olK_?y ziM&nqHaJ6}sevI=&ct_4+5-tM2u^E+T7K(vwIq~rgv%nERQiKVLVmv5^rkL! zx@l)MhlAwwsHVkv;xb`mNww@O5bUfnFGSigckZfZ8!7E#c2U;P9KM&^pw4T(3u0V<` zNV9cN+Vrv+^y;&b1_h@Eqh#%a6Hp&l@gEh&<<@~6oz5KM_rjjx6a0X-1Rl?;odJs*>#uV+J*b3n2P3r5s<0rd0v(ybspJYphK!ZRj`s zS#BmZ60m4bNQ=WAOvZ@Xh%1Mn(u#Nb;X+^ZMW}@my$oT`8|iP>%{KA!h&>M5+UktD zT8JQAe!oVNcO2(1^0Z*m$t)iEwO!Ysg|0bD*QT~``Aqb(y+B>E1xiCnA;=we$*5vE8WeE_gEXhO>>cA@AtM{ z?!#b>N}=x^`H11wa4u~Kg+iPuQ-+5ZYx-iY7`}A3&qwNV_w-9u5kJ!l8o!i7B|KNh zMz=?5s=yk}>Z!J+#zM@DqWzj1Ki0#m)NtZ-n98=CY{|~J z+q9n)u%67v1kpJjT`X=mW#)cm1Ni!Oq-SM7KUzX=A1rVj4Pg*6 zp2dK`I3Ug0*vi}Tv5-&}V(5dIaYc5(C4q>WPeq4ZeUI(w4l*PPrX&4U(G;1yC!R*4 zl9oAsGsKRPLZj;=P-PP64zvjp(UhTArl6m5giBRhBDHmB+a|nG?pXvF!@Pv{0K{eD z1jF?S#!z_RS68#0cR4d@HtFPBGyOZ@EH{~X`3~?D0=KcNCUqsUixaPCGx+Chq?JHo zqt0GlhIs*vF1@rMSp5NG&z|P!36b7uzO!%AMZ$QkdHu>uzzn~qo?0wxzR&6x@kHq; zj4`lZ&8ifx&#TW&j?2n7+i=Of>-V`0z9bQx(x6nKq%V>)YOX8E%s{}ULRNSHXADey z3^UG_IcP9NSm>1Eu&M;msSam}n8ut+`O)!&Wlb6|0>Un&tNcp0A=8?(1l`zd-deli%za#nK8-h;eJ*6Qm^-eZyJ-+E+( z+pJ`NO1D;7ik~yCT+jy$at=4r@!wcL(nYpa2GhCpe;Z-&pBRf}D^tNU$If=p$8h{8 zx&Bv=w5|M=w5*nCz32HB`jy|Ot9HZ%$`|2DTV)hNO;Qi$ZBv#lU*$4duIJwW+M_k4 z9i-z@q2yksMCfh>;LG9&65+UjL;`)28ifZDBScPoPb2c{=8v8x^b*NVe2ZJN(E*#% zEmRlJI-BL&`@9a}eH~S@#=|&oTp-7py-ow=IeL?2`gN-~Rss30GpC?C&ee-d`jxRo z{plF7Aus35XL!5g`S?SSCIG_))Gmzo7TZnz*c`XUX-*+!mcmd{_qmgmEZ;|Rw?xU2 z=xEV~JR;IuMI|hD-n1P~v%k_y&SyER;v5i;nq}@#=(r|)rIJ2_1Sh6K<6a>O``$UAs{Ld zSV|ez&v^r!NPx(H8-Bxo_8$dqHGTe8QoAnj8dv{y1YSInu>U&nOLGm7@PU;Cqy+$i zsWq6q;4~xNwqwN{;B|^s6ou80_#Di;eBxluXuj+^$5T zDcnV+Au2NjF9~EFn2EF^lnv+HHUK5V?gw1TC)I%c z60l#qBQmfCI2z+fmengJHJ({6v5)9nt_u)Q^d``j3xDXY+@~->VKnmq^YA+ipxY zSuZo5BY^CYYu5&BY(6KB?0f>X5}Wk-zN0n3wz1LOQjW*h*Y5YLvCt()>#k%z2cy$; z10!kQ#K>PSB==1VH%mr(e*dK(Lqb!5OsP+?@ECLgmU#Wl1|Hvz*-hP%w{^>T^Je6l z9xavY_-uwh{zZMUc9;^!Cl{^X_lLw1^f2_};s7+P?tpPPb7s<(p~)>%<{bK0*n@|FT#CJAQU>UkQw`JSYbX%8T3>GDk7?jDG} z2n~oW77(cXDCm9%=o~S-g*5spY<`I!Hn|_KUME}tTWS|D#*a0WU@J-#m+|$mui)$L z|LGmc)!aWCSc2bvM@r`=&_&J?2z0S@NaC>D9d~A#zG2#bzd1U}(Wo}S)0;xh&M1JP z*j)b$svYncy>fT}swcs@5`t816W;W&{bk)B-$K~7J%1XG#7#84_`i)NVSv$J@aZ_; z+MLu{I&Xq zLJ%-E=W_7Ea6$+$DQ^B&)DT+oJot;8^(ycXi>dyI#^`Jw952;(fIE}N5AdeihtGx+6{eNJmB}jIs zwBPhWb?gNs+@rR(?t+w|b%LFX3f*o*X{uyvUwIqpyO|4~59hH5FgC8jQx3aJ+vZZ& z4fJx!&bHOtJOba#h2GVDyVKLhAbiRO_~}Bwmp^W{4jKG!mCe+c-*1J@KVXZ;{||I` zmzt3&b!@L_Y#X5uKpS$|9c#o+N1_pP;a-!5?XasG7!mZ+idk~C z;hlMp+q?a0i3n8I4=CGtIxm&S%6wGZ<48Y*y9ehw8Si8-F&D~4*n(0Lsxvc9xyG{> z9lSP{LMzSvotDBspdZRc8jLXiS7tCDVBPAK*f9XFO%5+<4#WoR%sy6Xv@24p()y1nOB9gs@xP%Hftlx$X z4!LjX?+IlNxAx?G&3Rfy_>OP9IU1y?J#=ERWR(Exmy&ce3^Bt)xK`pNtLk z@SiK8V)M|b%gV`e$KcXwnZ-eW?QSI($u>+Ck;@t;FhgC=$o$@)`A#Zfw2qgnfh2jN z7EWsijTYQlwAs#}XX><4=1t>|b8t!O=_%M4JK{*bvH7MC4mE3&$H?Bwk($!2;pXqx zr-U0d-1cIdKS0(GtHR2JZKBMl68Ti~BtZO2fOh~Ug_9D*@X^V@x_?L$VyGzEG-8rt z5MhZL24;wl-f=lIqw(O;#2DF~2(2j9f3_pY#v46fwE={5G6|ef&!le@KtUnKk3-nHA7qebAr?S(($vbUrGj*;X`f zN$@7hcyAdu$@?#>*;<`^h}7a7rUD80HL8=xYi)z#p$GJa0KRc_D^aY7L&CFAq zi5|XHUJMZtN_OdT3F+VNxv1eg5Qm#9;z$=+(#AaiEdrL@HQ$TCrid6&);IyfR_sfj z=OcJQa-X6JDMNQ7(@N2FNK7j^bHc;Nd;EpD(eW}uQaL>(8ATfdUa|;JIfTggBm{HSbI6Q9&;4 zx?VC$E@+aCjq~>^7%K1iMJGq9ikoj{8;p?-WlbJ?13vdAd)Es5hF|6H6P?rD%JWlI0LAt5eCP`V672T2fff=zbeq@kK*`&C2v9i2-qqt z-i2G=vN3d-5eWs_46MxdHl+E?APPSLe?eQ^;r7XcbS1gmK>Nb(CHm~5h@q?iY4>>Q zAf_Dc;3H&R$AMhLMbkQ^3uTFZq3RfA4y78vO*QM^a#K|Q=BAJ|QuaXKS)V@E{mepN z1h3GPJj$_rj%bcAl7yivXq-iMft&ijj(63do2Xw+|E6zDT7MVaeJf>_d1GY12XVX}Xw#4Z>H&DlE(?T4Z; z38A5c3QBeIF@%gZ6Y(}x#_qVN}YWIvB!qgO9!9N(b}L%Mh@(j z$rGyak5>qU@Rj!_moYwkI1Z3T2tI47hiaqu!XlH?7@Lox~}R}evA4KhRu6l(CyaTW1eoU=2i)#vhS(qR7#yHy)=xeNH z$=m+0kHx9*Yw>|aG+nXd1}g8}XSTy?*h51@0P3sLI-Vn_k@DzcLDwU{>VKX-_mn&n zr%o24MN0F@Yn09A#7sq~FmSxh(SbQ@r<(PSsugwj)Q3X0AF+qNdBhJuCt^b;jAe!f zn+eb%YUTUNyuhGI`p18vi?#OA;Mfe~6@5=bc1zd=ikf4IElYjL{rTdo#X&!*m(-H@ zjJtk}JXCk!po5IPH>w+KN;o6uj3+W}cQ3OWzoiPE@UplMykRTD-b; zV~g8+e?mk}r1KBzt=YH4nc&Wh@_p#;;D%MZ#4%;BehABPNF7Q@UDH;=>1Q8{Y4JiF z%5{l1X-eyc{i*7QxZJo#p0Um^4chmj(IlaMt4$41;*ysovO&#F6>sq!uTP2ZPj zax^o}QJykxP&@Y5$~EXcna6>s7<%4oC5*! zcR-7kpRWVgS8svNwd&5Fpoe4e=QZL1h)>6_TINOzVP!u2*#m-Vk z&sYPg**d8B6BsA%h~+_AUbAeLm*JAvM%OYF(fN%gNyG^I(pWMig&KYy#C(*GKH;Qn z?QT-PJFKlKSo$1>4pmfDU?js=JHRP~%~!v?XZWE!@|`UZOalG?n)?o@sFJPScEkXP z3_%nDQOQ|Bpe2Y3NNkXtL5Y$xNJbC@0TGbgzz~}tAfd^0laVYr(_{n$B!?!vYM49! z+W6;}XH>D%?TNab1oDJs8A3BkY+`evG}FV9+q!)tD04)L8HUJB0w;o<$ceBV0% zDXbbG7Q-2uwoU-yP*g1E?oDBfwSLlKDCh~ok=y9KQM;a|Yat`kjToN!leDP*q2vc-4Q^kh1!FL*)yBeF@sl>1-@TT4tlWi-1q65> zKbnPWAf*8B!~2HkV9I;DsRb1R6aKTr@M#f&|c5FKB7WH3LCBy8KF zf0vwmr(dlCErMQ5zk?&K;S?t%^{4-0a^HRnAbOz6e_A$<_M#IgHtkn zMtT}RpCWdiZS=k~@*LS9PiWx7>N#OXA`2H+TkysznbN3tj{G!kg`_e3mCl3M_t7#} zm+>m_)~6pwhgcG48~8!q8V>fsz-f$b=)Z14 z5@E3WqG}^a&o4l3D2O)wN<%}VQ z)Nfx)0Yrs6ynp;x22r_MklD%cksbHhUy|gYQ+R*J@hUb1PYxWv;(^qe(_^;izUuwh z`fyg7%@(F4>hMR$do#X0N$H^g74+U>TC4}CU}~|~$?=oLzp3!6fGlIL6JkCf$-U~f zR?P$o<50x+V{tM*Ago`af!a(01^?k9ldjR8nwpx`@ycd$Ndur`!$!jZlH9U=1pd#U zKya5AeSZ~f{-@%PH(&$=-@)Ot3WkmLFOq`T{wdv$_`A@~N*he%`Yq4bP9^UnPbcZUI!3ItHF-c7PG{#Im|@>juvz`w z9=%oifa0CVcUy^M7uUjyx;dr!@XQfuxBY=iW= z%U^F$3FAx3Y@E-`Y*)x^>UfMEe%jd{)Y`{<+T_$kI&;xmmtub|eEYp_+g zHeFf%TS{Za7stPG%rapoyaUVV#i6{Dn{#1u-?@W(f;Vp>?dbHCd`1dyIieZ z5@!Csu`dDbv4p{>63#O5@RD{c(86X38)Q&lV;>%}!K`Kcf@1^m$h;NA63SFQ)JxB$ z!7NOa(x~2Bl<4mCDp3vR5ZU>fwF%p`>4YW7XDjS9I#HYKrWaz^vA6n%Cw}V}PBvM( zUYE(l#hN`5T*B(2Gv(@%#yL8z^N?Z0=O~oq*c$LK>q zAX0W0u4sYtsUJ7%c;7vDf*%z3I@8GTMv>_7lr}}5odX0oG1LJY%u-3aB-cY z23R6JhV0?6v69a04LOt*Nc7T_(uhqR^nQ$zd4A9|ZA4j9n?#rKDqO=fJ6|NDBc7-8 zV^`stmmsYYbXu?^yW`L)Db$+41-D5Vi2ktisWfM!aIP&Y@(3tqOF5r8^y_BXTy_lYAM@!aTm z^?i3Nlr8R4OPr&=uakR2#zI2&I+ZiSeD)2^*xT#R`ZB0>=1D~NT7uqh%r{LL*h}l^ zv~P#~6WzQE$A{z=G-!{;v$+Za&Gn$s7Lnwj#RKf24rGCZgZ4(63B}l zl?*r7>MniGEkw{xFBhv6N|ypv5^}lr-KrxbDLRhbe|c}^tM+JtT!tVA8$L%tMdL2>ln^rA`TdKC$lDv*umoFbA#afH{`>}ehgb?h(q zxy0_yaL8C*tKjQ%Fj8ezTx$=^~TJ9PRILy(_Vl_ewfR1P7DyZ_d5e?yHw8{uRww(~{c=u!7r}X>Rn8RyG zWP+Ai7mOmKIbMggIE8;6t@Mb$^~b^qf#d}@{Vyu+clxjU4KYO_b-QoKO_*BQsV5+H->Q@S1Hisdf6{#e`D<|CNC z?Js-Wz>!9u|8(r>(6+zhE(EeKImh@T_JT?~eaX}m?0!h&7zeh%+19eK=ED*I_HSyL zL!I<1hCYj1=o$HGZ%PCP@}~e*D1y3xL1YrPaa5Tl`&!r>jkUB9w|*IOz`|um!kAZM zVL6;uNW(vV=l2(3c2TpHRsMlhBANQ&VC!9pI{MT+(PEQ?jSCZ&LKz0T@V@Gmk3x_ zCAZ`gKed*+vCQgUt0&92oi&`aEB2->6A2nSTX8KJwIba^S9ynjNe9&lUy zTa-#!w$3s2?j1s{h{ki?3QeM*9`B=|ME&pGfX;5k3Ua3k_eLlSnLoU^(b&k7SH9v# zJno(xm!wujFJTzfd}xKtQH;(v4V0UTVW9woD@ze&qo4W!s>tI_H`8ITrnwAx#^uQE zILoL^P`~Z$Z0kF4xA%TZkeZkD=SPOi%28rf&;6)>g4t=14~dLv-G04~d_1<0-Sc3s z#33>v^`XgnlnP7y5S1ZU7A2RT!^h}$^5%=1A`!871Lds5m~0wSRzubphJ5a_#l|;& zBGX%;pZGANq5OfiI(*evxx7dF4ATO19HkN)OKlK7Je3AX^nPrKpGHPUqq$C+*|^#( zd-ydMA5NGtKTOj|<)x3S5(&59exsvjQg)qp+w$Jgo%a+@T zVu&7r53=RzWsjpOv!aWX7yR~|o?kGmFyy0W7ik?Cat3)lK4PI)EUIO1 zzMCiIPgwAk5Rr+=XxD%6C%DTX66;hYh03eqPCI%GxdC%GyJXU5YpDT^V@J$b$8%=e z6}#l#@sfO>H=DL3yq%VGyO2LLdZ062gmRHFw9!wYQ0T*`OoJuWCCG-KO6#*Rp%KBL zZAnI3(%kU#9VKWLVN{)1;xe zmynN44U`HAv2GSplsRNf;J`hqV@`sCw-7SlNzO)+-otL_k{#=H|@mhub@swiIiy#3szYIa|_C zO4-`w$@!HtC4jiDsANi6}1OfSq&tS~Cr>D@l3MX@9wqS+Zl-mm+c znK^W|p0;nz_CS%Ln_`SWWHdnKoma7RSpq$2K9#UqH2y}(OUM(dnONOBp%xw96L`~f zz7gkQ(*wx)3ci~4zc2T8ReUT4lAukZlAkx45=C=atm~Hyl5%}YqoHOyf6c^2#7WnJ z?qxdX@MXPOmn(%AXmPBgSk@KN(W;=ka?z}Q$)v)pA$L)Vtam$ZTo)_6Q7~cwTMFpZ znb9zTAIAcES?nT zk%^1VX?;o?CAmBJh$7)wsv^%)eEYjRCmiy^f#pxJmY~j*JZUPZ+i|Q63g>*Q^}VE) ztBJH2=0;YWN>3)a?-aYO{wDhXVwmxGOwYhDfa*cNQYFEtRT-&*3KvPvu%*|p%)iHTr=eW9KXCiEi+EZs4FB-^3oSsXmVMAQ z+Y-@FuJ>aEDYFF(sHUcr6{rjs+mgK|6JmQ9j8ulxsE*6NYb57 zi|P6oJ8J#N$S|ZBBK+pg1w7k#CLAvu_1_G^{YE|wWvGj@zu<_Syw!~|tn#A~Ts%0X z2Ng=+$$A$wI_zAJB8yZkM>nV5Vu-%Ozl!;9lPent6sX`*-fo{Vqv+&?dl7I}W$=aV z*%$eWB?9oWECUeucLyT^&)2-F13J2RTwlSzAA5reE{J!9zKFnublF6l^6!5|qE7<){BCB?wpJX);x zZ;NWQOo|aqY76c@v;KCkoHLyL6!#vpMt#l2}YsgaKX0Ag+`^!mPw9B8XJ2wip1sN34nxVdEEUeGe+FJfu zQ!yx01`aTBwS0j{b!%&@1{x$tf(50)c#29gJCovu-P?}ouRmUEBt&yvY7xdnbLv#w z&@Qu?a{q~#1a&)2d_^vrbi(&V@7=rijkbyw{>bB?FH1?v4KOk>(NNFBy+AUi6h4ye z)KJ(71@0E{ICL?TM$l>NdpF&a`JB8NrA%G0FU)&xA<^!#m13RrLmYT$vR9RL!IqmYAiE0JNZDi@rwH|)lM32dkVubo7c1H1bj8?eyE_4&Y}3H@wey^@Jm&lkJLCjdT}w*~ zOni>V_ws1eoto1#1Baz;?8@W%S7>sVr^!v$=1mfZt4jIRDp%*$M5^@I@}PccbsW4nl4AJba`Tt9t@+|r!Dgbm%)vm<$AixGG7&`9@FuB6w$Kk!2H34 z%VN1TdWDr0oajv%lYqyBva8~c&aoaZaQQwo6L&2q(aMbz1*=+X&Tl<^*csNU;Q4iN zO^+*Wd#OYVUC-TXRWnbGMx9jZy#>Y|a!;oyVv?Gm853+h9L``$jJtAHTqGW1HGgR) zdbOl8vBy3r^oLu{jD&{*!YK=an@TT680BnSD>VJz)>}=dF?v`nF5xTLIm$oq8%0#` zixdG)GEvyTfPa%Ul4-vq0^=_0b9yh!2z6ik%u;5Wmh{l-cRdT*9ZNe2G`Xo%LEE3s=sp{`Jb0 zD_fV=E+OQT9yu;4_aq9rZ0s_8pcV0)ZV3E+t)g*OeKG@AbrTd%q!D)Al6=lg4!D`x z_n9)mam5NB*s5^0X6wq8lBG$5T3~J#F3=KNfxLQoJn$-C@7FPsF`zx_JnpF0GvTp2 zp2S{YGgardTFzufrXX@Kv_*_F^ks`3p!RNeig?g2A77(qS!X)&qBThAAn&T-8=ad2S_tbUtxQySl4Dd}-riXDd-Y z5LbV=F(0p`soJ#m!(;Ihc1G>&Cv~71NFyz0YZNNWzywQ1oZ(BieOM@Hwh5zIUN#F4 z)6O$)?ByVCOsE#Vdurt=WA4>vWtqP+TLDVs6*oG9Rhg-S^;UB!@0&F0`Cne3A;Gaj zYp%#v1!ZSgZAbd?8n98{TyTfS86nr(lIi3g;M|Ou5?~J89eLa8_Mw*u{eHe~3}O+>5rG-Jc zNGx@flpxe{zs_A1x9;P-HVOU?k;SkxLQ`pmcazrnSY=L^zwxvtBNXd-Gs#y8+us}w zuqNDj_3RA5R=+HLE`AwP+=iq*dWs_enc> zp`&D;H_V2(-ydl{=xM$=fzn@9P_LZM1k`wh94( zNnC|O%aKoqdoh}tnkhRIBG@evPsBq?oK+~BI_%vQxO%+GuYjno7N(@^Z3>|RM@~+T zH4#`mtZZ!gi#j-08q)p?KCV-b%OfUnA3q8H^~W4$-93+olB@eDhsB=8NwB*v_=;Qr z`>-I@;eDw6d^@ern>TNcCyypUB>{w7g7gS@Rey|X0KyLPa3~2fFq789;-D0Fi?OXv zAlDA2ZK_1*EqnsMI`FcXZ5|JZ=0?_XJOOscZf?)AbX=9jojpd-d9`YCrgo(ia~${r z)YByN5%duRibbG8f%FJY5;=l_f>Zl-moRvxb9YICHvaex?iT#jE}Qcln#HfyryFH_ zfT9MlMy^}79QKN;@S46)GKA9xNjut0!y~J z=UHBAEapx2PWaC&KF^dMtQNhkXIupffb59V;Dh~ZHoR1NdR z)!_wCBFcyN%>CeP#4}+&^-iLLagDbL=~!G_ldmLOUexZTpw-aERM>l%dPf8=#0!kj z>T%x?Cf4oV)HJ|OXj_VoW^i#F+#@B@LAmeyPEI!lEp#Q}Xd$4qb~y1(B^eo+z6q>J zlH4uany`9)$!j-0(-Jtox0?Ui@oiy(;!N=CBbbMI^8tyoTzZR~$8x82-i^db^5fiX ztx>Eo-Ki72_bTR@4^NAZvgkStWvc8>CY66(M4kC$DHQkdGdggqYGerId~f$#(FxY;IP~>}&fxQub^XmFtc|1?n5lRW4=TyIlXit z`R(mi z6AwKCXPQHkfO_WdK7ciDQj{&?6v{!O7cfP_q~rvCpj3)lJ3i3aWcAhZ0hZD*x%2-= zTT~-4xVm6&j^3!B*b0n)ikaXCB2U$Cwif9OxbfwZ5jjQaMjaocqB`>upB_xyAkfLT zQXl>H?dJ%}0rYy3E_L^vUKR(h0CfPJ@5q8PLjK8tsLxw-MskmsDGbDjNls(pwSl$X z!Pf>x;Asmdn8%HlIPUJuZ-l+hEG>1@(z0Jrza#g+t$xI$#2Fh3B#D1^li9_*(>v^2 z_7Hc|{aU^EQ_Qq>b%EA%ef*N{Q15PU{<{;U#?J&(9ZKcl)(pqGw;`K_}oc-Wo11N=339G9fBgn1o-}eFQO<%;r2WriZQci{R<) zU1piThw-4N37kbA_o4;|=SoC)S2yA&Xg%k$R>~doWvuf8$GZj}Aw9;IJ?c@BKdZ0M z{#JFRYIpfO;l?h;O+xN1kITO>mf@Fw_nv^4q2^@a2_mUqaU++q`!3(AOZaD9o5Ae8 zQ1{(!$8u-A!@+`qskcKWzI=Fb? zioHH-zA!j(GJN5Zr|@)5+?(AAIVUv+>}S&S%3MbHbJljsb>ls6s-JN9BHU2B$YRT@ z&}`{uoTlK&U_L5*8$3UE<*nl%7)(blb{@L?>el{Yg|-#eD>&Gu?%*RBY&ujqUyt(2 z8bWmf`qpKsl!8YkW5rn~L!=h?Vn+Xysyq znVT(1t1aOg_Vz7g;f+Y>asK4cDt7adT{-3!^AURU5{RvctG+a^W|_~|c%kFlJeE)_ z{royerH$MxdQXv9p!D{1Ki`W#fpR(}oVMNTXzu#08zytt)CPAa@_QgAhnEo|(R#>2 zK93l$llml`k5njilRA9SXW~#PZ~L`xT@#Np!oc3_NpfPsa`IaP@Izl%jOw|skB^<# zJD^(c;O%vrEG^GzG&2Z1A2(LfMXZP1{E9*UtocTo4GnSwkT#Tyq z2g+sMwx8XEKmT|=lrS(TEBQQQ-Yi)@yb;XLj-S;b&;`cB7u@cRN~68bvG1qO$;DL% z3v}&$*iYY=ePDh}W6H%l^_FeA*Xcca>f%+KjJU}wbNu@mOiSS)<;^>^>Q{;?Eap;A zvqIBI*XCE}2(4_!GBda-m34J{yBJ2xj>?5}=##tKy0{_TFg?GDt#`!oNxxRhetkiy zXTOMheD7z%JKfmx>j!Wfye^Y9^quqYEC#4>LPyI%{D2c7&OFC|g_>MLG>yfRxy)AD zlG;S(G{puUV%$yNlXUh+tz03ToYtD25&e+Lb=1Gt7SCK~5I(KdU{Cm{l2!N(6lu0~ zhfiw4uCb;DTR%813r$uY%D!e@Kya?}=aCx!$FohgWc51|g*2$fxw$nR3~=YlqpSj; zPO&1rd^qT3#^28yVddiLv~f-Y-Vh?-34JtU{29X8vJyTvzeI8?g1qEjh}`ogXhVkA zZz3xf)~A~5cOSu^FJm6mEmkI5SPD(oGlgrkf5F~Bzlr^Itb_gl$maVCCW2*}?o_P+IDt2S*U*?o&j!B!s;7@p( zcqcZ2+>Hl#=;z%gI5}GvM=P0h%X!?_df$@y9bT)?(_H z%bV|&y(KhyY8J_E`G>PN1d39RW*O`3DehE#r1EV2Sjyl$T1)o)p2*mEyW%jUTt-9@*CsE!IU^nS{^L@Qw zskP24IqxSx!&LRR!7-Zi*@|*HL*}91+Xim4vRa|fd708gUp`3wDa1c zjp@p(IC%1KxLoxN?BnJ+Ic`Qd^*b2X;iuQlN|rb9^MHCj;Nt&p;m)7% zSy04Zb)Sryi4qq9Ys;TlOCAVOoJE7N(k1-j3CppQ`f2=YF>onFzsU7(ib7`)1X zK<;|or}wxeGl1U-e`tRi>eqCz3hy(*JtB5mcc|eHpB&&$d;HOmF>E?DA{aN;t;+YC zV|y`}q$?r$-+H$r_`SNvN8^R&H@AuTgbFJ17+u&axH+huBJy?i2hCMQO5APTS3BR; zd;F}ughQJFzy&_LZTBIF-w;2ts(^}`%1jllhQ>~l}A)w2Z9V(HFWsi+BZaXPZq6jti?L4Ksu zkFoM1;X->833H{(uPR18d&n5+drSp^tUmQ{fkB(UBXWIDkn3pl_}J_XZuOqP<2cC} z95nTqRZ318#`HK#gFMy@$`$k$H+So^%R{g_ARI z`$8Dd7PA^n2CZB=q`JL&Q0dpWRB>-*BO@c*6`7vcb{%Cp@(Rtk((U;T7|lvf^H-ZX zab*R!GV^+#Q8#;}p2xmhXydK|L+SHtg0y&GkPo80_M=}NgQB2O99k5Qyv@G@wfoKa z4jI}q8`PJaOt(S)Mp&f(_^7Mb>Zr(cH*XK!MT#xW`vTEvyt_2F5JP*cwc zfWeldIBBRDrEIP`BZbK1wf4tC(FH;`3BrFcE^4FP%Wq7JSvouKEilaA5S1^fy^9-nSJZJCIV3cneiPS5{&{MK*VCbpZ~uh_2w%n+m%+01NrwxGB>* ztPl7UA1CQw!up!EFRA2#b!e%)<Z2Z%tU@cDBX%R7oK0JZrN(F3{2;Jc-fk5k&?w_uW0p5&P zEgl`(fC30!*itVoYWWe8a7^ugr!#Us@rt&JN<9>fYp}buv1abQTdniWsiuuX=|dDD z0jA-23o?2Kii?sxQsg3UDOt%0czI{M-nEnd^}PFIkP>+YxZ(Oti+ZL^(l!~?7_r`{ zU;?Z62_)|oIstbbeK^MzdfAG!F;ssZ0LxVX)7pAt{_G#8@t+?>%$Lr_0E5ow?h(aw z^tG@89$OzC@^)MR{wVm$<_l5m(w^kZdPcg}fL{L5arU0{x}o7)dZZL79Q>axsXloB zKRw!P$3z}EA0<|pJ!AZ2u<3WjY;d_2nU-|rmdRHl*x{~QZa)gPUP`W$g-68-0!l@p zQCrWYJj#DN6yT!v{gKdm*;V?PES8I$=?Q6iBT^%VM4fp$m8!X#D)5iY2^7e7csuXE zUd~_~nv|D?OyHn|wymPMO-61^dGJ;J6uw1rY#4oQpg=mAw3e~of4YR>k`NRMWiosa zn5JhTBUrD!jK{<+@F8%7B(&0L#TC^5s{i@5C7s6jD|+Y;Q}X9$@P~y_%H4z~Gczrc zkBXU!RN^6qD7zUG=xZtM0P8rM|wwEXo0Ax7^>2Hq=q6O1_%&}bb(Mq zFF`_+76_q3;BGkOo@e~k=lSryAMUs}V*nx9d+j;rnrp84n`OZstIC}_ef2a21;sf9 zdFdw<6vuZcDE`Pl`3LYxT!K0d_;bYdiQFTK{Pt_Jz(2>VBvm9SCQ>^?gV{D11X zysj$+1%2Pa&yg!#EsGQsMU@KDlA4}Ii{$+X#tq*wA5-W6dM9oFMV@9PGZ;1ZR-%4L zXx-lHPWGd?LHK07R@tTPfGkDc(yrc+Gcb*W5ww=Mtv!|%5gF{XE2Gy>7|1{7!V!Lc z&EjI4{KX>|{y0emyYb@2$+K0@AHJaA=%Se{a89(AAa6m+cSyzPju<~U7TY1`8yJrz z&l1$C(Su^-CvewLvPm3d{EYGD1qzDRxlxa?VrYt5kM0TgXvrjt$5!-*Z@J%!L~K$} zbY5EeYX0|Ue}CP0WlkA?l;WXI#nFhrKl|ryvn*a1H3fwskxKcW&;A}fIHjEhL_y)! zAo}3Xr~K>g!v|s}P0XfZOTH9ZupgnY{5;vOg?rijv7ILid3Nruzewxh+hFdVEe;mY znF{eN0pEpVuny%=Fj$sH=)|=tFWr^-+drpxM4UJ{hBGiW6gSc{G#nejp-7553GS3* z+a-(L95I{M>>U!HaxNX|IoI0)3(52Mcd>N$_(&*ffj!zT;}t%+uCw?VXC}JCp*JbH zFlM^p_!@zIba$DGZe+C~sBJ>L!i)y)*g;CKhpE+7Vt7VAw{Nwl&$g=wx4@{U zmpBqtl{}ZKAyT#?oh%?y)6b_wZC@NTWhUWR#k*18R2Jn-P+LQ2M&pf4@;%saz6l#; z45YGaG|bB1t^Xb_N6t<9{skq^9>bptgR}}$+d6eWr5-V^ojIoojZNKUdFovK{PPq9 z*4%Q+XTr|Wd$Ha&XX>8OT_>YPaU}2{Sz3Mh=Mt5DQy@8N%;4L>ch#4&MK1Ql_vBoq z)Qrv*db~EbnnOdWPHd`hxhZmrjq6b*+V5<5dY|Kt_s+a(NyO=`u9DgUv(*PPeX6)IcGH9B(_UpsGn9XCGpN`0PxK(|raEZISR*7fP^)?N4eQVuY+fDe4T zN>|Tz>uP9$J${VWJXRVI#<_X82xkwa*oJq5-RhTruIs$)Ae`Xp>Q=Ctuf_$%5vItE z^LNo&Eou~?4XUauq!3)`rJ{9LCH9br(Xt52;eaP__ z-F}?Iqe^Ack9~e#d~ca1tvg&s=)>(tB*|>KDaMGNXHM4~>TvE?w4|K^|C0N>j81f6-5hYL~IT?NNE5K!0~5i?G=*!VKKOYVx4lzo-S!vSC>b-+tvYOZJjqdzaI;p+5YyG75rf zzop>8cgK<5{E2uv=D~b3j9W88yraMZYS1TdQl)?M zU0CQF_P<0*dFMYD(BE_Jc<`>85*wS23*Lz_e$J3QL0;W$y*cmGU&vx zz>w$5_OzVK?r(L$u58E47n7&mlJr@5=kKc0pz|HsgGKoV!n|p5mlujS8^w0s zdUBI26S=JtQ<~-Qd7l;%uBONF*Q})*xfb`okrtE_Wvc|66``|$ve#P`_ zSxk$2;gh2R_zf(Rph@y8z@#ZbgxEX3Xlpe+1{zu%*5|Sr9S=K>?(Zep0a*-u>ArVgiCP{7L|lg zl(QI@62e*W!gx&ld~+`zrf@25Z7s~hL; z?vG8-rRqn{tzY-D>h`rQPvfmjyx>qy`0xSkpWT1akuQ?LAm{vSRT5%aKug8L>e>&3 zcF~90y`0YJip~B%3R=lG2S&b?)1^GSRP1eGgy`|(3lXUF04ok>)pE8=T~fbvXYE7+ zxZpik-2q3~-tpH8+N!w%A9!bDi{sv2?D*FIY(kmF8j~y`a zKARL8dhF+x+N--Bu_vUn;WShDK`r2Q7Avu9F5%@0_`0*tgW)8FOn{A%Cq=X6a(a7x z^}5}at+1&RF}J15oo2GjRJ5>3=U54KioM;l48r%s?_f4_%E~^tb3LlNZM)V|p&Cd2 z7AjEua6`TK%ua-u`NVy^7+Q+)<9^PXS8c^R4h)^3z69bWgf<)b5Z(% z0!g}Gj#^E%ozY2nSKjN|@+dt3>t$PRWfpp!boK)xz0ccMeCAvRS)ackfuvIoZ)U;RtP>YSq>}x!#oIA9thf zxLa}*{=)_EZJz+EuyV(-Tg`;za3+2xjm0mA2=KSRDI>O^Lll>^}cRc!Ip8+A$zd2#9XQ3 zAx_(b^I;s_zAQwep6;|+v0i%ViE0(%6`DJ(*M4OOT$}0<8Y9Tcs&b~?%R74|hM$K~ zd+9XrinscaTcdF-Q%lNv(GFF-Hn>sm+30a$hS`cHMN`|>w>e1!k&n`4id~;ZL|UWV zM=f2NPRBJ@l}L4KA3+l`N$FmivqwI0z_{M67l%}iJa=4(=B)}f1GB$Tjv*u{FG#nZ zN@bPp=9v~gn?1{c5Vl(sX^-@-+cHX$3m*tl^yW)Ku-%@?7Pu0ULi!=|iw!i12F|l2 z><8huz`hlp(h<4iT~5}Y-8Sev1`8uGNjL}bOe87zLO*QBKc120@bZ}4g?6O$iAFT~ zqdnOqg(JVPKBWMlFvBw18 zoYBPxFyth>j0#x^O(`#YF0tH2Zm&-=2eFzO=jf-EsMy(N_heOCAQwQxtY_9?R8Z`! z%0OAPCgVl%YocT89CQWRPgP(}Y!iwnwB#3YuVt3Of*J`IHzL@<7$9+FAx42fWFpdg-(8`yH~c z2+^ndsP^;QcwuU%6#^s~FW>VxmKbndi01{z&lhT3J^P#Vx{p*r+KflsPv%f}3x#by zH=(fkZ-&h$>O+L?z7YH6pc#rH@m2TTk7d>IeDhoTl0^NG=H~$7zkxiRL1DZ2j!x^9 zwq)p!b3Y#fvM|@1tCMd~2H9HCcd9H#p*&{0GX%#Vq;n1)9vf@@#?_ugyj?*hc)a!v zX{G}zC+a~M$t|ebUUY))EDR#8+7rE|qI9YbcupX`7n!tDyg09?%x-Uf1I1)eeK-R{C%7AZ~XO-em6e0qJeYc zPv8713=iwFCJWLq-!PE)2SWZ0?hfH1udIROF`*gP=T@p|YhCh?*U!n3e_!wqPCUSl z9ao%>U-+KbQIjMb(kFL|c%gPpU4L?<=aet{@+e=_w;mS_e@fOU05YWemKdNq}n3Q6;xG zuUM*=sw6b&!30NMqEN|{{hiU48gyEYp4a6!Se4e0ydC*)ttUy;sqK00@&&e21F`|# z_ln98*Szb0?pSyzLGD+sDkO~VVj?>H@Xaerz^cN+I%lR3^Hez`B>Vvsx?&+J(d34l z$l=G$uv-o(Y->wAuPq}wg;5WQSW_~zGiDD4`le)^8*)@)6G67_5bHg2cgA`!<{#K{ z72GN?xsTpIbQd>Y%Sm+4KF3b_v?nx!^sq7_ybBcs!P$DA?* zv@?lRgKkfqS)Upo&*g&lHHyG}npJr;)x^ooGsY`Sb7gLl3-s{Jz2bbLB-YzL27jUl z`fk!BH~!W&UN>6!;NUmJP?I?)#uR3SDDP*{n#n2XFJ60>F8Tuz5;$8cS0@aw6eYR5 z$4L*bz|@qUV1>U~>#3EwuSwLn^64{JzRme4C~iHadr`HZKk?ev=;T6|g^%$(Tk!NLaQi%iN5gC{90zIi)T^H9cWA<A|4N>h&<)KG0p-Dak2aO|>{vmf6ZXO;{Y(<{V=@Wyz1} zWS1Woer|2WeDS0?()5I$D&CBFnaJ~zz=OIIvatn=%PV`)HI$dvr#Jp{A-*+3o1QU>V=WIFX^UY4Z(fF zqw?K8G2YYGjgMG8o(sqOw4})WeETHzz&hTj&BO675??KNKH?c5MtckFtz7o^GsP0N zU(LLmwQth0s|ZoU6h-u?=zgunI;m1dMpMD0Z<^}dh~{>S7DLje@r!0}bnVWz^N}YA zw0$hqB#AgXvBT*G3v#@x&9QYI$&B_*+GhHGPRkk@U%FQZyaHULZc3bUt*=1 zY0*FUW31GLa~GCW;~ZItI7a(H(-X6p;5T0q9IxSC{f-F$^5btAt_ki8Xz%94kd7|$ z?rF!AJ1cP`M-n!3px>&oaDLD`+V`*TU-))2y<@>TtnJv&(1MZ>b{LgyYuZnHs(Pzz z?OhT0Gg7}%P_TV#VKh!>XTDKTi#HsmcKsboi|+AQ7c3xtUtB0MVbYS zR^2w!6U&*E?JiW*>c~D5^{yy7<2QyuEo!qz;@gz36jBAUYrK||d}0N(9~E9^*v$IJ z{SBsSe!2&iA=H_Qg3&V57%K2!#j0`dj_G>aaPa||xzVmSD{d|olI-rur5F1rRr0~q z{Dp`%@*K)`i+v+0V&HMN0(S*S>bbZW@COcR9xH!z?X0Y6Nor}0?#j%h)!mCQYEMeG zpX~25oHXzlQ1;Rt{L*~$-eVnV1oVbCkWAGiF*Kg12M zoa{FJofb;N)LLhdG}SnZ0V_zTCO$%e)nLlOrd9s(b*N!E@YVgjdv!eYS9w5 zheg*)w9B~5KHzRy3+TU6WB|gKtPH%tPFQ;9Xhm6l;O%er$Goq-r^+8biHn0tituWr zv>feuP}0D^5h)e+izy`l5zT^$W>(Q@onfmTCV1npr^kWCE&|&vn$!guP@^I94=<;T zWA1At-4ow6S>D4)d-BMrbh{I9*sjhL1GvF=(yjk$4;wiM{=AOJFx;kDYw?P7A;Y=L z+zdkxsxzXzqpbozux#Y}sG<1X9w5Wbj9&f5WRGwYXEzsHd#$SG91E%v_u^-sPJ=Uu zAPH_Hum<$d?oZX?oTMf0Xpt*C=O0{7o5hp}&TkJpr9sl2GXK1!Zr?O&W@Ypj>)DpHf9CKr50pXGLK;j6;)`I zRhJ9sd)jX%(-l#V*uA$7-;yW#&#U|3w(!X-Ru!6eEVZEQRU_=?-b2p4SC>e%yo>4h zP@XRr8Yp3oB^q`CwKcNt3|X;*>oU&ht9w{A616Ge_jafp2Ikh7qK|!Q`E?d9wKUHVug?bk}4}r z{q5N$e7!gHIRz@-|C{h9Fg0)iIchQpTkP*Z*;FD>8#__oSPwVL5s3NbM%B{czz-F( z4gX-Cs~25#wUO_Q9%r(E3#mB6{x^Fjt*@(Vb*bTny8jDZe`Wmt5JZs*b9D-g%3P*a zrdpjU*ZOccT!vB%4nk@ZEE*jh?Kg&!@eM%*mFq)q&d{~PCH5H?N6K6QlsSj0CNCnb zI+BH5r=xU?wxZWpTDhR4gt6U5!Ky+e5?NVEUMql-C2Wj$hWblNN~*Sd3;d?;7;mk_ zRPSbR`OdN~1{v?-XR!zXWi|jPa~yywf~Y$=KfYdgJn9FX5pA+As!9;SmcBkntUf0O zcU;Ln>a_pJDTg#Tnf|a~M1!gl|2wGpQ3SroDBQ^o7`TE`zm}im2IK0jf=geW%xbst zk)v8|7N6?8lMnw{G?|S^e=Gm`AHb7wACCIEs0ptI&LjQ-w|}P`f#8h-r19OIcQ583 zB_5Lx;s1A#2*gEQ$4MO$cs;VCn%)73IoLrX5yw*PSq*#gYYHl-bruLrO$RNm; z2MQP!qhC1Uqcm_OF5m7<0SVG167KnB7k$z>v2%vh0Zol%K;=Qz~^rY z)=KJF53SH_qEx%MFy>6NJklK2+x3<($Hr*nfo>5}erH+44zdt2EBUb&;g1z13E_h1R+{9pk-EZO)*L@T5qqWU|-FmNzjSaF)E}{2q;!AmHO1o8%FO&Cre2 zyit))P2et@*Mgn?dA6ZQ%E8D~JvA3s%R&gJUV~N1sLAK{`W`A7jw0~oNRdgbRpZ}V%-7o@>93DE7z8B^YQK&j zy--|^q3Q6QHfyiIG}7u0ON$QMsZ4)8Ff~7qGkR^;&-Bhnq&Pj$qhV$^>+X4x1E5y! zsLG9(WzJldz0j!mXji}in>U#eOs8}XGyiT80e=qh=e>z4RzWU(NL^_C0)x(QjsZv1ga z5A5YH9KtwSxRu0CPSShxDvB)f5oT6bG+z4XR^(ThSE5ATu4!_g<2}ZOg~rvdXWM5Z z4CFU%vt_KDL`qL+>shqhi;5uqaY1@^QNah7g}a}+tHAAgXjARhOR7tW9n*{@YGyaX zTP{}canjx^Zlq##J%w$v2Nh;F7P}2r51Ch~OXLlYOv9I1VyE8}@NydTgJF1I3%d?|8dD-3nCz zrry?bI|#Sp_VwCoCl5#BJ@nhyVa}1qkCXy>I&Wr1phK)1| zi#Edtr#3Na=Bxr{l;=r1C85ZSx)*_eF0+bh@@XBSKF)7BLdi~S_Ii4vZ6Ew39YFEz z(UV(2$L0%%^BPA==|zzilzHYe_1BZAU}bvOK2LdPdI$(q$75as$p06`J0wk57@23< z3-E)@9d%v}uWa6zC=H`_nim}#K!NRMO$5Z8L}h|(U7Um9Q+daXjFTA$ z3UERblX$pMzFd*ZJS!LydxPj)2Qx3~yejI3VNG@1^Ss(`YSkXODI~FBgjp9Ekm=#G z@>72%THPmv87dlO%lf?veApad_ZX@QF2goe8N>}oEenWysV$9^G@*#Q7 z=hv$7RIJ6*xl=;ZTw6GlMk+|V8=$XewB_8q0%JeV0l@mzdQzZePMCm9 zx^e;biL`>^c;l6 z23<51pZQ4JWqI6Us^rC<{rHS*$e%o@>P5?8snfeLLv3VQ>CMHd&o1H%E7^k<=L<8?#~63xNZ)`NwHL);z<<+2O69A~JXYrR zbzQ9^RD0UykfJh2@Z|cuYqy;Z(=*IEmv)R^sy<#LuOTUMIOuEeXnBu0)uAu<^NgJ+ z8z`b)JRkswa}q{YWF%66os#D&$Ha?AE77}JaCiH|0r{qpi>QDC8fe)dYK1^`4<*ugpg(lwY8uAbHh=q$~7?Iiq_ zR17Gb7tsmOonl@h&5h1EFpNf7;b$7iH?nV@Jh>9~oqdFiBT|Rx*jIEWZbsg5OXO3K zu9E7_c&{Q@;j4^bXuE~Uin!l)_FEN)P(n*+Tj(d;vbpH6)$jMk+IsfET`RAJqo5>c zWTk1JCE#YEmL%~Ss-aFpv@kW_FlOiNDfFOf9-|^9r9K0DqJ8SgJF51RE2q-*yl%g> zP85FA$SbO^8}gTzHR7qde;Xa4C3XR{I`K|Ka9tpt6ge}3X*P>^2MKV@R=ly*^CZvf zwMzKfyVK#!`lVC(qQlVN6PfDdNT5UAG5vq2;uqL##tgull`c~)Q>`&$-t&2tm6b{{ z_ba!i6P&EkXmmmK-gZL}ow3hi@fo`Ni4suUh+ZO)+3eLZCaBp5YSP-z80hWiBxa{gE@gv;>*C64K|PVRbd;F#tFz?k5AF?=Y{a;{I3W z@X%QPHwaO<6j;^U)(1As`FDBC$4P(XEf2l&{{~G`5imAIpo3_W&Tq4(ntx|a|0l@P zU)1$#Uf7|*_-#70_wRJ*{{TqOd~Z*boj=TMHT*6a`|$r$k-Bcw&(zMqq1(+?L87Ne zLBz=!(9V_;IC;JoKx-?5YLTOU)3<;mVMIsuYEIH%{VHl=h0#9gsjjfLp003Vp}UEd z4JCs&0d{XkBvtz(oyya}ES=uM;V_!fUCF^CUT31>r%x#)4TkXB$9p~hTs+Q{{P}Y6 zdR$2)i<3qHFu=Px zGNL^vb7{T4Ff2)I-C%IMECOuGpW)b%-F)2RjilXBk_)lp7}j0m&33E?2Wx(mP2MFS zxmc{q;4osR-w_5ROXor1utQz=c}51PA)e`0g7XpExc2^?8kPJ32>2rN%=X90AS@0mKi ztoT7k?FqKid5lG;1cn|j%oQoNEeO1~JXDc>VhgPiVM3OPk#t5T?}oLb0JnwUPR`?y zmbX{B-p6ClVdKH@0CsI4En%x)sysi898!a4| zPJ{$`<@nCZ@^WvCgdH}qqtcw6GbbT=vstr4t;!xTneL>s5K^`g`_^x=sgeP%5&1v~ zHAnpDl3t>*3{mjTDe8$EEnRAk1E;F$?k0`oOndGOmcky{1;7O3Lm)Y8EP_^-6BaqN z4r2U!^py(xgXc-#!WfQV*sEhRhFvY})j|Ccei%gEQBV&5xm$5BB58Z~k5TtS8qZ3# z3D2s)r5e~qtOe$B`XWXWg^z@*DYfMg8a3tmPTmbjB@6|RzIw+F z!644s#WOFf=h<9w#$%rqTfT90>@G*#W6T`N%2xaQZWhdwr8O8HggH!*{Q~)QByM_c zg_6semzO*4VNnqxS46z^Hv_Ch36 z=V1O7A+-jay$hL1AYN_z=#UfC3l}Thn6aa0JTUD7juvyjammEofzTOt+XG$OVH;&U zMfw0lV0JUk0FI=>n_4bU)s~U`0a0+n{>LFcDZPj`3Px_^0nyF^!>Do8P z53N$LW#&5nBSm^qM=D|)=20ImrNBi(}c)MY^E|L~& zwUj_k-G#tFJ&5QLbCwU*=6YBHkbsK0&Pio0qJ6jjS$PPX%S{cwN+zVLATOc}al+m>X5mVCZac8E7!*ga z89zuC0`mmk5SgYcH2DB4FQX0Ois%!c@T|4G#dtG3N2~6+1|o-E5|5<`lD5%o3Y-#A zMsjSB`+XU_<7E^(gPfkQTljlOSy?=8!x+sJ|o|sLQrZY4}EqKjw%B9o+0Up*oM9VLK%^63g(m@2T9}{NLtLA&F=9?>9fY& zR9jkiSMd+tD_ORgP$dw)DD&CbEe*ppX{5wTJOsoQLzIMt#Yw?n==2Ix$05(Qhk0# z(yhcly#;5abKUMrP)-|4zgKxbnFenDnWjkSqs{1>X)3Hkku_Tr_rXnHN`cac3ZD<` z4!@abpoDkrmRR;eW4p@kX*Bub(^fMO?MVJ>)EZLuRK^xKcVJHrfJ@Ypb)Ywt*;1oJ zBFaehI%TfQd{8gOxj0J-lJMihO^feWc=rgole9$1P!Ydh;^L9|Wvu0XyI^i<|{6>7?@2FFT=uITQ zBCqywZI59M$Zq|7@VO@_{5aiYy5A+cb&i@?Csg1fw1@^S;s^8NtKQ3Jg}&@7cjs8B zXSg@0DFyRlrgQq2~Dj}E)I@9!5z;2fYUI)#=UT*?VfsGPVxGApQ;R8|ORiJ4|e?bDUr4mH*kz}swQpD~# zu2Ia$_LSz>hyiYlZr8X$k*poFI5G6VV}FZEE2h?bH2&48utjJO4czn#iDXk^z5d3V z-jZiZk7mk2T-j)ieaJdn4>fm@`Q5g3!mv63dN)ccf~ij93QRNna+Nr@OY?%yeqr2o zGDyzS*SLxo#8x-e%SmWxgjSj~8o+d-MzMW?!am%yvJQ7VBo%tn&xS|tfx0t(Zb8TWpICRI{-2fqIi(ZOCdEo=!`RV}L3f-gR(O=5v5V`=mICd-RkR7SyF#rhgT z;U+uGmGy}8j2|a2bXy83*F>`qSZC;Y%?a_fC#t$16zFv@?qC$S>-+P8Pvpin>#L%BTJx9Q|;Z>Nk%9pMjtvhPwA{|lO#&G7@C%tMWRMXmWwGg_UtEb*o{kGcl0JRy4 zga{O9Cs|5j*{^T^w&avzhWA)3_O3OUX}jjPxX&~uPRGb=N`I)8 zt9rK$fWr&`9ByxKUteGE2jK92x-S5Shlhr?=Kwey1;F9f12|l@nh{gPNghB*1qD9*<^zV{?E;Z5x1;`!)oAXRN;||@nbW#`U`aE}AyOhM{hTeZv>Rx*( zGW?LmNgft9%8m)X^X}~2S%pNW|47FIwMRlj?gE@GU)Vw5&tChNBGA4&CFC={sqOFU zxBjy`=pOegc0N21}Jz}xV+4H z;_Yw8k?bFQdp-V~T;gie2@dF1j8gpOK)M|7QT~aN9rY99VB`JWj(rRfVNGfmT^jfu zPgksy9F|iCAEuvuVQ=t6RzfLq6JpE@3sdnBEJ_{-Yxpn0D??k>T$XYJ2svH!Mz=yU;|$X{M-c95lYV`ns=q+PJ&>y84W@ zyEc%+M-A8r>d8I?VTSc|rbTBY6Vl95qRnw%eKx=vSzQg31HiL*S)8l>qw^O?&YOL7 zFR5u_CVxy~+g>Kx6NFa}pCf@f4mZ>B%MM zu+aR#(x!!|K`A5(yae5>YqEBoYPoc%!#7|gmH*IPpzrx;9`YQhpc{ za!P#FVig8IN?hQR1Bonh#?~Xezcz*VVA8~GS8bUwH`(y&=$!T4t~5DnW)Nigd(F;} zZ&8^iG4;3F`m%3ul8Ks0%yV;jJWVc4nZlgu5ARRRTU%)o+qY=9Ie-e-wOitYChT*w zT{dcx=ZF$}P5ZII2anAm1u*+rKVd3%VjC&*Si<=%ReEd?M(gV8Jc>oFNpracL;sC- zs}P($Jw1VYe1M;7=zfhqWf+qG-OO-YHc!vZ$G<#G7?Y*mgFa_)c65 z+eWGLL}N`&O6x;L=`fD3?${s5eNaPZPpO&0UoTA5-HbgbARpbs=@ zb2(*eG(QxkhAOp!if(?=A!dNQ%T_&rmO5tAhx;V2`~xve>y-CA9|JTNnDX#{4OWIi zZ2)FDmKrSXx%^dZ8Vi6CQu4$)UFjbQ0`1x5am~|CYdPbhP~{N~R-nLscP2N?Ev{Z} zO�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 O-dlET{(Iwrv;P4niqz)- literal 0 HcmV?d00001 diff --git a/docs/topics/images/11-14-CF-Expression-Example-Odd-Even.png b/docs/topics/images/11-14-CF-Expression-Example-Odd-Even.png new file mode 100644 index 0000000000000000000000000000000000000000..c32becddf48197ea81b93cbc745fed28165ebdfd GIT binary patch literal 45773 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⋘&%2csV6!Z)X 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 literal 0 HcmV?d00001 diff --git a/docs/topics/images/11-16-CF-Expression-Sales-Grid-2.png b/docs/topics/images/11-16-CF-Expression-Sales-Grid-2.png new file mode 100644 index 0000000000000000000000000000000000000000..2c5660830898af7f41b7e412c6e038059b3d0ecb GIT binary patch literal 61696 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 OW}OQttpd%P5B~|qnVOgY literal 0 HcmV?d00001 diff --git a/docs/topics/images/11-17-CF-Text-Contains.png b/docs/topics/images/11-17-CF-Text-Contains.png new file mode 100644 index 0000000000000000000000000000000000000000..f52a7f769cf8a9318f947d08a3c6e272a21c3b40 GIT binary patch literal 45787 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 literal 0 HcmV?d00001 diff --git a/docs/topics/images/11-18-CF-Date-Occurring-Examples.png b/docs/topics/images/11-18-CF-Date-Occurring-Examples.png new file mode 100644 index 0000000000000000000000000000000000000000..3d9d7cdbbb972c9350de9296f754146260f0bd2c GIT binary patch literal 132245 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 EABn#MQUCw| literal 0 HcmV?d00001 diff --git a/docs/topics/images/11-20-CF-Rule-Order-1.png b/docs/topics/images/11-20-CF-Rule-Order-1.png new file mode 100644 index 0000000000000000000000000000000000000000..5dbdd5403ab966b40dba391797174829c58c5ad3 GIT binary patch literal 39430 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�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 VZHv!oahypdEukQucl#dl{{sr$-mCxs literal 0 HcmV?d00001 diff --git a/docs/topics/images/11-21-CF-Rule-Order-2.png b/docs/topics/images/11-21-CF-Rule-Order-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f874a0b0bca0dc1bf23463ac148ed7ac2672ee44 GIT binary patch literal 42465 zcmbSz2Q-{rx4$$gf+QlM2SG#&lhIouTC^Z~i#Ee3qjx5WDA7fW(V}<4=nN6j8NK&5 zdhetCAFub``+eWK_kMT%XRTQt&hwnJ_dfgV^4t6I^__wg;T?)QczAe(GSY99@$m4W zcz9QpZe0cbBKmyS9{6#^PFdW1x31ygr8&yHdG+2|Z*`pD!^8fh^R2IpztAJvnS;uKpXN!mZ%913FCO%c*4s4a z!*x>2Je|+zyxT)!bvWt%M+6mbZQafzQ=f^vi+$Zy`q}?s(7a8(_`|+d5S`>(k9*o{ z^Q7CNcGy*jqobqKeprjb_G!5lwgiQO`n0TaF2u>0TUiaz<5p3f!7@@IG^*iUSq>W$ zXy9_@sJK@_C0xLdZ|)0&RPf2<`Dr5Z%iK{k;wU;n*v;RAJyWJTH7)JyI2{Im<|y&} zBm;RN7d$cOLt*f>iz__5N~B7k;^iftXDa0K>LY0u`Q_CI2^jw6l|~ry%H@^X|Nm`~ z17l;k_~Q;!zdmt#EXl&IuVH%?Mb`!k5-Bbx{|KU18_X>!Q6)?gR>G|Rh#P;!U*%=% zcyoT0sCAe+0wwqi>h$g(2Bdr=Kv|m1Qvds1e?LyGj7f#WQ~ghK{nH}$()?9OB(oB@+b*RuN5ph;QF`a2k@PA$~0;x$4`jpa29Rd1F z)?!p+(jBiEK%ZVV{WrY-6TO#0>86_>ThEHIG-k4XU-7@m?Z2KCNR8`7#>V!45WE%C z?s~9pdAIs_y$YJ(lFqeyn^G^%bAdy?4L6-L>zgB^w^?_S*8OxvU!5T}{NL0{2(JC084AT~phSicCI~5gO-LBzbK13jS zeE1BrDQ5&q=vzHaY1l&goe=6y0rqail$wqZma)v2jNjj``isI65~C1e^FLoO86;92Cl#KHg5doiNsuLpU>S%UnzW%mR+4U>=8dVN%dYqnau_S zoiMx$!g|57$(*y}8aAkF=iAycmb-_GB06pEPOw0aZhjeY)t~6&pKpuiRG(+R zDaHVp%K`U9Ut|}lQ}(X`zX5CmDIxKbo#4+5>@B=<{SP& zH7T5}ZrSSsXw(d#S)+{L0E(E~3AjNw>(hKmc}kDAFRN_wqb255kGJk@Brt-Q6fh*B z%ak%5-=t4)2hIa+Wtq9|!Jh91Ii&Z-+S}$=837|8q=b=Y zrRAyl^c97Y7ngJKRM;wj00dmxi~5v#s`9w~x1iU-P^VOP{)PFkob>mzW5Id31Dq1O zY08?u5q8@uAm*@`sWb%IO%>Y+#Nu8>t zzg$yntm~R7m?->d284(KG(Fc64tq9lIfRz!<%YMB=bL#H(6SSyG)gU(=D4tQiqBh^ zyv$i&2%6{>4pX3Tu-ajAJB+T5R{6jPExu`pQh0|+5aX|6*lQa;bXZslNB!FR53^XU zj*$d|3ii}Gfj<#P*hyj@3-h2X(=^Lu3Us-c_Rif0>E`3w``TTMnVc8&H}*$#k&dqW z-#Oa~UokWVKsUxnex*QL(gj?OiS#F^LQWL6U-R>Vsqb~Vq@Z`TCt6dQ?Cvq}2zEuZ z%7+Mw^SfP{Uk#4ngfhI`aqoZua=x@b(}lJ?*)cAeCh4?ID8cG?7)e@bp1hZ;D{`DC zR|>>i`OUI4UkBPD+J)fRfsh1u>)cPwuT*$Mg5wD?af zKHuAN>$)(QLaLY*+6#hynlN3^qlDov&3k#82SRU-R{_-UXKCgF)Py0>jUIU1wfva{ z$RB1E{NY6}*Baz=gl!b@LgE?wJ@#+RR+gqFV@PM8+zLzZ*xLpe_?DDBkgKEahmko)VEX~0<;Jz zV65xXN zcii_%2>gYWV(SRz**5a0!rZ?3%x2B<-%UxgfT^=?Y4OJ@Qu{>IQs>SU+V0E8r}+7@rKQ@zT3oJ*dNY#--NqZ0`T*h%0f6DO{8 zHDvaNd4c_GFQ7N3ut)lU-Xurk2pzyxe?oN6L8XS3OEw{%vhsObif+WMY06r;^K8Mt zgYV<8P{^d`c!MEqt?^t{Mfv+PC^(`LBcuX{xKEuP^p}&lB*m=}K~M+8i|i(y0xCi2 zPvH?LI$N_09>65B=wljN_~)F)V+O}+-o?12B*bPdWo3in5*a$>3H1cv*PW9-unTEo zJ`ehjfB-wobG$EsTPk;aB~x*;Ccb#9XKS?tu=#0i{Fxt6%q`a{DkVMHPbPzKmUvci z5$p>~%5I#+`ur=2f`MO@QRNIEx@|}rz6&j$e4BtUXf8={vcyJpd6MK;Y23V$fg*bt zz46+!rvXaCt4pC1wA0Dyk+p8RCx)%^r^mf`*0LDWQ^hw08T)w-SManN|9GPs$g9rw zyivkK$|Uc&nU*6}mU;WYSsP4b`U`8v&dk1d-mLyfL^3{zxjlpKf7d!vwI{I^w^!eq zb?`+f+jBb1?dtVb&2_7W?}kZOhr6?D;ylS&Hnq;{QJIED|N1`yY_kAuU zH8ISs!)G6&c8? zmX3^A7P1$jlvpd=@z#GHZ6{sV${KRork2~+NqO2q+M#@wIzBO<`#bD|O*-VZB;<8D z;al>XiQ~mGCyzyq%ekz=1dWTG6;1)}f}ew}4CRP_#xEvx@xrrnLJv@thrg9zZ}03h z!&8(*ksgJ)8X|W4t(8pRZpDYr4R2TeJe>8m9k3vRyn48?y0XhK;xwB~n}(xX3!Bxv zr7}V@9dE0aVHy%uOxAkTo@2t$jxzy4)%(ESaq%W_zbw6z3BCjd+7=*cz~_wTy;}Y5 z=OaBfXo@+#z7+tiYOyBNLi|i$v84Hld!GpfiP^1EE9uht76Pe=R9T z??$|tuw}EiilgYI0?i$Qn9{+#yp-Y?U_bZP$44IzmD|knFT@$$%}7>MBNI_Yt?bGu zD#ZUd;59Tl_98vsNse+El|Q&X&iW+MZ~O!!xS?a;EdkTHv+7nSWN|Bg#=oN$sk~o# zI9!WB7=0e->iTiMh?uP>$QMyjkTIi0oNO&+wE0wJ!FLL<5oiwC!S_>=E*b7NZb@;X z&Yqau3<h`k~O}VOaV{Ax~%K1ki46;xe@jT7f-b}Fo$0b**V74EwMfTd<>WtXA z8H*@+Ha4ueh%jpToTGC1eg8GTl*l))i-l8HO->>aord2o}fK+x9@bbPrz7>JulDNgoX8%EqqfF_nRsGNK z_6()xNf&2ruR43!i1HzvfKKvsGrCh`cb1Z4070GAV`aK2ZR3^_mvv&?a}J0D8ik~J2Iqp&?ZgF0m z0;Qji5(GrsRJ=W>SL0V8q6HDCajvlg!P=9;)$k$FwGzN!$9J-U{LQvUN6m2sNWx& zzBW`iOF4Nc`Qh!CD|JGF-%r-yh~rlEnq~ zFGmqD|g zKbouBabPo{~+}Uk>@dO(*~6poJaEKt^!4xWQQY!y$p)0;WIu z&IW=0;qTg~AzE4KYm>F-?I2-$sBr;q%8MBP?&EuY_3hUnjc-nGoPGNBEbj1l^4xR8 zEFw50v+|yu+T!Bi+`6qm`21uZN{+Hw!;3jx3%I?SOm@TRgG{W-{DgsR4s;RRU z*sZm?2uE_S*bR3r#fB5|80SYX{5df)PrJ;Y(OAo{ z-?JAA&wWVJt#{Q-J?Bu7HXbqkQg!!R81lAly1WC(=n_5nfl}`N-oo;Y;ywihMPCsI zg*KP2&<3kp%VP=U>)f2P!;c?xGwTPQ%-4zfD>1N`o0;+3%zW9hkh>o^-*GkPGYPHx z=9SakijV(>@9S;+_iR#!OFCZuF5+~bCK!Keq#+cJba?P-yntEntX;Ml8P4f58GnA0 z%e{v-=Jw7)XLJAqzsUK?j*6nNYS54Ie}ozSRkML3Gp)csY12f#w6ru{>A(P9d9UTA zg8GO;*rp9+qe15fhKE43&#Vx~$HA^szB%nn%cFOJLE+(bHFO}sEBm8x0LF3Cwob?X zP%$O!O;^S@wbatm>brX>Cuw$e_96yW@4j4=8TbYi_Y)y^H^+k`E9-JNRO>{cm19b# zLx8SOpAaTgo=yHYW+Rpd5(RSaUuyeN0YHP23YV!K0*di8MXA0U!W|ndVWEd-crlN~o2iJ~)_&tK9h%*U&(M zpQB`8y`@Mn|7*0$7$i?=sF*|7!u|KsF_9%UNaTEQK{l1B&`uldA&W`#pot~wLnG0E zRzs-S!%LAm25$a&A~{=5iKpC=K<3H3(P3>Bm4#1nIXWW+!#cRBbskQz3BP1@pT6%J zcL~W!6Dfl@wRA-qL!+X2p4QrmTTRzjSHJ%@7mgd_Llz9el*Mt(vp5#$Z!qS)VDs@uqa@}wwRNs9x0QNVU_w-92 z8zUiyUcu|aj}0V!LIHJN%xq^n`M!IxrdF9a7YXJ(>rz)qEv=F7w&xkBz!BRbIk(Ua z!FnCg&w$0utBP-;$2Bk3Rn{{zTl#qA+8?J!^|_j;zCeXH?)iXm$PU~5!)+)7p5ahN zDHv=<4lWhOlx~eXcChWQhOtY{i)z$z8541hsL<$q#t&(br+y33t!wm~eKCLMon=P2 zbMz_^F#AUd7Z(>Bo2|3cV{L71TDR50G}&m!nkkF6D0Z@-BgwfbxpvYvKgRy@D(MaZ z-|>xB5ex?o_kn+eXg3$?=ehEUP|HBf$|}DW4pwhr%3cW=6-j$`t6K`$Atj zt`1?b5OB}eH@7eXLfj`c{JM)ilyn6C|N5^pl$cOb!h3wiHH`af?2rA?4jOGk1E1bvZ zo(;Ar7v(d(v%i0x)Kl8Y4BO!_5IX`!?ZK=a^Iit|LjoY9Cldkgf&6Tvi#M}Veuun! zlH{BG7ux+KE9&jRgj)f{hCN%IrvDqrYpSf_%?b(Cf=BWx@=8+VLP;7tL3cII7oiUY`{%Vgt?@QJ~#4T6t zId@@3wT7e{4$({tn6WG@$MZg()v+{)#EZk$7T1;TP&K5RUgpG)d4*CIVQ7=a@0;1- zze9AM_^&110yg`JOcaMM?sNljUf4uKDdJv^>?4oyLOuN2Zcj*U@GGR?9&zN+69eY7 zsHi9sW(6uy&l3RumI|giS`a-y8ipqB)t>g8iQ=%+^}eFG#gy8!y@H^iAh&~ckK?s6 zC?+mTkE$X2wN1nv$4H)JJ?IgePMRbm8pX1cGtV8>Pu@GC2i@_Z;|wQ}gELMx6@^8a z1oku4xa8$LB3(vT-FVDeSgo{qd>u79#6wit`#4h8+rqRfibAD*!{qc&w`lMwc0|6| z-Fk2R6#;oKTif-5#&r|5D5st^B2Cr9wNfjwX4B^V%>JQ#?$4zq+7nX#F9y50Aj1!h zkY?<`Y7b7#UJvAyvKf<~KWG$aaNgv;I04@vfa9M*9s?p#nT;QhV%P3*+kMyx8`A|r zF=Id;NC~grx^(kZH8ly3kk(IJ32FL+ck-tkL1m01T*7RO26nuE$4W0rv_NYAu1h1HX1fIwO9OPGMN*2VI0W7Zk#k`51 z&pdNau+$-oZo!Xp#}hN^)%a91He*#2U8$1}c10)_g%o_Be}vBu^@~IPa(r92l|Hts zQv&nS2~&L_qVV`W0jSUeZ6I#)3m?7S>nbI@A@KwHhRz0poDfnnk>_@LKrpm-?~%8w z*^fxb;XsV1lG9tmzw}V+$=k8xdjN%E?>jm=qIGP)QY`hg6M|Hj`2gCCx2wuaqGZXK zs)T93C5i&kdi+RNQaD))Cc!XD&}H8c_2;=v1E&ma#SPMbf=yTjOrV; ztY4NZEv>g)kE~p!?Dof3d`-q?QQQ0sJfQV>a-HrRd1c49Mf(n709L@s2og;Vu* zjn8a8XtaklU#I*OD2*r^7#RPw*?#0!TGI1AkDusxo3^pN1=LxV7-blYuh_ITL zR<@)7i>xt3I&3Pi@2*la=P@NjvO+#J_ZzlA#)y8y;_;aD3;N@1%f{3DB%!$-pplXr zgZIDnetW7py7bNs5!d{!yda3E;`vS*2+r$NSU7!wpJ(Z5;)vE`zN+%sox-oXB(vLKUp01?6l! zye1v`+~~CB8SM1P*xY>I^cby}Iwp}r z!%38HTm;<W*IBal;WMk z>0F_2ElKiL3Tr|zMRK-0of-iyvud4>!}YVG<;yJz?w`2iQCVb+XOwv8S2^9$YOiZ5 zMDSL9jUxOxOtbQc-2Ardd6$P}y<I%qvY%GB0ik@HivgPtMAz)5VYJ5C zUK>A}GLA83VPk9W?A+*1k#cnfN@(L%4l9nWwX)DSn@07T?MM+1ocmsm{@Q5SMhr9| zhA!S=Kr<#L<`lQLGFe;Oxj^~i!!I$jt{<QqjBCIIqWI+5v2rIaERsvrA{-H`c?A^eVEng6NVa#lvR z3(;K;z1r+|1=f&VY-%%6;|}Yj5<$zd2<7vgz4e4v^%Znzh?0JV5l+%__uSaNfndeAo%$d0R-fucHn5C`J4r|HSkn8X0 z(PwX5Rh5Ga7cbPU`_6Shuwqqi0Gl+36B}^PQXmERIgAR@$44TYy|r%-aD#8i#Xz3o z%|zAhW;c>|z??u??vQl2UTfNKrNSP5JHVuKRcpRI=IH1Mw0Gk(Rxq_dvbr0;0vXdk zGN)Qark{fKPC=l_HmYCM7)B#a!y-Cje`@55Z}hy~F!fl>9$$enS1|m1N}9r;AQEgj zEWl!Yb7pwZfSg=W+baEFyr5w0(B5`FL@~@|>hi65!w(>u6w*hOP)#<<2 z7|-2GFe#w&wv`L}fl=X(sO_hVQ)KFN%m{E)Tv{rS^@=H~Tf5)kORmUa+N6WyV`kP{h?`9Lm< zO8V~VFsdpdAwfYGgvVmMXBW9r=x{e6)G ze*6Gb?**Ed$z3;al2SW4ZP4~EH{>APy~|Nss+jVx74VYjz}LE7`RJfbGfR6HO+^rp zG*8)9$EvL>Y|q?*N$~u9`tFL|1fn13E!^HV{-Yk;UI6pE?iR*}A{WDN#Q&SF0gMXD zi&C$;;HM!@D;hl-`(={a4&}(eGl6+S{iN|#TwiU*2}kF=wcGUA7Kn&rKfc! z2V)gEHiJtkP0%13gex{bgjaaGZ};Xw_ONy5GUI=}PQAQ~etsnF4l*VT3#S2)jADY=^OzbSn|5fTCi?Vnp`wN_SavC_T ze~bx)PjbOmJ9tCTMib>5I*v#YkK-u$)bE#6wM_ra*PPV0s$9Tv=G-5TW*+;-==qZR zM|^slD>MY{@;kK7QgF7oZWxNtB|=vn|2VlY8-V1m^UHSB2nh{R#gv%kW~hF+b2zgE z&7!-U^{LlR)s>;v-90t&MQ3OnM-~5Nz9*JEBi|vSiMEeUk53S8tRbQp+ij^km>?6a zao&G2T=#dM#sgA)nB(SfKe+0p<;mjh7}yiUN{hafR~ zIL#!u))qJR%A^0!P*C1?j)a3qbg|7|eB;CG{MASOO?pSZ6kK;{9h$y`KA5apOIl{y z+F1!Npb-73dbb#sC-6_+qUiLD6aYFdU=q)hLjb4?rs7vtRaMo}danLATGAgG6{Qfv zod)ep7*E^X-F>`_1Y6a>S5?4O3W>V`vFkEVxy9|#sHO?7jnP*jUCpcEBy%jeduEIRmc9p?KB&zotT3l3O(p-2Pe!o(u@$nNA-)b#yR|u$Hba+Isr+5$uPZ7HWU*vy6Jy z{U7GqdOK3e7cDSPiiT0pg@uKK#cl>+VKk6105Nw;z9#e@7@U$%Uim~BJJa!p8sWt>ju%!BHEChRL(^*qAXs)VksL2lU_{J6$r}O{ zBanX*(fxXdH#W9m^Zd;Em-jhp@;gx~^1OMSF~J-L8%co;0Rg^g(#2Wkdqp7sv>zFR zcGcZl@qo2^;ErWMgPANePk069dCJEfP5f6G=s~Hu=cm(n;0wKa(h!QI%l4?Pd3}S{ zC%C;uZlHbDVZ2A%b1+xiz5+Say&L$9kLFH%k9R6Yg#No&D}B!eyr%ppi=4iP1a*H0 z!(~fsHhN;$R~=je?-WEjwnb(=h$f$tym33;_K04|pM_+nBF?2)Z& z*9@JC@oZNpxHXFb+iy0~v$Cs-L}Pl1u*`X?D!jL7)Gos5%Gv{AiG4IIlsAD&3?# z$Khwl+|P0CKVLrlhRwDw@vG;$=m#-|*I*|UE#4dX`Ad@l1WIeBLi|2VP1(K7v(obh zmvZOC@+J=ws8i(e#v+^oN_Pe9ekWx-8AO8+u}IEG8m{r8S1V3hwO?8;5m>V7@BCKY zvOpGXq(wULu%F1h$dtd|`yg zX5MdQ*Veyz-KgeUZ2CrC$_czs61UdeMNKGBvZrC!0;T zdTYRC_#UB0o!6rwRdz*Teqa7(T0sTXs8}jmzFGr>2tiWQMU0dpN~kUaBKXAq+=-~r zOT;J*m~M$fe^*d=xROKJgw~D#(-weTFm+(nzw?K6kiFmPD4yjwly!H(nw!TB8iHtW z<<#Kk=T9H9*Z`6g%&=FVhOyFwY*voof>V-*|M-LN5ciJ)?3*$8XCEBjmGW-h0;p=^y? z7=`%zzQ1}Bm80tWERKsZ&K4R%N^*0%XB%eiEeD%o*WH(Eptmss?aVjTMUQ-&^vrPY zg32h-8?NZqP(A8a9>KPlLw1!P27L-{@B*qZho)TB2IFU`%Fl#(2C*?prjrR$)>?JrAP0QCv&Ccs*bwV}Ud2MjvCrAbCztdY zffdnOH}TI`7{(-l@C>j3Cj5Ek*s4We#Yf{R{GKB^Ti>H~S| z@hnwR?xLO|xL!V6R(qO9aS?!qz9&*aO%FneJKxt=wqNuf(b6KsVAx7U$MdbobmGp| z!$u$gb5DxRD>Qaw8tsj#JbD|N5JpZKwA&@u$mp8JM4sBhLL?3veC#sp7fEs|Y$pL{ zkKwcH;2pd!pbXk73-4onf`mO`TC+Bl;{HBVmcDFbx!7478QAEhy-x08U1{;~Xc4im z)ccxw*+#ozJyCQDE|MiI#LX8pq9dGjKxw3U+?xE=uowg_s z`{|ISI~knbYbtEZRk0F!8pO@(t{SmADLi|hG&M0i%D41TXI!)eKe2|>e+%Q&O&aIj zZYlP(6F z?AsfRvf>ByxpvcDKQaQTyh$$;?eltxRsl7+goPixy_&K#Q~GpYnbteYz?f3gj8*Br z8vSJ7?HbgQu-bU2LzFhta$>tOyr+*aR^6jesk1Gg2^sE0>{q>+ z1hvYUh!L*9&bM`bn?(*R_?+7h{cvbHX?bO?7K^UHwfy)A4zt}9V0P$m7fEE~BX|QT zoAj*Wy6|gaJq@u)58HR=ukBp*l|cvbJbYDfICu=RpQmYbI+G36Q~(hTTgL1W#kp=8 zFIT*6glw$3ETKzXO(ZRNcD&OH?XBnM&<`FVU$*2|j)coI8@m3^#E-v2I0<+f$GAsh zgBpCc-I=#z>mofK`q0QVd#>EXed|5jnJMInr4q8~kR^uG@Z~heaqMj^3C002*><2>c7Md?pN2c2!Iqkvphet4p6Ol$On7C>;u{rMpbO{8-W8?UQJD>r{s|FkS z!|KIQ+E&Y0>M~D|e!@{_yUF8wij46B(O(?;U(`0KkeieT`5f-q5Fmj;aCw#^eH37w zzo$Ig=j89PpZ<}0vJqOoE6_{Pr~9y@Oq$9)SdAAxp{!ygC(NQ%`7*t$eb|lht)#mp z`9O`nzQNK!ZeBx{{$j+?q2PUj;?FuDyFb+$;vmEahuB){{Zm}2A1hboA}?9`nL$5K zZj2f1o7reRf)6mz!_Nk)8Ev|~ZpSn{l_?$9zx$cFHPmXdoXV< zpC4ZEiOv}*0wL-fzfTCa{&uBC^Yu1L%cNO)Lj5wRs@r6ALE=yNs%C=){r(Dx$@mmI zN<}reJaW&<7qDbJ#MOYAQ;3hsfh3_Q4!xo;oZA%gxThH|^|Q0g54LNRDZ#fEyjOpV6ft|<77iFL!!{gN_J?%- z($o&Bsgw&TbqtnyiUJL9+bC=6A9JCr%wz8m0QxzB(3c35w04~KCc~#k)yg)$xHy<| zwh73+Et4P`PFhW^*#OG(1+0lIk9#tfZg}6yZM#L?izb#hTayFiT5#upah#E625uyxs5Vb~$P+j9B>Si1bwP z(R+RUw4j@ix8}Z{_fs|QcPMGP;lP!SyC!W?DMadW8|xpY`9!5taUKiqkdv*6IQqIKXZ7Vq2w5l={Qf6YHNDhHwepS_FKDFeXj)sS1PIY%`X!4Umi9S zgiq|czEp9x_7%&Q=%&>|oc1s@ZcWwjo5D=HsykyTuxs8)k6sIo9;~o_)^cq1?1*z> zzv(6Vz5JvKEJ|y-el81aw;G_b0r_{|4osXQLPV;E9|uNOlg-VNVijsxS(1`ym8iv^xfhjykBi(o3UCz#@U2xwd}GJIe;Tx8OdD${0u=6sZ9(^w18CPt>Dr6pj} z8UehR;uzi2+e_UK9{o8yvW1wP=s$p4^c8oz6iPwxrno8U=uDLU<_Du?x=ekpNL#g9 zb5mc3p2oW^ee&dW2M0R<W`Jk2sxU?XljbO7cC~N)aE|=m?L6URhEuS&g$;`oOAu^ zi+gfUOztmTKoBf#nz|@X;#$uW;YgtHM-h^B@III}Aq!h)>A|dFRlvWIt+`VpY`(7Q z)Q*M;u|ux>CU)bPq+3gQfzZ2`W1mN+ovZt+}b`JFoxjhB2F6 z77SvMeq(MvC3A9bcOg74Z#a6~ZM{0Dp?UvUy|}nIj?ZT15P%AUsW0BT03Z`Hvn+RT z7k{4Sv1?swPT#H2Z5RwD8AOpL`3(vb$-|lCwe)tHF4A=Q3${LF6c^hAQHZeH{whaW zMurL?^N$ff)2K65FOVlcYKIPiYs<(hNtx#O*Dn>!?|E@Pd6p(r42J&&NY)*|*Ts6J zJAj)%Hd`p8{x#!wh3&^SHQ+sX>i-_0Cccai1|P2zO2YR4sXjnJ#t~6)3DPYtLpl@U z6B8#>q(T6g2LREXfaa%^6=WEaQM|7&uo42S1bps)834~(U0&n;n>Url2!DV~L#nPs zL_}o%4YX~rva+g(I|5x9m!EqVjC$?om_Oq8zHDic_E1nJ0yw`M@BXj%p0-N5g#HH4 zC=n+8W3OP!a;8Z!nd0y@&!Z6elH+rOKq3ljY-E|8I;5?rBab-kL zSg=#Pi} zPN8CVo9|N3-w+uMJH+O}Hsf<1p-!L9X(0tvHD{q_y{^$WV>A!lg*WUK`4HlyZ&^WtwwXnU&yfj9#zYahZt6 zTxJWoM{VZ0DQ-2C>QeY(R}E!4_Bkr-qIu3*%_?A2>w>!>=oyz^WVMEY$lasX+W$mM z0pA6n!(=>W8Hz}XL3z-0)M?_W{9hOpkZ)N5X@*xPN4O;@Lt*Ly>$vzV?oy>ewrgUF zJ9fWZ$?)cxxCH&g0;y7gEf}jV;Iw2d`cS4n-F{~d z2<@YG&qe3j4>T}))k0WEzh7Q%z zCX|?*`%O@jUw8@5&(bJJ1EwflXPb4xOYJ4;C`IvH!8QJ+_YphSH z>kF{#Kw?*-3$_e)i<+*1vxvW4s3S#xdg^vQweAd?{d}bQeNP7#-RGX$i;!!0m41iH zs7&^k$5@DBtl$LhJ2GvO^uv^?2j4*R-LHI>8vA4oA?SW>J$_@k`y!)9sWdTW*Dy8i z-?DH|jtuq;^L?~IRLDBkB(XTAD+_Jw#)T7kwyip3`i8!DnCo^FG*>57QGI{oVB345h6T8(RE zL}unCxACm&S&k3V;FIew_<9*oYoiUaeSDQa4eBvfXE@5MA?+w`$>7HZ3G_6E{@<+< z==IX{hyiuk2O7PEGjtsn%9C5jy^I}8oz6x7M7$yksjS`pY+wwDAFOmaJyvur)(c8f zxiyi6(>Qlo>HAK}m-%hZv?Xq~-dFJUU;RV?=}aZ8@U@wIC$R*eR#rB?@Ab=Q>f@Ek z!$#hAl|SNg_j@~3{^azn2!@(KD-bvsa~$avJTX5$6;%7Gn;v`iOg@r&zStl-$lBMRk zA8#2IKBI={QC+93#T!}AN9f4NZyG;e{8-Oa!FMYh`!iJ%@MTvs&3)b%x(&Lqnn&HF zA)|H6>eQZxvmHjQiMKx>_#RCL?8}{%C2fK2w)$o_ee+GXHN7=xwDWR~T*mz-gZTE6g6Q95w{p?4%8|ySY_-#w9R#abPY!5f5uRXXZntTNs2eJ=G zCy6W(M%q(bC9{IK(^Ev};flcMU)saTsh6*244(_)4PKoZ%MIEX@Lea>-kE&gV6B_$ ztEtxJc7C=2J(;CFe^)SAOu$+Fjxg;JQFbsH2VVdyH$fURi7fnK2A5)A;`B$k`x62d z-*N(IzDOEF?vlh^!3*V62BrFQO*S77pVr}Gc zVV#>td5yJ?H8X4qi!0o9wQP3cNA3j!JEoBj-gd1&s_O zvJ;IIa;<@@ycwu%TLhl+JrU14w_8IyO_DpyomaCRckRE$=5Ppl~ z^?+YjvD;y~6zU(|aP!AI^cyTIGhThFsvQcw$md zz~X~RXRB0PyuF+uaF@=>-{L$QFY>=N>Dr`}e@9fTrLE|BY6-=r_nj|=XqQkHSPw{= zoLg;;Ppw{2(BAOARTVECHBh{}3m4vnrw}x3=BkT&pqGXkY7nCbW^KKQBT=JIkH6|V zwsaQ%;;32JQj?Nd|Wm16cRPr0Js75kI2!1tvx}YIO#x^vU^^bJ;e* zZ)yc-`QOx*n7y1KXkf=3{~0HcOI>@zU7VhFj)Ja3*)syB1@(@PqiU%|PxY%h$anhT zyXP|#irRrDhDBBhWAo{{YN+>A?^^0#MZUdSr&+`R8vjVgaP2P{gE-ot{jgGnQ2?{#)^=H;~3ZfFellEs41GnHfIOv4*^XpxqLR zHYxR2&(rL|KoMpz44GuE6n(Z|F5(V0v%r<}tcZsPR9%u*8yPg@_vSc=%MA`A9#wX@6x`Ze&5 ziCXBvk`)_7wuF6qXYg&Pl+-2%$ad(D^*aX}uC)>kCmSl?>o<*|hDRRQqY}Tg@~gz{fWp4 z;MENP7IOo7mINJFomcY8Cfs*A)_Q=}u|nX@1t6xj0+Oj6Y{znkci@5Z)7iot%PG0u zdd1Z@uU6$>t*R9wM9)v`zy)o$&zbF94mf&A%j{*fSp`nvd)iJLgEvh~9UJ&g&A;Ft z(XAv%-0HZ>yWgYz zcJS*5R(GKRUe6_NP(bjJux#=c(q6p)2eKwRX=^b@rUAzwrK|Zo-7C5)gnW^Hf{|Wb zF$lmYPSbVc3km9BD<`kW{kFkkKyvP2q{_)6Q4M)5k zhJOKYgI!7DzJ!#H7lK5b9o451aFl=e<98qUhX_<)*n3CE(h;h1iT{$8qVV2(Z~=jG z5Zn4sOV~{943A2;?}!sGOB0P%_qsOITn)6Y_B>wFd+Iw$?8VYBByuF_^e$LF#7cR`6)vGAy#y+4MH$+!= zW$8=!r0eaoB9(UEAof@f1Gh$7oH<8(4QNED2K&-!=83%p@ZTEl0~@L##+ELr9LRrp z0w@3vcBgIp&)GMT)nB!`htuj!!y}=_ zZ5cq<315{MYp|L6vFw}_7DMM!7qbjGrHkbMQ#@!m-f)}d!gTW=U@r{v1 zRZA0B$DJYxYBydpJfDU18Q9!&r28}#2o&l=VL-+6IhzxS8~V76C|=#YE-u>Q((Agn zmyv>OQ5lIm`dn?tF2WuGM~&NiAqw0Mfyw%I@YCVW1fJ6ly-x82Pl5C`CV=t-NvSK9Z>R7yW8p?(uO>6ZEqA2H?}D-sw+p+@_LU z!RkJ+A&VWkCfN9@Kk2sw#OLXCsH=hgHmJiL`g<{h4fTw`m&%qaZ%k5 zp#&|c)(PyE+N$uhT^osI*N-ybOOvH#10CV@+mFqUk3S9Z$nqLcebJ4*A9p|I3Z61y z7I`H{Ol+1xgOj;@eGg^F__^#PUfehom|08pTRjt@cO%sz+30QSH#tf&0Qb))ao@VW3@$unwPbA7MI#7R6m zJrMak;O7SYp^1xe@)@Eo;(R9CTMBsB2ybzsiZ8^siJF5yaBwS`I{F5sc-YML_>4Lo zt2?yy8ul4fy?qt8@rPnm!MCg$Iz}zF`o34B#6_RzcmBHnneau^MHW+DQqn8JN>hsl z`>pD~x)1k)g+hM}4Ezc|q+9G{*49RGRvnDFs0W1o4{cOEJ<3NgH%3OrnTp)p_Q!w? zUIW_Z0;l(_>j_mZGKf*D-q9xVb@VZ2nk?`;UzS+VO>Iq-`!VIHr{g(iUwOLlc5^|Z z$3D=%ca%pVB{fuJ(v}vjmn}(UzLCQEWX!;^We83q?7CZ9>bXCrcZ#nUO^hqMf_8hF z6-EAy$s~k>IZRVbj-Vb4BtU=>nhT}VB-3+Fs-JYF-fqi3>z0W=SzS#doD**eo2ezQ zU%E`@*;st@{<&8J==QR=UEZiC$|U=-!u1?^x}hK9QFu(|jy^L1d|eYoOqS8JyCwGo zvcj+73n?}T^(sK3h`oqbgX|@j7mHJ(fCOms;WE+zKRzWthT`pA z01Q#{KQ|lMf6-ROw{i3QsGi+7xWjdABja55fHUs@vG?9#O?3U%aBNrr8!7@)6qF_) zC4h89n)FU+5rF`qgB0nCf^_K+dM9-0Jt_iHLQUvJs`MU^(7r*?=eh55pZA>Sd;fjs zy11^8$;|B8v-h6gUca^04&5s62v%-=cD*I$DA?XjSsA9rmd;J@P~;U zGYNPv*~>SWMPz1zs+e!(Tt+PRD&G@7sNoP5%%IWL;FIU6*E2D03W7$~1(uxN2ZSMz z?6p}9UZ*#^k{WMNxItVLB@$w5kNnwud`>BJRlfWOM6%tgWj^}?R-pqwLCX3#XE#e| z1WT88dxc6@%I%J>iSWPACpnw;5lgxpWiOn+88j1sDJaKRXDk%j59`G?%9oT#Kwp21 ze}v-KzV#d@F+it2ju6uA?$sLgt&Z;t_uE0bviS^&6OAS*a_CXW#QT&N4j$8UQplC3+rVgm=!l`!eotsZD)v#4mm= z$kWhPr*Cmm0{r&!)^r`IF8BN{Pw=;$BE<12JPrNxpqy!MdI*fS)4Pwjf57a@#g7qe z<~qe_zuor5NG4&#MN#e;KLhcR`XC2BpV1o1<1FSnN|{r=8c+CwJ`4CC9c{C3?_|K- z3V25Nii@)5o0;k71_m0ljfItDj`xG&C4O;?0+c3ab}dKyqwTxgA_m;BbWM%wvZNim zEqa3$czJ_M6YI^(^rVN=VoPmS9Te;prE0P!SS@?}#u1Fsx-958ihW_YyUz@0*#K6T z&EC&7fYn9$*ftH|AeEG0H2w4b9meRr4Z2so*)4DdY6o!4LfL#R0Tt~Jvj6ncI=<9N#fAf@Vh(g$0kvqPtPfP~@_iJTF z7ZGXiObxz#{O!wI0JQ90g#TRYmI(tg(UV$7Ff>ZBScYQXKLvoDw1@y;k8Wx7N%2@x zawEg9qdX-k`>Rz1$`w#B2~wCAOkKTEL~dw%Ekl>u9~m=QP-DDIW8mBW0darg`AFDG zZKn6(+W7AJ4@hSGUE1PYf7WKI=wZy_a%Dr~2{zVIdH8w#r!uE83l~aYFEY37VV+H2 zz8u@~V9CN{TW&73&?}X=5VGsIwcW#?ih`IMa)It!zQ5AwKufp>q)&Qz9FJk?>?Xm8 zNgrc(2->R^FCV?V#Q%m$1C7{Tg4h*Q87!+!UgS7MQ|b!%_rNcJl&@zpg5FbPcBV;9 zznB65>f`(Sk6oYaTO_*yg6dBoxxWO&VIF`n&=o3ypMXaYm-Gti(A~gb^7WbX09rP` zu&}){hEf=;c3e5i007EIv%Y*F3SMCY;^69T{*{`IBc;S}r5(^#j?~7nR&|xS&Xa*W zWk48gztGD9K%S#DklM$?_Z(7awlZiOa{5t621|%zWn<^G+riF{*P3lojq*E=a{-*~ zKLJT~ccwyOfjch8ZFfs>qm7d@t+<_!nUk{^igMrI-QM1D1p>_53_yTs0tD}3-bBqU zEquF+#i%WSdacU`5U<+>w}*iM^D+hZV$DW7KR{;iks;Nw{tN_|5&%^Zj>%eFG%tN@ z?ceYFra$&gf8LA31m}4qoa$GNibOg78*}-%mjB|Yl`NK*5E99q;TlXXV;`A^mF$7# zsvCUt|2a;g`>Lp-)MwZk==LA99`=EdwinNW;y(y9%=4o8B;np?&mN%9y%bsgTzWIq z6d>5I^Ha$d|9{^l!EV*_t`acUZo@-D~-x zmRAL+{hoT+M3y&b&?SW1Xw-a$rT8JF)S_Rxh(if?B>p_8Fr#3R3%1%+Gr8A4iV45ts2dhn@vcbyD!sm1d;QPLL7{&gWUSOS)74)LOGR#&S6UQH*zqh2Oy zo)h)=kqxmjlT{ot)r&Raf6%5EUY(3TH?(wKhh*8a4_VJUn;3h@z*C#Q6s_^F$$3@# zEUX1g98)RU!?fY`12p?)t46W*uH$-y7j7)*t_KD2o;x^Ep^ZK_i%@f}6{5g5)2B7F z)8Q40Zf5Gf$nx{fZPQc`&8rCkwgy)|@W;Az^Z*CBJ>bdoa+>^ftYJ!|ib3cruSusL zmw|SXHn<=3Gm4jsdHJmF;rR$u50p~1>?hIg$}^NV;brtzxNuS_)>Bul;_eidpZa## z)-V|UdSqgdZEU?jVE**Ar=w2nj^AWi9y!|LKI}aMx87Z|87xCD_r#pD3aG33$SDL zx7C1Zw| z$G^$m5h0zqg1)!suvoZ|^S3SNWF`dkzVG`(8;QY3cFE{U){qUrr%Po)yV1pz zbf-EYUh0Q+0RT0vFLv>hksMy0v}89`rP99nlaxW*bubZrRxp_`-}HezLB@9P;k|4~ z{t~xI*bq~53s##vTtb&7_ZtPu+4~`R&oFL+5a5A!92~QWq*-ng9ONfaxvJ z1bqin5j?6m{M-06bU3re@co`{hlDwFRYffTIY2*@=(bk(#c$3au;~{?(C&MR!sXsP zcU<$1htoGFft`8(*eg`(8#`XjA z$Pp4p{UkgHy>0*6`kqzIbhdn`sKUcH<>;Ra4S*2Tvy#A< zC0@B!6o%g(hxl=RIUj)c-6ST?g&gKMjq3*cyZspB+8Joe3D%0nr#)&Qqzjq5kK2Bxd|BNSO)k={p_MQ94#e=;0QJmV;g5QO>1lTE>Q_fd* zo%dNMZP}hV%&gYj*q-BhyvQm<`+kYgy~Xc7c&IvU6?yo|P$Sg=Kf4CO)5@6fCCz+h z@!7U?FN3h61_sp8k8Xr`f&HnIeacwGHviRoWtXU_T zG3_5FX}-sj_pXyvn^Z3W&q6B%&< z6feO{FbV|e4PWH_4WI)5(GuXtC>uhKhm8PGMmR2Cpc+Z9uITg z$pjebtgiY!tQMPWmf6{HfPleiU+FRKD0e+m&+>m3F1Sperlga`im{B*+*e^yBN=$7 zb#=0O?8AKXf!eJ7i;)|zCi9Fd!f)8q#;?%0tS2;Dc-TtQ!H9bu$k=wFT?(`Km8)cF zrMPdWljM97IZvetK(_DBQgmD$h$+drS#(d=rDVwd9EdKYt=-U0M&*35?$eYpY8B5O zjJcTZ?_~Y;F#Fum0RyXqM~2ozmb@0$0FDzSwz4e5;NfrsE4AZt&5kpMXDIA(%ST=?wec3nLdHIK9+>TDzFrjW5@7zB<#QfVY#&X{jLZ_ByUK{rcXmSB?g zS+VE}OOr<}M#J)e-sE80^n(XAF>Hq?$HSD!GLG`N6PXL$9v&5Vp+qO;ux_+uPd9Ju zTNUzgDJg4e{!W58P-3#!rD5C`egGQTj8YTg5xa9C$RQ=hU7$hp9GO%kFj6#q>v~Kg zqVb^M^pgd6>sa|`QX)!wx0`eWeK$cL-V5ev#G*9j3=NRh7o+Molz{=l;o8!!JJF9- z)fon`*>Lr%sEj~r4xK<+aJ)^`;!Lg>WO+k>Z|F*ziAxKL{y@#gc+(-;%5u3j(^ab zwL!&nwwD6kVf3{@Q=2v(7xp^FtB7RU2Al#fw^Bz;(Ln8*Rj+H_nIyCKs;@t5-A|d! zFNo9Ac$?6v!;3yW+w!%Ud6v!~E=~4F-OqNJi*fQp;w3A)z8)U3r;aH-xhJ`1$>5H` z%?VZ(X0uHZ_NAlT>_d0MQ3n+Pp0l_Aq@ItMBkzZd?G^HOH+J&|SCxtzJxbNWDCPgR zNJ;4>{$EH5F!gclVByY4OTltZRRS{VYQbp(AfO}HAI~C8YVEx8aLp{wz~fwU&riSw zr(Iw}7Rd4-=|g&M^l5;qc>D4<`L^dU?_SgZvz#+7II3qYEiD0zWq=SRQ#Pi%*tla^ z+1a^j(!~TGt2cb#Dv5C=;jtqe8%Amb*P5iYAHur6d|w}1z6Vj~qOcp+2xQdt(+e!+ z7&8M4giLI<2iuVf${YTg{OZPTU}OPKMkg^BXEBOXZ?C_!l#<{0$qkos!L1hIuN?&n zRIxon(HQLQN-`dD$)azlaT7z>uZWx;2^n+G^f#`B7C*1wDEeyGbIO@#;dbJpdr_72 z-X4DHp2EvyyIcTMsAps&WH;b)wE*)D`ejKx?C% zly593O(@3u>9f9+U)%%E`~rXt8Yj>1SBzO~B}4T7%&a|+tthH>h;nM5CEXnXeYmY+ z=wQbkaxBCV>3+P>XRdf)k!e=VtuAN=4;ZM}*=B=l^@{IQ!cPy29^W^pbNS9FancHo z~|ET=X8NRXzR>7igM1>Yu>0>K?jj=f9Z ztK)fz)Z2QDY)_p)@_Gh!kg%W~fFI}$mzwr9#Z0pO(oA)ZLwt5t_dR}6C!QmyII$xU z;oy}=zh%3U$d60V@Xwx_OsE{F_iY4NT>U!XqNcRQ?7py!^xb`6r*_2w*O%z9#12ZS>pj zXs+)eM3rnoK|*PvW5ykQpjeS5&c{kA=v-1&m>94!H zdoYzCz=8v&!=pfsC#a6%Q)6J`4Z0^C&9WWdVe|?xV`Dp><68O9@`tPRoeTqBAksnt ztVzb)L#Qy|NAf+=yC5Oi8^D`h9qT86g9N;On+O%A0OF?3XM}PfDgBbpv)}8YwM;BW z%K*U^h>OMLt2Ov+d73$)oN{q{QUq{}@@)V^*=|4}Zpv0Y3j~S4bC5_Sv8Bnh-gr!# zTN+GM3LTpBuO9-;sM*{*4w`K(AUD$Q9F3`Gc`O3op$7bC24Hs)O^k&Q=?bQ9FW0P8Eqg3JPB9A2P z(RhH2YqkBY+Zcv-ZhiMXXq)GN!*M;BR1jt0!!6rMztq3BmlDcI$lbhid|9cuFiftM z*#x(oRx|>V`u>o!>_(m+F|~ThX&$MT@iP*oPfwG_^0XH)#=*3fIB`K5LwnjgU%nV4uxG;>jp0+5%K3G*lXA_e+xxs& zpW^~b$a1jOuGgVnckRp0f;t($Mj@2C9;VlzY?dzX|L~MmA?A9!Hm@`0X+~wCXwci0 zX10Pm1A0;P(IJuC+5J!ge8UH3&zxrGa)p!X#m}Ysj(w+wsjo$8jktwN1===E8$OOT zdFuHEWv)w8U0{@b$*7)+B_)IVB7+C*R1a2I*Ije3Vy1UIrt$6UUSj+DBUqhVG}AK3 z6GM`$MTSLR^{Kc_&V)$+06eGl194{)2m67zuEw-{{gL=H9B!h)l?#~MDNV;rP2-AB zGIhK0&2C~mSYc<2q~QxV(965H(hjr1$}ORN9%E0xO@-R8BP2HNDA+ z1q&4~Jzkp}4&e!6f57_)R)K#h8f>MPT>zy}cl|7G%lOjXrKKq?eOdz^v17_N1lP(j zej9(E7vfdd8NDtD|EjlZ;k(8}F|K|VG|M$1h0ZeR9p_f>cr-OLBY&{A!SAgrSiD%S z%fK1-s@Ji!iF{%EJXOIM=M%JCqz&gYNfYhEpY+vij0JU@B^e`54ZPra_J!p;)@yFY z!umHx%(hLo1Ml;m=>*?y?ka3${VAQ0U@f?9!ZCCk7DTrFVbOTAa`5M%d+*_Tle1uj zenX#n`$kN*7p|p7UuSwnLT^%Kva4U6$3HbCrnb@ephT+RJkRrmwne=|ih{## zHoI5toz{4EFW^Ao->ziWrY@`zqpcaOy%Q(bIAuueYyvi%AppY)bjuCDykMu2eV9JY ziVzfKIYo2xX_gV-cR=>(;a2^0*pdfcv!_Txxhwa~(wM$tDt`iW^Jfo5EJl;Qe7U`C zMVJ%!aX%1sJ10Y`PFq7Ddg^MDj$*#>NoJ)` z7VQV!Xf*EK>4T{7jt#2CWD{l(@6}n5M?Bu6=Q-N|bJlJb88gOTDz_raWlyVuNQrY| z_XpU-avH#vQ52Q!bvy9MtzFz^-gaBJ2p-ngpdB5A?VMX=^ho01M2$hb$K#M6uT7I2Dqg|6nVhAb|9yV~59_=DlGDD1`H2QIW5- z+pPgxG3zb`?z5^Ihke-k&F{H}Emv;Qb&B~**6?lbc9`%8-4dh;!*yW{x((L$v15*N zYP6*m9)*oCVwr$&i@9Bk52yhEH$Vtg4*M7`2A`JVuHjXLSpHyG+wu-r= z=-y_mcaQr_=K#330Lv^*+=kttf+py(Ev^m>|6K}k0)Z6uVY|%hDy*tI%Fgs4!Q9!(W3N5wCwKRW99wBHMhk9z&$|w{xELHg> z&oP`p-2`cQORFnaW7%jzjk|P-{4kg28gVfh8pSe_%|pX-FmppC5S&=q%IRj%*+7K$ zyFi)1HE{gyhd)>N9Ghxz!3WzM7Ek8_7$Rym@67M6 zMAX5!MqNu)t5+s|0t&*hJqHt7w72lSek}KTwiW(xYOHVy1;!342~bt*o4p{W3M*UF zUmPozqhL4mBoD)1`H9HbHxdryI`z_0f{JUA1N(FB-hh-{6Ek;t<{byzHy?K%i^&HA zfqfaK*aqk8hJ7ga4~;mhSvgVwFBC+rRF=DRs4m2ntvS*f-7d!+l+oo^>Urcj$R&6= zL@)G>tkwLyra7J#Sfo*^ABBUr7PVo~y(?Fix*l#&oSEj=;OzZVmLxkeYFzstQ;*V|Aov!4;k4k6M{6R)F&~b za+fk@l;(&&zGnx}5uCVOYs<3|1tPiu2&pa;o3i8bmD;Tp+0Cz#{4UQuz;K095gm3p zmR^s+`t5*WhcVhUO!~a=(iTO@_r8`YE!sLa)918!g`Bl=ha2~B-ZLTr6jsX^;h#23 z*LSbx>W@LWmdwsPK@nSw6hnzmiDVkW6HFBYx$@$-jYl6LZAVxAWi|L>cmg`3Fqf$d z4?;&An@SK*CfT(L_R`0wzdKGY!cB=?O?uMG@Q|4L74A^p>NZxy%$N}TrN=GRab~-= zik74YaTZv#J7ZM&mPzDXSUmoGUzrMaZE^Yb^B!)_a5p0^r_kJHqgI_-nS#=E$9Q3} zGPW{WGo$9L7NK0fI&W(N(gG_B-Id^co#E?Dh*Kg_*R=tH>-Gbi7#v!3_&g1kYdOj- zj+n9&$);>HVSuE+`C?>Zw+s=haLE^wPVU&CDyLmGqXy0f=k8B(FEtMBBh|AG&NRd} zF!u&-k5oOu+7t_&uA~4~)=)jGg61Tapp~PK-`-wtu9g^d+FiXoncTQNqExk9o-C~? zsUVuc><~GlzSyjUa zM$A`L=QbN0*jn;(F)RG0c4E!g4mJ2e*0XnNoTLOSw=9U|D@*UIa-H#HeUO2XGIqobWawkmIOMi%3TAPT9&-YD>Ko+cCfDtJd6n zw8DLt?MFdaFwZ8rCO3gliRobDr%A`Cc}DEe?k!yn1CqFbjXr4WB3SAmKz`b+c31q6 zA5y@WUc{Ky>oOzfKrEbB{`3Me=*JI+%XX?{#POjC+|8CvOdBkefshm?+T0>j0y2GK zb{l<}O;`e8u=eXVX(KT}h8BO5-mzoRgg@bMZK}DlvXYaI{SgEPtFKepT3Fz-H_0$P zL*P@1OmBGaqF3HqJ9s#pXQN(6?zlsYKo#%Vn1!Y4NWm7+yvh)m!9H6iOXY0UO~*Z_ z1-p(FPO5`!!)r$PjE9x#>MKQ+%_3acd_$vWKGr?D_PP9NAu@;_$@?%Z(D>>g?8!=r z$9BpvF{e+7T2FT>lbo!Q1^>IdoIGz=1lwT5Hl|H1A#SN%d?cW%P)+6Hdg{gQlH8u% zETxxk{oRX_@hF&{pn3lz3m>`+fd7PRD;g8xFfREhMSp81BNA35G*~v$yqGHEp!R^m zv<~0hGx*H~7A?k^DmT5bR{lO5*BTzpBedm?UK~x)M=dS{JctMJv83|5#-l{jowJY` z+S1&IWiRv0yLpSWR?NnnZbPC;YVpn45BcXQy`is}3=T;7mgXLogq1o)TlqfMrewS7 zGf=u_E;iIA{|$nI-SYBZVZxNeR|lLk)NULWuU2c7H!2@>iC!XpX#d&lJ(S-CMMa$(IWO|aSdTyuLdaYa#_>wB-BXiCD99cCWbDc4 z7)`}#O3=#(ua`FpEX?G{oc5y3)5uKHO2ePt-5y%dGt3m@Y-P>}kG<$*p9-k%x$j`E2Wp-io$yb0wP(%zs?3F7PxM_CO1&0@AA+>A2jwYcP&$xS%x{SxxHr6#-COg z&Z0Lvs5EdKOVDJZTd26GVs%(I4S19G-pts(ZgnFaS}Zb83fpn$|9N%N{qE>Q%nJEJ zlwgsd6pSFLXT5L!(p+F}MaF0EhZ)%#8jn$C=ykKMvpvrJ zsU>63sIPJ5&em2Pf4;VDNZnLuvv8T!hErFK8Fkg5)Yo2lDvO5?HFgcwt_{L%jYe1H zXy>%))Oq;|+tfXBZ^eEZ5oidzzo;UfY3f3)me{r4X;9s`6invUSbKfgSV!O*m4Gpj z7;~Iyg~jgR-ROJPOV#r7{Ee~=-^y=Y?0IW;32c9+^@7=ZUuNy1-FUz<^syM`HYmwV z%FN_K_Q%PfKN3I7l1hu4FR+7ykKhYw0!9-h_~;sfI9nbMgC5CkNQJr?dlm+#=E7+92=K$du^QNyknT51#%{^ zqh?LB@=}0zJpbx$`eaFFMjp4>f4=;Jg8$=@HR1X zUD-MX8s!EbO8F58%HIYz&|21f?)HlA?$<<(BQ4Alh0V=99V}POSP6A`O=y?KvGXA_G<6Rvlk; z3|5wH8yOij-uRm^CLWW^NdrFPsVV{Y4$tWRn8P-5J9&e{=?W4OCx!M5mxT8+0_$){ z0Dud~Ge755Ju^3&^L4bWW}Hb|_(?H5<&(V@5M-%Rib?q~uK`ut2W3DoapS?z2XF3< zx7(Fk09vGTBg?Fp3iwk}E`K-En}=uFGwlE4upJ^>6y0!G?Oxf!4R)~{6ax&Dn$iK) zoVtbvn@)vdT{jf~fQ%8a8xrvWs`R@M@cVeRBP$;`bsCKF4W`Wx^UzmI8V#a(2VBn@nv0A9 zq*x~8$e3LzbS{8IW&I0@Y6u79dYvDYxxxJ6=woaa^j-1~uGsaYnA0Tv-Gg7K(CPy% zlVfWsP=e^6p8y6uU~FD41Eb5=qnI3hF zmL4~|7|S(UJXj{BcWb3@5m?A9BJB9up>r}&d?;`uOCtr4kxPQW>P{+p>gsd=-q_LH zQ-U{Qp2wUNLFC7HZazd;{PPY=UV68UfE65z5acXmbeU<#MmLCBg%Ny6j*ZR z8B@hc{ek%IN+M(Y+SX^nqatpSwL~tcb!>9SipIyERD8S$(3XnHiCQn9*JmEGwJ50& z+21@z2zOIyorGsq{%I?KBOZCjDf)eYAH>1I@iqLvQ5@@8=A@-P71*ZW+B~LCiNpzM zr4WEVfe(e`hyk!|dgSo=&g)wK1`!A(hP^=@u%QlTRB_%~9MFBHpx~(7Cp*g0<2@1& zJ}KXd-C#jX2Bk?+qrrGL*Kw768j36FS}7-2Vb8l#o?pb ztmGj&F@R=Pxil1L=uAL=_+EEgg|qJ7=~X`jf*gzyl828xzV9Hk6py$lXV0vmTENrI zA-A!!-Y8q=@FHm*()OpN9~r!FA9cO7zhkb~8Lt8^GK!hK`Hp8E8BWPQWMbCN50AKc z|0+NOKH6v)%f5=&-X4FfaMA`m^WU6c#7?rPG-c*@L?0}sn z^-Y4{8kgl&p~k{OgOT8tZPQm#2lLfJ;QJ|J{Jnx&bsZ=sw`n<-%dH`!V>>%(%!9oY z32Q;ziTMX>hnm%po+AHDH>+sGjfSA54d~UJOUXj!r_Wu`*xTg-fByuusar>=`&ZFD zb=PIYTUO~4WLKmbiA0it;o-Lnm%a$w#&fJKX%fHt_t)2x%&$Q-m!6telKYAevu(!h zQa=e>N&6w!MSti;Aef=LpcN=ZE$|!NKQ_^OG_&z z3#{D&th?}EVui`+GG!rf52yb#usOraaO$}NyKqD^&o|;Qzi%<}qmTCRBvIDz46C@A zX^dRtCj#(wOK52nLv@*0IWf`)^U&zql*#I+Mb2%D{J{IdMT$s>qWMdcrm9_B1(Q=L zdpeA1wVPv|wH8+`L7oKtXxt#p`8aPzWwCET(|Hkw7fG8z9)5I$^a7SGlwUc521jBPS-ary-3s|VELc8D2yYnv$c)x&$W9CONg@XTP{m| zZoM`MxXZVkZ&^~7-%ejIJEg0+5vzR!!iLm4o7NM|);?Vv*v_ypcgQ-Jriagz+ka1Y z)Xac26zrfijzCz>!;5AbMiMERre`)Rda{J-QH~Hr@nWEll;Yen3anj*jL956J8t56 zchz@XcvP6F1#D}w&t_H$ySVzW!);Bfhriipd__-nZb=@2vW|7sQe%r%PJ}%l$@$_1 zr?03INJ@J7`-|lVZ>HPQchteMZjq~tYkMU`rN2Y|FzP+fzAnqE>qL69`8CD}sq%p0 z#k)Ksf~P>9Q2`<-)|(wn^?{5O;>~W8aZ~?A@rN9y4Ht3uav-fmH1btl6y=CG#}RUkN= zhHHOR#WG~)WVdtaJiFpX@|8_$GGlK5lcn~s7RMGJW3m~8rQ7Fm8CG=8h)AAK(hB-k zLLa9N*4^arF;Zhku&i3}x!(<=|Zxwc@dWnJDTW7rWMqgV-6WUc8?& zhag7vC8b#LJxR$U&-V}fJ1w7`S=@Jp?}|gba(||4EM0ow!FGQCiRCuSMa^348SkXG z#Gp>o5X5J(Cx@3zWP*h@sWJmDZ5F-K3I9M#G}JGPn&{q?VLf!(Ig`gY>n@-I z;RH4cQ*Miom4ZeR zqu=I)6Ss24WDz`$-8Eyf)w|Au7cW_^noM>E@oZ-Jmqj$dw=G6{cKPA)J?^-T5RQN$ zyovVpK3ByAn<6%A%zjKwvgq@7Vea?2i=3V}X6ac#A}gx~g7!b(M89Lj{)8wvgsl+>>m+tEYPs;Krhkm9qO;)uyLvC6SJNHP@=Ux0qM3x5Z z<+JE+?B#``ZDEd4dp-KXXrqFdla#OWQW3e1t48vzJuNenjPr^aIh9hi$&at@Hd=K) zSh?JH<55|u93X{^uin$n-*yJpdFZ`W;g0ba-j2JAe?A4~e>FBNZV?;*Jeh1N7U3xS z=zKNfmj_6`pbUi)p-rpNaq$6eQ2rxu2UnH^LK{kCncn}SNP44=U#C}61sIB+jBf6( z-ZlGFRxtk=vC}vyyx9W9Tio}sbkS~p-Q!_Ubq1C=UQR9@rwb#M+h|>{i;TPkb@L94 zCB?ig&Z`=jw0&h340Cg(#f2$bTkxwbn}WNAmo;MzO#46LC(^tg;mPJ7v+f^Ua~RMt1jU51smNoo{$5 zA)O&CK#t41w`Z?Z2dSCpcaphfkWWRrFu2)4UhxJaY;wdnEZrgPTS!1U`q#kdS14)* zY`44}9df#Oa}(GNVN;YOvULW97h>szomc5Of`}wvjBtaNzGPj<02WyckU+@ut*l^q zhK0Wi`osqKkdJBL`m3VE!U{hS1RrGU`5eLnsNs=;{PB5sG8rVA{~AP*BAO}~vi z+5d=OtSnY-;#+0jNY<83xcSAMk+ha$rBIW|oI7thl$(&0b0U z_^1hnzZo_CtogzVZ&igYl+i<$?L|8KNds-|p>t{O(hO#}xw~;h-BUMu8erjI`ZX0z z%Pp!JV98o0+lLW9Eo}#dttm2x2tJ*|4dH@5m1Gznrje_XUm19*)U##5!_zIGdic{z z#(lHrrrNYNPv7z}Op9C7W#86<)V9t%IMbCiZ%%#35BJXZLf!p0a`pn!4f=O21iU)A zN$_knBhJA@VuRVHKx~nON}IzLSbSmfLX%H)2Wj6c@Og;sI0cF)N0JFV&EN|$C{FUW zZ`OZlmkd>F7FHpEGLq$8b8Jd9i&KGiL`a&822@>IOuP?5i*yYd@zoaNAG=B zngW;CvtBU35oID(UsOxG-y3>!xnrm7l=bT_%DVQkBxPXO?#ZKzg}R#`fwJqCwFPdI z`iA=QoAa~_0bsZ9kM=I9l5LzS`5+2IN8`Yr1_S0m_wS#3Cf(4& zC+XpIE>sHFeptI2WfplWLR#NY`bv0|_WTxMa+mL(HjFoU&EFlDPVkPGd-S?OOzelo zkK8*-j?2#D@ntekXt`tW3aM+~ul{Cc>7)Bx64$vx7vX2a^R5s%b-QLV_eDR@8QD7B z4oWTZ7|#U17?9%ZeAYF48A`#sUtLeh_4?(*v};*iUeVkY+Zus3a{Pzd$vnMWkAde( z^1r}l#qlKJJ3RS&YGmZ>;yV;3;izYids(&bY20vGvIAK+WL0F5(h6iEfqA&}+M7YV zGc=+7M^1rmSyDxcJo?-)hyF(;{ZYJ6I}jtNQaan8r`y;oi&hX-@>M z(`K+cCmBB5-wO9ou%haG5ERJ6#!`WmRRn;2mm93xsE}W}bMl4dT@?T)vS`nkk*15<4Qz+JJVQ<98 z)W@N}^wlD#0CY4yX>Q==2J~XKjRO!+?+EKwL$J^V`vZnohiKzN!(~CaT$Kj+MJl7fJKE@y<>C1cC*OSy=KZ>JdwZBOSUjUC`)~AictBQ)&A5XO8JDjQ{)1g1y zs&omtH9S(o`1KLq2JEQI4hRRX=WH6NcK4a*SA30)8I`F~3cp-@8VQY_HW>X0=u#YO zC!u^O(Z5jlV&>2m1^atqqbUInCG~MONg} zV=E1p4r%`@#!Fq3B$PUx+~nX>R=|M|82XLzO6t%qa=G)&ENsWiw)UOYC5bjeX_I+8 z4d*EgDD;l5D7x?Lc(coL<}zs3yc-dls`mn%_mELfeI*tEo0LXeaRmxw%83M`8xS9ZkT$?8qQI1bC;10J@cnINARh+kKMxG%fAdj9A0U1qzra$$kXf z<^SD^Ev8BvU7!N0=Yf9SJ(wOx*4K^I?fsc{I464dJ92DVk{R?39%6sm42tFtf*Kc+uBM(;ufdS!dIWhpSd$&%E-R?XKBE@1bS;m?x6BQM}bII+ZBq!@S|a@z0&=9~?W zEA2GT&T*=!D$^U`==sqaE3hya7eHjdB~;QWo1*?3jA$U zOM$9ay#+=6#!QVR{@}m>?KYRPvjAuTWgaM4qB|ZLcjT=Ii11{g`0gl-;;zXL_dg)o z+bUSRDDzQ`9BqYSzpS2tPc)|8LikzQwfd~2{|3F%2MAjK0AEo7p!?A#LjS!me*iEH z+1S`{*_;hYNH{VOu^g#7g0dg|25Vm5I+kuGF#`*u{5lRmhk?rdwfzs)c>l|vDXA1^ zR7KoBckZS=oJ&(hSKK$+i~*TtrrdJ^7qSs1BEV!Jnrm;2aBx5Io|e#wbEP<3oj|+- z@CH@Xx&A=!$WIX11ilJ^b8;9M7+Ccbb8xYIU|(e6i;SNO|HocZ}Rf2Aywwc7`|36VS|Y&0l6G#*_-*3+g;_}#XQV3 zc?D6Dmx%r<`{+qA`{U0tQvtoq0MwgO2K2UHWnh^f0hxo3*0tY%@}l$@MhBqTUpqhb zOvs|i7r^K!GG$U0+SEj+jG~j{YFO%ib82S+ME3Y(Am(3d6afExVtS2f%ji3_c0A@c zgFrQObr{)E=AOTO*^YT=9H7uM-`97p31%M)2cvl&`20R|!YyM$bbxQz23MZ@z$Fz+ zb&Zcn>OJcZ6zI5)tI)H&0Z1swcf|p>4pgn8axydHhnRu5lsly-CHk&*ahRAUGt0Fd zBao;L&B@uGMl(X?VFbVSd&<+m;gKpOI)w`L9JUW`Ma&i38;NfkpX_bFdz6m)wTaM+ z|LGEcLxzF<|JbzB|L@`2<7+3_9ePcl-&($L<~Rih2nE{zwzyJc@9=Ogtjg^F4}N*_ z^nf1r2+YjF63=1utRq3NS_Vjk0Vw}*5rFj4@rQqV#D2dYQz4K_`_F!sk^#ih%rciQ zG0kJLSm;|%&Yf^g2y6z=&S79=WY8 z`lr49=Qr}dtQO#YfkM1X0UUT*{}j#m*hCa4#eaU?5hVH7RcUFW^8{LHlik1yTsb*8q^vp&P>X`Urj35x{x8M-85c*t*F{Af27Y<} zu)2thnWd#V=Sb(UGX0p&f2A$|$$fRrR{La7O(L<5M*P*a;N|ZZ66l{~ z1^;np`&Xa*_W>G{i_A}X+Qu0ku9|E9du#$J{2HN?k4NZdSJ{i5L@nHE*%W?kVEg)5 znadRVPMU_*M+Nje)1^y({=mz2KSLg^((?uwDzmobSfF(^xl$VHWi_tZ3O#VrBR%%f z_G#lwFL(nOVu0Zr5uMza$MFE5;h@{1c_CN&FLQOtlN_I#$~X}*eS?LKxuy9+RP;r% z$B(z{7ASz+?yv2;jnWFiRc0vcZ7%WgH>+=^(qVGUIc7)Wqb%j`BpqjH1OlArs)_1@ zjZPI(CZDu!y^wHBuBnmqT9GrFr}QX>J4vqAFpvM*Aqwo-kBt4ijXCMxHB8Bvw!~<; zc$NGyTNSxu>rs#Z>j9?CB+?YaPRoAW!$pj*Tft$Q2Z=mBd?zF0tSj)6m{w-hq+ZZa?bn3#(UG2%K!7Qv`V^+GZxEtjay-g{to(tsgKw~q`n`#L z0h4{$lR3y7E2VH^(y?0d^pE}|p5%8H`Y)aVCpZ01%_w54OOo1`Ixp0SX5HjDO)BJxE5-k%pX736wlhMHa{Na@4DGF4=+>jk-!TW9xh^MkG;V#pD8-iyKFnl1@%7F| zO+Z|ibDjE_)bICf0dQ7ZzsRVY(}r(l+U~6yHLl$|ei}6CPirYW4S)vr)ehy9!u|VO zy8B?WZmSYVP3|ZVBLU6+cc8@_f{{fTd#dWxJa)H#USh{q#-%_2Y`C$;Wnf)62_Hod9<@xT%w zn*S<W63H*c6uN-)fu{01th(D(L-F5GTzB&i~jv3#1;3zjq!Zz$uNavbA|U}R5g^8l@)8ALuwJ%MMo~t%be^@c%F#B zssT_2DO(m6FBgx<%n+7!YJI7CNmG@t9|K?ZO z4}qK;51_Hg6T>D@fxk14C&N6`Ee!mXou4g+_xPyqZocU-!{6;9;JP&05H=I*%o20b zXZfNkfQe7U{h|a&jMwh(E|L&>6n7FV0Y(1y()^VoXWKC|2(2QP`Lyg$!0;avTQIke zudteR6q@`v3QaJ7qp<`tgTs1URa((FVEVzQXjYwmQuuhWTqNWU3sOPuGNoF z)-MX{?^{Z^IUX7zXDfYt!=J(?06Lj!xoty+1h{)f#KNL>W@8$+kZBYI@J!^xm)nmC zN56x#qy?#Gy2Sx;zT(OGl#?VIc)4DmREd*oiZJ=_{&o!#$^2LFA})6{f)RFE1;ns_ zZ0oW;zO+aSuu|Lc$A4=)>0ln798t$SNO49|l1Ly8dtP2%qunQI)c^GMIO?^tMb3gw zip0rYTpdd}-gmSCpLOyl=PQqWq!vprliC;jE&Tc|aRjE;IzR>LxFQDt131hDopQi3 z8?a#7(mHQj)CcUzJc1~I&4yjM*qeGUhy4-{?hq&3z=@3c@d5El$rVYq|A#7LO6|58 z@>5?`@xKX73zfQL|7&D=6yzi=q~t@+r{u>-D)qJb$1RrrLnN9Ch&P|p896_nF@9@w znuY7A(*RlQ-q%uS0Y6Ne|M6;cz?XFA|IpA6N`vf0FN}F~r{ds5x=-pC z6a>})uXZ(qc))}|7inoEEh;J=PYwpK$U^;cI^gOc(8Vl|m&zW+ogxy!ruYu+%tkug zy)Us2w1k3Et5hN_U153j2~M>DE81@r2~hz+1Zine051q>XA^?z6}Az9e|b20zHMGy z2u+NyExG%>)TK00_c}{5gl8o*(Sq{TiW%{d@iQG=Fj1Rjm#mBU7#l5CCoRkS%&rUZ z?M}19Q!hA;7gacG$ssmtZ?y8pFvwSMgqljvskLD%Tctu^{lTMxdeU7qgl;q;8Q-k* zBD~Xi;0j~c%g7=7sbQ9{w5n|weIeDFJOzg=3S$)|cTEbu?Ozu-g`Dmw9~~ZRb<{(R zl7Ea5(_cXB9N}hB;)I`FRat($L`uT&l83vd7E`rX1`MH-GiLH=Y;#d5D6@~jy7o-=q%i9%(P;^|NKQ6^4hZ5 zc0yi;Hk4s#=6YO16E(tgFbcox4DRE3JEP$JUw<(e! zOeJ$x1;o6E0&53U*KsFO-yF6xizcIoGWnrY{>mhV27kat!?Gc#h8l+x(NX_Jy5U}2@ zs|Iu!8t6J#Bjdf@{f0SRT=x?j9XIEbV)uhSXYn^k$bQia`<1rPP`?O!Ir#BxINt?t zEIgDQSTi5{6t5}$Kve&@%LU2)nazK z$TLF;_XFGhT7<^Qrdpe)UOYYNUG4IE3!?V$yR(fiHkTV046K9HT_HE!ws?N7S}Kd7&FBID5MitC z78X3aHQCq&gKtgUo)Dh5GFh&;XAH$`$USV0d2&kd$DRU@kkuL{&=yMhHlMLx+9~2G zzhg2@S&4O>z4qfLJxUN|y?lZW6oIP6$Q#OFA9Nly8JXK~gmy^Zs6EZN*_EN|U30m{ zI9MXRv0S2O3oZK3%`tmSwA9ANy7sqZ_NbW+kInD`QKjuGB!dOK)TuI5J!~b95-bSTiB~;z)DK)7pp5IuvOrW8mV>^Zb-fn)Wl+JbS-UQ0W5RPRn4a8y{?<67xA|+|k#@4Uq9Ef;y>#*6bvbrLlFx^;F24|a&YMG#!z?Uj& zz)ZPL1!ulP*1w_+!MI^h_X7B+$XNExS|0wr-NPLi95``N3ioQj7B`1HXcmU1S6|1b zPKDRLz+!dco>V05?zNHPc;u4(eY30ZG)Sl8%zChB2O{LQY&-GR8Coo2dnLQwmRMdD zIO-XS6s*>&ejKzt1cC2SG}W}su^z7*TkS&exo-F@Vf6A0we~%|Z6fCJ=;8>k-7AaY z>(Wk;Z87{mj)j1NlGUxleAqtRFD*>qL`xjLJ=L~T18s{uMe`K|yvD)R; z#5c4?wNCC#+sulGY`>{h*Ej|9R28_zg-<_2rXt=}PYgNNo+h3e1>BFvZ&3~bVP$*r zo}5Xn2Bi02CujO-p7?{nQwd8*5O)E`MzJCp?7jxkpBx&hd;z>3ACxQrG|3>O$)60` z9~@jzSknzM0*)w@)u+g(eNXdkXbkr)vgwnT&{7necC|z=IQdF`zS_n!k_*9z%A58* zf@v9W>V3p}eQ3RCWQqvrgwH#rnTV-oLeHdkL-)O_U{hWRsaiu8TR1j<9u)oIbQKEO z`((RPuqv^1XL9KMYoVbZAg2H&Ae~NU=q_KWw)c#jsd`lJ9kUq!16xmyc?1NE-#sfa z&)e(o^8e`g5G_D+<0&t23mQ*$!(Sb(l>)Ls#QtxuTW_2NsF)AzG@Rw;*8?n0>RSJJ zU||7}Qwto=ayGLzdu9o#Dnq~U_zZ$dQOCZu0O$3p6LQN!6zB>XUgP9I*N#{qSXREY zELp5kjfzZ>Ztt1vLr7YCp;>roDRho%7hDM6OTElOyJB#WM7Fe9*pj(_N^fF6lv@vb z6}{;8Jdmmo#0n3A!92nJc#t;Rooxk=oRnSfE_Qt`Bw&6|4_~xa7ss0SLk7e4*kej` z^kL|iZ7fmyrS8xk&CS1nD zg}Hm?XKS6E<{RB)n^goj6$!wtXGY(}9t_Y(ZuJDIF-yY+Gw_a8?OYi3f)OGAnks4{Eq$=4Zh!*w6c-ogiZ16pd4e+*Ni!xm7;l+d zhH`V6Y-@lA>Rjq^@vVg_W0pP>;A!SAD_z~xvE~xpNDUjfi}N}&t;^i-_8DKiNdK_p z{12V#{GpcYY(!TU;FX#8(cZs%hx7CtpTbVav`BKB-q>7dPJ=#Gg&_)g@t`J!@D2@! z*CVm%hgChEcUZH-`y662NV5Ajyg91NyKrA}%~o!jtr~{q5tbJN<7!(~oGuj>!Mz$^hMg@aF%nhy?c`wpg=!X+O!jiXV5$xjN2rQA}fG%$A(UO8w0&wRzKTn;taMpb$~k59&>{rG3fzG=V@soEAj6 z@ijd|Wa8rD$Ye5Z@l0*Hk(Hf-=pr>-dbs1UnM3jG++Sy=Umv-FxNE_{5i_TCNI2^7 z3lZ^E=3DTXcCs7xT)O->ABuhWZsT$E>_BHas*^IJopK;R?%wg6u$ZZF7y7Nl=X&;D zy;zB*M*737BK>;Kw;$Te-@jq<@=@M|w)~al7?T&5HQG?cuoy$GVLw|?JHoXh-n{c; zv)ONAPmdbgw!CSNIZJw_pPDyr(xHOCEM@#UfzWn3_m4& zKxQ!Fu_rj*?DJW#E8Gi5DXo5nEY8+Jt&D_k#r!P6yu6wm{xjb2!I!yt>^_5m+nD1U zISLp))7+=ayS&{lSL0W6^&4g+*AM%9;>`k{%Jw{pt?<5w$t&(SoI~eLUPAv&xo+6T zn)E|D5MRz=B&rf-lvz1)a{^I9$cjzG!RCgq(PD`N*AFk?w8I=t21KBk+C0-j^n`25J&R6`|^D5H6 z=E|?!AVIiS&{5ag14|`TDEoO%$p2DdgKdNgnCHLU9|ZzoHw?q}=AXCb0Lph*+Wl2% HaWL#Z2jXrl literal 0 HcmV?d00001 diff --git a/docs/topics/recipes.md b/docs/topics/recipes.md index 298a52d4..404f8823 100644 --- a/docs/topics/recipes.md +++ b/docs/topics/recipes.md @@ -899,6 +899,8 @@ $spreadsheet->getActiveSheet() ); ``` +More detailed documentation of the Conditional Formatting options and rules, and the use of Wizards to help create them, can be found in [a dedicated section of the documentation](https://phpspreadsheet.readthedocs.io/en/latest/topics/conditional-formatting/). + ### DataBar of Conditional formatting The basics are the same as conditional formatting. Additional DataBar object to conditional formatting. diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 29a23d86..ddaee5a1 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -211,27 +211,27 @@ parameters: path: src/PhpSpreadsheet/Calculation/Calculation.php - - message: "#^Parameter \\#1 \\$str(ing)? of function preg_quote expects string, int\\|string given\\.$#" + message: "#^Parameter \\#1 \\$str of function preg_quote expects string, int\\|string given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/Calculation.php - - message: "#^Parameter \\#1 \\$str(ing)? of function strtoupper expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function strtoupper expects string, mixed given\\.$#" count: 2 path: src/PhpSpreadsheet/Calculation/Calculation.php - - message: "#^Parameter \\#1 \\$str(ing)? of function trim expects string, int\\|string given\\.$#" + message: "#^Parameter \\#1 \\$str of function trim expects string, int\\|string given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/Calculation.php - - message: "#^Parameter \\#1 \\$str(ing)? of function trim expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function trim expects string, mixed given\\.$#" count: 3 path: src/PhpSpreadsheet/Calculation/Calculation.php - - message: "#^Parameter \\#1 \\$str(ing)? of function trim expects string, null given\\.$#" + message: "#^Parameter \\#1 \\$str of function trim expects string, null given\\.$#" count: 2 path: src/PhpSpreadsheet/Calculation/Calculation.php @@ -506,12 +506,12 @@ parameters: path: src/PhpSpreadsheet/Calculation/Database/DatabaseAbstract.php - - message: "#^Parameter \\#1 \\$(input|array) of function array_keys expects array, mixed given\\.$#" + message: "#^Parameter \\#1 \\$input of function array_keys expects array, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/Database/DatabaseAbstract.php - - message: "#^Parameter \\#1 \\$str(ing)? of function strtoupper expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function strtoupper expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/Database/DatabaseAbstract.php @@ -546,7 +546,7 @@ parameters: path: src/PhpSpreadsheet/Calculation/DateTimeExcel/Date.php - - message: "#^Parameter \\#1 \\$str(ing)? of function trim expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function trim expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/DateTimeExcel/DateValue.php @@ -556,7 +556,7 @@ parameters: path: src/PhpSpreadsheet/Calculation/DateTimeExcel/DateValue.php - - message: "#^Parameter \\#1 \\$str(ing)? of function strtoupper expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function strtoupper expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/DateTimeExcel/Difference.php @@ -566,12 +566,12 @@ parameters: path: src/PhpSpreadsheet/Calculation/DateTimeExcel/Helpers.php - - message: "#^Parameter \\#1 \\$(x|num1) of function fmod expects float, mixed given\\.$#" + message: "#^Parameter \\#1 \\$x of function fmod expects float, mixed given\\.$#" count: 3 path: src/PhpSpreadsheet/Calculation/DateTimeExcel/TimeParts.php - - message: "#^Parameter \\#1 \\$str(ing)? of function trim expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function trim expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/DateTimeExcel/TimeValue.php @@ -746,12 +746,12 @@ parameters: path: src/PhpSpreadsheet/Calculation/Engineering/BitWise.php - - message: "#^Parameter \\#1 \\$num(ber)? of function floor expects float(\\|int)?, float\\|int\\<0, 281474976710655\\>\\|string given\\.$#" + message: "#^Parameter \\#1 \\$number of function floor expects float, float\\|int\\<0, 281474976710655\\>\\|string given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/Engineering/BitWise.php - - message: "#^Parameter \\#1 \\$num(ber)? of function floor expects float(\\|int)?, float\\|int\\|string given\\.$#" + message: "#^Parameter \\#1 \\$number of function floor expects float, float\\|int\\|string given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/Engineering/BitWise.php @@ -971,12 +971,12 @@ parameters: path: src/PhpSpreadsheet/Calculation/Financial/Dollar.php - - message: "#^Parameter \\#1 \\$num(ber)? of function floor expects float(\\|int)?, mixed given\\.$#" + message: "#^Parameter \\#1 \\$number of function floor expects float, mixed given\\.$#" count: 2 path: src/PhpSpreadsheet/Calculation/Financial/Dollar.php - - message: "#^Parameter \\#1 \\$(x|num1) of function fmod expects float, mixed given\\.$#" + message: "#^Parameter \\#1 \\$x of function fmod expects float, mixed given\\.$#" count: 2 path: src/PhpSpreadsheet/Calculation/Financial/Dollar.php @@ -1261,12 +1261,12 @@ parameters: path: src/PhpSpreadsheet/Calculation/LookupRef/Helpers.php - - message: "#^Parameter \\#1 \\$str(ing)? of function trim expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function trim expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/LookupRef/Helpers.php - - message: "#^Parameter \\#1 \\$str(ing)? of function trim expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function trim expects string, mixed given\\.$#" count: 2 path: src/PhpSpreadsheet/Calculation/LookupRef/Hyperlink.php @@ -1376,7 +1376,7 @@ parameters: path: src/PhpSpreadsheet/Calculation/LookupRef/Offset.php - - message: "#^Parameter \\#1 \\$str(ing)? of function trim expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function trim expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/LookupRef/Offset.php @@ -1396,17 +1396,17 @@ parameters: path: src/PhpSpreadsheet/Calculation/LookupRef/RowColumnInformation.php - - message: "#^Parameter \\#1 \\$(low|start) of function range expects float\\|int\\|string, string\\|null given\\.$#" + message: "#^Parameter \\#1 \\$low of function range expects float\\|int\\|string, string\\|null given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/LookupRef/RowColumnInformation.php - - message: "#^Parameter \\#2 \\$(high|end) of function range expects float\\|int\\|string, string\\|null given\\.$#" + message: "#^Parameter \\#2 \\$high of function range expects float\\|int\\|string, string\\|null given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/LookupRef/RowColumnInformation.php - - message: "#^Parameter \\#2 \\$str(ing)? of function explode expects string, mixed given\\.$#" + message: "#^Parameter \\#2 \\$str of function explode expects string, mixed given\\.$#" count: 3 path: src/PhpSpreadsheet/Calculation/LookupRef/RowColumnInformation.php @@ -1471,12 +1471,12 @@ parameters: path: src/PhpSpreadsheet/Calculation/LookupRef/VLookup.php - - message: "#^Parameter \\#1 \\$array(_arg)? of function uasort expects array, mixed given\\.$#" + message: "#^Parameter \\#1 \\$array_arg of function uasort expects array, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/LookupRef/VLookup.php - - message: "#^Parameter \\#1 \\$(input|array) of function array_keys expects array, mixed given\\.$#" + message: "#^Parameter \\#1 \\$input of function array_keys expects array, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/LookupRef/VLookup.php @@ -1546,12 +1546,12 @@ parameters: path: src/PhpSpreadsheet/Calculation/MathTrig/Subtotal.php - - message: "#^Parameter \\#1 \\$(input|array) of function array_filter expects array, mixed given\\.$#" + message: "#^Parameter \\#1 \\$input of function array_filter expects array, mixed given\\.$#" count: 2 path: src/PhpSpreadsheet/Calculation/MathTrig/Subtotal.php - - message: "#^Parameter \\#2 \\$str(ing)? of function explode expects string, mixed given\\.$#" + message: "#^Parameter \\#2 \\$str of function explode expects string, mixed given\\.$#" count: 2 path: src/PhpSpreadsheet/Calculation/MathTrig/Subtotal.php @@ -1751,7 +1751,7 @@ parameters: path: src/PhpSpreadsheet/Calculation/Statistical/Distributions/ChiSquared.php - - message: "#^Parameter \\#1 \\$(var|value) of function count expects array\\|Countable, mixed given\\.$#" + message: "#^Parameter \\#1 \\$var of function count expects array\\|Countable, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/Statistical/Distributions/ChiSquared.php @@ -1916,7 +1916,7 @@ parameters: path: src/PhpSpreadsheet/Calculation/TextData.php - - message: "#^Parameter \\#1 \\$(glue|separator) of function implode expects (array\\|)?string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$glue of function implode expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/TextData/Concatenate.php @@ -1946,7 +1946,7 @@ parameters: path: src/PhpSpreadsheet/Calculation/TextData/Format.php - - message: "#^Parameter \\#1 \\$str(ing)? of function trim expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function trim expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Calculation/TextData/Format.php @@ -2121,17 +2121,17 @@ parameters: path: src/PhpSpreadsheet/Cell/Coordinate.php - - message: "#^Parameter \\#1 \\$(input|array) of function array_chunk expects array, array\\\\|false given\\.$#" + message: "#^Parameter \\#1 \\$input of function array_chunk expects array, array\\\\|false given\\.$#" count: 1 path: src/PhpSpreadsheet/Cell/Coordinate.php - - message: "#^Parameter \\#1 \\$str(ing)? of function strtoupper expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function strtoupper expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Cell/Coordinate.php - - message: "#^Parameter \\#2 \\$str(ing)? of function explode expects string, array\\\\|string given\\.$#" + message: "#^Parameter \\#2 \\$str of function explode expects string, array\\\\|string given\\.$#" count: 1 path: src/PhpSpreadsheet/Cell/Coordinate.php @@ -2156,7 +2156,7 @@ parameters: path: src/PhpSpreadsheet/Cell/DataType.php - - message: "#^Parameter \\#1 \\$str(ing)? of function strtolower expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function strtolower expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Cell/DataValidator.php @@ -2166,7 +2166,7 @@ parameters: path: src/PhpSpreadsheet/Cell/DefaultValueBinder.php - - message: "#^Parameter \\#1 \\$str(ing)? of function ltrim expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function ltrim expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Cell/DefaultValueBinder.php @@ -2451,17 +2451,17 @@ parameters: path: src/PhpSpreadsheet/Chart/DataSeriesValues.php - - message: "#^Parameter \\#1 \\$(input|array) of function array_values expects array, mixed given\\.$#" + message: "#^Parameter \\#1 \\$input of function array_values expects array, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Chart/DataSeriesValues.php - - message: "#^Parameter \\#1 \\$(stack|array) of function array_shift expects array, mixed given\\.$#" + message: "#^Parameter \\#1 \\$stack of function array_shift expects array, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Chart/DataSeriesValues.php - - message: "#^Parameter \\#1 \\$(var|value) of function count expects array\\|Countable, mixed given\\.$#" + message: "#^Parameter \\#1 \\$var of function count expects array\\|Countable, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Chart/DataSeriesValues.php @@ -3031,7 +3031,7 @@ parameters: path: src/PhpSpreadsheet/Helper/Html.php - - message: "#^Parameter \\#1 \\$(function|callback) of function call_user_func expects callable\\(\\)\\: mixed, array\\{\\$this\\(PhpOffice\\\\PhpSpreadsheet\\\\Helper\\\\Html\\), mixed\\} given\\.$#" + message: "#^Parameter \\#1 \\$function of function call_user_func expects callable\\(\\)\\: mixed, array\\{\\$this\\(PhpOffice\\\\PhpSpreadsheet\\\\Helper\\\\Html\\), mixed\\} given\\.$#" count: 1 path: src/PhpSpreadsheet/Helper/Html.php @@ -3196,7 +3196,7 @@ parameters: path: src/PhpSpreadsheet/Reader/Gnumeric.php - - message: "#^Parameter \\#1 \\$str(ing)? of function trim expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function trim expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Reader/Gnumeric.php @@ -3546,7 +3546,7 @@ parameters: path: src/PhpSpreadsheet/Reader/Xls.php - - message: "#^Parameter \\#1 \\$str(ing)? of function trim expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function trim expects string, mixed given\\.$#" count: 2 path: src/PhpSpreadsheet/Reader/Xls.php @@ -3556,7 +3556,7 @@ parameters: path: src/PhpSpreadsheet/Reader/Xls.php - - message: "#^Parameter \\#1 \\$(var|value) of function count expects array\\|Countable, mixed given\\.$#" + message: "#^Parameter \\#1 \\$var of function count expects array\\|Countable, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Reader/Xls.php @@ -3686,7 +3686,7 @@ parameters: path: src/PhpSpreadsheet/Reader/Xls/MD5.php - - message: "#^Parameter \\#1 \\$(input|array) of function array_values expects array, array\\|false given\\.$#" + message: "#^Parameter \\#1 \\$input of function array_values expects array, array\\|false given\\.$#" count: 1 path: src/PhpSpreadsheet/Reader/Xls/MD5.php @@ -3976,7 +3976,7 @@ parameters: path: src/PhpSpreadsheet/Reader/Xlsx.php - - message: "#^Parameter \\#1 \\$str(ing)? of function trim expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function trim expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Reader/Xlsx.php @@ -4330,11 +4330,6 @@ parameters: count: 1 path: src/PhpSpreadsheet/Reader/Xlsx/ColumnAndRowAttributes.php - - - message: "#^Method PhpOffice\\\\PhpSpreadsheet\\\\Reader\\\\Xlsx\\\\ConditionalStyles\\:\\:readConditionalStyles\\(\\) has no return type specified\\.$#" - count: 1 - path: src/PhpSpreadsheet/Reader/Xlsx/ConditionalStyles.php - - message: "#^Method PhpOffice\\\\PhpSpreadsheet\\\\Reader\\\\Xlsx\\\\ConditionalStyles\\:\\:readConditionalStyles\\(\\) has parameter \\$xmlSheet with no type specified\\.$#" count: 1 @@ -4596,37 +4591,37 @@ parameters: path: src/PhpSpreadsheet/Shared/Drawing.php - - message: "#^Method PhpOffice\\\\PhpSpreadsheet\\\\Shared\\\\Drawing\\:\\:imagecreatefrombmp\\(\\) should return GdImage\\|resource but returns (GdImage|resource)\\|false\\.$#" + message: "#^Method PhpOffice\\\\PhpSpreadsheet\\\\Shared\\\\Drawing\\:\\:imagecreatefrombmp\\(\\) should return GdImage\\|resource but returns resource\\|false\\.$#" count: 1 path: src/PhpSpreadsheet/Shared/Drawing.php - - message: "#^Parameter \\#1 \\$(fp|stream) of function feof expects resource, resource\\|false given\\.$#" + message: "#^Parameter \\#1 \\$fp of function feof expects resource, resource\\|false given\\.$#" count: 1 path: src/PhpSpreadsheet/Shared/Drawing.php - - message: "#^Parameter \\#1 \\$(fp|stream) of function fread expects resource, resource\\|false given\\.$#" + message: "#^Parameter \\#1 \\$fp of function fread expects resource, resource\\|false given\\.$#" count: 2 path: src/PhpSpreadsheet/Shared/Drawing.php - - message: "#^Parameter \\#1 \\$im(age)? of function imagecolorallocate expects (GdImage|resource), (GdImage|resource)\\|false given\\.$#" + message: "#^Parameter \\#1 \\$im of function imagecolorallocate expects resource, resource\\|false given\\.$#" count: 1 path: src/PhpSpreadsheet/Shared/Drawing.php - - message: "#^Parameter \\#1 \\$im(age)? of function imagesetpixel expects (GdImage|resource), (GdImage|resource)\\|false given\\.$#" + message: "#^Parameter \\#1 \\$im of function imagesetpixel expects resource, resource\\|false given\\.$#" count: 1 path: src/PhpSpreadsheet/Shared/Drawing.php - - message: "#^Parameter \\#1 \\$(x_size|width) of function imagecreatetruecolor expects int, float\\|int given\\.$#" + message: "#^Parameter \\#1 \\$x_size of function imagecreatetruecolor expects int, float\\|int given\\.$#" count: 1 path: src/PhpSpreadsheet/Shared/Drawing.php - - message: "#^Parameter \\#2 \\$(data|string) of function unpack expects string, string\\|false given\\.$#" + message: "#^Parameter \\#2 \\$data of function unpack expects string, string\\|false given\\.$#" count: 1 path: src/PhpSpreadsheet/Shared/Drawing.php @@ -4636,7 +4631,7 @@ parameters: path: src/PhpSpreadsheet/Shared/Drawing.php - - message: "#^Parameter \\#2 \\$(y_size|height) of function imagecreatetruecolor expects int, float\\|int given\\.$#" + message: "#^Parameter \\#2 \\$y_size of function imagecreatetruecolor expects int, float\\|int given\\.$#" count: 1 path: src/PhpSpreadsheet/Shared/Drawing.php @@ -4656,7 +4651,7 @@ parameters: path: src/PhpSpreadsheet/Shared/Drawing.php - - message: "#^Parameter \\#4 \\$col(or)? of function imagesetpixel expects int, int\\|false given\\.$#" + message: "#^Parameter \\#4 \\$col of function imagesetpixel expects int, int\\|false given\\.$#" count: 1 path: src/PhpSpreadsheet/Shared/Drawing.php @@ -4866,7 +4861,7 @@ parameters: path: src/PhpSpreadsheet/Shared/JAMA/Matrix.php - - message: "#^Parameter \\#1 \\$str(ing)? of function trim expects string, float\\|int given\\.$#" + message: "#^Parameter \\#1 \\$str of function trim expects string, float\\|int given\\.$#" count: 1 path: src/PhpSpreadsheet/Shared/JAMA/Matrix.php @@ -4971,7 +4966,7 @@ parameters: path: src/PhpSpreadsheet/Shared/OLE.php - - message: "#^Parameter \\#2 \\$(data|string) of function unpack expects string, string\\|false given\\.$#" + message: "#^Parameter \\#2 \\$data of function unpack expects string, string\\|false given\\.$#" count: 3 path: src/PhpSpreadsheet/Shared/OLE.php @@ -5011,7 +5006,7 @@ parameters: path: src/PhpSpreadsheet/Shared/OLE.php - - message: "#^Parameter \\#1 \\$(var|value) of function count expects array\\|Countable, string given\\.$#" + message: "#^Parameter \\#1 \\$var of function count expects array\\|Countable, string given\\.$#" count: 1 path: src/PhpSpreadsheet/Shared/OLE/ChainedBlockStream.php @@ -5376,7 +5371,7 @@ parameters: path: src/PhpSpreadsheet/Shared/Trend/PolynomialBestFit.php - - message: "#^Parameter \\#2 \\.\\.\\.\\$(args|arrays) of function array_merge expects array, float given\\.$#" + message: "#^Parameter \\#2 \\.\\.\\.\\$args of function array_merge expects array, float given\\.$#" count: 1 path: src/PhpSpreadsheet/Shared/Trend/PolynomialBestFit.php @@ -5505,6 +5500,11 @@ parameters: count: 1 path: src/PhpSpreadsheet/Style/Conditional.php + - + message: "#^Parameter \\#1 \\$condition of method PhpOffice\\\\PhpSpreadsheet\\\\Style\\\\ConditionalFormatting\\\\CellMatcher\\:\\:cellConditionCheck\\(\\) expects string, mixed given\\.$#" + count: 1 + path: src/PhpSpreadsheet/Style/ConditionalFormatting/CellMatcher.php + - message: "#^Method PhpOffice\\\\PhpSpreadsheet\\\\Style\\\\ConditionalFormatting\\\\ConditionalDataBar\\:\\:setConditionalFormattingRuleExt\\(\\) has no return type specified\\.$#" count: 1 @@ -5665,6 +5665,36 @@ parameters: count: 1 path: src/PhpSpreadsheet/Style/ConditionalFormatting/ConditionalFormattingRuleExtension.php + - + message: "#^Parameter \\#1 \\$condition of method PhpOffice\\\\PhpSpreadsheet\\\\Style\\\\ConditionalFormatting\\\\Wizard\\\\WizardAbstract\\:\\:cellConditionCheck\\(\\) expects string, mixed given\\.$#" + count: 1 + path: src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/CellValue.php + + - + message: "#^Parameter \\#1 \\$conditions of method PhpOffice\\\\PhpSpreadsheet\\\\Style\\\\Conditional\\:\\:setConditions\\(\\) expects array\\\\|bool\\|float\\|int\\|string, array\\ given\\.$#" + count: 1 + path: src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/CellValue.php + + - + message: "#^Parameter \\#3 \\$subject of function str_replace expects array\\|string, mixed given\\.$#" + count: 1 + path: src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/CellValue.php + + - + message: "#^Parameter \\#1 \\$expression of method PhpOffice\\\\PhpSpreadsheet\\\\Style\\\\ConditionalFormatting\\\\Wizard\\\\Expression\\:\\:expression\\(\\) expects string, mixed given\\.$#" + count: 1 + path: src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Expression.php + + - + message: "#^Parameter \\#1 \\$operand of method PhpOffice\\\\PhpSpreadsheet\\\\Style\\\\ConditionalFormatting\\\\Wizard\\\\TextValue\\:\\:operand\\(\\) expects string, mixed given\\.$#" + count: 1 + path: src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/TextValue.php + + - + message: "#^Property PhpOffice\\\\PhpSpreadsheet\\\\Style\\\\ConditionalFormatting\\\\Wizard\\\\TextValue\\:\\:\\$operand \\(string\\) does not accept mixed\\.$#" + count: 1 + path: src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/TextValue.php + - message: "#^Method PhpOffice\\\\PhpSpreadsheet\\\\Style\\\\NumberFormat\\\\DateFormatter\\:\\:escapeQuotesCallback\\(\\) has parameter \\$matches with no type specified\\.$#" count: 1 @@ -5701,7 +5731,7 @@ parameters: path: src/PhpSpreadsheet/Style/NumberFormat/DateFormatter.php - - message: "#^Parameter \\#2 \\$str(ing)? of function explode expects string, string\\|null given\\.$#" + message: "#^Parameter \\#2 \\$str of function explode expects string, string\\|null given\\.$#" count: 1 path: src/PhpSpreadsheet/Style/NumberFormat/DateFormatter.php @@ -5941,7 +5971,7 @@ parameters: path: src/PhpSpreadsheet/Worksheet/PageSetup.php - - message: "#^Parameter \\#2 \\$str(ing)? of function explode expects string, string\\|null given\\.$#" + message: "#^Parameter \\#2 \\$str of function explode expects string, string\\|null given\\.$#" count: 5 path: src/PhpSpreadsheet/Worksheet/PageSetup.php @@ -6046,7 +6076,7 @@ parameters: path: src/PhpSpreadsheet/Worksheet/Worksheet.php - - message: "#^Parameter \\#1 \\$(input|string|array) of function array_splice expects array, ArrayObject\\ given\\.$#" + message: "#^Parameter \\#1 \\$input of function array_splice expects array, ArrayObject\\ given\\.$#" count: 1 path: src/PhpSpreadsheet/Worksheet/Worksheet.php @@ -6061,7 +6091,7 @@ parameters: path: src/PhpSpreadsheet/Worksheet/Worksheet.php - - message: "#^Parameter \\#1 \\$str(ing)? of function strtoupper expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function strtoupper expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Worksheet/Worksheet.php @@ -6076,7 +6106,7 @@ parameters: path: src/PhpSpreadsheet/Worksheet/Worksheet.php - - message: "#^Parameter \\#2 \\$(start|offset) of function substr expects int, int(\\<0, max\\>)?\\|false given\\.$#" + message: "#^Parameter \\#2 \\$start of function substr expects int, int\\<0, max\\>\\|false given\\.$#" count: 2 path: src/PhpSpreadsheet/Worksheet/Worksheet.php @@ -6406,12 +6436,12 @@ parameters: path: src/PhpSpreadsheet/Writer/Html.php - - message: "#^Parameter \\#1 \\$im(age)? of function imagepng expects (GdImage|resource), GdImage\\|resource given\\.$#" + message: "#^Parameter \\#1 \\$im of function imagepng expects resource, GdImage\\|resource given\\.$#" count: 1 path: src/PhpSpreadsheet/Writer/Html.php - - message: "#^Parameter \\#1 \\$str(ing)? of function base64_encode expects string, string\\|false given\\.$#" + message: "#^Parameter \\#1 \\$str of function base64_encode expects string, string\\|false given\\.$#" count: 2 path: src/PhpSpreadsheet/Writer/Html.php @@ -6561,12 +6591,12 @@ parameters: path: src/PhpSpreadsheet/Writer/Xls.php - - message: "#^Parameter \\#1 \\$im(age)? of function imagepng expects (GdImage|resource), GdImage\\|resource given\\.$#" + message: "#^Parameter \\#1 \\$im of function imagepng expects resource, GdImage\\|resource given\\.$#" count: 1 path: src/PhpSpreadsheet/Writer/Xls.php - - message: "#^Parameter \\#1 \\$im(age)? of function imagepng expects (GdImage|resource), (GdImage|resource)\\|false given\\.$#" + message: "#^Parameter \\#1 \\$im of function imagepng expects resource, resource\\|false given\\.$#" count: 1 path: src/PhpSpreadsheet/Writer/Xls.php @@ -6701,7 +6731,7 @@ parameters: path: src/PhpSpreadsheet/Writer/Xls/Parser.php - - message: "#^Parameter \\#1 \\$str(ing)? of function strrev expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function strrev expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Writer/Xls/Parser.php @@ -6721,7 +6751,7 @@ parameters: path: src/PhpSpreadsheet/Writer/Xls/Parser.php - - message: "#^Parameter \\#2 \\$str(ing)? of function explode expects string, mixed given\\.$#" + message: "#^Parameter \\#2 \\$str of function explode expects string, mixed given\\.$#" count: 1 path: src/PhpSpreadsheet/Writer/Xls/Parser.php @@ -6846,7 +6876,7 @@ parameters: path: src/PhpSpreadsheet/Writer/Xls/Worksheet.php - - message: "#^Parameter \\#1 \\$im(age)? of function imagecolorat expects (GdImage|resource), GdImage\\|resource given\\.$#" + message: "#^Parameter \\#1 \\$im of function imagecolorat expects resource, GdImage\\|resource given\\.$#" count: 1 path: src/PhpSpreadsheet/Writer/Xls/Worksheet.php @@ -6861,12 +6891,12 @@ parameters: path: src/PhpSpreadsheet/Writer/Xls/Worksheet.php - - message: "#^Parameter \\#2 \\$col(or)? of function imagecolorsforindex expects int, int\\|false given\\.$#" + message: "#^Parameter \\#2 \\$col of function imagecolorsforindex expects int, int\\|false given\\.$#" count: 1 path: src/PhpSpreadsheet/Writer/Xls/Worksheet.php - - message: "#^Parameter \\#2 \\$(data|string) of function unpack expects string, string\\|false given\\.$#" + message: "#^Parameter \\#2 \\$data of function unpack expects string, string\\|false given\\.$#" count: 1 path: src/PhpSpreadsheet/Writer/Xls/Worksheet.php @@ -6876,7 +6906,7 @@ parameters: path: src/PhpSpreadsheet/Writer/Xls/Worksheet.php - - message: "#^Parameter \\#2 \\$(pieces|array) of function implode expects array(\\|null)?, array\\\\|false given\\.$#" + message: "#^Parameter \\#2 \\$pieces of function implode expects array, array\\\\|false given\\.$#" count: 1 path: src/PhpSpreadsheet/Writer/Xls/Worksheet.php @@ -6981,7 +7011,7 @@ parameters: path: src/PhpSpreadsheet/Writer/Xlsx.php - - message: "#^Parameter \\#1 \\$(function|callback) of function call_user_func expects callable\\(\\)\\: mixed, string given\\.$#" + message: "#^Parameter \\#1 \\$function of function call_user_func expects callable\\(\\)\\: mixed, string given\\.$#" count: 1 path: src/PhpSpreadsheet/Writer/Xlsx.php @@ -7026,7 +7056,7 @@ parameters: path: src/PhpSpreadsheet/Writer/Xlsx/Chart.php - - message: "#^Parameter \\#1 \\$plotSeriesValues of method PhpOffice\\\\PhpSpreadsheet\\\\Writer\\\\Xlsx\\\\Chart\\:\\:writeBubbles\\(\\) expects PhpOffice\\\\PhpSpreadsheet\\\\Chart\\\\DataSeriesValues|null, PhpOffice\\\\PhpSpreadsheet\\\\Chart\\\\DataSeriesValues\\|false given\\.$#" + message: "#^Parameter \\#1 \\$plotSeriesValues of method PhpOffice\\\\PhpSpreadsheet\\\\Writer\\\\Xlsx\\\\Chart\\:\\:writeBubbles\\(\\) expects PhpOffice\\\\PhpSpreadsheet\\\\Chart\\\\DataSeriesValues\\|null, PhpOffice\\\\PhpSpreadsheet\\\\Chart\\\\DataSeriesValues\\|false given\\.$#" count: 1 path: src/PhpSpreadsheet/Writer/Xlsx/Chart.php @@ -8286,22 +8316,22 @@ parameters: path: tests/PhpSpreadsheetTests/Functional/DrawingImageHyperlinkTest.php - - message: "#^Parameter \\#1 \\$im(age)? of function imagecolorallocate expects (GdImage|resource), (GdImage|resource)\\|false given\\.$#" + message: "#^Parameter \\#1 \\$im of function imagecolorallocate expects resource, resource\\|false given\\.$#" count: 1 path: tests/PhpSpreadsheetTests/Functional/DrawingImageHyperlinkTest.php - - message: "#^Parameter \\#1 \\$im(age)? of function imagestring expects (GdImage|resource), (GdImage|resource)\\|false given\\.$#" + message: "#^Parameter \\#1 \\$im of function imagestring expects resource, resource\\|false given\\.$#" count: 1 path: tests/PhpSpreadsheetTests/Functional/DrawingImageHyperlinkTest.php - - message: "#^Parameter \\#1 \\$value of method PhpOffice\\\\PhpSpreadsheet\\\\Worksheet\\\\MemoryDrawing\\:\\:setImageResource\\(\\) expects GdImage\\|resource, (GdImage|resource)\\|false given\\.$#" + message: "#^Parameter \\#1 \\$value of method PhpOffice\\\\PhpSpreadsheet\\\\Worksheet\\\\MemoryDrawing\\:\\:setImageResource\\(\\) expects GdImage\\|resource, resource\\|false given\\.$#" count: 1 path: tests/PhpSpreadsheetTests/Functional/DrawingImageHyperlinkTest.php - - message: "#^Parameter \\#6 \\$col(or)? of function imagestring expects int, int\\|false given\\.$#" + message: "#^Parameter \\#6 \\$col of function imagestring expects int, int\\|false given\\.$#" count: 1 path: tests/PhpSpreadsheetTests/Functional/DrawingImageHyperlinkTest.php @@ -8331,7 +8361,7 @@ parameters: path: tests/PhpSpreadsheetTests/Functional/StreamTest.php - - message: "#^Parameter \\#1 \\$(fp|stream) of function fstat expects resource, resource\\|false given\\.$#" + message: "#^Parameter \\#1 \\$fp of function fstat expects resource, resource\\|false given\\.$#" count: 1 path: tests/PhpSpreadsheetTests/Functional/StreamTest.php @@ -8396,7 +8426,7 @@ parameters: path: tests/PhpSpreadsheetTests/Reader/Security/XmlScannerTest.php - - message: "#^Parameter \\#1 \\$str(ing)? of function strrev expects string, mixed given\\.$#" + message: "#^Parameter \\#1 \\$str of function strrev expects string, mixed given\\.$#" count: 1 path: tests/PhpSpreadsheetTests/Reader/Security/XmlScannerTest.php @@ -8621,22 +8651,22 @@ parameters: path: tests/PhpSpreadsheetTests/Worksheet/AutoFilter/DateGroupTest.php - - message: "#^Parameter \\#1 \\$im(age)? of function imagecolorallocate expects (resource|GdImage), (resource|GdImage)\\|false given\\.$#" + message: "#^Parameter \\#1 \\$im of function imagecolorallocate expects resource, resource\\|false given\\.$#" count: 1 path: tests/PhpSpreadsheetTests/Worksheet/DrawingTest.php - - message: "#^Parameter \\#1 \\$im(age)? of function imagestring expects (resource|GdImage), (resource|GdImage)\\|false given\\.$#" + message: "#^Parameter \\#1 \\$im of function imagestring expects resource, resource\\|false given\\.$#" count: 1 path: tests/PhpSpreadsheetTests/Worksheet/DrawingTest.php - - message: "#^Parameter \\#1 \\$value of method PhpOffice\\\\PhpSpreadsheet\\\\Worksheet\\\\MemoryDrawing\\:\\:setImageResource\\(\\) expects GdImage\\|resource, (GdImage|resource)\\|false given\\.$#" + message: "#^Parameter \\#1 \\$value of method PhpOffice\\\\PhpSpreadsheet\\\\Worksheet\\\\MemoryDrawing\\:\\:setImageResource\\(\\) expects GdImage\\|resource, resource\\|false given\\.$#" count: 1 path: tests/PhpSpreadsheetTests/Worksheet/DrawingTest.php - - message: "#^Parameter \\#6 \\$col(or)? of function imagestring expects int, int\\|false given\\.$#" + message: "#^Parameter \\#6 \\$col of function imagestring expects int, int\\|false given\\.$#" count: 1 path: tests/PhpSpreadsheetTests/Worksheet/DrawingTest.php @@ -8731,7 +8761,7 @@ parameters: path: tests/PhpSpreadsheetTests/Writer/Xls/WorkbookTest.php - - message: "#^Parameter \\#1 \\$(input|array) of function array_keys expects array, mixed given\\.$#" + message: "#^Parameter \\#1 \\$input of function array_keys expects array, mixed given\\.$#" count: 1 path: tests/PhpSpreadsheetTests/Writer/Xls/WorkbookTest.php diff --git a/samples/ConditionalFormatting/01_Basic_Comparisons.php b/samples/ConditionalFormatting/01_Basic_Comparisons.php new file mode 100644 index 00000000..b201005b --- /dev/null +++ b/samples/ConditionalFormatting/01_Basic_Comparisons.php @@ -0,0 +1,174 @@ +log('Create new Spreadsheet object'); +$spreadsheet = new Spreadsheet(); + +// Set document properties +$helper->log('Set document properties'); +$spreadsheet->getProperties()->setCreator('Mark Baker') + ->setLastModifiedBy('Mark Baker') + ->setTitle('PhpSpreadsheet Test Document') + ->setSubject('PhpSpreadsheet Test Document') + ->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.') + ->setKeywords('office PhpSpreadsheet php') + ->setCategory('Test result file'); + +// Create the worksheet +$helper->log('Add data'); +$spreadsheet->setActiveSheetIndex(0); +$spreadsheet->getActiveSheet() + ->setCellValue('A1', 'Literal Value Comparison') + ->setCellValue('A9', 'Value Comparison with Absolute Cell Reference $H$9') + ->setCellValue('A17', 'Value Comparison with Relative Cell References') + ->setCellValue('A23', 'Value Comparison with Formula based on AVERAGE() ± STDEV()'); + +$dataArray = [ + [-2, -1, 0, 1, 2], + [-1, 0, 1, 2, 3], + [0, 1, 2, 3, 4], + [1, 2, 3, 4, 5], +]; + +$betweenDataArray = [ + [2, 7, 6], + [9, 5, 1], + [4, 3, 8], +]; + +$spreadsheet->getActiveSheet() + ->fromArray($dataArray, null, 'A2', true) + ->fromArray($dataArray, null, 'A10', true) + ->fromArray($betweenDataArray, null, 'A18', true) + ->fromArray($dataArray, null, 'A24', true) + ->setCellValue('H9', 1); + +// Set title row bold +$helper->log('Set title row bold'); +$spreadsheet->getActiveSheet()->getStyle('A1:E1')->getFont()->setBold(true); +$spreadsheet->getActiveSheet()->getStyle('A9:E9')->getFont()->setBold(true); +$spreadsheet->getActiveSheet()->getStyle('A17:E17')->getFont()->setBold(true); +$spreadsheet->getActiveSheet()->getStyle('A23:E23')->getFont()->setBold(true); + +// Define some styles for our Conditionals +$helper->log('Define some styles for our Conditionals'); +$yellowStyle = new Style(false, true); +$yellowStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_YELLOW); +$greenStyle = new Style(false, true); +$greenStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_GREEN); +$redStyle = new Style(false, true); +$redStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_RED); + +// Set conditional formatting rules and styles +$helper->log('Define conditional formatting and set styles'); + +// Set rules for Literal Value Comparison +$cellRange = 'A2:E5'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\CellValue $cellWizard */ +$cellWizard = $wizardFactory->newRule(Wizard::CELL_VALUE); + +$cellWizard->equals(0) + ->setStyle($yellowStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$cellWizard->greaterThan(0) + ->setStyle($greenStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$cellWizard->lessThan(0) + ->setStyle($redStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($cellWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Set rules for Value Comparison with Absolute Cell Reference $H$9 +$cellRange = 'A10:E13'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\CellValue $cellWizard */ +$cellWizard = $wizardFactory->newRule(Wizard::CELL_VALUE); + +$cellWizard->equals('$H$9', Wizard::VALUE_TYPE_CELL) + ->setStyle($yellowStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$cellWizard->greaterThan('$H$9', Wizard::VALUE_TYPE_CELL) + ->setStyle($greenStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$cellWizard->lessThan('$H$9', Wizard::VALUE_TYPE_CELL) + ->setStyle($redStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($cellWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Set rules for Value Comparison with Relative Cell References +$cellRange = 'A18:A20'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\CellValue $cellWizard */ +$cellWizard = $wizardFactory->newRule(Wizard::CELL_VALUE); + +$cellWizard->between('$B1', Wizard::VALUE_TYPE_CELL) + ->and('$C1', Wizard::VALUE_TYPE_CELL) + ->setStyle($greenStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($cellWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Set rules for Value Comparison with Formula +$cellRange = 'A24:E27'; +$formulaRange = implode( + ':', + array_map( + [Coordinate::class, 'absoluteCoordinate'], + Coordinate::splitRange($cellRange)[0] + ) +); +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\CellValue $cellWizard */ +$cellWizard = $wizardFactory->newRule(Wizard::CELL_VALUE); + +$cellWizard->between('AVERAGE(' . $formulaRange . ')-STDEV(' . $formulaRange . ')', Wizard::VALUE_TYPE_FORMULA) + ->and('AVERAGE(' . $formulaRange . ')+STDEV(' . $formulaRange . ')', Wizard::VALUE_TYPE_FORMULA) + ->setStyle($yellowStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$cellWizard->greaterThan('AVERAGE(' . $formulaRange . ')+STDEV(' . $formulaRange . ')', Wizard::VALUE_TYPE_FORMULA) + ->setStyle($greenStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$cellWizard->lessThan('AVERAGE(' . $formulaRange . ')-STDEV(' . $formulaRange . ')', Wizard::VALUE_TYPE_FORMULA) + ->setStyle($redStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($cellWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Save +$helper->write($spreadsheet, __FILE__); diff --git a/samples/ConditionalFormatting/02_Text_Comparisons.php b/samples/ConditionalFormatting/02_Text_Comparisons.php new file mode 100644 index 00000000..53aa84ad --- /dev/null +++ b/samples/ConditionalFormatting/02_Text_Comparisons.php @@ -0,0 +1,227 @@ +log('Create new Spreadsheet object'); +$spreadsheet = new Spreadsheet(); + +// Set document properties +$helper->log('Set document properties'); +$spreadsheet->getProperties()->setCreator('Mark Baker') + ->setLastModifiedBy('Mark Baker') + ->setTitle('PhpSpreadsheet Test Document') + ->setSubject('PhpSpreadsheet Test Document') + ->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.') + ->setKeywords('office PhpSpreadsheet php') + ->setCategory('Test result file'); + +// Create the worksheet +$helper->log('Add data'); +$spreadsheet->setActiveSheetIndex(0); +$spreadsheet->getActiveSheet() + ->setCellValue('A1', 'Value Begins With Literal') + ->setCellValue('A7', 'Value Ends With Literal') + ->setCellValue('A13', 'Value Contains Literal') + ->setCellValue('A19', "Value Doesn't Contain Literal") + ->setCellValue('E1', 'Value Begins With using Cell Reference') + ->setCellValue('E7', 'Value Ends With using Cell Reference') + ->setCellValue('E13', 'Value Contains using Cell Reference') + ->setCellValue('E19', "Value Doesn't Contain using Cell Reference") + ->setCellValue('A25', 'Simple Comparison using Concatenation Formula'); + +$dataArray = [ + ['HELLO', 'WORLD'], + ['MELLOW', 'YELLOW'], + ['SLEEPY', 'HOLLOW'], +]; + +$spreadsheet->getActiveSheet() + ->fromArray($dataArray, null, 'A2', true) + ->fromArray($dataArray, null, 'A8', true) + ->fromArray($dataArray, null, 'A14', true) + ->fromArray($dataArray, null, 'A20', true) + ->fromArray($dataArray, null, 'E2', true) + ->fromArray($dataArray, null, 'E8', true) + ->fromArray($dataArray, null, 'E14', true) + ->fromArray($dataArray, null, 'E20', true) + ->fromArray($dataArray, null, 'A26', true) + ->setCellValue('D1', 'H') + ->setCellValue('D7', 'OW') + ->setCellValue('D13', 'LL') + ->setCellValue('D19', 'EL') + ->setCellValue('C26', 'HELLO WORLD') + ->setCellValue('C27', 'SOYLENT GREEN') + ->setCellValue('C28', 'SLEEPY HOLLOW'); + +// Set title row bold +$helper->log('Set title row bold'); +$spreadsheet->getActiveSheet()->getStyle('A1:G1')->getFont()->setBold(true); +$spreadsheet->getActiveSheet()->getStyle('A7:G7')->getFont()->setBold(true); +$spreadsheet->getActiveSheet()->getStyle('A13:G13')->getFont()->setBold(true); +$spreadsheet->getActiveSheet()->getStyle('A19:G19')->getFont()->setBold(true); +$spreadsheet->getActiveSheet()->getStyle('A25:C25')->getFont()->setBold(true); + +// Define some styles for our Conditionals +$helper->log('Define some styles for our Conditionals'); +$yellowStyle = new Style(false, true); +$yellowStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_YELLOW); +$greenStyle = new Style(false, true); +$greenStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_GREEN); +$redStyle = new Style(false, true); +$redStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_RED); + +// Set conditional formatting rules and styles +$helper->log('Define conditional formatting and set styles'); + +// Set rules for Literal Value Begins With +$cellRange = 'A2:B4'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\TextValue $textWizard */ +$textWizard = $wizardFactory->newRule(Wizard::TEXT_VALUE); + +$textWizard->beginsWith('H') + ->setStyle($yellowStyle); +$conditionalStyles[] = $textWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($textWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Set rules for Value Begins With using Cell Reference +$cellRange = 'E2:F4'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\TextValue $textWizard */ +$textWizard = $wizardFactory->newRule(Wizard::TEXT_VALUE); + +$textWizard->beginsWith('$D$1', Wizard::VALUE_TYPE_CELL) + ->setStyle($yellowStyle); +$conditionalStyles[] = $textWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($textWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Set rules for Literal Value Ends With +$cellRange = 'A8:B10'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\TextValue $textWizard */ +$textWizard = $wizardFactory->newRule(Wizard::TEXT_VALUE); + +$textWizard->endsWith('OW') + ->setStyle($yellowStyle); +$conditionalStyles[] = $textWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($textWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Set rules for Value Ends With using Cell Reference +$cellRange = 'E8:F10'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\TextValue $textWizard */ +$textWizard = $wizardFactory->newRule(Wizard::TEXT_VALUE); + +$textWizard->endsWith('$D$7', Wizard::VALUE_TYPE_CELL) + ->setStyle($yellowStyle); +$conditionalStyles[] = $textWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($textWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Set rules for Literal Value Contains +$cellRange = 'A14:B16'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\TextValue $textWizard */ +$textWizard = $wizardFactory->newRule(Wizard::TEXT_VALUE); + +$textWizard->contains('LL') + ->setStyle($greenStyle); +$conditionalStyles[] = $textWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($textWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Set rules for Value Contains using Cell Reference +$cellRange = 'E14:F16'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\TextValue $textWizard */ +$textWizard = $wizardFactory->newRule(Wizard::TEXT_VALUE); + +$textWizard->contains('$D$13', Wizard::VALUE_TYPE_CELL) + ->setStyle($greenStyle); +$conditionalStyles[] = $textWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($textWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Set rules for Literal Value Does Not Contain +$cellRange = 'A20:B22'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\TextValue $textWizard */ +$textWizard = $wizardFactory->newRule(Wizard::TEXT_VALUE); + +$textWizard->doesNotContain('EL') + ->setStyle($redStyle); +$conditionalStyles[] = $textWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($textWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Set rules for Value Contains using Cell Reference +$cellRange = 'E20:F22'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\TextValue $textWizard */ +$textWizard = $wizardFactory->newRule(Wizard::TEXT_VALUE); + +$textWizard->doesNotContain('$D$19', Wizard::VALUE_TYPE_CELL) + ->setStyle($redStyle); +$conditionalStyles[] = $textWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($textWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Set rules for Simple Comparison using Concatenation Formula +$cellRange = 'C26:C28'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\CellValue $cellWizard */ +$cellWizard = $wizardFactory->newRule(Wizard::CELL_VALUE); + +$cellWizard->equals('CONCATENATE($A1," ",$B1)', Wizard::VALUE_TYPE_FORMULA) + ->setStyle($yellowStyle); +$conditionalStyles[] = $cellWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($cellWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +$spreadsheet->getActiveSheet()->getColumnDimension('C')->setAutoSize(true); + +// Save +$helper->write($spreadsheet, __FILE__); diff --git a/samples/ConditionalFormatting/03_Blank_Comparisons.php b/samples/ConditionalFormatting/03_Blank_Comparisons.php new file mode 100644 index 00000000..c8584c3a --- /dev/null +++ b/samples/ConditionalFormatting/03_Blank_Comparisons.php @@ -0,0 +1,76 @@ +log('Create new Spreadsheet object'); +$spreadsheet = new Spreadsheet(); + +// Set document properties +$helper->log('Set document properties'); +$spreadsheet->getProperties()->setCreator('Mark Baker') + ->setLastModifiedBy('Mark Baker') + ->setTitle('PhpSpreadsheet Test Document') + ->setSubject('PhpSpreadsheet Test Document') + ->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.') + ->setKeywords('office PhpSpreadsheet php') + ->setCategory('Test result file'); + +// Create the worksheet +$helper->log('Add data'); +$spreadsheet->setActiveSheetIndex(0); +$spreadsheet->getActiveSheet() + ->setCellValue('A1', 'Blank Comparison'); + +$dataArray = [ + ['HELLO', null], + [null, 'WORLD'], +]; + +$spreadsheet->getActiveSheet() + ->fromArray($dataArray, null, 'A2', true); + +// Set title row bold +$helper->log('Set title row bold'); +$spreadsheet->getActiveSheet()->getStyle('A1:B1')->getFont()->setBold(true); + +// Define some styles for our Conditionals +$helper->log('Define some styles for our Conditionals'); +$greenStyle = new Style(false, true); +$greenStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_GREEN); +$redStyle = new Style(false, true); +$redStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_RED); + +// Set conditional formatting rules and styles +$helper->log('Define conditional formatting and set styles'); + +// Set rules for Blank Comparison +$cellRange = 'A2:B3'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\Blanks $blanksWizard */ +$blanksWizard = $wizardFactory->newRule(Wizard::BLANKS); + +$blanksWizard->setStyle($redStyle); +$conditionalStyles[] = $blanksWizard->getConditional(); + +$blanksWizard->notBlank() + ->setStyle($greenStyle); +$conditionalStyles[] = $blanksWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($blanksWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Save +$helper->write($spreadsheet, __FILE__); diff --git a/samples/ConditionalFormatting/04_Error_Comparisons.php b/samples/ConditionalFormatting/04_Error_Comparisons.php new file mode 100644 index 00000000..957569cf --- /dev/null +++ b/samples/ConditionalFormatting/04_Error_Comparisons.php @@ -0,0 +1,79 @@ +log('Create new Spreadsheet object'); +$spreadsheet = new Spreadsheet(); + +// Set document properties +$helper->log('Set document properties'); +$spreadsheet->getProperties()->setCreator('Mark Baker') + ->setLastModifiedBy('Mark Baker') + ->setTitle('PhpSpreadsheet Test Document') + ->setSubject('PhpSpreadsheet Test Document') + ->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.') + ->setKeywords('office PhpSpreadsheet php') + ->setCategory('Test result file'); + +// Create the worksheet +$helper->log('Add data'); +$spreadsheet->setActiveSheetIndex(0); +$spreadsheet->getActiveSheet() + ->setCellValue('A1', 'Error Comparison'); + +$dataArray = [ + [5, -2, '=A2/B2'], + [5, -1, '=A3/B3'], + [5, 0, '=A4/B4'], + [5, 1, '=A5/B5'], + [5, 2, '=A6/B6'], +]; + +$spreadsheet->getActiveSheet() + ->fromArray($dataArray, null, 'A2', true); + +// Set title row bold +$helper->log('Set title row bold'); +$spreadsheet->getActiveSheet()->getStyle('A1:C1')->getFont()->setBold(true); + +// Define some styles for our Conditionals +$helper->log('Define some styles for our Conditionals'); +$greenStyle = new Style(false, true); +$greenStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_GREEN); +$redStyle = new Style(false, true); +$redStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_RED); + +// Set conditional formatting rules and styles +$helper->log('Define conditional formatting and set styles'); + +// Set rules for Blank Comparison +$cellRange = 'C2:C6'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\Errors $errorsWizard */ +$errorsWizard = $wizardFactory->newRule(Wizard::ERRORS); + +$errorsWizard->setStyle($redStyle); +$conditionalStyles[] = $errorsWizard->getConditional(); + +$errorsWizard->notError() + ->setStyle($greenStyle); +$conditionalStyles[] = $errorsWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($errorsWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Save +$helper->write($spreadsheet, __FILE__); diff --git a/samples/ConditionalFormatting/05_Date_Comparisons.php b/samples/ConditionalFormatting/05_Date_Comparisons.php new file mode 100644 index 00000000..ef9ad405 --- /dev/null +++ b/samples/ConditionalFormatting/05_Date_Comparisons.php @@ -0,0 +1,152 @@ +log('Create new Spreadsheet object'); +$spreadsheet = new Spreadsheet(); + +// Set document properties +$helper->log('Set document properties'); +$spreadsheet->getProperties()->setCreator('Mark Baker') + ->setLastModifiedBy('Mark Baker') + ->setTitle('PhpSpreadsheet Test Document') + ->setSubject('PhpSpreadsheet Test Document') + ->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.') + ->setKeywords('office PhpSpreadsheet php') + ->setCategory('Test result file'); + +// Create the worksheet +$helper->log('Add data'); + +$spreadsheet->setActiveSheetIndex(0); +$spreadsheet->getActiveSheet() + ->setCellValue('B1', 'yesterday()') + ->setCellValue('C1', 'today()') + ->setCellValue('D1', 'tomorrow()') + ->setCellValue('E1', 'last7Days()') + ->setCellValue('F1', 'lastWeek()') + ->setCellValue('G1', 'thisWeek()') + ->setCellValue('H1', 'nextWeek()') + ->setCellValue('I1', 'lastMonth()') + ->setCellValue('J1', 'thisMonth()') + ->setCellValue('K1', 'nextMonth()'); + +$dateFunctionArray = [ + 'yesterday()', + 'today()', + 'tomorrow()', + 'last7Days()', + 'lastWeek()', + 'thisWeek()', + 'nextWeek()', + 'lastMonth()', + 'thisMonth()', + 'nextMonth()', +]; +$dateTitleArray = [ + ['First day of last month'], + ['Last day of last month'], + ['Last Monday'], + ['Last Friday'], + ['Monday last week'], + ['Wednesday last week'], + ['Friday last week'], + ['Yesterday'], + ['Today'], + ['Tomorrow'], + ['Monday this week'], + ['Wednesday this week'], + ['Friday this week'], + ['Monday next week'], + ['Wednesday next week'], + ['Friday next week'], + ['First day of next month'], + ['Last day of next month'], +]; +$dataArray = [ + ['=EOMONTH(TODAY(),-2)+1'], + ['=EOMONTH(TODAY(),-1)'], + ['=TODAY()-WEEKDAY(TODAY(),3)'], + ['=TODAY()-WEEKDAY(TODAY())-1'], + ['=2-WEEKDAY(TODAY())+TODAY()-7'], + ['=4-WEEKDAY(TODAY())+TODAY()-7'], + ['=6-WEEKDAY(TODAY())+TODAY()-7'], + ['=TODAY()-1'], + ['=TODAY()'], + ['=TODAY()+1'], + ['=2-WEEKDAY(TODAY())+TODAY()'], + ['=4-WEEKDAY(TODAY())+TODAY()'], + ['=6-WEEKDAY(TODAY())+TODAY()'], + ['=2-WEEKDAY(TODAY())+TODAY()+7'], + ['=4-WEEKDAY(TODAY())+TODAY()+7'], + ['=6-WEEKDAY(TODAY())+TODAY()+7'], + ['=EOMONTH(TODAY(),0)+1'], + ['=EOMONTH(TODAY(),1)'], +]; + +$spreadsheet->getActiveSheet() + ->fromArray($dateFunctionArray, null, 'B1', true); +$spreadsheet->getActiveSheet() + ->fromArray($dateTitleArray, null, 'A2', true); +for ($column = 'B'; $column !== 'L'; ++$column) { + $spreadsheet->getActiveSheet() + ->fromArray($dataArray, null, "{$column}2", true); +} + +// Set title row bold +$helper->log('Set title row bold'); +$spreadsheet->getActiveSheet()->getStyle('B1:K1')->getFont()->setBold(true); +$spreadsheet->getActiveSheet()->getStyle('B1:K1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_RIGHT); + +// Define some styles for our Conditionals +$helper->log('Define some styles for our Conditionals'); + +$yellowStyle = new Style(false, true); +$yellowStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_YELLOW); +$yellowStyle->getNumberFormat()->setFormatCode('ddd dd-mmm-yyyy'); + +// Set conditional formatting rules and styles +$helper->log('Define conditional formatting and set styles'); +for ($column = 'B'; $column !== 'L'; ++$column) { + $wizardFactory = new Wizard("{$column}2:{$column}19"); + /** @var Wizard\DateValue $dateWizard */ + $dateWizard = $wizardFactory->newRule(Wizard::DATES_OCCURRING); + $conditionalStyles = []; + + $methodName = trim($spreadsheet->getActiveSheet()->getCell("{$column}1")->getValue(), '()'); + $dateWizard->$methodName() + ->setStyle($yellowStyle); + + $conditionalStyles[] = $dateWizard->getConditional(); + + $spreadsheet->getActiveSheet() + ->getStyle($dateWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); +} + +// Set conditional formatting rules and styles +$helper->log('Set some additional styling for date formats'); + +$spreadsheet->getActiveSheet()->getStyle('B:B')->getNumberFormat()->setFormatCode('ddd dd-mmm-yyyy'); +for ($column = 'A'; $column !== 'L'; ++$column) { + if ($column !== 'A') { + $spreadsheet->getActiveSheet()->getStyle("{$column}:{$column}") + ->getNumberFormat()->setFormatCode('ddd dd-mmm-yyyy'); + } + $spreadsheet->getActiveSheet()->getColumnDimension($column) + ->setAutoSize(true); +} +$spreadsheet->getActiveSheet()->getStyle('A:A')->getFont()->setBold(true); + +// Save +$helper->write($spreadsheet, __FILE__); diff --git a/samples/ConditionalFormatting/06_Duplicate_Comparisons.php b/samples/ConditionalFormatting/06_Duplicate_Comparisons.php new file mode 100644 index 00000000..0b94bd47 --- /dev/null +++ b/samples/ConditionalFormatting/06_Duplicate_Comparisons.php @@ -0,0 +1,85 @@ +log('Create new Spreadsheet object'); +$spreadsheet = new Spreadsheet(); + +// Set document properties +$helper->log('Set document properties'); +$spreadsheet->getProperties()->setCreator('Mark Baker') + ->setLastModifiedBy('Mark Baker') + ->setTitle('PhpSpreadsheet Test Document') + ->setSubject('PhpSpreadsheet Test Document') + ->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.') + ->setKeywords('office PhpSpreadsheet php') + ->setCategory('Test result file'); + +// Create the worksheet +$helper->log('Add data'); +$spreadsheet->setActiveSheetIndex(0); +$spreadsheet->getActiveSheet() + ->setCellValue('A1', 'Duplicates Comparison'); + +$dataArray = [ + [1, 0, 3], + [2, 1, 1], + [3, 1, 4], + [4, 2, 1], + [5, 3, 5], + [6, 5, 9], + [7, 8, 2], + [8, 13, 6], + [9, 21, 5], + [10, 34, 3], + [11, 55, 5], +]; + +$spreadsheet->getActiveSheet() + ->fromArray($dataArray, null, 'A2', true); + +// Set title row bold +$helper->log('Set title row bold'); +$spreadsheet->getActiveSheet()->getStyle('A1:C1')->getFont()->setBold(true); + +// Define some styles for our Conditionals +$helper->log('Define some styles for our Conditionals'); +$greenStyle = new Style(false, true); +$greenStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_GREEN); +$yellowStyle = new Style(false, true); +$yellowStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_YELLOW); + +// Set conditional formatting rules and styles +$helper->log('Define conditional formatting and set styles'); + +// Set rules for Duplicates Comparison +$cellRange = 'A2:C12'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\Duplicates $duplicatesWizard */ +$duplicatesWizard = $wizardFactory->newRule(Wizard::DUPLICATES); + +$duplicatesWizard->setStyle($yellowStyle); +$conditionalStyles[] = $duplicatesWizard->getConditional(); + +$duplicatesWizard->unique() + ->setStyle($greenStyle); +$conditionalStyles[] = $duplicatesWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($duplicatesWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Save +$helper->write($spreadsheet, __FILE__); diff --git a/samples/ConditionalFormatting/07_Expression_Comparisons.php b/samples/ConditionalFormatting/07_Expression_Comparisons.php new file mode 100644 index 00000000..6ea16bcc --- /dev/null +++ b/samples/ConditionalFormatting/07_Expression_Comparisons.php @@ -0,0 +1,147 @@ +log('Create new Spreadsheet object'); +$spreadsheet = new Spreadsheet(); + +// Set document properties +$helper->log('Set document properties'); +$spreadsheet->getProperties()->setCreator('Mark Baker') + ->setLastModifiedBy('Mark Baker') + ->setTitle('PhpSpreadsheet Test Document') + ->setSubject('PhpSpreadsheet Test Document') + ->setDescription('Test document for PhpSpreadsheet, generated using PHP classes.') + ->setKeywords('office PhpSpreadsheet php') + ->setCategory('Test result file'); + +// Create the worksheet +$helper->log('Add data'); +$spreadsheet->setActiveSheetIndex(0); +$spreadsheet->getActiveSheet() + ->setCellValue('A1', 'Odd/Even Expression Comparison') + ->setCellValue('A15', 'Sales Grid Expression Comparison') + ->setCellValue('A25', 'Sales Grid Multiple Expression Comparison'); + +$dataArray = [ + [1, 0, 3], + [2, 1, 1], + [3, 1, 4], + [4, 2, 1], + [5, 3, 5], + [6, 5, 9], + [7, 8, 2], + [8, 13, 6], + [9, 21, 5], + [10, 34, 4], +]; + +$salesGrid = [ + ['Name', 'Sales', 'Country', 'Quarter'], + ['Smith', 16753, 'UK', 'Q3'], + ['Johnson', 14808, 'USA', 'Q4'], + ['Williams', 10644, 'UK', 'Q2'], + ['Jones', 1390, 'USA', 'Q3'], + ['Brown', 4865, 'USA', 'Q4'], + ['Williams', 12438, 'UK', 'Q2'], +]; + +$spreadsheet->getActiveSheet() + ->fromArray($dataArray, null, 'A2', true); +$spreadsheet->getActiveSheet() + ->fromArray($salesGrid, null, 'A16', true); +$spreadsheet->getActiveSheet() + ->fromArray($salesGrid, null, 'A26', true); + +// Set title row bold +$helper->log('Set title row bold'); +$spreadsheet->getActiveSheet()->getStyle('A1:B1')->getFont()->setBold(true); +$spreadsheet->getActiveSheet()->getStyle('A15:D16')->getFont()->setBold(true); +$spreadsheet->getActiveSheet()->getStyle('A25:D26')->getFont()->setBold(true); + +// Define some styles for our Conditionals +$helper->log('Define some styles for our Conditionals'); +$greenStyle = new Style(false, true); +$greenStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_GREEN); +$yellowStyle = new Style(false, true); +$yellowStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_YELLOW); + +$greenStyleMoney = clone $greenStyle; +$greenStyleMoney->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_ACCOUNTING_USD); + +// Set conditional formatting rules and styles +$helper->log('Define conditional formatting and set styles'); + +// Set rules for Odd/Even Expression Comparison +$cellRange = 'A2:C11'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\Expression $expressionWizard */ +$expressionWizard = $wizardFactory->newRule(Wizard::EXPRESSION); + +$expressionWizard->expression('ISODD(A1)') + ->setStyle($greenStyle); +$conditionalStyles[] = $expressionWizard->getConditional(); + +$expressionWizard->expression('ISEVEN(A1)') + ->setStyle($yellowStyle); +$conditionalStyles[] = $expressionWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($expressionWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Set rules for Sales Grid Row match against Country Comparison +$cellRange = 'A17:D22'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\Expression $expressionWizard */ +$expressionWizard = $wizardFactory->newRule(Wizard::EXPRESSION); + +$expressionWizard->expression('$C1="USA"') + ->setStyle($greenStyleMoney); +$conditionalStyles[] = $expressionWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($expressionWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Set rules for Sales Grid Row match against Country and Quarter Comparison +$cellRange = 'A27:D32'; +$conditionalStyles = []; +$wizardFactory = new Wizard($cellRange); +/** @var Wizard\Expression $expressionWizard */ +$expressionWizard = $wizardFactory->newRule(Wizard::EXPRESSION); + +$expressionWizard->expression('AND($C1="USA",$D1="Q4")') + ->setStyle($greenStyleMoney); +$conditionalStyles[] = $expressionWizard->getConditional(); + +$spreadsheet->getActiveSheet() + ->getStyle($expressionWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + +// Set conditional formatting rules and styles +$helper->log('Set some additional styling for money formats'); + +$spreadsheet->getActiveSheet()->getStyle('B17:B22') + ->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_ACCOUNTING_USD); +$spreadsheet->getActiveSheet()->getStyle('B27:B32') + ->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_ACCOUNTING_USD); +$spreadsheet->getActiveSheet()->getColumnDimension('B') + ->setAutoSize(true); + +// Save +$helper->write($spreadsheet, __FILE__); diff --git a/src/PhpSpreadsheet/Calculation/Calculation.php b/src/PhpSpreadsheet/Calculation/Calculation.php index 25f76959..4f4b0607 100644 --- a/src/PhpSpreadsheet/Calculation/Calculation.php +++ b/src/PhpSpreadsheet/Calculation/Calculation.php @@ -223,7 +223,7 @@ class Calculation * * @var array */ - private static $excelConstants = [ + public static $excelConstants = [ 'TRUE' => true, 'FALSE' => false, 'NULL' => null, diff --git a/src/PhpSpreadsheet/Cell/Cell.php b/src/PhpSpreadsheet/Cell/Cell.php index a4d74daf..fe4a1f41 100644 --- a/src/PhpSpreadsheet/Cell/Cell.php +++ b/src/PhpSpreadsheet/Cell/Cell.php @@ -8,6 +8,7 @@ use PhpOffice\PhpSpreadsheet\Collection\Cells; use PhpOffice\PhpSpreadsheet\Exception; use PhpOffice\PhpSpreadsheet\RichText\RichText; use PhpOffice\PhpSpreadsheet\Shared\Date as SharedDate; +use PhpOffice\PhpSpreadsheet\Style\ConditionalFormatting\CellStyleAssessor; use PhpOffice\PhpSpreadsheet\Style\NumberFormat; use PhpOffice\PhpSpreadsheet\Style\Style; use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; @@ -559,14 +560,30 @@ class Cell /** * Get cell style. - * - * @return Style */ - public function getStyle() + public function getStyle(): Style { return $this->getWorksheet()->getStyle($this->getCoordinate()); } + /** + * Get cell style. + */ + public function getAppliedStyle(): Style + { + if ($this->getWorksheet()->conditionalStylesExists($this->getCoordinate()) === false) { + return $this->getStyle(); + } + $range = $this->getWorksheet()->getConditionalRange($this->getCoordinate()); + if ($range === null) { + return $this->getStyle(); + } + + $matcher = new CellStyleAssessor($this, $range); + + return $matcher->matchConditions($this->getWorksheet()->getConditionalStyles($this->getCoordinate())); + } + /** * Re-bind parent. * diff --git a/src/PhpSpreadsheet/Reader/Xlsx.php b/src/PhpSpreadsheet/Reader/Xlsx.php index 75703be3..3312d42b 100644 --- a/src/PhpSpreadsheet/Reader/Xlsx.php +++ b/src/PhpSpreadsheet/Reader/Xlsx.php @@ -708,9 +708,12 @@ class Xlsx extends BaseReader $xmlSheetMain = $xmlSheetNS->children($mainNS); // Setting Conditional Styles adjusts selected cells, so we need to execute this // before reading the sheet view data to get the actual selected cells - if (!$this->readDataOnly && $xmlSheet->conditionalFormatting) { + if (!$this->readDataOnly && ($xmlSheet->conditionalFormatting)) { (new ConditionalStyles($docSheet, $xmlSheet, $dxfs))->load(); } + if (!$this->readDataOnly && $xmlSheet->extLst) { + (new ConditionalStyles($docSheet, $xmlSheet, $dxfs))->loadFromExt($this->styleReader); + } if (isset($xmlSheetMain->sheetViews, $xmlSheetMain->sheetViews->sheetView)) { $sheetViews = new SheetViews($xmlSheetMain->sheetViews->sheetView, $docSheet); $sheetViews->load(); diff --git a/src/PhpSpreadsheet/Reader/Xlsx/ConditionalStyles.php b/src/PhpSpreadsheet/Reader/Xlsx/ConditionalStyles.php index dcd7ad12..ce1e1e63 100644 --- a/src/PhpSpreadsheet/Reader/Xlsx/ConditionalStyles.php +++ b/src/PhpSpreadsheet/Reader/Xlsx/ConditionalStyles.php @@ -2,10 +2,12 @@ namespace PhpOffice\PhpSpreadsheet\Reader\Xlsx; +use PhpOffice\PhpSpreadsheet\Reader\Xlsx\Styles as StyleReader; use PhpOffice\PhpSpreadsheet\Style\Conditional; use PhpOffice\PhpSpreadsheet\Style\ConditionalFormatting\ConditionalDataBar; use PhpOffice\PhpSpreadsheet\Style\ConditionalFormatting\ConditionalFormattingRuleExtension; use PhpOffice\PhpSpreadsheet\Style\ConditionalFormatting\ConditionalFormatValueObject; +use PhpOffice\PhpSpreadsheet\Style\Style as Style; use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; use SimpleXMLElement; @@ -15,6 +17,11 @@ class ConditionalStyles private $worksheetXml; + /** + * @var array + */ + private $ns; + private $dxfs; public function __construct(Worksheet $workSheet, SimpleXMLElement $worksheetXml, array $dxfs = []) @@ -33,7 +40,113 @@ class ConditionalStyles ); } - private function readConditionalStyles($xmlSheet) + public function loadFromExt(StyleReader $styleReader): void + { + $this->ns = $this->worksheetXml->getNamespaces(true); + $this->setConditionalsFromExt( + $this->readConditionalsFromExt($this->worksheetXml->extLst, $styleReader) + ); + } + + private function setConditionalsFromExt(array $conditionals): void + { + foreach ($conditionals as $conditionalRange => $cfRules) { + ksort($cfRules); + // Priority is used as the key for sorting; but may not start at 0, + // so we use array_values to reset the index after sorting. + $this->worksheet->getStyle($conditionalRange) + ->setConditionalStyles(array_values($cfRules)); + } + } + + private function readConditionalsFromExt(SimpleXMLElement $extLst, StyleReader $styleReader): array + { + $conditionals = []; + + if (isset($extLst->ext['uri']) && (string) $extLst->ext['uri'] === '{78C0D931-6437-407d-A8EE-F0AAD7539E65}') { + $conditionalFormattingRuleXml = $extLst->ext->children($this->ns['x14']); + if (!$conditionalFormattingRuleXml->conditionalFormattings) { + return []; + } + + foreach ($conditionalFormattingRuleXml->children($this->ns['x14']) as $extFormattingXml) { + $extFormattingRangeXml = $extFormattingXml->children($this->ns['xm']); + if (!$extFormattingRangeXml->sqref) { + continue; + } + + $sqref = (string) $extFormattingRangeXml->sqref; + $extCfRuleXml = $extFormattingXml->cfRule; + + $attributes = $extCfRuleXml->attributes(); + if (!$attributes) { + continue; + } + $conditionType = (string) $attributes->type; + if ( + !Conditional::isValidConditionType($conditionType) || + $conditionType === Conditional::CONDITION_DATABAR + ) { + continue; + } + + $priority = (int) $attributes->priority; + + $conditional = $this->readConditionalRuleFromExt($extCfRuleXml, $attributes); + $cfStyle = $this->readStyleFromExt($extCfRuleXml, $styleReader); + $conditional->setStyle($cfStyle); + $conditionals[$sqref][$priority] = $conditional; + } + } + + return $conditionals; + } + + private function readConditionalRuleFromExt(SimpleXMLElement $cfRuleXml, SimpleXMLElement $attributes): Conditional + { + $conditionType = (string) $attributes->type; + $operatorType = (string) $attributes->operator; + + $operands = []; + foreach ($cfRuleXml->children($this->ns['xm']) as $cfRuleOperandsXml) { + $operands[] = (string) $cfRuleOperandsXml; + } + + $conditional = new Conditional(); + $conditional->setConditionType($conditionType); + $conditional->setOperatorType($operatorType); + if ( + $conditionType === Conditional::CONDITION_CONTAINSTEXT || + $conditionType === Conditional::CONDITION_NOTCONTAINSTEXT || + $conditionType === Conditional::CONDITION_BEGINSWITH || + $conditionType === Conditional::CONDITION_ENDSWITH || + $conditionType === Conditional::CONDITION_TIMEPERIOD + ) { + $conditional->setText(array_pop($operands) ?? ''); + } + $conditional->setConditions($operands); + + return $conditional; + } + + private function readStyleFromExt(SimpleXMLElement $extCfRuleXml, StyleReader $styleReader): Style + { + $cfStyle = new Style(false, true); + if ($extCfRuleXml->dxf) { + $styleXML = $extCfRuleXml->dxf->children(); + + if ($styleXML->borders) { + $styleReader->readBorderStyle($cfStyle->getBorders(), $styleXML->borders); + } + if ($styleXML->fill) { + $styleReader->readFillStyle($cfStyle->getFill(), $styleXML->fill); + } + } + + return $cfStyle; + } + + private function readConditionalStyles($xmlSheet): array { $conditionals = []; foreach ($xmlSheet->conditionalFormatting as $conditional) { @@ -51,12 +164,12 @@ class ConditionalStyles private function setConditionalStyles(Worksheet $worksheet, array $conditionals, $xmlExtLst): void { - foreach ($conditionals as $ref => $cfRules) { + foreach ($conditionals as $cellRangeReference => $cfRules) { ksort($cfRules); $conditionalStyles = $this->readStyleRules($cfRules, $xmlExtLst); - // Extract all cell references in $ref - $cellBlocks = explode(' ', str_replace('$', '', strtoupper($ref))); + // Extract all cell references in $cellRangeReference + $cellBlocks = explode(' ', str_replace('$', '', strtoupper($cellRangeReference))); foreach ($cellBlocks as $cellBlock) { $worksheet->getStyle($cellBlock)->setConditionalStyles($conditionalStyles); } @@ -67,6 +180,7 @@ class ConditionalStyles { $conditionalFormattingRuleExtensions = ConditionalFormattingRuleExtension::parseExtLstXml($extLst); $conditionalStyles = []; + foreach ($cfRules as $cfRule) { $objConditional = new Conditional(); $objConditional->setConditionType((string) $cfRule['type']); @@ -74,6 +188,8 @@ class ConditionalStyles if ((string) $cfRule['text'] != '') { $objConditional->setText((string) $cfRule['text']); + } elseif ((string) $cfRule['timePeriod'] != '') { + $objConditional->setText((string) $cfRule['timePeriod']); } if (isset($cfRule['stopIfTrue']) && (int) $cfRule['stopIfTrue'] === 1) { diff --git a/src/PhpSpreadsheet/Style/Conditional.php b/src/PhpSpreadsheet/Style/Conditional.php index e148ee82..e67964c2 100644 --- a/src/PhpSpreadsheet/Style/Conditional.php +++ b/src/PhpSpreadsheet/Style/Conditional.php @@ -9,23 +9,37 @@ class Conditional implements IComparable { // Condition types const CONDITION_NONE = 'none'; + const CONDITION_BEGINSWITH = 'beginsWith'; const CONDITION_CELLIS = 'cellIs'; - const CONDITION_CONTAINSTEXT = 'containsText'; - const CONDITION_EXPRESSION = 'expression'; const CONDITION_CONTAINSBLANKS = 'containsBlanks'; - const CONDITION_NOTCONTAINSBLANKS = 'notContainsBlanks'; + const CONDITION_CONTAINSERRORS = 'containsErrors'; + const CONDITION_CONTAINSTEXT = 'containsText'; const CONDITION_DATABAR = 'dataBar'; + const CONDITION_ENDSWITH = 'endsWith'; + const CONDITION_EXPRESSION = 'expression'; + const CONDITION_NOTCONTAINSBLANKS = 'notContainsBlanks'; + const CONDITION_NOTCONTAINSERRORS = 'notContainsErrors'; const CONDITION_NOTCONTAINSTEXT = 'notContainsText'; + const CONDITION_TIMEPERIOD = 'timePeriod'; + const CONDITION_DUPLICATES = 'duplicateValues'; + const CONDITION_UNIQUE = 'uniqueValues'; private const CONDITION_TYPES = [ + self::CONDITION_BEGINSWITH, self::CONDITION_CELLIS, self::CONDITION_CONTAINSBLANKS, + self::CONDITION_CONTAINSERRORS, self::CONDITION_CONTAINSTEXT, self::CONDITION_DATABAR, + self::CONDITION_DUPLICATES, + self::CONDITION_ENDSWITH, self::CONDITION_EXPRESSION, self::CONDITION_NONE, self::CONDITION_NOTCONTAINSBLANKS, + self::CONDITION_NOTCONTAINSERRORS, self::CONDITION_NOTCONTAINSTEXT, + self::CONDITION_TIMEPERIOD, + self::CONDITION_UNIQUE, ]; // Operator types @@ -43,6 +57,17 @@ class Conditional implements IComparable const OPERATOR_BETWEEN = 'between'; const OPERATOR_NOTBETWEEN = 'notBetween'; + const TIMEPERIOD_TODAY = 'today'; + const TIMEPERIOD_YESTERDAY = 'yesterday'; + const TIMEPERIOD_TOMORROW = 'tomorrow'; + const TIMEPERIOD_LAST_7_DAYS = 'last7Days'; + const TIMEPERIOD_LAST_WEEK = 'lastWeek'; + const TIMEPERIOD_THIS_WEEK = 'thisWeek'; + const TIMEPERIOD_NEXT_WEEK = 'nextWeek'; + const TIMEPERIOD_LAST_MONTH = 'lastMonth'; + const TIMEPERIOD_THIS_MONTH = 'thisMonth'; + const TIMEPERIOD_NEXT_MONTH = 'nextMonth'; + /** * Condition type. * diff --git a/src/PhpSpreadsheet/Style/ConditionalFormatting/CellMatcher.php b/src/PhpSpreadsheet/Style/ConditionalFormatting/CellMatcher.php new file mode 100644 index 00000000..7d520120 --- /dev/null +++ b/src/PhpSpreadsheet/Style/ConditionalFormatting/CellMatcher.php @@ -0,0 +1,312 @@ + '=', + Conditional::OPERATOR_GREATERTHAN => '>', + Conditional::OPERATOR_GREATERTHANOREQUAL => '>=', + Conditional::OPERATOR_LESSTHAN => '<', + Conditional::OPERATOR_LESSTHANOREQUAL => '<=', + Conditional::OPERATOR_NOTEQUAL => '<>', + ]; + + public const COMPARISON_RANGE_OPERATORS = [ + Conditional::OPERATOR_BETWEEN => 'IF(AND(A1>=%s,A1<=%s),TRUE,FALSE)', + Conditional::OPERATOR_NOTBETWEEN => 'IF(AND(A1>=%s,A1<=%s),FALSE,TRUE)', + ]; + + public const COMPARISON_DUPLICATES_OPERATORS = [ + Conditional::CONDITION_DUPLICATES => "COUNTIF('%s'!%s,%s)>1", + Conditional::CONDITION_UNIQUE => "COUNTIF('%s'!%s,%s)=1", + ]; + + /** + * @var Cell + */ + protected $cell; + + /** + * @var int + */ + protected $cellRow; + + /** + * @var Worksheet + */ + protected $worksheet; + + /** + * @var int + */ + protected $cellColumn; + + /** + * @var string + */ + protected $conditionalRange; + + /** + * @var string + */ + protected $referenceCell; + + /** + * @var int + */ + protected $referenceRow; + + /** + * @var int + */ + protected $referenceColumn; + + /** + * @var Calculation + */ + protected $engine; + + public function __construct(Cell $cell, string $conditionalRange) + { + $this->cell = $cell; + $this->worksheet = $cell->getWorksheet(); + [$this->cellColumn, $this->cellRow] = Coordinate::indexesFromString($this->cell->getCoordinate()); + $this->setReferenceCellForExpressions($conditionalRange); + + $this->engine = Calculation::getInstance($this->worksheet->getParent()); + } + + protected function setReferenceCellForExpressions(string $conditionalRange): void + { + $conditionalRange = Coordinate::splitRange(str_replace('$', '', strtoupper($conditionalRange))); + [$this->referenceCell] = $conditionalRange[0]; + + [$this->referenceColumn, $this->referenceRow] = Coordinate::indexesFromString($this->referenceCell); + + // Convert our conditional range to an absolute conditional range, so it can be used "pinned" in formulae + $rangeSets = []; + foreach ($conditionalRange as $rangeSet) { + $absoluteRangeSet = array_map( + [Coordinate::class, 'absoluteCoordinate'], + $rangeSet + ); + $rangeSets[] = implode(':', $absoluteRangeSet); + } + $this->conditionalRange = implode(',', $rangeSets); + } + + public function evaluateConditional(Conditional $conditional): bool + { + // Some calculations may modify the stored cell; so reset it before every evaluation. + $cellColumn = Coordinate::stringFromColumnIndex($this->cellColumn); + $cellAddress = "{$cellColumn}{$this->cellRow}"; + $this->cell = $this->worksheet->getCell($cellAddress); + + switch ($conditional->getConditionType()) { + case Conditional::CONDITION_CELLIS: + return $this->processOperatorComparison($conditional); + case Conditional::CONDITION_DUPLICATES: + case Conditional::CONDITION_UNIQUE: + return $this->processDuplicatesComparison($conditional); + case Conditional::CONDITION_CONTAINSTEXT: + // Expression is NOT(ISERROR(SEARCH("",))) + case Conditional::CONDITION_NOTCONTAINSTEXT: + // Expression is ISERROR(SEARCH("",)) + case Conditional::CONDITION_BEGINSWITH: + // Expression is LEFT(,LEN(""))="" + case Conditional::CONDITION_ENDSWITH: + // Expression is RIGHT(,LEN(""))="" + case Conditional::CONDITION_CONTAINSBLANKS: + // Expression is LEN(TRIM())=0 + case Conditional::CONDITION_NOTCONTAINSBLANKS: + // Expression is LEN(TRIM())>0 + case Conditional::CONDITION_CONTAINSERRORS: + // Expression is ISERROR() + case Conditional::CONDITION_NOTCONTAINSERRORS: + // Expression is NOT(ISERROR()) + case Conditional::CONDITION_TIMEPERIOD: + // Expression varies, depending on specified timePeriod value, e.g. + // Yesterday FLOOR(,1)=TODAY()-1 + // Today FLOOR(,1)=TODAY() + // Tomorrow FLOOR(,1)=TODAY()+1 + // Last 7 Days AND(TODAY()-FLOOR(,1)<=6,FLOOR(,1)<=TODAY()) + case Conditional::CONDITION_EXPRESSION: + return $this->processExpression($conditional); + } + + return false; + } + + /** + * @param mixed $value + * + * @return float|int|string + */ + protected function wrapValue($value) + { + if (!is_numeric($value)) { + if (is_bool($value)) { + return $value ? 'TRUE' : 'FALSE'; + } elseif ($value === null) { + return 'NULL'; + } + + return '"' . $value . '"'; + } + + return $value; + } + + /** + * @return float|int|string + */ + protected function wrapCellValue() + { + return $this->wrapValue($this->cell->getCalculatedValue()); + } + + /** + * @return float|int|string + */ + protected function conditionCellAdjustment(array $matches) + { + $column = $matches[6]; + $row = $matches[7]; + + if (strpos($column, '$') === false) { + $column = Coordinate::columnIndexFromString($column); + $column += $this->cellColumn - $this->referenceColumn; + $column = Coordinate::stringFromColumnIndex($column); + } + + if (strpos($row, '$') === false) { + $row += $this->cellRow - $this->referenceRow; + } + + if (!empty($matches[4])) { + $worksheet = $this->worksheet->getParent()->getSheetByName(trim($matches[4], "'")); + if ($worksheet === null) { + return $this->wrapValue(null); + } + + return $this->wrapValue( + $worksheet + ->getCell(str_replace('$', '', "{$column}{$row}")) + ->getCalculatedValue() + ); + } + + return $this->wrapValue( + $this->worksheet + ->getCell(str_replace('$', '', "{$column}{$row}")) + ->getCalculatedValue() + ); + } + + protected function cellConditionCheck(string $condition): string + { + $splitCondition = explode(Calculation::FORMULA_STRING_QUOTE, $condition); + $i = false; + foreach ($splitCondition as &$value) { + // Only count/replace in alternating array entries (ie. not in quoted strings) + if ($i = !$i) { + $value = preg_replace_callback( + '/' . Calculation::CALCULATION_REGEXP_CELLREF_RELATIVE . '/i', + [$this, 'conditionCellAdjustment'], + $value + ); + } + } + unset($value); + // Then rebuild the condition string to return it + return implode(Calculation::FORMULA_STRING_QUOTE, $splitCondition); + } + + protected function adjustConditionsForCellReferences(array $conditions): array + { + return array_map( + [$this, 'cellConditionCheck'], + $conditions + ); + } + + protected function processOperatorComparison(Conditional $conditional): bool + { + if (array_key_exists($conditional->getOperatorType(), self::COMPARISON_RANGE_OPERATORS)) { + return $this->processRangeOperator($conditional); + } + + $operator = self::COMPARISON_OPERATORS[$conditional->getOperatorType()]; + $conditions = $this->adjustConditionsForCellReferences($conditional->getConditions()); + $expression = sprintf('%s%s%s', (string) $this->wrapCellValue(), $operator, (string) array_pop($conditions)); + + return $this->evaluateExpression($expression); + } + + protected function processRangeOperator(Conditional $conditional): bool + { + $conditions = $this->adjustConditionsForCellReferences($conditional->getConditions()); + sort($conditions); + $expression = sprintf( + (string) preg_replace( + '/\bA1\b/i', + (string) $this->wrapCellValue(), + self::COMPARISON_RANGE_OPERATORS[$conditional->getOperatorType()] + ), + ...$conditions + ); + + return $this->evaluateExpression($expression); + } + + protected function processDuplicatesComparison(Conditional $conditional): bool + { + $worksheetName = $this->cell->getWorksheet()->getTitle(); + + $expression = sprintf( + self::COMPARISON_DUPLICATES_OPERATORS[$conditional->getConditionType()], + $worksheetName, + $this->conditionalRange, + $this->cellConditionCheck($this->cell->getCalculatedValue()) + ); + + return $this->evaluateExpression($expression); + } + + protected function processExpression(Conditional $conditional): bool + { + $conditions = $this->adjustConditionsForCellReferences($conditional->getConditions()); + $expression = array_pop($conditions); + + $expression = preg_replace( + '/\b' . $this->referenceCell . '\b/i', + (string) $this->wrapCellValue(), + $expression + ); + + return $this->evaluateExpression($expression); + } + + protected function evaluateExpression(string $expression): bool + { + $expression = "={$expression}"; + + try { + $this->engine->flushInstance(); + $result = (bool) $this->engine->calculateFormula($expression); + } catch (Exception $e) { + return false; + } + + return $result; + } +} diff --git a/src/PhpSpreadsheet/Style/ConditionalFormatting/CellStyleAssessor.php b/src/PhpSpreadsheet/Style/ConditionalFormatting/CellStyleAssessor.php new file mode 100644 index 00000000..4c000db3 --- /dev/null +++ b/src/PhpSpreadsheet/Style/ConditionalFormatting/CellStyleAssessor.php @@ -0,0 +1,45 @@ +cellMatcher = new CellMatcher($cell, $conditionalRange); + $this->styleMerger = new StyleMerger($cell->getStyle()); + } + + /** + * @param Conditional[] $conditionalStyles + */ + public function matchConditions(array $conditionalStyles = []): Style + { + foreach ($conditionalStyles as $conditional) { + /** @var Conditional $conditional */ + if ($this->cellMatcher->evaluateConditional($conditional) === true) { + // Merging the conditional style into the base style goes in here + $this->styleMerger->mergeStyle($conditional->getStyle()); + if ($conditional->getStopIfTrue() === true) { + break; + } + } + } + + return $this->styleMerger->getStyle(); + } +} diff --git a/src/PhpSpreadsheet/Style/ConditionalFormatting/StyleMerger.php b/src/PhpSpreadsheet/Style/ConditionalFormatting/StyleMerger.php new file mode 100644 index 00000000..95e6dfd8 --- /dev/null +++ b/src/PhpSpreadsheet/Style/ConditionalFormatting/StyleMerger.php @@ -0,0 +1,118 @@ +baseStyle = $baseStyle; + } + + public function getStyle(): Style + { + return $this->baseStyle; + } + + public function mergeStyle(Style $style): void + { + if ($style->getNumberFormat() !== null && $style->getNumberFormat()->getFormatCode() !== null) { + $this->baseStyle->getNumberFormat()->setFormatCode($style->getNumberFormat()->getFormatCode()); + } + + if ($style->getFont() !== null) { + $this->mergeFontStyle($this->baseStyle->getFont(), $style->getFont()); + } + + if ($style->getFill() !== null) { + $this->mergeFillStyle($this->baseStyle->getFill(), $style->getFill()); + } + + if ($style->getBorders() !== null) { + $this->mergeBordersStyle($this->baseStyle->getBorders(), $style->getBorders()); + } + } + + protected function mergeFontStyle(Font $baseFontStyle, Font $fontStyle): void + { + if ($fontStyle->getBold() !== null) { + $baseFontStyle->setBold($fontStyle->getBold()); + } + + if ($fontStyle->getItalic() !== null) { + $baseFontStyle->setItalic($fontStyle->getItalic()); + } + + if ($fontStyle->getStrikethrough() !== null) { + $baseFontStyle->setStrikethrough($fontStyle->getStrikethrough()); + } + + if ($fontStyle->getUnderline() !== null) { + $baseFontStyle->setUnderline($fontStyle->getUnderline()); + } + + if ($fontStyle->getColor() !== null && $fontStyle->getColor()->getARGB() !== null) { + $baseFontStyle->setColor($fontStyle->getColor()); + } + } + + protected function mergeFillStyle(Fill $baseFillStyle, Fill $fillStyle): void + { + if ($fillStyle->getFillType() !== null) { + $baseFillStyle->setFillType($fillStyle->getFillType()); + } + + if ($fillStyle->getRotation() !== null) { + $baseFillStyle->setRotation($fillStyle->getRotation()); + } + + if ($fillStyle->getStartColor() !== null && $fillStyle->getStartColor()->getARGB() !== null) { + $baseFillStyle->setStartColor($fillStyle->getStartColor()); + } + + if ($fillStyle->getEndColor() !== null && $fillStyle->getEndColor()->getARGB() !== null) { + $baseFillStyle->setEndColor($fillStyle->getEndColor()); + } + } + + protected function mergeBordersStyle(Borders $baseBordersStyle, Borders $bordersStyle): void + { + if ($bordersStyle->getTop() !== null) { + $this->mergeBorderStyle($baseBordersStyle->getTop(), $bordersStyle->getTop()); + } + + if ($bordersStyle->getBottom() !== null) { + $this->mergeBorderStyle($baseBordersStyle->getBottom(), $bordersStyle->getBottom()); + } + + if ($bordersStyle->getLeft() !== null) { + $this->mergeBorderStyle($baseBordersStyle->getLeft(), $bordersStyle->getLeft()); + } + + if ($bordersStyle->getRight() !== null) { + $this->mergeBorderStyle($baseBordersStyle->getRight(), $bordersStyle->getRight()); + } + } + + protected function mergeBorderStyle(Border $baseBorderStyle, Border $borderStyle): void + { + if ($borderStyle->getBorderStyle() !== null) { + $baseBorderStyle->setBorderStyle($borderStyle->getBorderStyle()); + } + + if ($borderStyle->getColor() !== null && $borderStyle->getColor()->getARGB() !== null) { + $baseBorderStyle->setColor($borderStyle->getColor()); + } + } +} diff --git a/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard.php b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard.php new file mode 100644 index 00000000..d5d56a9a --- /dev/null +++ b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard.php @@ -0,0 +1,95 @@ +cellRange = $cellRange; + } + + public function newRule(string $ruleType): WizardInterface + { + switch ($ruleType) { + case self::CELL_VALUE: + return new Wizard\CellValue($this->cellRange); + case self::TEXT_VALUE: + return new Wizard\TextValue($this->cellRange); + case self::BLANKS: + return new Wizard\Blanks($this->cellRange, true); + case self::NOT_BLANKS: + return new Wizard\Blanks($this->cellRange, false); + case self::ERRORS: + return new Wizard\Errors($this->cellRange, true); + case self::NOT_ERRORS: + return new Wizard\Errors($this->cellRange, false); + case self::EXPRESSION: + case self::FORMULA: + return new Wizard\Expression($this->cellRange); + case self::DATES_OCCURRING: + return new Wizard\DateValue($this->cellRange); + case self::DUPLICATES: + return new Wizard\Duplicates($this->cellRange, false); + case self::UNIQUE: + return new Wizard\Duplicates($this->cellRange, true); + default: + throw new Exception('No wizard exists for this CF rule type'); + } + } + + public static function fromConditional(Conditional $conditional, string $cellRange = 'A1'): WizardInterface + { + $conditionalType = $conditional->getConditionType(); + + switch ($conditionalType) { + case Conditional::CONDITION_CELLIS: + return Wizard\CellValue::fromConditional($conditional, $cellRange); + case Conditional::CONDITION_CONTAINSTEXT: + case Conditional::CONDITION_NOTCONTAINSTEXT: + case Conditional::CONDITION_BEGINSWITH: + case Conditional::CONDITION_ENDSWITH: + return Wizard\TextValue::fromConditional($conditional, $cellRange); + case Conditional::CONDITION_CONTAINSBLANKS: + case Conditional::CONDITION_NOTCONTAINSBLANKS: + return Wizard\Blanks::fromConditional($conditional, $cellRange); + case Conditional::CONDITION_CONTAINSERRORS: + case Conditional::CONDITION_NOTCONTAINSERRORS: + return Wizard\Errors::fromConditional($conditional, $cellRange); + case Conditional::CONDITION_TIMEPERIOD: + return Wizard\DateValue::fromConditional($conditional, $cellRange); + case Conditional::CONDITION_EXPRESSION: + return Wizard\Expression::fromConditional($conditional, $cellRange); + case Conditional::CONDITION_DUPLICATES: + case Conditional::CONDITION_UNIQUE: + return Wizard\Duplicates::fromConditional($conditional, $cellRange); + default: + throw new Exception('No wizard exists for this CF rule type'); + } + } +} diff --git a/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Blanks.php b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Blanks.php new file mode 100644 index 00000000..14f30d39 --- /dev/null +++ b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Blanks.php @@ -0,0 +1,99 @@ + false, + 'isBlank' => true, + 'notEmpty' => false, + 'empty' => true, + ]; + + protected const EXPRESSIONS = [ + Wizard::NOT_BLANKS => 'LEN(TRIM(%s))>0', + Wizard::BLANKS => 'LEN(TRIM(%s))=0', + ]; + + /** + * @var bool + */ + protected $inverse; + + public function __construct(string $cellRange, bool $inverse = false) + { + parent::__construct($cellRange); + $this->inverse = $inverse; + } + + protected function inverse(bool $inverse): void + { + $this->inverse = $inverse; + } + + protected function getExpression(): void + { + $this->expression = sprintf( + self::EXPRESSIONS[$this->inverse ? Wizard::BLANKS : Wizard::NOT_BLANKS], + $this->referenceCell + ); + } + + public function getConditional(): Conditional + { + $this->getExpression(); + + $conditional = new Conditional(); + $conditional->setConditionType( + $this->inverse ? Conditional::CONDITION_CONTAINSBLANKS : Conditional::CONDITION_NOTCONTAINSBLANKS + ); + $conditional->setConditions([$this->expression]); + $conditional->setStyle($this->getStyle()); + $conditional->setStopIfTrue($this->getStopIfTrue()); + + return $conditional; + } + + public static function fromConditional(Conditional $conditional, string $cellRange = 'A1'): WizardInterface + { + if ( + $conditional->getConditionType() !== Conditional::CONDITION_CONTAINSBLANKS && + $conditional->getConditionType() !== Conditional::CONDITION_NOTCONTAINSBLANKS + ) { + throw new Exception('Conditional is not a Blanks CF Rule conditional'); + } + + $wizard = new self($cellRange); + $wizard->style = $conditional->getStyle(); + $wizard->stopIfTrue = $conditional->getStopIfTrue(); + $wizard->inverse = $conditional->getConditionType() === Conditional::CONDITION_CONTAINSBLANKS; + + return $wizard; + } + + /** + * @param string $methodName + * @param mixed[] $arguments + */ + public function __call($methodName, $arguments): self + { + if (!array_key_exists($methodName, self::OPERATORS)) { + throw new Exception('Invalid Operation for Blanks CF Rule Wizard'); + } + + $this->inverse(self::OPERATORS[$methodName]); + + return $this; + } +} diff --git a/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/CellValue.php b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/CellValue.php new file mode 100644 index 00000000..f36033dd --- /dev/null +++ b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/CellValue.php @@ -0,0 +1,189 @@ + Conditional::OPERATOR_EQUAL, + 'notEquals' => Conditional::OPERATOR_NOTEQUAL, + 'greaterThan' => Conditional::OPERATOR_GREATERTHAN, + 'greaterThanOrEqual' => Conditional::OPERATOR_GREATERTHANOREQUAL, + 'lessThan' => Conditional::OPERATOR_LESSTHAN, + 'lessThanOrEqual' => Conditional::OPERATOR_LESSTHANOREQUAL, + 'between' => Conditional::OPERATOR_BETWEEN, + 'notBetween' => Conditional::OPERATOR_NOTBETWEEN, + ]; + + protected const SINGLE_OPERATORS = CellMatcher::COMPARISON_OPERATORS; + + protected const RANGE_OPERATORS = CellMatcher::COMPARISON_RANGE_OPERATORS; + + /** @var string */ + protected $operator = Conditional::OPERATOR_EQUAL; + + /** @var array */ + protected $operand = [0]; + + /** + * @var string[] + */ + protected $operandValueType = []; + + public function __construct(string $cellRange) + { + parent::__construct($cellRange); + } + + protected function operator(string $operator): void + { + if ((!isset(self::SINGLE_OPERATORS[$operator])) && (!isset(self::RANGE_OPERATORS[$operator]))) { + throw new Exception('Invalid Operator for Cell Value CF Rule Wizard'); + } + + $this->operator = $operator; + } + + /** + * @param mixed $operand + */ + protected function operand(int $index, $operand, string $operandValueType = Wizard::VALUE_TYPE_LITERAL): void + { + if (is_string($operand)) { + $operand = $this->validateOperand($operand, $operandValueType); + } + + $this->operand[$index] = $operand; + $this->operandValueType[$index] = $operandValueType; + } + + /** + * @param mixed $value + * + * @return float|int|string + */ + protected function wrapValue($value, string $operandValueType) + { + if (!is_numeric($value) && !is_bool($value) && null !== $value) { + if ($operandValueType === Wizard::VALUE_TYPE_LITERAL) { + return '"' . str_replace('"', '""', $value) . '"'; + } + + return $this->cellConditionCheck($value); + } + + if (null === $value) { + $value = 'NULL'; + } elseif (is_bool($value)) { + $value = $value ? 'TRUE' : 'FALSE'; + } + + return $value; + } + + public function getConditional(): Conditional + { + if (!isset(self::RANGE_OPERATORS[$this->operator])) { + unset($this->operand[1], $this->operandValueType[1]); + } + $values = array_map([$this, 'wrapValue'], $this->operand, $this->operandValueType); + + $conditional = new Conditional(); + $conditional->setConditionType(Conditional::CONDITION_CELLIS); + $conditional->setOperatorType($this->operator); + $conditional->setConditions($values); + $conditional->setStyle($this->getStyle()); + $conditional->setStopIfTrue($this->getStopIfTrue()); + + return $conditional; + } + + protected static function unwrapString(string $condition): string + { + if ((strpos($condition, '"') === 0) && (strpos(strrev($condition), '"') === 0)) { + $condition = substr($condition, 1, -1); + } + + return str_replace('""', '"', $condition); + } + + public static function fromConditional(Conditional $conditional, string $cellRange = 'A1'): WizardInterface + { + if ($conditional->getConditionType() !== Conditional::CONDITION_CELLIS) { + throw new Exception('Conditional is not a Cell Value CF Rule conditional'); + } + + $wizard = new self($cellRange); + $wizard->style = $conditional->getStyle(); + $wizard->stopIfTrue = $conditional->getStopIfTrue(); + + $wizard->operator = $conditional->getOperatorType(); + $conditions = $conditional->getConditions(); + foreach ($conditions as $index => $condition) { + // Best-guess to try and identify if the text is a string literal, a cell reference or a formula? + $operandValueType = Wizard::VALUE_TYPE_LITERAL; + if (is_string($condition)) { + if (array_key_exists($condition, Calculation::$excelConstants)) { + $condition = Calculation::$excelConstants[$condition]; + } elseif (preg_match('/^' . Calculation::CALCULATION_REGEXP_CELLREF_RELATIVE . '$/i', $condition)) { + $operandValueType = Wizard::VALUE_TYPE_CELL; + $condition = self::reverseAdjustCellRef($condition, $cellRange); + } elseif ( + preg_match('/\(\)/', $condition) || + preg_match('/' . Calculation::CALCULATION_REGEXP_CELLREF_RELATIVE . '/i', $condition) + ) { + $operandValueType = Wizard::VALUE_TYPE_FORMULA; + $condition = self::reverseAdjustCellRef($condition, $cellRange); + } else { + $condition = self::unwrapString($condition); + } + } + $wizard->operand($index, $condition, $operandValueType); + } + + return $wizard; + } + + /** + * @param string $methodName + * @param mixed[] $arguments + */ + public function __call($methodName, $arguments): self + { + if (!isset(self::MAGIC_OPERATIONS[$methodName]) && $methodName !== 'and') { + throw new Exception('Invalid Operator for Cell Value CF Rule Wizard'); + } + + if ($methodName === 'and') { + if (!isset(self::RANGE_OPERATORS[$this->operator])) { + throw new Exception('AND Value is only appropriate for range operators'); + } + + $this->operand(1, ...$arguments); + + return $this; + } + + $this->operator(self::MAGIC_OPERATIONS[$methodName]); + $this->operand(0, ...$arguments); + + return $this; + } +} diff --git a/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/DateValue.php b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/DateValue.php new file mode 100644 index 00000000..453dcdf9 --- /dev/null +++ b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/DateValue.php @@ -0,0 +1,111 @@ + Conditional::TIMEPERIOD_YESTERDAY, + 'today' => Conditional::TIMEPERIOD_TODAY, + 'tomorrow' => Conditional::TIMEPERIOD_TOMORROW, + 'lastSevenDays' => Conditional::TIMEPERIOD_LAST_7_DAYS, + 'last7Days' => Conditional::TIMEPERIOD_LAST_7_DAYS, + 'lastWeek' => Conditional::TIMEPERIOD_LAST_WEEK, + 'thisWeek' => Conditional::TIMEPERIOD_THIS_WEEK, + 'nextWeek' => Conditional::TIMEPERIOD_NEXT_WEEK, + 'lastMonth' => Conditional::TIMEPERIOD_LAST_MONTH, + 'thisMonth' => Conditional::TIMEPERIOD_THIS_MONTH, + 'nextMonth' => Conditional::TIMEPERIOD_NEXT_MONTH, + ]; + + protected const EXPRESSIONS = [ + Conditional::TIMEPERIOD_YESTERDAY => 'FLOOR(%s,1)=TODAY()-1', + Conditional::TIMEPERIOD_TODAY => 'FLOOR(%s,1)=TODAY()', + Conditional::TIMEPERIOD_TOMORROW => 'FLOOR(%s,1)=TODAY()+1', + Conditional::TIMEPERIOD_LAST_7_DAYS => 'AND(TODAY()-FLOOR(%s,1)<=6,FLOOR(%s,1)<=TODAY())', + Conditional::TIMEPERIOD_LAST_WEEK => 'AND(TODAY()-ROUNDDOWN(%s,0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(%s,0)<(WEEKDAY(TODAY())+7))', + Conditional::TIMEPERIOD_THIS_WEEK => 'AND(TODAY()-ROUNDDOWN(%s,0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(%s,0)-TODAY()<=7-WEEKDAY(TODAY()))', + Conditional::TIMEPERIOD_NEXT_WEEK => 'AND(ROUNDDOWN(%s,0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(%s,0)-TODAY()<(15-WEEKDAY(TODAY())))', + Conditional::TIMEPERIOD_LAST_MONTH => 'AND(MONTH(%s)=MONTH(EDATE(TODAY(),0-1)),YEAR(%s)=YEAR(EDATE(TODAY(),0-1)))', + Conditional::TIMEPERIOD_THIS_MONTH => 'AND(MONTH(%s)=MONTH(TODAY()),YEAR(%s)=YEAR(TODAY()))', + Conditional::TIMEPERIOD_NEXT_MONTH => 'AND(MONTH(%s)=MONTH(EDATE(TODAY(),0+1)),YEAR(%s)=YEAR(EDATE(TODAY(),0+1)))', + ]; + + /** @var string */ + protected $operator; + + public function __construct(string $cellRange) + { + parent::__construct($cellRange); + } + + protected function operator(string $operator): void + { + $this->operator = $operator; + } + + protected function setExpression(): void + { + $referenceCount = substr_count(self::EXPRESSIONS[$this->operator], '%s'); + $references = array_fill(0, $referenceCount, $this->referenceCell); + $this->expression = sprintf(self::EXPRESSIONS[$this->operator], ...$references); + } + + public function getConditional(): Conditional + { + $this->setExpression(); + + $conditional = new Conditional(); + $conditional->setConditionType(Conditional::CONDITION_TIMEPERIOD); + $conditional->setText($this->operator); + $conditional->setConditions([$this->expression]); + $conditional->setStyle($this->getStyle()); + $conditional->setStopIfTrue($this->getStopIfTrue()); + + return $conditional; + } + + public static function fromConditional(Conditional $conditional, string $cellRange = 'A1'): WizardInterface + { + if ($conditional->getConditionType() !== Conditional::CONDITION_TIMEPERIOD) { + throw new Exception('Conditional is not a Date Value CF Rule conditional'); + } + + $wizard = new self($cellRange); + $wizard->style = $conditional->getStyle(); + $wizard->stopIfTrue = $conditional->getStopIfTrue(); + $wizard->operator = $conditional->getText(); + + return $wizard; + } + + /** + * @param string $methodName + * @param mixed[] $arguments + */ + public function __call($methodName, $arguments): self + { + if (!isset(self::MAGIC_OPERATIONS[$methodName])) { + throw new Exception('Invalid Operation for Date Value CF Rule Wizard'); + } + + $this->operator(self::MAGIC_OPERATIONS[$methodName]); + + return $this; + } +} diff --git a/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Duplicates.php b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Duplicates.php new file mode 100644 index 00000000..3f063fef --- /dev/null +++ b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Duplicates.php @@ -0,0 +1,78 @@ + false, + 'unique' => true, + ]; + + /** + * @var bool + */ + protected $inverse; + + public function __construct(string $cellRange, bool $inverse = false) + { + parent::__construct($cellRange); + $this->inverse = $inverse; + } + + protected function inverse(bool $inverse): void + { + $this->inverse = $inverse; + } + + public function getConditional(): Conditional + { + $conditional = new Conditional(); + $conditional->setConditionType( + $this->inverse ? Conditional::CONDITION_UNIQUE : Conditional::CONDITION_DUPLICATES + ); + $conditional->setStyle($this->getStyle()); + $conditional->setStopIfTrue($this->getStopIfTrue()); + + return $conditional; + } + + public static function fromConditional(Conditional $conditional, string $cellRange = 'A1'): WizardInterface + { + if ( + $conditional->getConditionType() !== Conditional::CONDITION_DUPLICATES && + $conditional->getConditionType() !== Conditional::CONDITION_UNIQUE + ) { + throw new Exception('Conditional is not a Duplicates CF Rule conditional'); + } + + $wizard = new self($cellRange); + $wizard->style = $conditional->getStyle(); + $wizard->stopIfTrue = $conditional->getStopIfTrue(); + $wizard->inverse = $conditional->getConditionType() === Conditional::CONDITION_UNIQUE; + + return $wizard; + } + + /** + * @param string $methodName + * @param mixed[] $arguments + */ + public function __call($methodName, $arguments): self + { + if (!array_key_exists($methodName, self::OPERATORS)) { + throw new Exception('Invalid Operation for Errors CF Rule Wizard'); + } + + $this->inverse(self::OPERATORS[$methodName]); + + return $this; + } +} diff --git a/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Errors.php b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Errors.php new file mode 100644 index 00000000..56b9086c --- /dev/null +++ b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Errors.php @@ -0,0 +1,95 @@ + false, + 'isError' => true, + ]; + + protected const EXPRESSIONS = [ + Wizard::NOT_ERRORS => 'NOT(ISERROR(%s))', + Wizard::ERRORS => 'ISERROR(%s)', + ]; + + /** + * @var bool + */ + protected $inverse; + + public function __construct(string $cellRange, bool $inverse = false) + { + parent::__construct($cellRange); + $this->inverse = $inverse; + } + + protected function inverse(bool $inverse): void + { + $this->inverse = $inverse; + } + + protected function getExpression(): void + { + $this->expression = sprintf( + self::EXPRESSIONS[$this->inverse ? Wizard::ERRORS : Wizard::NOT_ERRORS], + $this->referenceCell + ); + } + + public function getConditional(): Conditional + { + $this->getExpression(); + + $conditional = new Conditional(); + $conditional->setConditionType( + $this->inverse ? Conditional::CONDITION_CONTAINSERRORS : Conditional::CONDITION_NOTCONTAINSERRORS + ); + $conditional->setConditions([$this->expression]); + $conditional->setStyle($this->getStyle()); + $conditional->setStopIfTrue($this->getStopIfTrue()); + + return $conditional; + } + + public static function fromConditional(Conditional $conditional, string $cellRange = 'A1'): WizardInterface + { + if ( + $conditional->getConditionType() !== Conditional::CONDITION_CONTAINSERRORS && + $conditional->getConditionType() !== Conditional::CONDITION_NOTCONTAINSERRORS + ) { + throw new Exception('Conditional is not an Errors CF Rule conditional'); + } + + $wizard = new self($cellRange); + $wizard->style = $conditional->getStyle(); + $wizard->stopIfTrue = $conditional->getStopIfTrue(); + $wizard->inverse = $conditional->getConditionType() === Conditional::CONDITION_CONTAINSERRORS; + + return $wizard; + } + + /** + * @param string $methodName + * @param mixed[] $arguments + */ + public function __call($methodName, $arguments): self + { + if (!array_key_exists($methodName, self::OPERATORS)) { + throw new Exception('Invalid Operation for Errors CF Rule Wizard'); + } + + $this->inverse(self::OPERATORS[$methodName]); + + return $this; + } +} diff --git a/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Expression.php b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Expression.php new file mode 100644 index 00000000..8c8c7f27 --- /dev/null +++ b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/Expression.php @@ -0,0 +1,73 @@ +validateOperand($expression, Wizard::VALUE_TYPE_FORMULA); + $this->expression = $expression; + + return $this; + } + + public function getConditional(): Conditional + { + $expression = $this->adjustConditionsForCellReferences([$this->expression]); + + $conditional = new Conditional(); + $conditional->setConditionType(Conditional::CONDITION_EXPRESSION); + $conditional->setConditions($expression); + $conditional->setStyle($this->getStyle()); + $conditional->setStopIfTrue($this->getStopIfTrue()); + + return $conditional; + } + + public static function fromConditional(Conditional $conditional, string $cellRange = 'A1'): WizardInterface + { + if ($conditional->getConditionType() !== Conditional::CONDITION_EXPRESSION) { + throw new Exception('Conditional is not an Expression CF Rule conditional'); + } + + $wizard = new self($cellRange); + $wizard->style = $conditional->getStyle(); + $wizard->stopIfTrue = $conditional->getStopIfTrue(); + $wizard->expression = self::reverseAdjustCellRef($conditional->getConditions()[0], $cellRange); + + return $wizard; + } + + /** + * @param string $methodName + * @param mixed[] $arguments + */ + public function __call($methodName, $arguments): self + { + if ($methodName !== 'formula') { + throw new Exception('Invalid Operation for Expression CF Rule Wizard'); + } + + $this->expression(...$arguments); + + return $this; + } +} diff --git a/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/TextValue.php b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/TextValue.php new file mode 100644 index 00000000..4fa635be --- /dev/null +++ b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/TextValue.php @@ -0,0 +1,163 @@ + Conditional::OPERATOR_CONTAINSTEXT, + 'doesntContain' => Conditional::OPERATOR_NOTCONTAINS, + 'doesNotContain' => Conditional::OPERATOR_NOTCONTAINS, + 'beginsWith' => Conditional::OPERATOR_BEGINSWITH, + 'startsWith' => Conditional::OPERATOR_BEGINSWITH, + 'endsWith' => Conditional::OPERATOR_ENDSWITH, + ]; + + protected const OPERATORS = [ + Conditional::OPERATOR_CONTAINSTEXT => Conditional::CONDITION_CONTAINSTEXT, + Conditional::OPERATOR_NOTCONTAINS => Conditional::CONDITION_NOTCONTAINSTEXT, + Conditional::OPERATOR_BEGINSWITH => Conditional::CONDITION_BEGINSWITH, + Conditional::OPERATOR_ENDSWITH => Conditional::CONDITION_ENDSWITH, + ]; + + protected const EXPRESSIONS = [ + Conditional::OPERATOR_CONTAINSTEXT => 'NOT(ISERROR(SEARCH(%s,%s)))', + Conditional::OPERATOR_NOTCONTAINS => 'ISERROR(SEARCH(%s,%s))', + Conditional::OPERATOR_BEGINSWITH => 'LEFT(%s,LEN(%s))=%s', + Conditional::OPERATOR_ENDSWITH => 'RIGHT(%s,LEN(%s))=%s', + ]; + + /** @var string */ + protected $operator; + + /** @var string */ + protected $operand; + + /** + * @var string + */ + protected $operandValueType; + + public function __construct(string $cellRange) + { + parent::__construct($cellRange); + } + + protected function operator(string $operator): void + { + if (!isset(self::OPERATORS[$operator])) { + throw new Exception('Invalid Operator for Text Value CF Rule Wizard'); + } + + $this->operator = $operator; + } + + protected function operand(string $operand, string $operandValueType = Wizard::VALUE_TYPE_LITERAL): void + { + if (is_string($operand)) { + $operand = $this->validateOperand($operand, $operandValueType); + } + + $this->operand = $operand; + $this->operandValueType = $operandValueType; + } + + protected function wrapValue(string $value): string + { + return '"' . $value . '"'; + } + + protected function setExpression(): void + { + $operand = $this->operandValueType === Wizard::VALUE_TYPE_LITERAL + ? $this->wrapValue(str_replace('"', '""', $this->operand)) + : $this->cellConditionCheck($this->operand); + + if ( + $this->operator === Conditional::OPERATOR_CONTAINSTEXT || + $this->operator === Conditional::OPERATOR_NOTCONTAINS + ) { + $this->expression = sprintf(self::EXPRESSIONS[$this->operator], $operand, $this->referenceCell); + } else { + $this->expression = sprintf(self::EXPRESSIONS[$this->operator], $this->referenceCell, $operand, $operand); + } + } + + public function getConditional(): Conditional + { + $this->setExpression(); + + $conditional = new Conditional(); + $conditional->setConditionType(self::OPERATORS[$this->operator]); + $conditional->setOperatorType($this->operator); + $conditional->setText( + $this->operandValueType !== Wizard::VALUE_TYPE_LITERAL + ? $this->cellConditionCheck($this->operand) + : $this->operand + ); + $conditional->setConditions([$this->expression]); + $conditional->setStyle($this->getStyle()); + $conditional->setStopIfTrue($this->getStopIfTrue()); + + return $conditional; + } + + public static function fromConditional(Conditional $conditional, string $cellRange = 'A1'): WizardInterface + { + if (!in_array($conditional->getConditionType(), self::OPERATORS, true)) { + throw new Exception('Conditional is not a Text Value CF Rule conditional'); + } + + $wizard = new self($cellRange); + $wizard->operator = (string) array_search($conditional->getConditionType(), self::OPERATORS, true); + $wizard->style = $conditional->getStyle(); + $wizard->stopIfTrue = $conditional->getStopIfTrue(); + + // Best-guess to try and identify if the text is a string literal, a cell reference or a formula? + $wizard->operandValueType = Wizard::VALUE_TYPE_LITERAL; + $condition = $conditional->getText(); + if (is_string($condition) && array_key_exists($condition, Calculation::$excelConstants)) { + $condition = Calculation::$excelConstants[$condition]; + } elseif (preg_match('/^' . Calculation::CALCULATION_REGEXP_CELLREF_RELATIVE . '$/i', $condition)) { + $wizard->operandValueType = Wizard::VALUE_TYPE_CELL; + $condition = self::reverseAdjustCellRef($condition, $cellRange); + } elseif ( + preg_match('/\(\)/', $condition) || + preg_match('/' . Calculation::CALCULATION_REGEXP_CELLREF_RELATIVE . '/i', $condition) + ) { + $wizard->operandValueType = Wizard::VALUE_TYPE_FORMULA; + } + $wizard->operand = $condition; + + return $wizard; + } + + /** + * @param string $methodName + * @param mixed[] $arguments + */ + public function __call($methodName, $arguments): self + { + if (!isset(self::MAGIC_OPERATIONS[$methodName])) { + throw new Exception('Invalid Operation for Text Value CF Rule Wizard'); + } + + $this->operator(self::MAGIC_OPERATIONS[$methodName]); + $this->operand(...$arguments); + + return $this; + } +} diff --git a/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/WizardAbstract.php b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/WizardAbstract.php new file mode 100644 index 00000000..75d6856e --- /dev/null +++ b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/WizardAbstract.php @@ -0,0 +1,197 @@ +setCellRange($cellRange); + } + + public function getCellRange(): string + { + return $this->cellRange; + } + + public function setCellRange(string $cellRange): void + { + $this->cellRange = $cellRange; + $this->setReferenceCellForExpressions($cellRange); + } + + protected function setReferenceCellForExpressions(string $conditionalRange): void + { + $conditionalRange = Coordinate::splitRange(str_replace('$', '', strtoupper($conditionalRange))); + [$this->referenceCell] = $conditionalRange[0]; + + [$this->referenceColumn, $this->referenceRow] = Coordinate::indexesFromString($this->referenceCell); + } + + public function getStopIfTrue(): bool + { + return $this->stopIfTrue; + } + + public function setStopIfTrue(bool $stopIfTrue): void + { + $this->stopIfTrue = $stopIfTrue; + } + + public function getStyle(): Style + { + return $this->style ?? new Style(false, true); + } + + public function setStyle(Style $style): void + { + $this->style = $style; + } + + protected function validateOperand(string $operand, string $operandValueType = Wizard::VALUE_TYPE_LITERAL): string + { + if ( + $operandValueType === Wizard::VALUE_TYPE_LITERAL && + substr($operand, 0, 1) === '"' && + substr($operand, -1) === '"' + ) { + $operand = str_replace('""', '"', substr($operand, 1, -1)); + } elseif ($operandValueType === Wizard::VALUE_TYPE_FORMULA && substr($operand, 0, 1) === '=') { + $operand = substr($operand, 1); + } + + return $operand; + } + + protected static function reverseCellAdjustment(array $matches, int $referenceColumn, int $referenceRow): string + { + $worksheet = $matches[1]; + $column = $matches[6]; + $row = $matches[7]; + + if (strpos($column, '$') === false) { + $column = Coordinate::columnIndexFromString($column); + $column -= $referenceColumn - 1; + $column = Coordinate::stringFromColumnIndex($column); + } + + if (strpos($row, '$') === false) { + $row -= $referenceRow - 1; + } + + return "{$worksheet}{$column}{$row}"; + } + + protected static function reverseAdjustCellRef(string $condition, string $cellRange): string + { + $conditionalRange = Coordinate::splitRange(str_replace('$', '', strtoupper($cellRange))); + [$referenceCell] = $conditionalRange[0]; + [$referenceColumnIndex, $referenceRow] = Coordinate::indexesFromString($referenceCell); + + $splitCondition = explode(Calculation::FORMULA_STRING_QUOTE, $condition); + $i = false; + foreach ($splitCondition as &$value) { + // Only count/replace in alternating array entries (ie. not in quoted strings) + if ($i = !$i) { + $value = preg_replace_callback( + '/' . Calculation::CALCULATION_REGEXP_CELLREF_RELATIVE . '/i', + function ($matches) use ($referenceColumnIndex, $referenceRow) { + return self::reverseCellAdjustment($matches, $referenceColumnIndex, $referenceRow); + }, + $value + ); + } + } + unset($value); + + // Then rebuild the condition string to return it + return implode(Calculation::FORMULA_STRING_QUOTE, $splitCondition); + } + + protected function conditionCellAdjustment(array $matches): string + { + $worksheet = $matches[1]; + $column = $matches[6]; + $row = $matches[7]; + + if (strpos($column, '$') === false) { + $column = Coordinate::columnIndexFromString($column); + $column += $this->referenceColumn - 1; + $column = Coordinate::stringFromColumnIndex($column); + } + + if (strpos($row, '$') === false) { + $row += $this->referenceRow - 1; + } + + return "{$worksheet}{$column}{$row}"; + } + + protected function cellConditionCheck(string $condition): string + { + $splitCondition = explode(Calculation::FORMULA_STRING_QUOTE, $condition); + $i = false; + foreach ($splitCondition as &$value) { + // Only count/replace in alternating array entries (ie. not in quoted strings) + if ($i = !$i) { + $value = preg_replace_callback( + '/' . Calculation::CALCULATION_REGEXP_CELLREF_RELATIVE . '/i', + [$this, 'conditionCellAdjustment'], + $value + ); + } + } + unset($value); + + // Then rebuild the condition string to return it + return implode(Calculation::FORMULA_STRING_QUOTE, $splitCondition); + } + + protected function adjustConditionsForCellReferences(array $conditions): array + { + return array_map( + [$this, 'cellConditionCheck'], + $conditions + ); + } +} diff --git a/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/WizardInterface.php b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/WizardInterface.php new file mode 100644 index 00000000..10ad57b2 --- /dev/null +++ b/src/PhpSpreadsheet/Style/ConditionalFormatting/Wizard/WizardInterface.php @@ -0,0 +1,25 @@ +parent->setActiveSheetIndex($this->parent->getIndex($this)); @@ -1440,7 +1438,7 @@ class Worksheet implements IComparable * * @return Conditional[] */ - public function getConditionalStyles($coordinate) + public function getConditionalStyles(string $coordinate): array { $coordinate = strtoupper($coordinate); if (strpos($coordinate, ':') !== false) { @@ -1457,6 +1455,19 @@ class Worksheet implements IComparable return []; } + public function getConditionalRange(string $coordinate): ?string + { + $coordinate = strtoupper($coordinate); + $cell = $this->getCell($coordinate); + foreach (array_keys($this->conditionalStylesCollection) as $conditionalRange) { + if ($cell->isInRange($conditionalRange)) { + return $conditionalRange; + } + } + + return null; + } + /** * Do conditional styles exist for this cell? * @@ -1465,10 +1476,8 @@ class Worksheet implements IComparable * conditional style range. * If a range of cells is specified, then true will only be returned if the range matches the entire * range of the conditional. - * - * @return bool */ - public function conditionalStylesExists($coordinate) + public function conditionalStylesExists($coordinate): bool { $coordinate = strtoupper($coordinate); if (strpos($coordinate, ':') !== false) { diff --git a/src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php b/src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php index 494dc70a..a4d28f8a 100644 --- a/src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php +++ b/src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php @@ -468,21 +468,63 @@ class Worksheet extends WriterPart private static function writeOtherCondElements(XMLWriter $objWriter, Conditional $conditional, string $cellCoordinate): void { + $conditions = $conditional->getConditions(); if ( $conditional->getConditionType() == Conditional::CONDITION_CELLIS - || $conditional->getConditionType() == Conditional::CONDITION_CONTAINSTEXT || $conditional->getConditionType() == Conditional::CONDITION_EXPRESSION + || !empty($conditions) ) { - foreach ($conditional->getConditions() as $formula) { + foreach ($conditions as $formula) { // Formula $objWriter->writeElement('formula', Xlfn::addXlfn($formula)); } - } elseif ($conditional->getConditionType() == Conditional::CONDITION_CONTAINSBLANKS) { - // formula copied from ms xlsx xml source file - $objWriter->writeElement('formula', 'LEN(TRIM(' . $cellCoordinate . '))=0'); - } elseif ($conditional->getConditionType() == Conditional::CONDITION_NOTCONTAINSBLANKS) { - // formula copied from ms xlsx xml source file - $objWriter->writeElement('formula', 'LEN(TRIM(' . $cellCoordinate . '))>0'); + } else { + if ($conditional->getConditionType() == Conditional::CONDITION_CONTAINSBLANKS) { + // formula copied from ms xlsx xml source file + $objWriter->writeElement('formula', 'LEN(TRIM(' . $cellCoordinate . '))=0'); + } elseif ($conditional->getConditionType() == Conditional::CONDITION_NOTCONTAINSBLANKS) { + // formula copied from ms xlsx xml source file + $objWriter->writeElement('formula', 'LEN(TRIM(' . $cellCoordinate . '))>0'); + } elseif ($conditional->getConditionType() == Conditional::CONDITION_CONTAINSERRORS) { + // formula copied from ms xlsx xml source file + $objWriter->writeElement('formula', 'ISERROR(' . $cellCoordinate . ')'); + } elseif ($conditional->getConditionType() == Conditional::CONDITION_NOTCONTAINSERRORS) { + // formula copied from ms xlsx xml source file + $objWriter->writeElement('formula', 'NOT(ISERROR(' . $cellCoordinate . '))'); + } + } + } + + private static function writeTimePeriodCondElements(XMLWriter $objWriter, Conditional $conditional, string $cellCoordinate): void + { + $txt = $conditional->getText(); + if ($txt !== null) { + $objWriter->writeAttribute('timePeriod', $txt); + if (empty($conditional->getConditions())) { + if ($conditional->getOperatorType() == Conditional::TIMEPERIOD_TODAY) { + $objWriter->writeElement('formula', 'FLOOR(' . $cellCoordinate . ')=TODAY()'); + } elseif ($conditional->getOperatorType() == Conditional::TIMEPERIOD_TOMORROW) { + $objWriter->writeElement('formula', 'FLOOR(' . $cellCoordinate . ')=TODAY()+1'); + } elseif ($conditional->getOperatorType() == Conditional::TIMEPERIOD_YESTERDAY) { + $objWriter->writeElement('formula', 'FLOOR(' . $cellCoordinate . ')=TODAY()-1'); + } elseif ($conditional->getOperatorType() == Conditional::TIMEPERIOD_LAST_7_DAYS) { + $objWriter->writeElement('formula', 'AND(TODAY()-FLOOR(' . $cellCoordinate . ',1)<=6,FLOOR(' . $cellCoordinate . ',1)<=TODAY())'); + } elseif ($conditional->getOperatorType() == Conditional::TIMEPERIOD_LAST_WEEK) { + $objWriter->writeElement('formula', 'AND(TODAY()-ROUNDDOWN(' . $cellCoordinate . ',0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(' . $cellCoordinate . ',0)<(WEEKDAY(TODAY())+7))'); + } elseif ($conditional->getOperatorType() == Conditional::TIMEPERIOD_THIS_WEEK) { + $objWriter->writeElement('formula', 'AND(TODAY()-ROUNDDOWN(' . $cellCoordinate . ',0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(' . $cellCoordinate . ',0)-TODAY()<=7-WEEKDAY(TODAY()))'); + } elseif ($conditional->getOperatorType() == Conditional::TIMEPERIOD_NEXT_WEEK) { + $objWriter->writeElement('formula', 'AND(ROUNDDOWN(' . $cellCoordinate . ',0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(' . $cellCoordinate . ',0)-TODAY()<(15-WEEKDAY(TODAY())))'); + } elseif ($conditional->getOperatorType() == Conditional::TIMEPERIOD_LAST_MONTH) { + $objWriter->writeElement('formula', 'AND(MONTH(' . $cellCoordinate . ')=MONTH(EDATE(TODAY(),0-1)),YEAR(' . $cellCoordinate . ')=YEAR(EDATE(TODAY(),0-1)))'); + } elseif ($conditional->getOperatorType() == Conditional::TIMEPERIOD_THIS_MONTH) { + $objWriter->writeElement('formula', 'AND(MONTH(' . $cellCoordinate . ')=MONTH(TODAY()),YEAR(' . $cellCoordinate . ')=YEAR(TODAY()))'); + } elseif ($conditional->getOperatorType() == Conditional::TIMEPERIOD_NEXT_MONTH) { + $objWriter->writeElement('formula', 'AND(MONTH(' . $cellCoordinate . ')=MONTH(EDATE(TODAY(),0+1)),YEAR(' . $cellCoordinate . ')=YEAR(EDATE(TODAY(),0+1)))'); + } + } else { + $objWriter->writeElement('formula', $conditional->getConditions()[0]); + } } } @@ -491,14 +533,18 @@ class Worksheet extends WriterPart $txt = $conditional->getText(); if ($txt !== null) { $objWriter->writeAttribute('text', $txt); - if ($conditional->getOperatorType() == Conditional::OPERATOR_CONTAINSTEXT) { - $objWriter->writeElement('formula', 'NOT(ISERROR(SEARCH("' . $txt . '",' . $cellCoordinate . ')))'); - } elseif ($conditional->getOperatorType() == Conditional::OPERATOR_BEGINSWITH) { - $objWriter->writeElement('formula', 'LEFT(' . $cellCoordinate . ',' . strlen($txt) . ')="' . $txt . '"'); - } elseif ($conditional->getOperatorType() == Conditional::OPERATOR_ENDSWITH) { - $objWriter->writeElement('formula', 'RIGHT(' . $cellCoordinate . ',' . strlen($txt) . ')="' . $txt . '"'); - } elseif ($conditional->getOperatorType() == Conditional::OPERATOR_NOTCONTAINS) { - $objWriter->writeElement('formula', 'ISERROR(SEARCH("' . $txt . '",' . $cellCoordinate . '))'); + if (empty($conditional->getConditions())) { + if ($conditional->getOperatorType() == Conditional::OPERATOR_CONTAINSTEXT) { + $objWriter->writeElement('formula', 'NOT(ISERROR(SEARCH("' . $txt . '",' . $cellCoordinate . ')))'); + } elseif ($conditional->getOperatorType() == Conditional::OPERATOR_BEGINSWITH) { + $objWriter->writeElement('formula', 'LEFT(' . $cellCoordinate . ',LEN("' . $txt . '"))="' . $txt . '"'); + } elseif ($conditional->getOperatorType() == Conditional::OPERATOR_ENDSWITH) { + $objWriter->writeElement('formula', 'RIGHT(' . $cellCoordinate . ',LEN("' . $txt . '"))="' . $txt . '"'); + } elseif ($conditional->getOperatorType() == Conditional::OPERATOR_NOTCONTAINS) { + $objWriter->writeElement('formula', 'ISERROR(SEARCH("' . $txt . '",' . $cellCoordinate . '))'); + } + } else { + $objWriter->writeElement('formula', $conditional->getConditions()[0]); } } } @@ -601,57 +647,63 @@ class Worksheet extends WriterPart // Loop through styles in the current worksheet foreach ($worksheet->getConditionalStylesCollection() as $cellCoordinate => $conditionalStyles) { + $objWriter->startElement('conditionalFormatting'); + $objWriter->writeAttribute('sqref', $cellCoordinate); + foreach ($conditionalStyles as $conditional) { // WHY was this again? // if ($this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode($conditional->getHashCode()) == '') { // continue; // } - if ($conditional->getConditionType() != Conditional::CONDITION_NONE) { - // conditionalFormatting - $objWriter->startElement('conditionalFormatting'); - $objWriter->writeAttribute('sqref', $cellCoordinate); + // cfRule + $objWriter->startElement('cfRule'); + $objWriter->writeAttribute('type', $conditional->getConditionType()); + self::writeAttributeIf( + $objWriter, + ($conditional->getConditionType() != Conditional::CONDITION_DATABAR), + 'dxfId', + (string) $this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode($conditional->getHashCode()) + ); + $objWriter->writeAttribute('priority', $id++); - // cfRule - $objWriter->startElement('cfRule'); - $objWriter->writeAttribute('type', $conditional->getConditionType()); - self::writeAttributeIf( - $objWriter, - ($conditional->getConditionType() != Conditional::CONDITION_DATABAR), - 'dxfId', - (string) $this->getParentWriter()->getStylesConditionalHashTable()->getIndexForHashCode($conditional->getHashCode()) - ); - $objWriter->writeAttribute('priority', $id++); - - self::writeAttributeif( - $objWriter, - ( - $conditional->getConditionType() === Conditional::CONDITION_CELLIS - || $conditional->getConditionType() === Conditional::CONDITION_CONTAINSTEXT - || $conditional->getConditionType() === Conditional::CONDITION_NOTCONTAINSTEXT - ) && $conditional->getOperatorType() !== Conditional::OPERATOR_NONE, - 'operator', - $conditional->getOperatorType() - ); - - self::writeAttributeIf($objWriter, $conditional->getStopIfTrue(), 'stopIfTrue', '1'); - - if ( - $conditional->getConditionType() === Conditional::CONDITION_CONTAINSTEXT + self::writeAttributeif( + $objWriter, + ( + $conditional->getConditionType() === Conditional::CONDITION_CELLIS + || $conditional->getConditionType() === Conditional::CONDITION_CONTAINSTEXT || $conditional->getConditionType() === Conditional::CONDITION_NOTCONTAINSTEXT - ) { - self::writeTextCondElements($objWriter, $conditional, $cellCoordinate); - } else { - self::writeOtherCondElements($objWriter, $conditional, $cellCoordinate); - } + || $conditional->getConditionType() === Conditional::CONDITION_BEGINSWITH + || $conditional->getConditionType() === Conditional::CONDITION_ENDSWITH + ) && $conditional->getOperatorType() !== Conditional::OPERATOR_NONE, + 'operator', + $conditional->getOperatorType() + ); - // - self::writeDataBarElements($objWriter, $conditional->getDataBar()); + self::writeAttributeIf($objWriter, $conditional->getStopIfTrue(), 'stopIfTrue', '1'); - $objWriter->endElement(); //end cfRule + $cellRange = Coordinate::splitRange(str_replace('$', '', strtoupper($cellCoordinate))); + [$topLeftCell] = $cellRange[0]; - $objWriter->endElement(); + if ( + $conditional->getConditionType() === Conditional::CONDITION_CONTAINSTEXT + || $conditional->getConditionType() === Conditional::CONDITION_NOTCONTAINSTEXT + || $conditional->getConditionType() === Conditional::CONDITION_BEGINSWITH + || $conditional->getConditionType() === Conditional::CONDITION_ENDSWITH + ) { + self::writeTextCondElements($objWriter, $conditional, $topLeftCell); + } elseif ($conditional->getConditionType() === Conditional::CONDITION_TIMEPERIOD) { + self::writeTimePeriodCondElements($objWriter, $conditional, $topLeftCell); + } else { + self::writeOtherCondElements($objWriter, $conditional, $topLeftCell); } + + // + self::writeDataBarElements($objWriter, $conditional->getDataBar()); + + $objWriter->endElement(); //end cfRule } + + $objWriter->endElement(); //end conditionalFormatting } } diff --git a/tests/PhpSpreadsheetTests/Cell/CellTest.php b/tests/PhpSpreadsheetTests/Cell/CellTest.php index 83a28758..5fcf4eb4 100644 --- a/tests/PhpSpreadsheetTests/Cell/CellTest.php +++ b/tests/PhpSpreadsheetTests/Cell/CellTest.php @@ -4,6 +4,10 @@ namespace PhpOffice\PhpSpreadsheetTests\Cell; use PhpOffice\PhpSpreadsheet\Exception; use PhpOffice\PhpSpreadsheet\Spreadsheet; +use PhpOffice\PhpSpreadsheet\Style\Color; +use PhpOffice\PhpSpreadsheet\Style\ConditionalFormatting\Wizard; +use PhpOffice\PhpSpreadsheet\Style\Fill; +use PhpOffice\PhpSpreadsheet\Style\Style; use PHPUnit\Framework\TestCase; class CellTest extends TestCase @@ -103,4 +107,132 @@ class CellTest extends TestCase $cell->getParent()->delete('A1'); $cell->getCoordinate(); } + + public function testAppliedStyleWithRange(): void + { + $spreadsheet = new Spreadsheet(); + $sheet = $spreadsheet->getActiveSheet(); + $sheet->setCellValue('A1', -1); + $sheet->setCellValue('A2', 0); + $sheet->setCellValue('A3', 1); + + $cellRange = 'A1:A3'; + $sheet->getStyle($cellRange)->getFont()->setBold(true); + + $yellowStyle = new Style(false, true); + $yellowStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_YELLOW); + $greenStyle = new Style(false, true); + $greenStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_GREEN); + $redStyle = new Style(false, true); + $redStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_RED); + + $conditionalStyles = []; + $wizardFactory = new Wizard($cellRange); + /** @var Wizard\CellValue $cellWizard */ + $cellWizard = $wizardFactory->newRule(Wizard::CELL_VALUE); + + $cellWizard->equals(0) + ->setStyle($yellowStyle); + $conditionalStyles[] = $cellWizard->getConditional(); + + $cellWizard->greaterThan(0) + ->setStyle($greenStyle); + $conditionalStyles[] = $cellWizard->getConditional(); + + $cellWizard->lessThan(0) + ->setStyle($redStyle); + $conditionalStyles[] = $cellWizard->getConditional(); + + $sheet->getStyle($cellWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + + $style = $sheet->getCell('A1')->getAppliedStyle(); + self::assertTrue($style->getFont()->getBold()); + self::assertEquals($redStyle->getFill()->getFillType(), $style->getFill()->getFillType()); + self::assertEquals($redStyle->getFill()->getEndColor()->getARGB(), $style->getFill()->getEndColor()->getARGB()); + + $style = $sheet->getCell('A2')->getAppliedStyle(); + self::assertTrue($style->getFont()->getBold()); + self::assertEquals($yellowStyle->getFill()->getFillType(), $style->getFill()->getFillType()); + self::assertEquals( + $yellowStyle->getFill()->getEndColor()->getARGB(), + $style->getFill()->getEndColor()->getARGB() + ); + + $style = $sheet->getCell('A3')->getAppliedStyle(); + self::assertTrue($style->getFont()->getBold()); + self::assertEquals($greenStyle->getFill()->getFillType(), $style->getFill()->getFillType()); + self::assertEquals( + $greenStyle->getFill()->getEndColor()->getARGB(), + $style->getFill()->getEndColor()->getARGB() + ); + } + + /** + * @dataProvider appliedStyling + */ + public function testAppliedStyleSingleCell(string $cellAddress, string $fillStyle, ?string $fillColor): void + { + $spreadsheet = new Spreadsheet(); + $sheet = $spreadsheet->getActiveSheet(); + $sheet->setCellValue('A1', -1); + $sheet->setCellValue('A2', 0); + $sheet->setCellValue('B1', 0); + $sheet->setCellValue('C1', 1); + $sheet->setCellValue('C2', -1); + + $cellRange = 'A1:C2'; + $sheet->getStyle($cellRange)->getFont()->setBold(true); + + $yellowStyle = new Style(false, true); + $yellowStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_YELLOW); + $redStyle = new Style(false, true); + $redStyle->getFill() + ->setFillType(Fill::FILL_SOLID) + ->getEndColor()->setARGB(Color::COLOR_RED); + + $conditionalCellRange = 'A1:C1'; + $conditionalStyles = []; + $wizardFactory = new Wizard($conditionalCellRange); + /** @var Wizard\CellValue $cellWizard */ + $cellWizard = $wizardFactory->newRule(Wizard::CELL_VALUE); + + $cellWizard->equals(0) + ->setStyle($yellowStyle); + $conditionalStyles[] = $cellWizard->getConditional(); + + $cellWizard->lessThan(0) + ->setStyle($redStyle); + $conditionalStyles[] = $cellWizard->getConditional(); + + $sheet->getStyle($cellWizard->getCellRange()) + ->setConditionalStyles($conditionalStyles); + + $style = $sheet->getCell($cellAddress)->getAppliedStyle(); + + self::assertTrue($style->getFont()->getBold()); + self::assertEquals($fillStyle, $style->getFill()->getFillType()); + if ($fillStyle === Fill::FILL_SOLID) { + self::assertEquals($fillColor, $style->getFill()->getEndColor()->getARGB()); + } + } + + public function appliedStyling(): array + { + return [ + 'A1 - Conditional with Match' => ['A1', Fill::FILL_SOLID, Color::COLOR_RED], + 'A2 - No Conditionals' => ['A2', Fill::FILL_NONE, null], + 'B1 - Conditional with Match' => ['B1', Fill::FILL_SOLID, Color::COLOR_YELLOW], + 'C1 - Conditionals, but No Match' => ['C1', Fill::FILL_NONE, null], + 'C2 - No Conditionals' => ['C2', Fill::FILL_NONE, null], + ]; + } } diff --git a/tests/PhpSpreadsheetTests/Reader/Xlsx/Xlsx2Test.php b/tests/PhpSpreadsheetTests/Reader/Xlsx/Xlsx2Test.php index 8212f089..4f613f9f 100644 --- a/tests/PhpSpreadsheetTests/Reader/Xlsx/Xlsx2Test.php +++ b/tests/PhpSpreadsheetTests/Reader/Xlsx/Xlsx2Test.php @@ -64,7 +64,7 @@ class Xlsx2Test extends TestCase $conditions = $conditionalRule->getConditions(); self::assertNotEmpty($conditions); self::assertEquals(Conditional::CONDITION_NOTCONTAINSBLANKS, $conditionalRule->getConditionType()); - self::assertEquals('LEN(TRIM(A2:A8))>0', $conditions[0]); + self::assertEquals('LEN(TRIM(A2))>0', $conditions[0]); $conditionalStyle = $worksheet->getConditionalStyles('B2:B8'); self::assertNotEmpty($conditionalStyle); @@ -72,7 +72,7 @@ class Xlsx2Test extends TestCase $conditions = $conditionalRule->getConditions(); self::assertNotEmpty($conditions); self::assertEquals(Conditional::CONDITION_CONTAINSBLANKS, $conditionalRule->getConditionType()); - self::assertEquals('LEN(TRIM(B2:B8))=0', $conditions[0]); + self::assertEquals('LEN(TRIM(B2))=0', $conditions[0]); $conditionalStyle = $worksheet->getConditionalStyles('C2:C8'); self::assertNotEmpty($conditionalStyle); @@ -112,6 +112,6 @@ class Xlsx2Test extends TestCase $conditions = $conditionalRule->getConditions(); self::assertNotEmpty($conditions); self::assertEquals(Conditional::CONDITION_CONTAINSBLANKS, $conditionalRule->getConditionType()); - self::assertEquals('LEN(TRIM(A1:A6))=0', $conditions[0]); + self::assertEquals('LEN(TRIM(A1))=0', $conditions[0]); } } diff --git a/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/CellMatcherTest.php b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/CellMatcherTest.php new file mode 100644 index 00000000..3c96403b --- /dev/null +++ b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/CellMatcherTest.php @@ -0,0 +1,518 @@ +spreadsheet = $reader->load($filename); + } + + /** + * @dataProvider basicCellIsComparisonDataProvider + */ + public function testBasicCellIsComparison(string $sheetname, string $cellAddress, array $expectedMatches): void + { + $worksheet = $this->spreadsheet->getSheetByName($sheetname); + if ($worksheet === null) { + self::markTestSkipped("{$sheetname} not found in test workbook"); + } + $cell = $worksheet->getCell($cellAddress); + + $cfRange = $worksheet->getConditionalRange($cell->getCoordinate()); + if ($cfRange === null) { + self::markTestSkipped("{$cellAddress} is not in a Conditional Format range"); + } + $cfStyles = $worksheet->getConditionalStyles($cell->getCoordinate()); + + $matcher = new CellMatcher($cell, $cfRange); + + foreach ($cfStyles as $cfIndex => $cfStyle) { + $match = $matcher->evaluateConditional($cfStyle); + self::assertSame($expectedMatches[$cfIndex], $match); + } + } + + public function basicCellIsComparisonDataProvider(): array + { + return [ + // Less than/Equal/Greater than with Literal + 'A2' => ['cellIs Comparison', 'A2', [false, false, true]], + 'C3' => ['cellIs Comparison', 'C3', [false, true, false]], + 'E6' => ['cellIs Comparison', 'E6', [true, false, false]], + // Less than/Equal/Greater than with Cell Reference + 'A12' => ['cellIs Comparison', 'A12', [false, false, true]], + 'C12' => ['cellIs Comparison', 'C12', [false, true, false]], + 'E12' => ['cellIs Comparison', 'E12', [true, false, false]], + // Compare Text with Cell containing Formula + 'A20' => ['cellIs Comparison', 'A20', [true]], + 'B20' => ['cellIs Comparison', 'B20', [false]], + // Compare Text with Formula referencing relative cells + 'A24' => ['cellIs Comparison', 'A24', [true]], + 'B24' => ['cellIs Comparison', 'B24', [false]], + 'A25' => ['cellIs Comparison', 'A25', [false]], + 'B25' => ['cellIs Comparison', 'B25', [true]], + // Compare Cell Greater/Less with Vertical Cell Reference + 'A30' => ['cellIs Comparison', 'A30', [false, true]], + 'A31' => ['cellIs Comparison', 'A31', [true, false]], + 'A32' => ['cellIs Comparison', 'A32', [false, true]], + 'A33' => ['cellIs Comparison', 'A33', [true, false]], + 'A34' => ['cellIs Comparison', 'A34', [false, false]], + 'A35' => ['cellIs Comparison', 'A35', [false, true]], + 'A36' => ['cellIs Comparison', 'A36', [true, false]], + 'A37' => ['cellIs Comparison', 'A37', [true, false]], + ]; + } + + /** + * @dataProvider rangeCellIsComparisonDataProvider + */ + public function testRangeCellIsComparison(string $sheetname, string $cellAddress, bool $expectedMatch): void + { + $worksheet = $this->spreadsheet->getSheetByName($sheetname); + if ($worksheet === null) { + self::markTestSkipped("{$sheetname} not found in test workbook"); + } + $cell = $worksheet->getCell($cellAddress); + + $cfRange = $worksheet->getConditionalRange($cell->getCoordinate()); + if ($cfRange === null) { + self::markTestSkipped("{$cellAddress} is not in a Conditional Format range"); + } + $cfStyle = $worksheet->getConditionalStyles($cell->getCoordinate()); + + $matcher = new CellMatcher($cell, $cfRange); + + $match = $matcher->evaluateConditional($cfStyle[0]); + self::assertSame($expectedMatch, $match); + } + + public function rangeCellIsComparisonDataProvider(): array + { + return [ + // Range between Literals + 'A2' => ['cellIs Range Comparison', 'A2', false], + 'A3' => ['cellIs Range Comparison', 'A3', true], + 'A4' => ['cellIs Range Comparison', 'A4', true], + 'A5' => ['cellIs Range Comparison', 'A5', true], + 'A6' => ['cellIs Range Comparison', 'A6', false], + // Range between Cell References + 'A11' => ['cellIs Range Comparison', 'A11', false], + 'A12' => ['cellIs Range Comparison', 'A12', false], + 'A13' => ['cellIs Range Comparison', 'A13', true], + // Range between unordered Cell References + 'A17' => ['cellIs Range Comparison', 'A17', true], + 'A18' => ['cellIs Range Comparison', 'A18', true], + // Range between with Formula + 'A22' => ['cellIs Range Comparison', 'A22', false], + 'A23' => ['cellIs Range Comparison', 'A23', true], + 'A24' => ['cellIs Range Comparison', 'A24', false], + ]; + } + + /** + * @dataProvider cellIsExpressionMultipleDataProvider + */ + public function testCellIsMultipleExpression(string $sheetname, string $cellAddress, array $expectedMatches): void + { + $worksheet = $this->spreadsheet->getSheetByName($sheetname); + if ($worksheet === null) { + self::markTestSkipped("{$sheetname} not found in test workbook"); + } + $cell = $worksheet->getCell($cellAddress); + + $cfRange = $worksheet->getConditionalRange($cell->getCoordinate()); + if ($cfRange === null) { + self::markTestSkipped("{$cellAddress} is not in a Conditional Format range"); + } + $cfStyles = $worksheet->getConditionalStyles($cell->getCoordinate()); + + $matcher = new CellMatcher($cell, $cfRange); + + foreach ($cfStyles as $cfIndex => $cfStyle) { + $match = $matcher->evaluateConditional($cfStyle); + self::assertSame($expectedMatches[$cfIndex], $match); + } + } + + public function cellIsExpressionMultipleDataProvider(): array + { + return [ + // Odd/Even + 'A2' => ['cellIs Expression', 'A2', [false, true]], + 'A3' => ['cellIs Expression', 'A3', [true, false]], + 'B3' => ['cellIs Expression', 'B3', [false, true]], + 'C3' => ['cellIs Expression', 'C3', [true, false]], + 'E4' => ['cellIs Expression', 'E4', [false, true]], + 'E5' => ['cellIs Expression', 'E5', [true, false]], + 'E6' => ['cellIs Expression', 'E6', [false, true]], + ]; + } + + /** + * @dataProvider cellIsExpressionDataProvider + */ + public function testCellIsExpression(string $sheetname, string $cellAddress, bool $expectedMatch): void + { + $worksheet = $this->spreadsheet->getSheetByName($sheetname); + if ($worksheet === null) { + self::markTestSkipped("{$sheetname} not found in test workbook"); + } + $cell = $worksheet->getCell($cellAddress); + + $cfRange = $worksheet->getConditionalRange($cell->getCoordinate()); + if ($cfRange === null) { + self::markTestSkipped("{$cellAddress} is not in a Conditional Format range"); + } + $cfStyle = $worksheet->getConditionalStyles($cell->getCoordinate()); + + $matcher = new CellMatcher($cell, $cfRange); + + $match = $matcher->evaluateConditional($cfStyle[0]); + self::assertSame($expectedMatch, $match); + } + + public function cellIsExpressionDataProvider(): array + { + return [ + // Sales Grid for Country + ['cellIs Expression', 'A12', false], + ['cellIs Expression', 'B12', false], + ['cellIs Expression', 'C12', false], + ['cellIs Expression', 'D12', false], + ['cellIs Expression', 'B13', true], + ['cellIs Expression', 'C13', true], + ['cellIs Expression', 'B15', true], + ['cellIs Expression', 'B16', true], + ['cellIs Expression', 'C17', false], + // Sales Grid for Country and Quarter + ['cellIs Expression', 'A22', false], + ['cellIs Expression', 'B22', false], + ['cellIs Expression', 'C22', false], + ['cellIs Expression', 'D22', false], + ['cellIs Expression', 'B23', true], + ['cellIs Expression', 'C23', true], + ['cellIs Expression', 'B25', false], + ['cellIs Expression', 'B26', true], + ['cellIs Expression', 'C27', false], + ]; + } + + /** + * @dataProvider textExpressionsDataProvider + */ + public function testTextExpressions(string $sheetname, string $cellAddress, bool $expectedMatch): void + { + $worksheet = $this->spreadsheet->getSheetByName($sheetname); + if ($worksheet === null) { + self::markTestSkipped("{$sheetname} not found in test workbook"); + } + $cell = $worksheet->getCell($cellAddress); + + $cfRange = $worksheet->getConditionalRange($cell->getCoordinate()); + if ($cfRange === null) { + self::markTestSkipped("{$cellAddress} is not in a Conditional Format range"); + } + $cfStyle = $worksheet->getConditionalStyles($cell->getCoordinate()); + + $matcher = new CellMatcher($cell, $cfRange); + + $match = $matcher->evaluateConditional($cfStyle[0]); + self::assertSame($expectedMatch, $match); + } + + public function textExpressionsDataProvider(): array + { + return [ + // Text Begins With Literal + ['Text Expressions', 'A2', true], + ['Text Expressions', 'B2', false], + ['Text Expressions', 'A3', false], + ['Text Expressions', 'B3', false], + ['Text Expressions', 'A4', false], + ['Text Expressions', 'B4', true], + // Text Ends With Literal + ['Text Expressions', 'A8', false], + ['Text Expressions', 'B8', false], + ['Text Expressions', 'A9', true], + ['Text Expressions', 'B9', true], + ['Text Expressions', 'A10', false], + ['Text Expressions', 'B10', true], + // Text Contains Literal + ['Text Expressions', 'A14', true], + ['Text Expressions', 'B14', false], + ['Text Expressions', 'A15', true], + ['Text Expressions', 'B15', true], + ['Text Expressions', 'A16', false], + ['Text Expressions', 'B16', true], + // Text Doesn't Contain Literal + ['Text Expressions', 'A20', true], + ['Text Expressions', 'B20', true], + ['Text Expressions', 'A21', true], + ['Text Expressions', 'B21', true], + ['Text Expressions', 'A22', false], + ['Text Expressions', 'B22', true], + // Text Begins With Cell Reference + ['Text Expressions', 'D2', true], + ['Text Expressions', 'E2', false], + ['Text Expressions', 'D3', false], + ['Text Expressions', 'E3', false], + ['Text Expressions', 'D4', false], + ['Text Expressions', 'E4', true], + // Text Ends With Cell Reference + ['Text Expressions', 'D8', false], + ['Text Expressions', 'E8', false], + ['Text Expressions', 'D9', true], + ['Text Expressions', 'E9', true], + ['Text Expressions', 'D10', false], + ['Text Expressions', 'E10', true], + // Text Contains Cell Reference + ['Text Expressions', 'D14', true], + ['Text Expressions', 'E14', false], + ['Text Expressions', 'D15', true], + ['Text Expressions', 'E15', true], + ['Text Expressions', 'D16', false], + ['Text Expressions', 'E16', true], + // Text Doesn't Contain Cell Reference + ['Text Expressions', 'D20', true], + ['Text Expressions', 'E20', true], + ['Text Expressions', 'D21', true], + ['Text Expressions', 'E21', true], + ['Text Expressions', 'D22', false], + ['Text Expressions', 'E22', true], + // Text Begins With Formula + ['Text Expressions', 'G2', true], + ['Text Expressions', 'H2', false], + ['Text Expressions', 'G3', false], + ['Text Expressions', 'H3', false], + ['Text Expressions', 'G4', false], + ['Text Expressions', 'H4', true], + // Text Ends With Formula + ['Text Expressions', 'G8', false], + ['Text Expressions', 'H8', false], + ['Text Expressions', 'G9', true], + ['Text Expressions', 'H9', true], + ['Text Expressions', 'G10', false], + ['Text Expressions', 'H10', true], + // Text Contains Formula + ['Text Expressions', 'G14', true], + ['Text Expressions', 'H14', false], + ['Text Expressions', 'G15', true], + ['Text Expressions', 'H15', true], + ['Text Expressions', 'G16', false], + ['Text Expressions', 'H16', true], + // Text Doesn't Contain Formula + ['Text Expressions', 'G20', true], + ['Text Expressions', 'H20', true], + ['Text Expressions', 'G21', true], + ['Text Expressions', 'H21', true], + ['Text Expressions', 'G22', false], + ['Text Expressions', 'H22', true], + ]; + } + + /** + * @dataProvider blanksDataProvider + */ + public function testBlankExpressions(string $sheetname, string $cellAddress, array $expectedMatches): void + { + $worksheet = $this->spreadsheet->getSheetByName($sheetname); + if ($worksheet === null) { + self::markTestSkipped("{$sheetname} not found in test workbook"); + } + $cell = $worksheet->getCell($cellAddress); + + $cfRange = $worksheet->getConditionalRange($cell->getCoordinate()); + if ($cfRange === null) { + self::markTestSkipped("{$cellAddress} is not in a Conditional Format range"); + } + $cfStyles = $worksheet->getConditionalStyles($cell->getCoordinate()); + + $matcher = new CellMatcher($cell, $cfRange); + + foreach ($cfStyles as $cfIndex => $cfStyle) { + $match = $matcher->evaluateConditional($cfStyle); + self::assertSame($expectedMatches[$cfIndex], $match); + } + } + + public function blanksDataProvider(): array + { + return [ + // Blank/Not Blank + 'A2' => ['Blank Expressions', 'A2', [false, true]], + 'B2' => ['Blank Expressions', 'B2', [true, false]], + 'A3' => ['Blank Expressions', 'A3', [true, false]], + 'B3' => ['Blank Expressions', 'B3', [false, true]], + ]; + } + + /** + * @dataProvider errorDataProvider + */ + public function testErrorExpressions(string $sheetname, string $cellAddress, array $expectedMatches): void + { + $worksheet = $this->spreadsheet->getSheetByName($sheetname); + if ($worksheet === null) { + self::markTestSkipped("{$sheetname} not found in test workbook"); + } + $cell = $worksheet->getCell($cellAddress); + + $cfRange = $worksheet->getConditionalRange($cell->getCoordinate()); + if ($cfRange === null) { + self::markTestSkipped("{$cellAddress} is not in a Conditional Format range"); + } + $cfStyles = $worksheet->getConditionalStyles($cell->getCoordinate()); + + $matcher = new CellMatcher($cell, $cfRange); + + foreach ($cfStyles as $cfIndex => $cfStyle) { + $match = $matcher->evaluateConditional($cfStyle); + self::assertSame($expectedMatches[$cfIndex], $match); + } + } + + public function errorDataProvider(): array + { + return [ + // Error/Not Error + 'C2' => ['Error Expressions', 'C2', [false, true]], + 'C4' => ['Error Expressions', 'C4', [true, false]], + 'C5' => ['Error Expressions', 'C5', [false, true]], + ]; + } + + /** + * @dataProvider dateOccurringDataProvider + */ + public function testDateOccurringExpressions(string $sheetname, string $cellAddress, bool $expectedMatch): void + { + $worksheet = $this->spreadsheet->getSheetByName($sheetname); + if ($worksheet === null) { + self::markTestSkipped("{$sheetname} not found in test workbook"); + } + $cell = $worksheet->getCell($cellAddress); + + $cfRange = $worksheet->getConditionalRange($cell->getCoordinate()); + if ($cfRange === null) { + self::markTestSkipped("{$cellAddress} is not in a Conditional Format range"); + } + $cfStyle = $worksheet->getConditionalStyles($cell->getCoordinate()); + + $matcher = new CellMatcher($cell, $cfRange); + + $match = $matcher->evaluateConditional($cfStyle[0]); + self::assertSame($expectedMatch, $match); + } + + public function dateOccurringDataProvider(): array + { + return [ + // Today + ['Date Expressions', 'B9', false], + ['Date Expressions', 'B10', true], + ['Date Expressions', 'B11', false], + // Yesterday + ['Date Expressions', 'C9', true], + ['Date Expressions', 'C10', false], + ['Date Expressions', 'C11', false], + // Tomorrow + ['Date Expressions', 'D9', false], + ['Date Expressions', 'D10', false], + ['Date Expressions', 'D11', true], + // Last Daye + ['Date Expressions', 'E7', false], + ['Date Expressions', 'E8', true], + ['Date Expressions', 'E9', true], + ['Date Expressions', 'E10', true], + ['Date Expressions', 'E11', false], + ]; + } + + /** + * @dataProvider duplicatesDataProvider + */ + public function testDuplicatesExpressions(string $sheetname, string $cellAddress, array $expectedMatches): void + { + $worksheet = $this->spreadsheet->getSheetByName($sheetname); + if ($worksheet === null) { + self::markTestSkipped("{$sheetname} not found in test workbook"); + } + $cell = $worksheet->getCell($cellAddress); + + $cfRange = $worksheet->getConditionalRange($cell->getCoordinate()); + if ($cfRange === null) { + self::markTestSkipped("{$cellAddress} is not in a Conditional Format range"); + } + $cfStyles = $worksheet->getConditionalStyles($cell->getCoordinate()); + + $matcher = new CellMatcher($cell, $cfRange); + + foreach ($cfStyles as $cfIndex => $cfStyle) { + $match = $matcher->evaluateConditional($cfStyle); + self::assertSame($expectedMatches[$cfIndex], $match); + } + } + + public function duplicatesDataProvider(): array + { + return [ + // Duplicate/Unique + 'A2' => ['Duplicates Expressions', 'A2', [true, false]], + 'B2' => ['Duplicates Expressions', 'B2', [false, true]], + 'A4' => ['Duplicates Expressions', 'A4', [true, false]], + 'A5' => ['Duplicates Expressions', 'A5', [false, true]], + 'B5' => ['Duplicates Expressions', 'B5', [true, false]], + 'A9' => ['Duplicates Expressions', 'A9', [true, false]], + 'B9' => ['Duplicates Expressions', 'B9', [false, true]], + ]; + } + + /** + * @dataProvider textCrossWorksheetDataProvider + */ + public function testCrossWorksheetExpressions(string $sheetname, string $cellAddress, bool $expectedMatch): void + { + $worksheet = $this->spreadsheet->getSheetByName($sheetname); + if ($worksheet === null) { + self::markTestSkipped("{$sheetname} not found in test workbook"); + } + $cell = $worksheet->getCell($cellAddress); + + $cfRange = $worksheet->getConditionalRange($cell->getCoordinate()); + if ($cfRange === null) { + self::markTestSkipped("{$cellAddress} is not in a Conditional Format range"); + } + $cfStyle = $worksheet->getConditionalStyles($cell->getCoordinate()); + + $matcher = new CellMatcher($cell, $cfRange); + + $match = $matcher->evaluateConditional($cfStyle[0]); + self::assertSame($expectedMatch, $match); + } + + public function textCrossWorksheetDataProvider(): array + { + return [ + // Relative Cell References in another Worksheet + 'A1' => ['CrossSheet References', 'A1', false], + 'A2' => ['CrossSheet References', 'A2', false], + 'A3' => ['CrossSheet References', 'A3', true], + 'A4' => ['CrossSheet References', 'A4', false], + 'A5' => ['CrossSheet References', 'A5', false], + ]; + } +} diff --git a/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/BlankWizardTest.php b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/BlankWizardTest.php new file mode 100644 index 00000000..025376d9 --- /dev/null +++ b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/BlankWizardTest.php @@ -0,0 +1,118 @@ +wizardFactory = new Wizard($this->range); + $this->style = new Style(); + } + + public function testBlankWizard(): void + { + $ruleType = Wizard::BLANKS; + /** @var Wizard\Blanks $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + self::assertInstanceOf(Wizard\Blanks::class, $wizard); + $wizard->setStyle($this->style); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_CONTAINSBLANKS, $conditional->getConditionType()); + $conditions = $conditional->getConditions(); + self::assertSame(['LEN(TRIM(C3))=0'], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function testNonBlankWizard(): void + { + $ruleType = Wizard::NOT_BLANKS; + /** @var Wizard\Blanks $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + self::assertInstanceOf(Wizard\Blanks::class, $wizard); + $wizard->setStyle($this->style); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_NOTCONTAINSBLANKS, $conditional->getConditionType()); + $conditions = $conditional->getConditions(); + self::assertSame(['LEN(TRIM(C3))>0'], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function testBlankWizardWithNotBlank(): void + { + $ruleType = Wizard::BLANKS; + /** @var Wizard\Blanks $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + + $wizard->setStyle($this->style); + $wizard->notBlank(); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_NOTCONTAINSBLANKS, $conditional->getConditionType()); + $conditions = $conditional->getConditions(); + self::assertSame(['LEN(TRIM(C3))>0'], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function testNonBlankWizardWithIsBlank(): void + { + $ruleType = Wizard::NOT_BLANKS; + /** @var Wizard\Blanks $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + + $wizard->setStyle($this->style); + $wizard->isBlank(); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_CONTAINSBLANKS, $conditional->getConditionType()); + $conditions = $conditional->getConditions(); + self::assertSame(['LEN(TRIM(C3))=0'], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function testInvalidFromConditional(): void + { + $ruleType = 'Unknown'; + $this->expectException(Exception::class); + $this->expectExceptionMessage('Conditional is not a Blanks CF Rule conditional'); + + $conditional = new Conditional(); + $conditional->setConditionType($ruleType); + Wizard\Blanks::fromConditional($conditional); + } +} diff --git a/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/CellValueWizardTest.php b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/CellValueWizardTest.php new file mode 100644 index 00000000..d000897f --- /dev/null +++ b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/CellValueWizardTest.php @@ -0,0 +1,253 @@ +wizardFactory = new Wizard($this->range); + $this->style = new Style(); + } + + /** + * @dataProvider basicCellValueDataProvider + * + * @param mixed $operand + * @param mixed $expectedCondition + */ + public function testBasicCellValueWizard(string $operator, $operand, string $expectedOperator, $expectedCondition): void + { + $ruleType = Wizard::CELL_VALUE; + /** @var Wizard\CellValue $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + + $wizard->setStyle($this->style); + $wizard->$operator($operand); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_CELLIS, $conditional->getConditionType()); + self::assertSame($expectedOperator, $conditional->getOperatorType()); + $conditions = $conditional->getConditions(); + self::assertSame([$expectedCondition], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function basicCellValueDataProvider(): array + { + return [ + '=5' => ['equals', 5, Conditional::OPERATOR_EQUAL, 5], + '<>-2' => ['notEquals', -2, Conditional::OPERATOR_NOTEQUAL, -2], + '>3' => ['greaterThan', 3, Conditional::OPERATOR_GREATERTHAN, 3], + '>=5.5' => ['greaterThanOrEqual', 5.5, Conditional::OPERATOR_GREATERTHANOREQUAL, 5.5], + '<-1.5' => ['lessThan', -1.5, Conditional::OPERATOR_LESSTHAN, -1.5], + '<=22>' => ['lessThanOrEqual', 22, Conditional::OPERATOR_LESSTHANOREQUAL, 22], + '= Boolean True Value' => ['equals', true, Conditional::OPERATOR_EQUAL, 'TRUE'], + '= Boolean False Value' => ['equals', false, Conditional::OPERATOR_EQUAL, 'FALSE'], + '= Null Value' => ['equals', null, Conditional::OPERATOR_EQUAL, 'NULL'], + '= String Value' => ['equals', 'Hello World', Conditional::OPERATOR_EQUAL, '"Hello World"'], + ]; + } + + /** + * @dataProvider relativeCellValueDataProvider + * + * @param mixed $operand + * @param mixed $expectedCondition + */ + public function testRelativeCellValueWizard($operand, $expectedCondition): void + { + $ruleType = Wizard::CELL_VALUE; + /** @var Wizard\CellValue $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + + $wizard->setStyle($this->style); + $wizard->equals($operand, Wizard::VALUE_TYPE_CELL); + + $conditional = $wizard->getConditional(); + $conditions = $conditional->getConditions(); + self::assertSame([$expectedCondition], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function relativeCellValueDataProvider(): array + { + return [ + '= Cell value unpinned' => ['A1', 'C3'], + '= Cell value pinned column' => ['$G1', '$G3'], + '= Cell value pinned row' => ['A$10', 'C$10'], + '= Cell value pinned cell' => ['$A$1', '$A$1'], + ]; + } + + /** + * @dataProvider formulaCellValueDataProvider + * + * @param mixed $operand + * @param mixed $expectedCondition + */ + public function testCellValueWizardWithFormula($operand, $expectedCondition): void + { + $ruleType = Wizard::CELL_VALUE; + /** @var Wizard\CellValue $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + + $wizard->setStyle($this->style); + $wizard->equals($operand, Wizard::VALUE_TYPE_FORMULA); + + $conditional = $wizard->getConditional(); + $conditions = $conditional->getConditions(); + self::assertSame([$expectedCondition], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function formulaCellValueDataProvider(): array + { + return [ + '= Cell value unpinned in function' => ['SQRT(A1)', 'SQRT(C3)'], + '= Cell value pinned column in function' => ['SQRT($G1)', 'SQRT($G3)'], + '= Cell value pinned row in function' => ['SQRT(A$10)', 'SQRT(C$10)'], + '= Cell value pinned cell in function' => ['SQRT($A$1)', 'SQRT($A$1)'], + '= Cell value unpinned in expression' => ['A1+B2', 'C3+D4'], + '= Cell value pinned column in expression' => ['$G1+$H2', '$G3+$H4'], + '= Cell value pinned row in expression' => ['A$10+B$11', 'C$10+D$11'], + '= Cell value pinned cell in expression' => ['$A$1+$B$2', '$A$1+$B$2'], + ]; + } + + /** + * @dataProvider rangeCellValueDataProvider + */ + public function testRangeCellValueWizard(string $operator, array $operands, string $expectedOperator): void + { + $ruleType = Wizard::CELL_VALUE; + /** @var Wizard\CellValue $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + + $wizard->setStyle($this->style); + $wizard->$operator($operands[0])->and($operands[1]); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_CELLIS, $conditional->getConditionType()); + self::assertSame($expectedOperator, $conditional->getOperatorType()); + $conditions = $conditional->getConditions(); + self::assertSame($operands, $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function rangeCellValueDataProvider(): array + { + return [ + 'between 5 and 10' => ['between', [5, 10], Conditional::OPERATOR_BETWEEN], + 'between 10 and 5' => ['between', [10, 5], Conditional::OPERATOR_BETWEEN], + 'not between 0 and 1' => ['notBetween', [0, 1], Conditional::OPERATOR_NOTBETWEEN], + ]; + } + + /** + * @dataProvider rangeRelativeCellValueDataProvider + */ + public function testRelativeRangeCellValueWizard(array $operands, array $expectedConditions): void + { + $ruleType = Wizard::CELL_VALUE; + /** @var Wizard\CellValue $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + + $wizard->setStyle($this->style); + $wizard + ->between($operands[0], is_string($operands[0]) ? Wizard::VALUE_TYPE_CELL : Wizard::VALUE_TYPE_LITERAL) + ->and($operands[1], is_string($operands[1]) ? Wizard::VALUE_TYPE_CELL : Wizard::VALUE_TYPE_LITERAL); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_CELLIS, $conditional->getConditionType()); + $conditions = $conditional->getConditions(); + self::assertSame($expectedConditions, $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function rangeRelativeCellValueDataProvider(): array + { + return [ + 'between A6 and 5' => [['A$6', 5], ['C$6', 5]], + 'between -5 and C6' => [[-5, '$C6'], [-5, '$C8']], + ]; + } + + /** + * @dataProvider rangeFormulaCellValueDataProvider + */ + public function testFormulaRangeCellValueWizard(array $operands, array $expectedConditions): void + { + $ruleType = Wizard::CELL_VALUE; + /** @var Wizard\CellValue $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + + $wizard->setStyle($this->style); + $wizard + ->between($operands[0], is_string($operands[0]) ? Wizard::VALUE_TYPE_FORMULA : Wizard::VALUE_TYPE_LITERAL) + ->and($operands[1], is_string($operands[1]) ? Wizard::VALUE_TYPE_FORMULA : Wizard::VALUE_TYPE_LITERAL); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_CELLIS, $conditional->getConditionType()); + $conditions = $conditional->getConditions(); + self::assertSame($expectedConditions, $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function rangeFormulaCellValueDataProvider(): array + { + return [ + 'between yesterday and tomorrow' => [['TODAY()-1', 'TODAY()+1'], ['TODAY()-1', 'TODAY()+1']], + ]; + } + + public function testInvalidFromConditional(): void + { + $ruleType = 'Unknown'; + $this->expectException(Exception::class); + $this->expectExceptionMessage('Conditional is not a Cell Value CF Rule conditional'); + + $conditional = new Conditional(); + $conditional->setConditionType($ruleType); + Wizard\CellValue::fromConditional($conditional); + } +} diff --git a/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/DateValueWizardTest.php b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/DateValueWizardTest.php new file mode 100644 index 00000000..06d76bb2 --- /dev/null +++ b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/DateValueWizardTest.php @@ -0,0 +1,77 @@ +wizardFactory = new Wizard($this->range); + $this->style = new Style(); + } + + /** + * @dataProvider dateValueWizardProvider + */ + public function testDateValueWizard(string $operator, string $expectedReference, string $expectedExpression): void + { + $ruleType = Wizard::DATES_OCCURRING; + /** @var Wizard\DateValue $dateWizard */ + $dateWizard = $this->wizardFactory->newRule($ruleType); + $dateWizard->setStyle($this->style); + + $dateWizard->$operator(); + + $conditional = $dateWizard->getConditional(); + self::assertSame(Conditional::CONDITION_TIMEPERIOD, $conditional->getConditionType()); + self:self::assertSame($expectedReference, $conditional->getText()); + $conditions = $conditional->getConditions(); + self::assertSame([$expectedExpression], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $dateWizard, 'fromConditional() Failure'); + } + + public function dateValueWizardProvider(): array + { + return [ + ['today', 'today', 'FLOOR(C3,1)=TODAY()'], + ['yesterday', 'yesterday', 'FLOOR(C3,1)=TODAY()-1'], + ['tomorrow', 'tomorrow', 'FLOOR(C3,1)=TODAY()+1'], + ['lastSevenDays', 'last7Days', 'AND(TODAY()-FLOOR(C3,1)<=6,FLOOR(C3,1)<=TODAY())'], + ]; + } + + public function testInvalidFromConditional(): void + { + $ruleType = 'Unknown'; + $this->expectException(Exception::class); + $this->expectExceptionMessage('Conditional is not a Date Value CF Rule conditional'); + + $conditional = new Conditional(); + $conditional->setConditionType($ruleType); + Wizard\DateValue::fromConditional($conditional); + } +} diff --git a/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/DuplicatesWizardTest.php b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/DuplicatesWizardTest.php new file mode 100644 index 00000000..c6ed6e03 --- /dev/null +++ b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/DuplicatesWizardTest.php @@ -0,0 +1,110 @@ +wizardFactory = new Wizard($this->range); + $this->style = new Style(); + } + + public function testDuplicateWizard(): void + { + $ruleType = Wizard::DUPLICATES; + /** @var Wizard\Duplicates $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + self::assertInstanceOf(Wizard\Duplicates::class, $wizard); + $wizard->setStyle($this->style); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_DUPLICATES, $conditional->getConditionType()); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function testUniqueWizard(): void + { + $ruleType = Wizard::UNIQUE; + /** @var Wizard\Duplicates $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + self::assertInstanceOf(Wizard\Duplicates::class, $wizard); + $wizard->setStyle($this->style); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_UNIQUE, $conditional->getConditionType()); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function testDuplicateWizardUnique(): void + { + $ruleType = Wizard::DUPLICATES; + /** @var Wizard\Duplicates $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + + $wizard->setStyle($this->style); + $wizard->unique(); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_UNIQUE, $conditional->getConditionType()); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function testUniqueWizardDuplicates(): void + { + $ruleType = Wizard::UNIQUE; + /** @var Wizard\Duplicates $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + + $wizard->setStyle($this->style); + $wizard->duplicates(); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_DUPLICATES, $conditional->getConditionType()); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function testInvalidFromConditional(): void + { + $ruleType = 'Unknown'; + $this->expectException(Exception::class); + $this->expectExceptionMessage('Conditional is not a Duplicates CF Rule conditional'); + + $conditional = new Conditional(); + $conditional->setConditionType($ruleType); + Wizard\Duplicates::fromConditional($conditional); + } +} diff --git a/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/ErrorWizardTest.php b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/ErrorWizardTest.php new file mode 100644 index 00000000..f58b90e4 --- /dev/null +++ b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/ErrorWizardTest.php @@ -0,0 +1,118 @@ +wizardFactory = new Wizard($this->range); + $this->style = new Style(); + } + + public function testErrorWizard(): void + { + $ruleType = Wizard::ERRORS; + /** @var Wizard\Errors $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + self::assertInstanceOf(Wizard\Errors::class, $wizard); + $wizard->setStyle($this->style); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_CONTAINSERRORS, $conditional->getConditionType()); + $conditions = $conditional->getConditions(); + self::assertSame(['ISERROR(C3)'], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function testNonErrorWizard(): void + { + $ruleType = Wizard::NOT_ERRORS; + /** @var Wizard\Errors $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + self::assertInstanceOf(Wizard\Errors::class, $wizard); + $wizard->setStyle($this->style); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_NOTCONTAINSERRORS, $conditional->getConditionType()); + $conditions = $conditional->getConditions(); + self::assertSame(['NOT(ISERROR(C3))'], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function testErrorWizardNotError(): void + { + $ruleType = Wizard::ERRORS; + /** @var Wizard\Errors $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + + $wizard->setStyle($this->style); + $wizard->notError(); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_NOTCONTAINSERRORS, $conditional->getConditionType()); + $conditions = $conditional->getConditions(); + self::assertSame(['NOT(ISERROR(C3))'], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function testErrorWizardIsError(): void + { + $ruleType = Wizard::NOT_ERRORS; + /** @var Wizard\Errors $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + + $wizard->setStyle($this->style); + $wizard->isError(); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_CONTAINSERRORS, $conditional->getConditionType()); + $conditions = $conditional->getConditions(); + self::assertSame(['ISERROR(C3)'], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + public function testInvalidFromConditional(): void + { + $ruleType = 'Unknown'; + $this->expectException(Exception::class); + $this->expectExceptionMessage('Conditional is not an Errors CF Rule conditional'); + + $conditional = new Conditional(); + $conditional->setConditionType($ruleType); + Wizard\Errors::fromConditional($conditional); + } +} diff --git a/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/ExpressionWizardTest.php b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/ExpressionWizardTest.php new file mode 100644 index 00000000..f24453f8 --- /dev/null +++ b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/ExpressionWizardTest.php @@ -0,0 +1,92 @@ +wizardFactory = new Wizard($this->range); + $this->style = new Style(); + } + + /** + * @dataProvider expressionDataProvider + */ + public function testExpressionWizard(string $expression, string $expectedExpression): void + { + $ruleType = Wizard::EXPRESSION; + /** @var Wizard\Expression $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + + $wizard->setStyle($this->style); + $wizard->expression($expression); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_EXPRESSION, $conditional->getConditionType()); + $conditions = $conditional->getConditions(); + self::assertSame([$expectedExpression], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $wizard, 'fromConditional() Failure'); + } + + /** + * @dataProvider expressionDataProvider + */ + public function testExpressionWizardUsingAlias(string $expression, string $expectedExpression): void + { + $ruleType = Wizard::EXPRESSION; + /** @var Wizard\Expression $wizard */ + $wizard = $this->wizardFactory->newRule($ruleType); + + $wizard->setStyle($this->style); + $wizard->formula($expression); + + $conditional = $wizard->getConditional(); + self::assertSame(Conditional::CONDITION_EXPRESSION, $conditional->getConditionType()); + $conditions = $conditional->getConditions(); + self::assertSame([$expectedExpression], $conditions); + } + + public function expressionDataProvider(): array + { + return [ + ['ISODD(A1)', 'ISODD(C3)'], + ['AND($A1="USA",$B1="Q4")', 'AND($A3="USA",$B3="Q4")'], + ]; + } + + public function testInvalidFromConditional(): void + { + $ruleType = 'Unknown'; + $this->expectException(Exception::class); + $this->expectExceptionMessage('Conditional is not an Expression CF Rule conditional'); + + $conditional = new Conditional(); + $conditional->setConditionType($ruleType); + Wizard\Expression::fromConditional($conditional); + } +} diff --git a/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/TextValueWizardTest.php b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/TextValueWizardTest.php new file mode 100644 index 00000000..505e3d7c --- /dev/null +++ b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/TextValueWizardTest.php @@ -0,0 +1,153 @@ +wizardFactory = new Wizard($this->range); + $this->style = new Style(); + } + + public function testTextContainsWizardWithText(): void + { + $ruleType = Wizard::TEXT_VALUE; + /** @var Wizard\TextValue $textWizard */ + $textWizard = $this->wizardFactory->newRule($ruleType); + self::assertInstanceOf(Wizard\TextValue::class, $textWizard); + + $textWizard->setStyle($this->style); + $textWizard->contains('LL'); + + $conditional = $textWizard->getConditional(); + self::assertSame(Conditional::CONDITION_CONTAINSTEXT, $conditional->getConditionType()); + self::assertSame(Conditional::OPERATOR_CONTAINSTEXT, $conditional->getOperatorType()); + self::assertSame('LL', $conditional->getText()); + $conditions = $conditional->getConditions(); + self::assertSame(['NOT(ISERROR(SEARCH("LL",C3)))'], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $textWizard, 'fromConditional() Failure'); + } + + public function testTextContainsWizardWithCellReference(): void + { + $ruleType = Wizard::TEXT_VALUE; + /** @var Wizard\TextValue $textWizard */ + $textWizard = $this->wizardFactory->newRule($ruleType); + self::assertInstanceOf(Wizard\TextValue::class, $textWizard); + + $textWizard->setStyle($this->style); + $textWizard->contains('$A1', Wizard::VALUE_TYPE_CELL); + + $conditional = $textWizard->getConditional(); + self::assertSame(Conditional::CONDITION_CONTAINSTEXT, $conditional->getConditionType()); + self:self::assertSame(Conditional::OPERATOR_CONTAINSTEXT, $conditional->getOperatorType()); + self::assertSame('$A3', $conditional->getText()); + $conditions = $conditional->getConditions(); + self::assertSame(['NOT(ISERROR(SEARCH($A3,C3)))'], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $textWizard, 'fromConditional() Failure'); + } + + public function testTextNotContainsWizardWithText(): void + { + $ruleType = Wizard::TEXT_VALUE; + /** @var Wizard\TextValue $textWizard */ + $textWizard = $this->wizardFactory->newRule($ruleType); + self::assertInstanceOf(Wizard\TextValue::class, $textWizard); + + $textWizard->setStyle($this->style); + $textWizard->doesNotContain('LL'); + + $conditional = $textWizard->getConditional(); + self::assertSame(Conditional::CONDITION_NOTCONTAINSTEXT, $conditional->getConditionType()); + self:self::assertSame(Conditional::OPERATOR_NOTCONTAINS, $conditional->getOperatorType()); + self::assertSame('LL', $conditional->getText()); + $conditions = $conditional->getConditions(); + self::assertSame(['ISERROR(SEARCH("LL",C3))'], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $textWizard, 'fromConditional() Failure'); + } + + public function testTextBeginsWithWizardWithText(): void + { + $ruleType = Wizard::TEXT_VALUE; + /** @var Wizard\TextValue $textWizard */ + $textWizard = $this->wizardFactory->newRule($ruleType); + self::assertInstanceOf(Wizard\TextValue::class, $textWizard); + + $textWizard->setStyle($this->style); + $textWizard->beginsWith('LL'); + + $conditional = $textWizard->getConditional(); + self::assertSame(Conditional::CONDITION_BEGINSWITH, $conditional->getConditionType()); + self:self::assertSame(Conditional::OPERATOR_BEGINSWITH, $conditional->getOperatorType()); + self::assertSame('LL', $conditional->getText()); + $conditions = $conditional->getConditions(); + self::assertSame(['LEFT(C3,LEN("LL"))="LL"'], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $textWizard, 'fromConditional() Failure'); + } + + public function testTextEndsWithWizardWithText(): void + { + $ruleType = Wizard::TEXT_VALUE; + /** @var Wizard\TextValue $textWizard */ + $textWizard = $this->wizardFactory->newRule($ruleType); + self::assertInstanceOf(Wizard\TextValue::class, $textWizard); + + $textWizard->setStyle($this->style); + $textWizard->endsWith('LL'); + + $conditional = $textWizard->getConditional(); + self::assertSame(Conditional::CONDITION_ENDSWITH, $conditional->getConditionType()); + self:self::assertSame(Conditional::OPERATOR_ENDSWITH, $conditional->getOperatorType()); + $conditions = $conditional->getConditions(); + self::assertSame(['RIGHT(C3,LEN("LL"))="LL"'], $conditions); + + $newWizard = Wizard::fromConditional($conditional, $this->range); + $newWizard->getConditional(); + self::assertEquals($newWizard, $textWizard, 'fromConditional() Failure'); + } + + public function testInvalidFromConditional(): void + { + $ruleType = 'Unknown'; + $this->expectException(Exception::class); + $this->expectExceptionMessage('Conditional is not a Text Value CF Rule conditional'); + + $conditional = new Conditional(); + $conditional->setConditionType($ruleType); + Wizard\TextValue::fromConditional($conditional); + } +} diff --git a/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/WizardFactoryTest.php b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/WizardFactoryTest.php new file mode 100644 index 00000000..c35c626e --- /dev/null +++ b/tests/PhpSpreadsheetTests/Style/ConditionalFormatting/Wizard/WizardFactoryTest.php @@ -0,0 +1,113 @@ +wizardFactory = new Wizard($range); + } + + /** + * @dataProvider basicWizardFactoryProvider + * + * @param class-string $expectedWizard + */ + public function testBasicWizardFactory(string $ruleType, $expectedWizard): void + { + $wizard = $this->wizardFactory->newRule($ruleType); + self::assertInstanceOf($expectedWizard, $wizard); + } + + public function basicWizardFactoryProvider(): array + { + return [ + 'CellValue Wizard' => [Wizard::CELL_VALUE, Wizard\CellValue::class], + 'TextValue Wizard' => [Wizard::TEXT_VALUE, Wizard\TextValue::class], + 'Blanks Wizard' => [Wizard::BLANKS, Wizard\Blanks::class], + 'Blanks Wizard (NOT)' => [Wizard::NOT_BLANKS, Wizard\Blanks::class], + 'Errors Wizard' => [Wizard::ERRORS, Wizard\Errors::class], + 'Errors Wizard (NOT)' => [Wizard::NOT_ERRORS, Wizard\Errors::class], + 'Expression Wizard' => [Wizard::EXPRESSION, Wizard\Expression::class], + 'DateValue Wizard' => [Wizard::DATES_OCCURRING, Wizard\DateValue::class], + ]; + } + + /** + * @dataProvider conditionalProvider + */ + public function testWizardFromConditional(string $sheetName, string $cellAddress, array $expectedWizads): void + { + $filename = 'tests/data/Style/ConditionalFormatting/CellMatcher.xlsx'; + $reader = IOFactory::createReader('Xlsx'); + $spreadsheet = $reader->load($filename); + $worksheet = $spreadsheet->getSheetByName($sheetName); + if ($worksheet === null) { + self::markTestSkipped("{$sheetName} not found in test workbook"); + } + $cell = $worksheet->getCell($cellAddress); + + $cfRange = $worksheet->getConditionalRange($cell->getCoordinate()); + if ($cfRange === null) { + self::markTestSkipped("{$cellAddress} is not in a Conditional Format range"); + } + $conditionals = $worksheet->getConditionalStyles($cfRange); + + foreach ($conditionals as $index => $conditional) { + $wizard = Wizard::fromConditional($conditional); + self::assertEquals($expectedWizads[$index], get_class($wizard)); + } + } + + public function conditionalProvider(): array + { + return [ + 'cellIs Comparison A2' => ['cellIs Comparison', 'A2', [Wizard\CellValue::class, Wizard\CellValue::class, Wizard\CellValue::class]], + 'cellIs Expression A2' => ['cellIs Expression', 'A2', [Wizard\Expression::class, Wizard\Expression::class]], + 'Text Expressions A2' => ['Text Expressions', 'A2', [Wizard\TextValue::class]], + 'Text Expressions A8' => ['Text Expressions', 'A8', [Wizard\TextValue::class]], + 'Text Expressions A14' => ['Text Expressions', 'A14', [Wizard\TextValue::class]], + 'Text Expressions A20' => ['Text Expressions', 'A20', [Wizard\TextValue::class]], + 'Blank Expressions A2' => ['Blank Expressions', 'A2', [Wizard\Blanks::class, Wizard\Blanks::class]], + 'Error Expressions C2' => ['Error Expressions', 'C2', [Wizard\Errors::class, Wizard\Errors::class]], + 'Date Expressions B10' => ['Date Expressions', 'B10', [Wizard\DateValue::class]], + 'Duplicates Expressions A2' => ['Duplicates Expressions', 'A2', [Wizard\Duplicates::class, Wizard\Duplicates::class]], + ]; + } + + public function testWizardFactoryException(): void + { + $ruleType = 'Unknown'; + $this->expectException(Exception::class); + $this->expectExceptionMessage('No wizard exists for this CF rule type'); + $this->wizardFactory->newRule($ruleType); + + $conditional = new Conditional(); + $conditional->setConditionType('UNKNOWN'); + Wizard::fromConditional($conditional); + } + + public function testWizardFactoryFromConditionalException(): void + { + $ruleType = 'Unknown'; + $this->expectException(Exception::class); + $this->expectExceptionMessage('No wizard exists for this CF rule type'); + + $conditional = new Conditional(); + $conditional->setConditionType($ruleType); + Wizard::fromConditional($conditional); + } +} diff --git a/tests/PhpSpreadsheetTests/Writer/Xlsx/ConditionalTest.php b/tests/PhpSpreadsheetTests/Writer/Xlsx/ConditionalTest.php index 21659dad..8bda9a9e 100644 --- a/tests/PhpSpreadsheetTests/Writer/Xlsx/ConditionalTest.php +++ b/tests/PhpSpreadsheetTests/Writer/Xlsx/ConditionalTest.php @@ -4,38 +4,562 @@ namespace PhpOffice\PhpSpreadsheetTests\Writer\Xlsx; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Style\Conditional; +use PhpOffice\PhpSpreadsheet\Style\ConditionalFormatting\Wizard; use PhpOffice\PhpSpreadsheet\Style\Fill; +use PhpOffice\PhpSpreadsheet\Style\Style; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use PhpOffice\PhpSpreadsheetTests\Functional\AbstractFunctional; class ConditionalTest extends AbstractFunctional { /** - * Test check if conditional style with type 'notContainsText' works on xlsx. + * @var string */ - public function testConditionalNotContainsText(): void - { - $spreadsheet = new Spreadsheet(); - $worksheet = $spreadsheet->getActiveSheet(); + protected $cellRange; - $condition = new Conditional(); - $condition->setConditionType(Conditional::CONDITION_NOTCONTAINSTEXT); - $condition->setOperatorType(Conditional::OPERATOR_NOTCONTAINS); - $condition->setText('C'); - $condition->getStyle()->applyFromArray([ + /** + * @var Style + */ + protected $style; + + protected function setUp(): void + { + parent::setUp(); + $this->cellRange = 'C3:E5'; + $this->style = new Style(); + $this->style->applyFromArray([ 'fill' => [ 'color' => ['argb' => 'FFFFC000'], 'fillType' => Fill::FILL_SOLID, ], ]); - $worksheet->setConditionalStyles('A1:A5', [$condition]); + } + + public function testWriteSimpleCellConditionalFromWizard(): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $wizard = new Wizard\CellValue($this->cellRange); + $wizard->greaterThan(5); + $condition = $wizard->getConditional(); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); $writer = new Xlsx($spreadsheet); $writerWorksheet = new Xlsx\Worksheet($writer); $data = $writerWorksheet->writeWorksheet($worksheet, []); - $needle = <<ISERROR(SEARCH("C",A1:A5)) -xml; - self::assertStringContainsString($needle, $data); + + $expected = <<5 +XML; + self::assertStringContainsString($expected, $data); + } + + public function testWriteBetweenCellConditionalFromWizard(): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $wizard = new Wizard\CellValue($this->cellRange); + $wizard->between(-5)->and(5); + $condition = $wizard->getConditional(); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + $expected = <<-55 +XML; + self::assertStringContainsString($expected, $data); + } + + public function testWriteTextConditionalFromWizard(): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $wizard = new Wizard\TextValue($this->cellRange); + $wizard->contains('PHP'); + $condition = $wizard->getConditional(); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + $expected = <<NOT(ISERROR(SEARCH("PHP",C3))) +XML; + self::assertStringContainsString($expected, $data); + } + + /** + * @dataProvider textConditionalsProvider + */ + public function testWriteTextConditionals(string $conditionType, string $operatorType, string $expected): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $condition = new Conditional(); + $condition->setConditionType($conditionType); + $condition->setOperatorType($operatorType); + $condition->setText('PHP'); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + self::assertStringContainsString($expected, $data); + } + + public function textConditionalsProvider(): array + { + return [ + 'Contains' => [ + Conditional::CONDITION_CONTAINSTEXT, + Conditional::OPERATOR_CONTAINSTEXT, + <<NOT(ISERROR(SEARCH("PHP",C3))) +XML + ], + 'Not Contains' => [ + Conditional::CONDITION_NOTCONTAINSTEXT, + Conditional::OPERATOR_NOTCONTAINS, + <<ISERROR(SEARCH("PHP",C3)) +XML + ], + 'Begins With' => [ + Conditional::CONDITION_BEGINSWITH, + Conditional::OPERATOR_BEGINSWITH, + <<LEFT(C3,LEN("PHP"))="PHP" +XML + ], + 'Ends With' => [ + Conditional::CONDITION_ENDSWITH, + Conditional::OPERATOR_ENDSWITH, + <<RIGHT(C3,LEN("PHP"))="PHP" +XML + ], + ]; + } + + public function testWriteDateConditionalFromWizard(): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $wizard = new Wizard\DateValue($this->cellRange); + $wizard->today(); + $condition = $wizard->getConditional(); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + $expected = <<FLOOR(C3,1)=TODAY() +XML; + self::assertStringContainsString($expected, $data); + } + + /** + * @dataProvider dateConditionalsProvider + */ + public function testWriteDateConditionals(string $timePeriod, string $expected): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $condition = new Conditional(); + $condition->setConditionType(Conditional::CONDITION_TIMEPERIOD); + $condition->setOperatorType($timePeriod); + $condition->setText($timePeriod); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + self::assertStringContainsString($expected, $data); + } + + public function dateConditionalsProvider(): array + { + return [ + 'Yesterday' => [ + Conditional::TIMEPERIOD_YESTERDAY, + <<FLOOR(C3)=TODAY()-1 +XML + ], + 'Today' => [ + Conditional::TIMEPERIOD_TODAY, + <<FLOOR(C3)=TODAY() +XML + ], + 'Tomorrow' => [ + Conditional::TIMEPERIOD_TOMORROW, + <<FLOOR(C3)=TODAY()+1 +XML + ], + 'Last 7 Days' => [ + Conditional::TIMEPERIOD_LAST_7_DAYS, + <<AND(TODAY()-FLOOR(C3,1)<=6,FLOOR(C3,1)<=TODAY()) +XML + ], + 'Last Week' => [ + Conditional::TIMEPERIOD_LAST_WEEK, + <<AND(TODAY()-ROUNDDOWN(C3,0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(C3,0)<(WEEKDAY(TODAY())+7)) +XML + ], + 'This Week' => [ + Conditional::TIMEPERIOD_THIS_WEEK, + <<AND(TODAY()-ROUNDDOWN(C3,0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(C3,0)-TODAY()<=7-WEEKDAY(TODAY())) +XML + ], + 'Next Week' => [ + Conditional::TIMEPERIOD_NEXT_WEEK, + <<AND(ROUNDDOWN(C3,0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(C3,0)-TODAY()<(15-WEEKDAY(TODAY()))) +XML + ], + 'Last Month' => [ + Conditional::TIMEPERIOD_LAST_MONTH, + <<AND(MONTH(C3)=MONTH(EDATE(TODAY(),0-1)),YEAR(C3)=YEAR(EDATE(TODAY(),0-1))) +XML + ], + 'This Month' => [ + Conditional::TIMEPERIOD_THIS_MONTH, + <<AND(MONTH(C3)=MONTH(TODAY()),YEAR(C3)=YEAR(TODAY())) +XML + ], + 'Next Month' => [ + Conditional::TIMEPERIOD_NEXT_MONTH, + <<AND(MONTH(C3)=MONTH(EDATE(TODAY(),0+1)),YEAR(C3)=YEAR(EDATE(TODAY(),0+1))) +XML + ], + ]; + } + + public function testWriteBlankConditionalFromWizard(): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $wizard = new Wizard\Blanks($this->cellRange); + $wizard->isBlank(); + $condition = $wizard->getConditional(); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + $expected = <<LEN(TRIM(C3))=0 +XML; + self::assertStringContainsString($expected, $data); + } + + public function testWriteNonBlankConditionalFromWizard(): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $wizard = new Wizard\Blanks($this->cellRange); + $wizard->notBlank(); + $condition = $wizard->getConditional(); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + $expected = <<LEN(TRIM(C3))>0 +XML; + self::assertStringContainsString($expected, $data); + } + + /** + * @dataProvider blanksConditionalsProvider + */ + public function testWriteBlanksConditionals(string $conditionalType, string $expected): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $condition = new Conditional(); + $condition->setConditionType($conditionalType); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + self::assertStringContainsString($expected, $data); + } + + public function blanksConditionalsProvider(): array + { + return [ + 'Blanks' => [ + Conditional::CONDITION_CONTAINSBLANKS, + <<LEN(TRIM(C3))=0 +XML + ], + 'Not Blanks' => [ + Conditional::CONDITION_NOTCONTAINSBLANKS, + <<LEN(TRIM(C3))>0 +XML + ], + ]; + } + + public function testWriteNonErrorConditionalFromWizard(): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $wizard = new Wizard\Errors($this->cellRange); + $wizard->notError(); + $condition = $wizard->getConditional(); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + $expected = <<NOT(ISERROR(C3)) +XML; + self::assertStringContainsString($expected, $data); + } + + public function testWriteErrorConditionalFromWizard(): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $wizard = new Wizard\Errors($this->cellRange); + $wizard->isError(); + $condition = $wizard->getConditional(); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + $expected = <<ISERROR(C3) +XML; + self::assertStringContainsString($expected, $data); + } + + /** + * @dataProvider errorsConditionalsProvider + */ + public function testWriteErrorsConditionals(string $conditionalType, string $expected): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $condition = new Conditional(); + $condition->setConditionType($conditionalType); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + self::assertStringContainsString($expected, $data); + } + + public function errorsConditionalsProvider(): array + { + return [ + 'Errors' => [ + Conditional::CONDITION_CONTAINSERRORS, + <<ISERROR(C3) +XML + ], + 'Not Errors' => [ + Conditional::CONDITION_NOTCONTAINSERRORS, + <<NOT(ISERROR(C3)) +XML + ], + ]; + } + + public function testWriteUniqueConditionalFromWizard(): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $wizard = new Wizard\Duplicates($this->cellRange); + $wizard->unique(); + $condition = $wizard->getConditional(); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + $expected = << +XML; + self::assertStringContainsString($expected, $data); + } + + public function testWriteDuplicateConditionalFromWizard(): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $wizard = new Wizard\Duplicates($this->cellRange); + $wizard->duplicates(); + $condition = $wizard->getConditional(); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + $expected = << +XML; + self::assertStringContainsString($expected, $data); + } + + /** + * @dataProvider duplicatesConditionalsProvider + */ + public function testWriteDuplicatesConditionals(string $conditionalType, string $expected): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $condition = new Conditional(); + $condition->setConditionType($conditionalType); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + self::assertStringContainsString($expected, $data); + } + + public function duplicatesConditionalsProvider(): array + { + return [ + 'Duplicates' => [ + Conditional::CONDITION_DUPLICATES, + << +XML + ], + 'Unique' => [ + Conditional::CONDITION_UNIQUE, + << +XML + ], + ]; + } + + public function testWriteExpressionConditionalFromWizard(): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $wizard = new Wizard\Expression($this->cellRange); + $wizard->expression('=ISODD(A1)'); + $condition = $wizard->getConditional(); + $condition->setStyle($this->style); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + $expected = <<ISODD(C3) +XML; + self::assertStringContainsString($expected, $data); + } + + /** + * @dataProvider expressionsConditionalsProvider + */ + public function testWriteExpressionConditionals(string $expression, string $expected): void + { + $spreadsheet = new Spreadsheet(); + $worksheet = $spreadsheet->getActiveSheet(); + + $condition = new Conditional(); + $condition->setConditionType(Conditional::CONDITION_EXPRESSION); + $condition->setStyle($this->style); + $condition->setConditions([$expression]); + $worksheet->setConditionalStyles($this->cellRange, [$condition]); + + $writer = new Xlsx($spreadsheet); + $writerWorksheet = new Xlsx\Worksheet($writer); + $data = $writerWorksheet->writeWorksheet($worksheet, []); + + self::assertStringContainsString($expected, $data); + } + + public function expressionsConditionalsProvider(): array + { + return [ + 'Odd' => [ + 'ISODD(C3)', + <<ISODD(C3) +XML + ], + 'Even' => [ + 'ISEVEN(C3)', + <<ISEVEN(C3) +XML + ], + ]; } } diff --git a/tests/data/Style/ConditionalFormatting/CellMatcher.xlsx b/tests/data/Style/ConditionalFormatting/CellMatcher.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..cc063f7fa1bd4b823679057ed32cb83e7ddd9bc5 GIT binary patch literal 35435 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 literal 0 HcmV?d00001