From 4de266aea67c3a32ed086eede05801423dca7d8d Mon Sep 17 00:00:00 2001 From: Chris Date: Fri, 8 Aug 2025 14:57:10 +1000 Subject: [PATCH] docs for 7.0 --- README-old.md | 335 ++++++++++++++++++++++++++++++++++++++++ README.md | 345 ++++++++++++++---------------------------- docs/connectable.png | Bin 0 -> 13336 bytes docs/kSampler.png | Bin 0 -> 15380 bytes docs/options.png | Bin 0 -> 46427 bytes docs/restrictions.png | Bin 0 -> 16021 bytes 6 files changed, 450 insertions(+), 230 deletions(-) create mode 100644 README-old.md create mode 100644 docs/connectable.png create mode 100644 docs/kSampler.png create mode 100644 docs/options.png create mode 100644 docs/restrictions.png diff --git a/README-old.md b/README-old.md new file mode 100644 index 0000000..6e5dedc --- /dev/null +++ b/README-old.md @@ -0,0 +1,335 @@ +# UE Nodes + +Love this node? [Buy me a coffee!](https://www.buymeacoffee.com/chrisgoringe) + +Getting started? Download the test workflow below and see how it works. + +Problems? Jump down to [logging and debugging](https://github.com/chrisgoringe/cg-use-everywhere/blob/main/README.md#loggingdebugging) + +Ideas for how to improve the nodes (or bug reports) - [raise an issue](https://github.com/chrisgoringe/cg-use-everywhere/issues) + +Shameless plug for my other nodes -> Check out [Image Picker](https://github.com/chrisgoringe/cg-image-filter) for another way to make some workflows smoother. And leave a star if you like something! + +--- + +# Important! + +I've merged v7 of UE to coincide with the update to ComfyUI, but the instructions below have not been updated. + +Please see [this discussion](https://github.com/chrisgoringe/cg-use-everywhere/discussions/334) (but ignore the bits about branches). + +--- + +Over the next few releases I am aiming to reduce the UE zoo down to a single node that can do everything, but is as easy (or easier) to use than the current nodes. + +The first step in this process is merging the `AnythingEverywhere` and `AnythingEverywhere?` nodes by moving the regex restrictions into a separate dialog that can be used by either. In future iterations the group and color restrictions will also move to this dialog (so people find them!) + +--- + +# 6.3 Update for ComfyUI front end (version TBC) - subgraphs + +With the addition of subgraphs, group nodes are no longer supported in UE from 6.3 onwards. + +Instead, UE 6.3 has the following support for subgraphs: + +- UE nodes can be used in the main graph and in subgraphs. +- UE nodes only broadcast within the graph or subgraph they are in. +- Subgraph nodes are just nodes. You can connect UE nodes to their outputs, and UE links will connect to their inputs. +- Within a subgraph you can connect from the input panel to a UE node. +- UE nodes within the subgraph will *not* broadcast to the output panel. +- When you convert a set of nodes to a subgraph, UE links will work as long as: + - the UE node (Control) and the node feeding it (Source) are both in the subgraph, or + - neither the Source nor Control are in the subgraph, or + - the Source is in the subgraph, and the Control is not, and no Target nodes are in the subgraph + + +## Subgraph creation + +There are three nodes involved in every UE link: +- Source (the link sending the data), +- Control (the UE node connected to the source), +- Target (the node that is receiving the data as an input) + +This is how those cases are treated: + +|Support|Source|Control|Target|| +|-|-|-|-|-| +|Yes|Graph|Graph|Graph|Nothing changes| +|Yes|Graph|Graph|Subgraph|The subgraph will have inputs for the data; in the subgraph the input panel is connected to the Target with a real link| +|No|Graph|Subgraph|Graph|Not supported| +|No*|Graph|Subgraph|Subgraph|Not supported| +|Yes|Subgraph|Graph|Graph|The subgraph will be connected to the Control| +|No|Subgraph|Graph|Subgraph|Not supported| +|Yes|Subgraph|Subgraph|Graph|The Source will be connected to the Control *and* the output panel in the subgraph, the output will be connected to the Target with a real link| +|Yes|Subgraph|Subgraph|Subgraph|All nodes will be connected in the subgraph as they were in the graph| + +No* indicates a case that does not work, but might get implemented. + +No indicates a case I'm unlikely ever to support + +--- + +## Test workflow + +|This workflow uses all five nodes, and can be used to test (and understand!) the nodes. You wouldn't build it like this, it's just an example...|Here's an image with the workflow in| +|-|-| +|![screen](docs/test-workflow-screenshot.png)|![image](docs/test-workflow.png)| + +Or [the workflow as json](docs/test-workflow.json) + +## Current known limitations + +There are some situations that UE nodes can't cope with at present. Here are some I know about, and possible workarounds. + +### Pythonssss Preset Text + +[pythonsssss](https://github.com/pythongosssss/ComfyUI-Custom-Scripts) custom nodes are great, but there are some limitations in using them with UE nodes. In particular, you can't feed the output of a Preset Text node directly into a UE node (see https://github.com/chrisgoringe/cg-use-everywhere/issues/154). + +### Group nodes + +UE nodes mostly work with group nodes. But there are a couple of important things to note: + +- when you create a group node the input names and node names can change. This might break UE? regex connections. + +## Latest updates + +6.3 June/July 2025 +- support for ComfyUI subgraphs + +6.1 (May 2025) +- Mostly some bug-fixes (#216, #217, #300) +- New option to show UE links differently without animation for better performance + +6.0 (April 2025) +- Very major rebuild to deal with latest version of Comfy + +## Installing + +Use Comfy Manager. If you really want to do it manually, just clone this repository in your custom_nodes directory. + +## Anything Everywhere (start here!) + +The `Anything Everywhere` node has a single input, initially labelled 'anything'. Connect anything to it (directly - not via a reroute), and the input name changes to match the input type. Disconnect and it goes back to 'anything'. + +When you run the prompt, any unconnected input, anywhere in the workflow, which matches that type, will act as if it were connected to the same input. + +To visualise what it's being connected to, right-click on the background canvas and select `Toggle UE Link Visibility`. + +## Anything Everywhere? - control matching with regex rules + +This node adds two widgets - title_regex and input_regex. It will only send to inputs which match. So in the example, title_regex is 'Preview' so the image is sent to the Preview Image node but not the Save Image node. Note that you can rename node and input titles, which can help! + +(From 4.6 you can also specify a group regex to only match inputs on nodes which are in groups that match the regex.) + +![regex](docs/regex.png) + +*The matches are regular expressions, not string matches.* Most simple strings will work (matching any part of the title or input name), but some characters have special meanings (including various sorts of brackets, ^, $, /, and . in particular) so just avoid them if you aren't regex-inclined. + +Using regex means you can use `^prompt` to match `prompt` at the beginning of the title only, to avoid matching `negative_prompt`. + +Regex 101 - `^` means 'the start', `$` means 'the end', `.` matches any single character, `.*` matches anything of any length (including zero). For more than that, visit [regex101](https://regex101.com/) (the flavour you want is ECMAScript, though that probably won't matter). + +### Can I make the regex an input instead of a widget? + +Sort of. + +Because the regex needs to be known before the workflow is submitted (in order to calculate the links), you can't pass a string into the `Anything Everywhere?` node and expect it to work. The *only* thing that is supported is if the input comes *directly* from a node which sets it with a string widget. The `Simple String` node that is included in this pack will work. + +|This works|This doesn't. And never will.| +|-|-| +|![Alt text](docs/image.png)|![no](docs/imagex.png)| + + +## Seed Everywhere + +Seed Everywhere connects to any unconnected INT input with `seed` in the input name (seed, noise_seed, etc), and it has the control_after_generate feature. So if you convert the seed widgets to inputs you can use the same seed everywhere. + +## Anything Everywhere3 - One node, three inputs. + +Really just three `Anything Everywhere` nodes packaged together. Designed for the outputs of Checkpoint Loader. + +![UE3](docs/UE3.png) + +## Prompts Everywhere - two strings or conditionings + +Prompt Everywhere has two inputs. They will be sent with regex matching rules of `(^prompt|^positive)` and `neg` respectively. These should match the various versions of names that get used for prompts and negative prompts or conditionings. + +|strings|conditionings| +|-|-| +|![pe](docs/PE.png)|![pe](docs/conditioning.png) + +# Primitives and COMBOs and the like + +UE nodes don't work with primitives and COMBOs (the data type used for dropdown lists, which are also a type of primitive within Comfy). It's unlikely they ever will. + +If you want to use UE to control sampler or sigma, you can do this with the built in `SamplerCustom` nodes: + +![sample and sigma](docs/sampler%20and%20sigma.png) + +For more on this, see [this discussion](https://github.com/chrisgoringe/cg-use-everywhere/issues/69) + +# Other features + +## Third Party Integration + +At the suggestion of [@fighting-tx](https://github.com/fighting-tx), +I've added a method that third party nodes can use if they want to see the prompt as generated by UE. +It's attached to the `app` object, so you can check if it is present and use it something like this: + +```js +var prompt +if (app.ue_modified_prompt) { + prompt = await app.ue_modified_prompt() +} else { + prompt = await original_graphToPrompt.apply(app) +} +``` + +Other methods could be exposed if there is interest - raise an issue if you'd like to see something. + +## Reject links + +Right click on a node and you can set it to reject UE links + +## Show links - visualisation and animation. + +If you want to see the UE links, you can turn them on and off by right-clicking on the canvas. For finer control, the main settings menu has options to show links when the mouse moves over the node at either end, or when one of those nodes is selected. + +The links can be animated to distinguish them from normal links - this animation can take the form of moving dots, a pulsing glow, or both. This may impact performance in some cases - note that the pulse animation requires less processing than the moving dots. Control this in the main settings menu. + +By default the animations turn off when the workflow is running to minimise impact on CPU/GPU - you can change this in the settings too. + +## Convert to real links + +If you want to share a workflow without UE nodes being required, or to save an API version of a workflow, you can replace the virtual links created by UE nodes with real links (and remove the UE nodes). + +This can be done for a single node by right-clicking on it and selecting `Convert to real links`, or for all UE nodes in a workflow by right-clicking the background and selecting `Convert all UEs to real links`. + +## Shift drag + +Shift click on an output node and drag then release to get an autocreate menu. This replaces the default behaviour (which gives you a search box), so you can disable it with the `Anything Everywhere replace search` setting. + +![auto](docs/auto.gif) + +## Group and color restriction + +UE nodes can be restricted to send only to nodes of the same color, or only to nodes that *aren't* the same color. + +They can also be restricted to send only to nodes in the same group (any group in common), or only to nodes that aren't in the same group. + +Right-click on the node and select `Group restrictions` or `Color restrictions`. UE nodes which are restricted (in either or both ways) have a green circle in the top-left corner. + +## Highway nodes + +Trung 0246's [Highway nodes](https://github.com/Trung0246/ComfyUI-0246) are a pretty cool way of piping data around. You can target them with an `Anything Everywhere?` node by using an `input_regex` which matches the unconnected input name with the '+', like this: +![highway](docs/highway.png) + +This is new, so please report any issues! + +## Loop checking + +By default workflows are checked for loops before they are submitted (because UE can introduce them, and a loop results in a bad python outcome). If a loop is detected you'll get a JavaScript warning showing you the node ids involved. However, especially if there are other custom nodes involved, it's possible that the check will miss a loop, or flag one that isn't real. + +If you get a warning and don't believe there is a loop (having checked the node ids listed!) you can turn loop checking off in the main settings menu. If something flagged as a loop runs fine, please [raise an issue](https://github.com/chrisgoringe/cg-use-everywhere/issues) and include the workflow in the report (save the json and zip it, because GitHub doesn't accept .json files). Likewise if a loop doesn't get caught. + +I've written code for the core Comfy backend to catch loops, maybe it'll be included - [PR for ComfyUI](https://github.com/comfyanonymous/ComfyUI/pull/1652) - or maybe they have another plan. + +## Priorities + +If there is more than one sending node that matches an input, the basic rules is that the more specific node wins. The order of priorities is: + +- `Anything Everywhere?` +- `Seed Everywhere` and `Prompts Everywhere` +- `Anything Everywhere` +- `Anything Everywhere3` + +For nodes of the same time, those with colour restrictions and group restriction are prioritised (colour+group > colour > group > none). + +If two nodes with the same priority both match *neither will connect* - better to fail fast than have an ambiguous outcome. If there are ambiguous matches you can display them using `Show UE broadcast clashes` (right-click on background - the option only appears if there are clashes). + +## See what is sent + +The nodes which only have one output can also gain a text box showing exactly what passed through the node. You need to turn this on if you want it - it's in the main settings, 'Anything Everywhere node details'. + +## Logging/Debugging + +The JavaScript console (press f12 in some browsers) has logging information about what is being connected. You can change the level of detail by finding the file `[comfy_install]/custom_nodes/cg-use-everywhere/js/use_everywhre_utilities.js` and near the top finding this bit: +```javascript + static ERROR = 0; // actual errors + static PROBLEM = 1; // things that stop the workflow working + static INFORMATION = 2; // record of good things + static DETAIL = 3; // details + + static LEVEL = Logger.PROBLEM; + static TRACE = false; // most of the method calls +``` +Change the `LEVEL` to `Logger.INFORMATION` for more, or `Logger.DETAIL` for even more; set `TRACE` to `true` for some other debugging information. + +If you have a problem, pressing f12 to see the JavaScript console can often help. The following steps are really helpful in making a good bug report: + +- update to the latest version +- restart ComfyUI +- clear the canvas +- close the browser +- open a new Comfy window (with no workflow), look in console (f12) to see if there were any errors as ComfyUI started up +- load your workflow, and look again +- run, and look again + +The other thing worth trying is clearing out all the custom node javascript from where it gets copied when ComfyUI starts: + +- stop Comfy +- go to [comfy root]/web/extensions (*not* under custom_nodes) +- remove everything there EXCEPT for `core`. Leave `core` (it's ComfyUI stuff) +- restart Comfy (all custom nodes will reinstall their javascript at startup) + +If you find a bug, please [raise an issue](https://github.com/chrisgoringe/cg-use-everywhere/issues) - if you can include the workflow, that's a huge help (you'll need to save it as .txt, or zip the .json file, because GitHub doesn't accept .json). + +## Cautions + +Bypassing and disabling nodes works, but with one catch. If you have a UE nodes that does matching (`Anything Everywhere?` and `Prompt Everywhere`) and you bypass the node it matches to, the link won't be made. So + +|If you use a ? node to send to a node...|...and bypass the recipient, it doesn't get connected | +|-|-| +|![1](docs/bypass_catch1.png)|![2](docs/bypass_catch2.png)| + +This is unlikely to be fixed, but should be fairly easy to avoid! + + +--- +# Some older information + +# Update for ComfyUI front end 1.16 and above + +ComfyUI front end 1.16 made a major change to the way that inputs and widgets work, which had a significant impact on the UE nodes. + +A widget is no longer converted to an input in order to connect to it; instead, you just connect an output to it, and it converts. + +This is quite cool - except that it meant that there was no way for UE to tell if a widget was supposed to be an empty input for UE to feed. + +So there is a new mechanism for this. Here's a picture of a node that I have right-clicked: + +![116](docs/116.png) + +Things to notice: + +- There is a new menu `UE Connectable Widgets` which lists all the widgets. Those marked as connectable have a green bar to the left of the name. + - Select a widget to toggle its value +- Next to the widget, where an input would be, the connectable widgets have a graphical indication of their state. + - The smaller dark circle (next to steps) indicate a connectable node which is not connected (widget value will be used) + - The light circle (next to cfg) and greying out the widget indicates that a UE node will provide the value + - No icon (all the other widgets) indicates that they are not UE connectable +- Other inputs still have the indications of normal connection or UE connection (here model is a UE connection) + +You'll probably find that turning the `showlinks` option on helps, and the `highlight` option is required for those widget indicators which help a lot. + +![options116](docs/options116.png) + +Hopefully old workflows will be automatically converted when you load them. Hopefully. + +## Naming widgets + +The `Prompts Everywhere`, `Seed Everywhere`, and `Anything Everywhere?` all make use of the name of an input. On some occasions this might mean you want to rename an input. + +For an input that can't be a widget, that's trivial - right click on the input dot and select `Rename Slot`. The name will be updated, and the new name displayed next to the dot. + +If an input *can* be a widget, you can rename it in the same way, but the new name *does not get displayed*. The name has changed, and the UE nodes will use the new name, but the old name is still shown. I consider this to be a bug in the Comfy front-end, and have raised an issue [here](https://github.com/Comfy-Org/ComfyUI_frontend/issues/3654). Unfortunately it appears that Comfy UI is going to remove the ability to rename a widget entirely, so best to avoid using widget input names if at all possible. diff --git a/README.md b/README.md index 6e5dedc..3ef6ada 100644 --- a/README.md +++ b/README.md @@ -12,162 +12,109 @@ Shameless plug for my other nodes -> Check out [Image Picker](https://github.com --- -# Important! +# Anything Everywhere v7 -I've merged v7 of UE to coincide with the update to ComfyUI, but the instructions below have not been updated. +Version 7 is a major update to the Anything Everywhere nodes, so the documentation below is all new. If you are looking for the old docs, you can find them [here](https://github.com/chrisgoringe/cg-use-everywhere/README-old). -Please see [this discussion](https://github.com/chrisgoringe/cg-use-everywhere/discussions/334) (but ignore the bits about branches). +If you are new to Anything Everywhere, skip to [Anything Everywhere](). ---- +## Major changes -Over the next few releases I am aiming to reduce the UE zoo down to a single node that can do everything, but is as easy (or easier) to use than the current nodes. +If you used Anything Everywhere prior to v7, the major improvements are: -The first step in this process is merging the `AnythingEverywhere` and `AnythingEverywhere?` nodes by moving the regex restrictions into a separate dialog that can be used by either. In future iterations the group and color restrictions will also move to this dialog (so people find them!) +- The `Anything Everywhere3` and `Anything Everywhere?` nodes are deprecated, as their features are now part of the standard `Anything Everywhere` node. +- `Anything Everywhere` nodes now have dynamic inputs, so you can plug as many different things into them as you like. + - At present you can only connect one input of any given data type, but this restriction should go away in `7.1` +- All the restrictions on what nodes data will be sent to are now in a restrictions editor, that can be accessed through the right click menu of the node, or by double-clicking the body of the node. + - In the restrictions editor you can set title, input, and group regexes, color restrictions, group restrictions, and priority (for when two nodes both match) + - The green circle is used to indicate that _any_ restrictions are in place; if you hover over a node with restrictions they will appear in a tooltip +- Subgraphs are supported (in the majority of cases). Yay subgraphs! Seriously, they are _so_ much better than group nodes. ---- +There are a couple of features that have been removed: -# 6.3 Update for ComfyUI front end (version TBC) - subgraphs +- Group nodes are no longer supported, as they are deprecated in ComfyUI in favour of the new subgraphs, which are supported (in most configurations) +- The `Simple String` mechanism to provide an input to the regex of an `Anything Everywhere?` node is no longer supported + - Other UI mechanisms to address this need are under consideration -With the addition of subgraphs, group nodes are no longer supported in UE from 6.3 onwards. +## Upgrade considerations -Instead, UE 6.3 has the following support for subgraphs: +Other than the limitations noted, old workflows _should_ load and work out of the box, +with `Anything Everywhere3` and `Anything Everywhere?` nodes automatically converted to `Anything Everywhere` nodes with the appropriate restrictions applied. -- UE nodes can be used in the main graph and in subgraphs. -- UE nodes only broadcast within the graph or subgraph they are in. -- Subgraph nodes are just nodes. You can connect UE nodes to their outputs, and UE links will connect to their inputs. -- Within a subgraph you can connect from the input panel to a UE node. -- UE nodes within the subgraph will *not* broadcast to the output panel. -- When you convert a set of nodes to a subgraph, UE links will work as long as: - - the UE node (Control) and the node feeding it (Source) are both in the subgraph, or - - neither the Source nor Control are in the subgraph, or - - the Source is in the subgraph, and the Control is not, and no Target nodes are in the subgraph +However, there may be edge cases that don't work; if you have any problems, please [raise an issue](https://github.com/chrisgoringe/cg-use-everywhere/issues). +You will _not_ be able to use workflows saved using v7 with older versions of ComfyUI or older versions of UE. -## Subgraph creation +# Anything Everywhere -There are three nodes involved in every UE link: -- Source (the link sending the data), -- Control (the UE node connected to the source), -- Target (the node that is receiving the data as an input) +## Anything Everywhere -This is how those cases are treated: +The `Anything Everywhere` node takes one or more inputs (currently limited to one input of any data type) and sends the data to other nodes that need it. +When you connect an input, a new one automatically appears. -|Support|Source|Control|Target|| -|-|-|-|-|-| -|Yes|Graph|Graph|Graph|Nothing changes| -|Yes|Graph|Graph|Subgraph|The subgraph will have inputs for the data; in the subgraph the input panel is connected to the Target with a real link| -|No|Graph|Subgraph|Graph|Not supported| -|No*|Graph|Subgraph|Subgraph|Not supported| -|Yes|Subgraph|Graph|Graph|The subgraph will be connected to the Control| -|No|Subgraph|Graph|Subgraph|Not supported| -|Yes|Subgraph|Subgraph|Graph|The Source will be connected to the Control *and* the output panel in the subgraph, the output will be connected to the Target with a real link| -|Yes|Subgraph|Subgraph|Subgraph|All nodes will be connected in the subgraph as they were in the graph| +By default the data will be sent to any `input` of the same data type which does not have a connection. -No* indicates a case that does not work, but might get implemented. +`Anything Everywhere` does _not_ send to `widgets` by default, but if you right-click on the node that you want to receive the data you can specify which widgets should accept UE connections. -No indicates a case I'm unlikely ever to support +![uec](docs/connectable.png) ---- +You can also constrain where the data gets send through _restrictions_ applied to the `Anything Everywhere` node. +These restrictions can be accessed by double-clicking the body of the node, or through the right-click menu. -## Test workflow +![restrictions](docs/restrictions.png) -|This workflow uses all five nodes, and can be used to test (and understand!) the nodes. You wouldn't build it like this, it's just an example...|Here's an image with the workflow in| -|-|-| -|![screen](docs/test-workflow-screenshot.png)|![image](docs/test-workflow.png)| +The first three entries are [regex](https://regex101.com/) patterns. +The node will only send data to another node if the regex matches the receiving node title, the name of the input, or the name of a group the receiving node is in, respectively. -Or [the workflow as json](docs/test-workflow.json) +The Group and Colour restrictions will contrain the node to only send to nodes in (or not in) the same group, and of the same (or different) colour. -## Current known limitations +If you select multiple restrictions, all must be satisfied for the node to send. -There are some situations that UE nodes can't cope with at present. Here are some I know about, and possible workarounds. - -### Pythonssss Preset Text - -[pythonsssss](https://github.com/pythongosssss/ComfyUI-Custom-Scripts) custom nodes are great, but there are some limitations in using them with UE nodes. In particular, you can't feed the output of a Preset Text node directly into a UE node (see https://github.com/chrisgoringe/cg-use-everywhere/issues/154). - -### Group nodes - -UE nodes mostly work with group nodes. But there are a couple of important things to note: - -- when you create a group node the input names and node names can change. This might break UE? regex connections. - -## Latest updates - -6.3 June/July 2025 -- support for ComfyUI subgraphs - -6.1 (May 2025) -- Mostly some bug-fixes (#216, #217, #300) -- New option to show UE links differently without animation for better performance - -6.0 (April 2025) -- Very major rebuild to deal with latest version of Comfy - -## Installing - -Use Comfy Manager. If you really want to do it manually, just clone this repository in your custom_nodes directory. - -## Anything Everywhere (start here!) - -The `Anything Everywhere` node has a single input, initially labelled 'anything'. Connect anything to it (directly - not via a reroute), and the input name changes to match the input type. Disconnect and it goes back to 'anything'. - -When you run the prompt, any unconnected input, anywhere in the workflow, which matches that type, will act as if it were connected to the same input. - -To visualise what it's being connected to, right-click on the background canvas and select `Toggle UE Link Visibility`. - -## Anything Everywhere? - control matching with regex rules - -This node adds two widgets - title_regex and input_regex. It will only send to inputs which match. So in the example, title_regex is 'Preview' so the image is sent to the Preview Image node but not the Save Image node. Note that you can rename node and input titles, which can help! - -(From 4.6 you can also specify a group regex to only match inputs on nodes which are in groups that match the regex.) - -![regex](docs/regex.png) - -*The matches are regular expressions, not string matches.* Most simple strings will work (matching any part of the title or input name), but some characters have special meanings (including various sorts of brackets, ^, $, /, and . in particular) so just avoid them if you aren't regex-inclined. - -Using regex means you can use `^prompt` to match `prompt` at the beginning of the title only, to avoid matching `negative_prompt`. - -Regex 101 - `^` means 'the start', `$` means 'the end', `.` matches any single character, `.*` matches anything of any length (including zero). For more than that, visit [regex101](https://regex101.com/) (the flavour you want is ECMAScript, though that probably won't matter). - -### Can I make the regex an input instead of a widget? - -Sort of. - -Because the regex needs to be known before the workflow is submitted (in order to calculate the links), you can't pass a string into the `Anything Everywhere?` node and expect it to work. The *only* thing that is supported is if the input comes *directly* from a node which sets it with a string widget. The `Simple String` node that is included in this pack will work. - -|This works|This doesn't. And never will.| -|-|-| -|![Alt text](docs/image.png)|![no](docs/imagex.png)| +If any restrictions are applied, the `Anything Everywhere` node gets a green circle in the top left hand corner, and a tooltip if yuo hover the mouse over it. +The final line in the restrictions box is the Priority, which has an automatically calculated value which you can choose to override. +If two more more `Anything Everywhere` nodes match the same input, the higher priority node is used. If there is a tie, _no connection is made_. +When there is a tie, if you right-click on the canvas you will find an option to show which nodes are the problem. ## Seed Everywhere Seed Everywhere connects to any unconnected INT input with `seed` in the input name (seed, noise_seed, etc), and it has the control_after_generate feature. So if you convert the seed widgets to inputs you can use the same seed everywhere. -## Anything Everywhere3 - One node, three inputs. +Hopefully this node will soon be retired, but if it is, workflows using it will be automatically converted. -Really just three `Anything Everywhere` nodes packaged together. Designed for the outputs of Checkpoint Loader. +## Prompts Everywhere -![UE3](docs/UE3.png) - -## Prompts Everywhere - two strings or conditionings - -Prompt Everywhere has two inputs. They will be sent with regex matching rules of `(^prompt|^positive)` and `neg` respectively. These should match the various versions of names that get used for prompts and negative prompts or conditionings. +Prompt Everywhere has two inputs. They will be sent with regex matching rules of `(^prompt|^positive)` and `neg` respectively. These should match the various versions of names that get used for prompts and negative prompts or conditionings. The regexes can be edited, but additional inputs are not created. |strings|conditionings| |-|-| |![pe](docs/PE.png)|![pe](docs/conditioning.png) -# Primitives and COMBOs and the like +Hopefully this node will soon be retired, but if it is, workflows using it will be automatically converted. + +## Primitives and COMBOs and the like UE nodes don't work with primitives and COMBOs (the data type used for dropdown lists, which are also a type of primitive within Comfy). It's unlikely they ever will. -If you want to use UE to control sampler or sigma, you can do this with the built in `SamplerCustom` nodes: - -![sample and sigma](docs/sampler%20and%20sigma.png) - For more on this, see [this discussion](https://github.com/chrisgoringe/cg-use-everywhere/issues/69) +# Options + +In the main settings menu, you will find the Use Everywhere options: + +![options](docs/options.png) + +The top set, `Graphics`, modify the visual appearance only. + +The bottom set, `Options`, modify behaviour: + +- Block workflow validation. This prevents other nodes from complaining about the lack of connections, or creating them. If you turn this off, there may be unexpected consequences. +- Logging. Increase the logging level if you are asked to help debug. +- Check loops before submitting will attempt to check for loops in the workflow created by Use Everywhere links. Comfy is much better at handling this now, so I would suggest leaving it off. +- Connect to bypassed nodes. When off, Use Everywhere will not connect to a bypassed node, and will attempt to work out whether an input is connected when upstream nodes are bypassed. + +*I recommend turning `Connect to bypassed nodes` on; the default is off for backward compatibility.* + # Other features ## Third Party Integration @@ -205,131 +152,69 @@ If you want to share a workflow without UE nodes being required, or to save an A This can be done for a single node by right-clicking on it and selecting `Convert to real links`, or for all UE nodes in a workflow by right-clicking the background and selecting `Convert all UEs to real links`. -## Shift drag +--- -Shift click on an output node and drag then release to get an autocreate menu. This replaces the default behaviour (which gives you a search box), so you can disable it with the `Anything Everywhere replace search` setting. +# Roadmap -![auto](docs/auto.gif) +In the near future I hope to do the following: -## Group and color restriction - -UE nodes can be restricted to send only to nodes of the same color, or only to nodes that *aren't* the same color. - -They can also be restricted to send only to nodes in the same group (any group in common), or only to nodes that aren't in the same group. - -Right-click on the node and select `Group restrictions` or `Color restrictions`. UE nodes which are restricted (in either or both ways) have a green circle in the top-left corner. - -## Highway nodes - -Trung 0246's [Highway nodes](https://github.com/Trung0246/ComfyUI-0246) are a pretty cool way of piping data around. You can target them with an `Anything Everywhere?` node by using an `input_regex` which matches the unconnected input name with the '+', like this: -![highway](docs/highway.png) - -This is new, so please report any issues! - -## Loop checking - -By default workflows are checked for loops before they are submitted (because UE can introduce them, and a loop results in a bad python outcome). If a loop is detected you'll get a JavaScript warning showing you the node ids involved. However, especially if there are other custom nodes involved, it's possible that the check will miss a loop, or flag one that isn't real. - -If you get a warning and don't believe there is a loop (having checked the node ids listed!) you can turn loop checking off in the main settings menu. If something flagged as a loop runs fine, please [raise an issue](https://github.com/chrisgoringe/cg-use-everywhere/issues) and include the workflow in the report (save the json and zip it, because GitHub doesn't accept .json files). Likewise if a loop doesn't get caught. - -I've written code for the core Comfy backend to catch loops, maybe it'll be included - [PR for ComfyUI](https://github.com/comfyanonymous/ComfyUI/pull/1652) - or maybe they have another plan. - -## Priorities - -If there is more than one sending node that matches an input, the basic rules is that the more specific node wins. The order of priorities is: - -- `Anything Everywhere?` -- `Seed Everywhere` and `Prompts Everywhere` -- `Anything Everywhere` -- `Anything Everywhere3` - -For nodes of the same time, those with colour restrictions and group restriction are prioritised (colour+group > colour > group > none). - -If two nodes with the same priority both match *neither will connect* - better to fail fast than have an ambiguous outcome. If there are ambiguous matches you can display them using `Show UE broadcast clashes` (right-click on background - the option only appears if there are clashes). - -## See what is sent - -The nodes which only have one output can also gain a text box showing exactly what passed through the node. You need to turn this on if you want it - it's in the main settings, 'Anything Everywhere node details'. - -## Logging/Debugging - -The JavaScript console (press f12 in some browsers) has logging information about what is being connected. You can change the level of detail by finding the file `[comfy_install]/custom_nodes/cg-use-everywhere/js/use_everywhre_utilities.js` and near the top finding this bit: -```javascript - static ERROR = 0; // actual errors - static PROBLEM = 1; // things that stop the workflow working - static INFORMATION = 2; // record of good things - static DETAIL = 3; // details - - static LEVEL = Logger.PROBLEM; - static TRACE = false; // most of the method calls -``` -Change the `LEVEL` to `Logger.INFORMATION` for more, or `Logger.DETAIL` for even more; set `TRACE` to `true` for some other debugging information. - -If you have a problem, pressing f12 to see the JavaScript console can often help. The following steps are really helpful in making a good bug report: - -- update to the latest version -- restart ComfyUI -- clear the canvas -- close the browser -- open a new Comfy window (with no workflow), look in console (f12) to see if there were any errors as ComfyUI started up -- load your workflow, and look again -- run, and look again - -The other thing worth trying is clearing out all the custom node javascript from where it gets copied when ComfyUI starts: - -- stop Comfy -- go to [comfy root]/web/extensions (*not* under custom_nodes) -- remove everything there EXCEPT for `core`. Leave `core` (it's ComfyUI stuff) -- restart Comfy (all custom nodes will reinstall their javascript at startup) - -If you find a bug, please [raise an issue](https://github.com/chrisgoringe/cg-use-everywhere/issues) - if you can include the workflow, that's a huge help (you'll need to save it as .txt, or zip the .json file, because GitHub doesn't accept .json). - -## Cautions - -Bypassing and disabling nodes works, but with one catch. If you have a UE nodes that does matching (`Anything Everywhere?` and `Prompt Everywhere`) and you bypass the node it matches to, the link won't be made. So - -|If you use a ? node to send to a node...|...and bypass the recipient, it doesn't get connected | -|-|-| -|![1](docs/bypass_catch1.png)|![2](docs/bypass_catch2.png)| - -This is unlikely to be fixed, but should be fairly easy to avoid! +- Add a mechanism to support multiple inputs of the same type + - Once this is done, `Prompts Everywhere` will be retired +- Add a mechanism to retire `Seed Everywhere` (or auto convert to an integer node connected to a `Anything Everywhere` node) +- Add a clean way to localise for non-English language use +- Enable individual inputs to reject connections +- Negative regexes ('must not match') +- Possibly add a global variable system (so multiple modes can be changed with a single modification) +Feel free to [make suggestions](https://github.com/chrisgoringe/cg-use-everywhere/issues) --- -# Some older information -# Update for ComfyUI front end 1.16 and above - -ComfyUI front end 1.16 made a major change to the way that inputs and widgets work, which had a significant impact on the UE nodes. - -A widget is no longer converted to an input in order to connect to it; instead, you just connect an output to it, and it converts. - -This is quite cool - except that it meant that there was no way for UE to tell if a widget was supposed to be an empty input for UE to feed. - -So there is a new mechanism for this. Here's a picture of a node that I have right-clicked: - -![116](docs/116.png) - -Things to notice: - -- There is a new menu `UE Connectable Widgets` which lists all the widgets. Those marked as connectable have a green bar to the left of the name. - - Select a widget to toggle its value -- Next to the widget, where an input would be, the connectable widgets have a graphical indication of their state. - - The smaller dark circle (next to steps) indicate a connectable node which is not connected (widget value will be used) - - The light circle (next to cfg) and greying out the widget indicates that a UE node will provide the value - - No icon (all the other widgets) indicates that they are not UE connectable -- Other inputs still have the indications of normal connection or UE connection (here model is a UE connection) - -You'll probably find that turning the `showlinks` option on helps, and the `highlight` option is required for those widget indicators which help a lot. - -![options116](docs/options116.png) - -Hopefully old workflows will be automatically converted when you load them. Hopefully. +# More detailed notes on a few things ## Naming widgets -The `Prompts Everywhere`, `Seed Everywhere`, and `Anything Everywhere?` all make use of the name of an input. On some occasions this might mean you want to rename an input. +The restrictions make use of the name of an input. On some occasions this might mean you want to rename an input. For an input that can't be a widget, that's trivial - right click on the input dot and select `Rename Slot`. The name will be updated, and the new name displayed next to the dot. -If an input *can* be a widget, you can rename it in the same way, but the new name *does not get displayed*. The name has changed, and the UE nodes will use the new name, but the old name is still shown. I consider this to be a bug in the Comfy front-end, and have raised an issue [here](https://github.com/Comfy-Org/ComfyUI_frontend/issues/3654). Unfortunately it appears that Comfy UI is going to remove the ability to rename a widget entirely, so best to avoid using widget input names if at all possible. +If an input *can* be a widget, you cannot rename it. This is a decision taken by the Comfy team (see [here](https://github.com/Comfy-Org/ComfyUI_frontend/issues/3654)). + +## Subgraph creation + +There are three nodes involved in every UE link: +- Source (the link sending the data), +- Control (the UE node connected to the source), +- Target (the node that is receiving the data as an input) + +This is how those cases are treated: + +|Support|Source|Control|Target|| +|-|-|-|-|-| +|Yes|Graph|Graph|Graph|Nothing changes| +|Yes|Graph|Graph|Subgraph|The subgraph will have inputs for the data; in the subgraph the input panel is connected to the Target with a real link| +|No|Graph|Subgraph|Graph|Not supported| +|No*|Graph|Subgraph|Subgraph|Not supported| +|Yes|Subgraph|Graph|Graph|The subgraph will be connected to the Control| +|No|Subgraph|Graph|Subgraph|Not supported| +|Yes|Subgraph|Subgraph|Graph|The Source will be connected to the Control *and* the output panel in the subgraph, the output will be connected to the Target with a real link| +|Yes|Subgraph|Subgraph|Subgraph|All nodes will be connected in the subgraph as they were in the graph| + +No* indicates a case that does not work, but might get implemented. + +No indicates a case I'm unlikely ever to support + +## Reporting a bug well + +If you are having problems, the better information you give me, the more chance I can fix it! + +Read the list below and include anything that seems relevant. If you can't get the information, that's ok, it just makes it less likely I'll be able to work out what's going on! + +- **describe what you did, what you expected, and what happened** +- if you have a simple workflow that recreates the problem, that's a huge help +- Comfy version information (in Settings - About, it looks like this:) +![versions](https://github.com/user-attachments/assets/a16812a3-94c9-4eb7-8e0e-0d8b5319cd8f) +- include what all your settings are - in the Comfy settings select `AE` in the left menu +- check your version of the node (in the settings from version 6.0.4, before that look in the `cg-use-everywhere` folder in the file `__init__.py` +- press f12 and see if there are any errors in the javascript console that look like they might be relevant +- look at the server (python) console log and see if there are any errors there \ No newline at end of file diff --git a/docs/connectable.png b/docs/connectable.png new file mode 100644 index 0000000000000000000000000000000000000000..3e56444df88c9d118ca8269af64f376b1f4b0448 GIT binary patch literal 13336 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 literal 0 HcmV?d00001 diff --git a/docs/kSampler.png b/docs/kSampler.png new file mode 100644 index 0000000000000000000000000000000000000000..03971377e5a7b13cfaee3a04b54a2a2882265009 GIT binary patch literal 15380 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 Lmhx96Gr#`_8MzT( literal 0 HcmV?d00001 diff --git a/docs/options.png b/docs/options.png new file mode 100644 index 0000000000000000000000000000000000000000..81ffc523aeef6f6b8edaefa0b66f745f0646e14a GIT binary patch literal 46427 zcmce;cRbeb-#30DGO~$eWJfYe_6pf6gv=1xd+*AgMWSp%Dyy zu0G%Ey1&;Szw7?pkL&h$^oW!5eZI$WypHF39T6I8@`U&__$U;LP*Fiv6NSP=!#^!t z9C*cM1brI*!*JDy^cba#t|HvV#CjPP71eOQ7ED&+3VU~#!I9AdfKyTlE*ulSf4+fdB}U=A=85^7}tn0NpoJ3uQBHF#SBFD?5 zvr~9w`(|Rq#&cdkK+;@m@I7COhIZcX{o>`w&v=}urskSWch3E^syqeT^ z0s=n>KXbLj2|XQ?vpVSRY&79IKI=@h?z*xeymPU!Y0HCz6uutou0K8vQxfTFiFBOhbq@+adB}U2`XMpRJwcj&73R6p~sbbv3NQ1 z@@9>vu(p>+cpTY~_n`5)$@i|=21Kr{Ij!#))p(e1&MB)l?_<^f0o47?;{U|bd*ai;t(#>yfIi0C8exP5U~HPOs^r};fwD5t@90(K+Y3~I|L-oSurp==WqlQ?pAwaEl^7e2UTZ(WsCp&onxgU^ZQl7*bJcYUR# zPystNPdIg&8!vxzMxE<6n?YP9m^0Kn0P(O!C zrzYo)LkOsX(oc=9a|B6M-gfdMgQJ&vtv^H;p@ImgxRLkxt@@73tEv*BE-*1QT5pc_ zxON|%xoY|2v=GCbXqz+h{vFuf~U6Rw#ryYZ;E+qtn$9_+hIF+b7I*2 zboBF*5?=4!JfHQJakJGie>5*9CgvKPj;F!w?*sDprIPKzg_H`2iHLlkQO?CG_1oKN zW(k0COrMyw`Si`s)9G=Q#X(1>S6Ng-T|Z_1bsDi{GfKH+ivvedLS@;HnyZ!XiZiNz zIH1{LxM~?a?U^NDWQ=o_TKe3hTEp4gr1I*c-b<~|PwYpIWw@#yuks*6x~KE!lQygm z9Xuz-nzr>YIkk*x&0}h6qw@se(CzK*QtH`DHk|VE@ch}?dSj1fc)k(I85`5v38YLD z6j^pwGq8OVgPAI}@#UM>N>zs9uMeK7f)ZR@DyijfC1)QXL&7T4kPQuYG&1AZ%|3%C zc3U8>_Q#0hDy96|z3%i7cs{?&LJIjrL6CW1>##*=V-(Nv*$jUV{5g)e;hG(uA^10` zonT>M;RW|m$-#-%(INQgRYAc=lau|Trsu!wp#xD;gqTmfcMjieO@T=(xPNtB%sds2 z;{mnD`+s4K6iL3?dP*pj z9H!aQtWXo-pPTdomw0ew=A+{XR6$DlD$nKb%RS+ezkfH{yc{lud`CK3pWKFwKT>Z- zHZ<~(WR2&_-~1`s*<;TC!!`Q**Cr5fMPo)$-snQRxSQ7n%Hf7bGCPHt$Be4>>5B7-@lGt?9VW5LcF3%T1pqbzL8 z);~7d8lGdeerRu|9)skJ_hRen0Yk%ljnJXFJa8TpNgAjRIMX6+vULP z^z`pPUBZ6(+4uBTlG;y(!3G>uG%o$ao26H?)B`B4Pm#?;{roW^DL+#n{?&>f&BpE^ zKOOT)7KXYAm)_ci-fvV);{J@$pIA~wJ_=U;;qY-Hpq$}zd=kFH_d*0uT6e3YTLe1_dxKY<{qn^AdP8-=SPRt2g`EIT!|*x z=#7e=0mIWqwTf>I=fpRhw!R!t4-9ig)J(d>spj#&(JQ5?stS9YSf+MZs$b}}Jv^H^ zDF2zNin*Yl=0)!1;Ns%qT16&7!PCRT=WpJ+#o_2;-5#H-QJ_7!dSo<~LLC#KppeW& zOf0MbNl%r03~I!V5pdiREV~b-LP1B*-0{QFOA4;dugNgo8Ci( z)$utOzgH-dZMbEm+D!M`5T^T~t@R3ZmWE14OWTpV$DZzmZ{l||+;{bw*|b6+O3HhW zvi+^JWL90-7LIY?(Jk#;w;Jy%J#6P^IM`XeZfc70Rg3BIBix` zd)?kwi~#PsUtMkMwOpoqr<9-Zs_W(K>`xftjyobnT6!KIAGA!aHom=o|33GQ@HKaC zx9Xm?ty@eiEEF>{x*CRt!F_$+lYCjT)Ol*EWP`rHR3wP#56>g#8yp;rNpz6YkK_CP zaAi~!Bdq&nc{z@$>BQtdZQS`f+LW&=k$&g)gvrY<+mWM)=tSn+zMZC8bgAX`5tX>^ z=pSsmFxL}@@xfa3G|>{(h^wpXqsOKAj~|=gG%$D=9NZqXBm&bmyGC8*`?uthxqIlf zplik)AMQ1na1#68{iMF5Z1YR~_&{5+=91bqG>p>l$jApDN#bt5)ATJI(Rtmkp!7Vn zt*vx-(PU?`uwqO~SC>6LJ}>9>YjO*VBvXF2$?23;orKIc=1xrnKJ!{Po5mWZ+`x$dWRmBa@+J$d3J?z zuy}APgeo9}oIMs`mVw#m4@yHV>+Qto@~NBXPVB>3mgJGI;2FC`201jQ1aHxAfieUfD2T;-?o<&<;7 z!eX&$SL$h!vu8tHXS*7^9Z$t4|_jG)=-^ zDFFX|dh>|$v(!`>Uh2umPxuL`c#MOjvq&7#!QF4+4zhjoP?9PobogKHKqMyJj}qCD?o% z%PP{@*;%4rXch>SOuz7KVPPRI0l{fhb91v)F20oWy6&XNw4K0twRADIV+VeK;nHzA z@{(ue4Pjhr7zbc0Dt^n-v4y)B3%B@-6&x#W3Z?5qcK2z=M-o5uOz&X0ONKj-blxRl-R9-nt zP0vnDsC1M|j(*gN^Y%@LEWLQUpU!}Y-B@Z2OnX#NfmXuW;Ra8m)f2TuEdvAQJ)=w= z+f2=ZJ7xN;GqfVQi^0ff>VYAkx)~IPfiviClAjhto;ew{NVZ5{gJc8m#Ydp|#w+)q}66`-@@JWrK1>C7s}I`-MIh zyP-9Lm;L_gQ7p56E*y{~>)<0NG5zI>ijv4`F1m~3HcKmWBiYR50$lirtnr2DX-kX3 zrgU*f4Dp<$qaK6Ci1bsc@OV{J&YTJL8nRp7MR#0X+uFKu=gx)q-*3Kr^JcEBe1vk3 z9NXJWUr#Sc*Tnx^VWD8josVXA!*4rhVw3{g9Xa=HOFGPhS}m{SM$B@+xDfXpYs`{4 z&Fb&5G!%RF9-5SlEHdW&yHXg8>qpq?-Y$OWn~cBl#@4eoQL@j1!9A|(Rp-|!73)5h(I94Xxev!P_}#$Km*Lg-gXx{L|D;s=1l2<$1TPkeABsCR`j@3 zVVbB#G-$|kNB0r15+MU$vp_>rGa8=f`-%!?R*SPJp~SY$-172I7FUuVmwvXtt#Ip> zh5G3GMr&bpJjFZ>`d*Wjr-Iaz7(=JUltu?j@wQf5T5iNwuB|)}g;^{Mi&=%BtxGy> z2D?9wbPk@hic0iuO^rEByX+bnSJenH{);(g_dd(epKp7s7E#N);BckWld}nGa@MyH zMPtt8j`oDs%$`%G{jV4zOIekx^Jkp>Oy5^lDx~(7R8^fjt4z*$=@N|dI|3;O;y3O% zI1nL|jQMM063)zQAW>8<-nnzHAEnjZz9O9#f2F3|=Wq;nmgky#dZjT`c*64m6F2c9 zUvKa%c`CMh$92mD#;JPE>v@q_S ze$|M3^ho1nKh5-PhMa*xO2={rtP*d>`ueIWJ(i#EGFijf$eCaH)#Z;eGD<`JeD9~H zN8Q_7y`wm^+HkaN^kIV5fJ-%gUMOER1p~wbFxEIyj?b7?gcYP-5UbBC~>w>E9S3_ppsACj`JXg44 z8BSgdPRVrN8#G|pD`Ov5yM3F3O}$?C%Fzos@>B1Iqvh%6CD`fc$|Yv|0eWVO>KeGx zWm_sX+;-=cI~5~m;A+&6pGlj5rvB9Br$V-IcV7|CgsGa`;_e%1!yn>@m=_Vinv5Ru zK+rxhvC(8j8p5 zDbxu}bf%sbDxb~O6l?2VlP3|Kgt7dJ?dYY+7VVsF*CHV!ThI=;0n4GM;7H7()jPw7 z+#io*d9bpg1Q}VlDI-ml+}@XEzAMDWXJCjv6Cu4@7e#t9YM1XqgSz;=hIET6*1S2K z6wo|ZAyR&_Yo3of$lL8-{SBV-3>GF&H?-u&9iu{|F=9S>hu#p5{Y_(fj8wBUe)`PM zTG_t30q{Cg}S6^NB$Zdz_#GDgi{18l(&>s#n%~3N-l*o-!x-m$!M^Lh&O;sDF z99Gd}!%dmsg`$sXyZVO}#;*gi@7dvgAYh4u*);X@Jjt1mZeH(-fKpHQ?7A6|=e9~; zHTKUH1*~H@7`lqLi2M=!vN1}V99Fq&s?IHWh*s+^`y8dSpexEz2$BwOyL8b(pDZrD z+Rsz5Hvhjc((s7iWc4wX+22zQ`5*cd1ycH=ijIc}JCOCfn%hfk<9LC;nIaB(~<)4-Sc;-)!>@9A5V58!*11rS*{79IkF0zfgdBex88ORGJnO z3oA?G;@9Ef2zWQ5SN7z{!%rM02s$vhYNL%SE!{XhVeqP`=q#XG6db*}p8_BIS9c)E zyLsCv`_+GysoQDB^ON{5kbz*#3CE^=@U-vMwhW+r3RM?HgM6)`8`&o^z@9x zGWp+38-pWoi5X%(e2_v(xw>Apu_>CIY#{&~fxdxLn3qQb8XHKta|1UoQtTe@Ff`Te z(A?DCWIf&=tb@e`?LaLmfDdX}upD`C!?8O9KE7H<4NRHQD@wTx**WH^pRHFK0?$rP zo{3L3R8-`XINGcf6T1la)WRZnZHIx;(d7!)1*x>l#F#E4#Os(m-X3~M#@J| zaxhf2?845ikuuLnhLc^6p=G0&1y!7mm?)@VZ*IQ>7=06p#+%yV-00|AU+3Kb*o$S( zII=gEVGP~W@i@n(MMEEWC|~Kdj`=+0^4CS?QlBl!tQRl56pASK_D^#Hhk{D?Gqxsl zW>!AncxG8J3W(UwXwrjji35s*ofGWk^vE2Z#Y zyl1RZWf~~27`pAs^t502ph+O5uyEL;1Xo=V{?VWArb-5O*)xp~ z41@wJ@lFjs9}|&$br$1EVq*52C6|VzhS6wxahmn@gyt!ZOEuBV@-8j5W?Kt^50rAH zp*AxrCeJJ~ytMvi`C)L-vu%6PgHcivy}{$ya1J00*KM>>U%ydPy}$3*o*u^X+`Q*& zN2|pkkh5AjINDv74=r znHfY!SrQYC8mUYuvg_-O&o)G7XY=rRED6oIO~n8Htm}m1~~TSzJl0#vlhZYP#U_PgvE8+_*`cP<3>X42L=Z2Ov++CQDOzA8~)=5t#bwn>|Uu4le{0!N}0mnl;^7saRWUii;fa zEaTQ4OmbSXe0Muq*qB-0o)>;Su{CIN!`1cO?r>O0NYsdnd#4b+uF>c<5EFhbzJ9Xl zx`Y+B!Mdac&}jWCS(nVsp4)tEv^7)rSV>|hqImEhJ>fSJ3oMc#_dJ*=I{Na=FW=wE z^O&wXV`__~VIX8n_}G8TJr)}f7@wsIg|Y84v6YR@llL)n=dpA6@E8KTzH+pytEha6 zXN{ZuaNkoy;}N?xGa&w9Cgz+>P3-UnUrnmjE{(yC!9IlzeBD$fTYxJhl$6-ORo+?V zZtKfUB|oWKYb-|Q#n#rK)42atQsBQ@`4UYp6tw_1PHfI=O}cFS5)XRJEI*kON5sg& zqOCF+?7n%cacWi&v%URW)}XxE$+5WCVxgdhj>qkIEBldh%8bC{bDEkftw%fEpQ>E% zP0R{5S_jrtiG=}9YFmF$+zx-9mTcVHxPcI27Z)N^fMQ=V8gRpi1H<3G)ogBQVFs91d$jG~d@=)9 z+ZTR7$sl>Ipun}omDd|h5zW95H87x43zxdKH#<7(ak#4&7u#v{OvCb*J`juA{e=#% z*|a*;lGpTOi@AjbH*dA>3?6Cy?|!>`F;dp^H=ZOK$$^9+d*jB`yKc3gO~k}zFp5P) z?7a47l7RQ#cq=}!j}NoMw%^>`oX@(q4vs=*zP^qZ9!V2s-YRijK>;^AJNu@_qp#wr3_AGvVX~?5XBHM3MRz9iku%HhPc=tOsVRbPlmn+i zAuBuAve@T*K6X{PawP8U+m1HSz7mx};7LvX{D}3kxFJ;7m7Zk$=G@{T!7@mdRu1JC zpmv*?vE5l6GeRD1^HxYmNW@?~`|Qw7n*}l8H&bBEOsgW=(YdRZ*_FGO@*D0kFfg#N zvE_ig1zHEIJuLi!23A%=etz{F8qXw-B%-N%c9ipqz%59XJV_K2yMx7DI9%t;4m7N_ z?eVeRJ4^9$yWvpaw~Wl@i7!lmk7~a{rHXm0L?=Fdnq5#p3al2G7ZB1Qwfu+140xN- z^`BZsAAbIf4=!&^q}#rTG?M(<_3L*Z znP@=gZQUodP_50(%y8W7fE6+^Z3_8pnmbGWZxTpqm-Ve%tg-Y*dgXb?1%-vAJLkn` zi*s_Y>g($#`_w?r_+t5PWMfuu{}wRng#}Jox!4f>LT7J7C|6m9#rUC8qJ?A!2tg;JjOss#2Nm zNeD;OfnS}&W|;i$He^70Z$Pb=>Xuv?9&V6=@(#sb?Bp^ZQN1L&{KM-N-l& zz#-HUh7llfG|MWam)rv7)lNX>H680GLuVEJt$hWUY56adDoa68q8b#1LkrmLhP2`- z%7=9>i)A(P39;!Pfq0Zkc1abD+*UJMKb z#Yy5Y+3$B0P(E_kQl8V?)Ys?Sj)sl@IJFPG_7s~Gm33s^Wfk>CReka>i)2uoP6sCa_@<}raKBj zFogq$g`-uI^H*QDMA&7Y$AK2mLctXEp!P`Nkoe@#XJh5J_p?~2C_R{di*|%>8s{Dip zN^30_`ec)GegWoyd)77I+P}Z=@=K-un-Ba&1P}V-gtZLFKdHhAaqv{sEM$)Q2fsb6 zuQV{0&>T-XrZ=!%Bt*0!wb@IezUJyoi-#c+aE(o2o(+}48ia&fFpiK4{q*c5knVcE zY7iHCP=E#o1&(-^IJ>-Djvmu6)!bCuP))%tlBfInfmCXamHs0u8Imb@pR- zw|eiuu(doeiluFCMKKW{F)}i?oa{;bFP4KD=MZz2#jiEu!>DLTI`x;gSTj%B2w1PM zX+5u1WMSa}G_01h$j8U07B?72FOG>y7IrPy)4>XJIX&@7>O%D9&eNdJ*8~Nl6qA@i z%pD$18Kv(A1LCG}Knv(kRiZfRRR+cvc^=0x?Z}(7>KGVIT`A~j(+dGr2V>K309|cW zD4>^m-y$=RI@-lXiRHmU5^`l5pMSm{ z{OBbCtH6U5|M$dRFX~|?f%s1W)s-*sn5n&DicT`%)JR1`@WO%(U!KnE^`8%k!J{C^ z@Qc6n3G82o+yR~WpqZ8^Dwc+w);mw>F6PS`Q@aa3`xRBThMB`hDq@tpJ9*FEo={p^ z`f;il;hf^r-rlp)1=>pSXR@9E3{2IU3Q-Q7tvF$+xS91 zPHkCSXnmTJ@(?CAq8`1e6QCgn0}6X@FQduK+C@YFo()(hcWoCWv+P(wPp7?3WiuN_ z%&?-ZJI2s>E%mvGx>!+5R0A_d>E{m7n7ll>_RD zVXJD=jTGx5yw7?`NVBL;LifKDqlTco#FKIC5lkITEUX&reoAl@jbWqR-DL>1IcaAVloW@>+6?rp|A zc>eq~Nd2v;!o+tzJ~;h2y`F@QPQZD^*3@8QmWQn38elF&w%#2XAHzoV4Gx<3zTilf z5XUBGrvVP4dc{5C_3~h!;SE6J?LIl#*)76-wl+nLcf#et{{wjpETmHj?Bk2?Yo~-k zN}eDN+$CQ3f7qUo4=b%geIh?hPaxe+$A`ke_Iqbbt6cUsIlv4%+dcS?P*_g3CtSB$ z{|vFC^zBP_JB!fsgrXvLyfg`Xo-0_B6p=1qz#()mAfR5zZ&!w2&>&OeB0_cFmmOgN z7FKXcMbER(WYirR7|gU@1Fs+^MwME?jvBq84&$XUg1nW*KiFDcJ^fJIu=uq<4g3n$ z0bdX+ll1$7(0z2W?$09sR+)BU995%xpw*E%61N@hqGO2HAju4iHMv2 zJDsxb?v%%~fySrr&bIdNoxWf#>Az3W*x2~!>A;caWxrpI?o18!*l5?K&$=dQP2f(j zu(C2=bEjuhNe=(2LH8*x?gk7uzgbab-g{kGR*sIXCdY3HZrm{Wta}~CONX1gd*k3B zaX`Shitygn;3(^aO__f0U>fi;zr*#f5=P~E&+oh|>u6F-ttW{L4-M_v<9OhU+IBp0@9dOm2Q?%rR~tr0qsj}q@iZZ*7|Fb*OpQ(QQRG_uf`VYpal)8$ z()w&|WAmz~uMZWIx4QEaG_g^Z-!Z$|hoBBBC|pG3A=L_PBcsc3D%Z0#c>jj+g5lR1 z8oZ5-a-xaDKkPt!DJ#?M8S*mvA@Gkv1+vuceyo&&f>lGl7yU&L)dAjp9Xlp&Cp`6! zpr^rkl&NzXJZwrJ_y{I@NMBGfvOKr6Bx^7t`SrUE)ZH^Fom(nSf5U$`%|tbIzMKmw z9~~-keEW+AR~4C7H$yZKxlQ&(rM04%PyOppMr5lT|721ApDBO;`XJ5Vu*GHc1pq$~ z()c3jCMGvtgZn-C9PXL8hmKOb6cSC-qx&sm{Sn(w7p;mouFK5dtK4rnUFp31w)Q+q zDyOGSM(wXUxwQsL>Cm1n>Eqp!+WEYf++M^Ez4jE$c2M->Id4Ho@Y?Tba_wc0x{qS>&7+dOiffl(l z)E@5*)h&C6gOT3xMeX9a=KZbP5U*=o-ddd>S8xno-re2JeDh^1N<=W~KXN8&CvmW( zE)bu5T~`R03=H*Sska(u^D7G^hXhHZM-C}`4uFv%2mVHgm~cu4p11FG|Jstm(h)Lt zl~}jCHqJDyFuwBA!?7tKPIvD)%HFz_TWj6+BibHB!+%mF^RX6Ja!tWJ_fB>&uh?+c zzjZ5OX(~Z{@u{fgpU}|c2e>!8vl-(rb@GAOvw~{4q z?OZ54aTY#LoV35WDrPwCa0NripeXg!tG>J>%t>5xOV@?s#({vMS^7#s2hHA>FJ*w~ z{-!t-zazqwQ8gx#dr3*bO5h-bwRR0MfRW6<04$SIUL*RgP%SSD?Cx`}f4410p^(r< z-@w2HfWsg=n@O7b+LYm_OYHIg(Ve;&$K}8mP4}AQh^CzuKuJ` z?honiiUn`z85t3pn6LuY0PB={J0T&1N;jjlrdvTM@4myxs5i;Lh(Qhe!7oLI>n5|h zW2eP4{1p{TM;80;Dm5W8*m3M4Wl_TC&q}g#a*-XP0l&}uiU2}y+qxx}wF5?h ziZU~@dj8QrAo}D*USdC@Lo4Qm0tM~=J#S)(N?300C) zUr&!1?f^Sp7uQF7jtxf@6{&IQl~9A6GP%b`O~z~1tl&%sK!JooQt{2+&WpH5{LeZq z5xwX?B;)#_R=B;)aa=NLU15mm*doEfv17iol4fOJ#>B}<#IvAp`RWnK)18C)k2U7u zIExg5%9G<^M2tcp4WfGe4Z_H~pxsK1Ym5Ci?w(9c?74f!0KzvtIj&P1EO^wn@;5aD z64}S!xP~7I>7YPoBm}n5)+x@lG6MJsM)sGP@nrVFq*VPvIn7>vur=0q^)m$QaUk-P z1&Rqz?b@Y$S40y33xAGJ$RSqK)59m^TTXJY(-0FuPKbb{nIscw@L}^8RfUWvjOd}X z=$iEoehBQ-^Y;3nvSLC?y8lTa89g{(U14_qL2@$nOKpsJdm!0& zzU9q60)#z1ZT;2iffGP@XMRaYu_2rh6xJWHot6o2rl#A?5p|+c=wW4H{XU>kY@gU$ z7Y-}FTJo|e#GXSTA%#MNz$q8)ek&DO*(lMwUGX+HuGv_ZU>o(<&Y*1B~I z@7?g3L?u??lRAGntYLwDA!6hf)4}I8_vpjwE-cJ|nDs7be&=Un+nos#>8a!OMSQvt zxB0D0ZAJYPVNr{2-zj`K$2B>*a^IMNW1G~=#os%-c#&FM{cNy%jpz=dhy2N)h)aaQ z!j2;Ow;aoeY(3b}0*+mBNF1UYG94c+-?i6Zp@77qJOCE*v9UP00MSK1l6PnkI8{_W za}f#~K|7oAa90=~56Fv(Xx8^Z3ZH11gl1lo4>lYju2qxQs z!t%5kPW*3>rKH3O#&Y)i_u6)j4i2IHHi=wQZR@NGf0!nc@lYIom|1Z|*H(TYLi{JG zqqdxzn+p`#333f60rClS&Xuw`#NpP zva70Y)1Teymv{mLTUea&F?(xS*|qrbgDWmCBnRHy=DD43t~tjU@lNl#k80k;qdP_5 zdg;8TOcA`714FOYpctpx-ph%8--dzHKh5OKPns*wdYj#E$j+7C>oyQ_o6Ce$thbB* zXpzV2ScFU%ky6)AC}G3e?)-V^;Se-q8b571-ACuSoF1*Rt&2<)c9z?>7g>1xw>`Dr zArVCgq2;^dfAg=VaXzbb?gy!o65@-zdE@S&?7M&Ekv+k_2=U5yBYRigeUXN_85)-x zg#+Qa*Wn<)#XX*`YDgBE@2*XtOWG0^7cEKBTyX+^M03v<&;S&lk%%eO0$R_HkH7B+Q^CVz_M?$6sJ8siGa2a$ zb~X>I7p7vJ4$*JVwZ>n#e`wia!~tbzP@{L=Egqe;Vy?S+Xz!UY{-Z4}m**cLAQ{j- z?X|%tZ88t9aC+p4O_$#15`7Wj2g2i*U;2PBC{ET5fr*2^l~fxpK#f#`+S+f3HDagy za<8jRkF}f!n6`?FN*=%LjhKYmIbjMSaK~WEo-;M9-4z9V0D>(pEF&V^$3N!*5>fsY`BPZGRstgm7I;UuJHUoa@o#JxhVt)p{h zew-0((AzXhk_llrH!==i{&R1{e2kmlf#w@6IOly=@=2)K`B=R1jqV2Aob?oMQMv=W z(f#x7U{Hu90XEYstpsYCAOEmZQJg3ynOYld9kVFcd|8l4Xv0xda?kf1)k^2DNy-&jlya{NZQdgb%UM%nP`ak(I zLco(ZK;L$Aa|`$XtHzucv}6XIA3QTkIIQ#d;G5gT?}nGQy#RBfelAc2CWYa!S{X8Z zdLhO}ykiYvlX&52@fkEhR%rb97OL(uWiTh0Xv9qGcgE_iB7tw}Jpb=xTF%Ue*Yc)> znkzo!rK&VPTD+e#)zt` z)68fXgS?>bLdL831w-`jQ}Ce$qM1DsNB4Ng;!ZD`YMSujfLAW+miKDraW9^8`Y!25 zb6!plw$1jqYOZ|Yo$cp2)8nsXpa*ydmH zo;JzS__436K#9*VN7j31bwR3W<{K)Alv%E=MtI^+-^yq|a!kbzlSg5v3)ht}UZKaX zLr!+Lb*mTy1^m_i$$v>z z9AtF82!>&S!YM-bDZcw$?f^>gLSWq;?6=}vw_R<1ko;S zt^Y|xc$+Wu6SOYP5)pd~s{&R0!!0BDIN}&hhd1JrAy?LFoJwrrTgS2zsl~Lau-n>a zQ)bp0yNtGUY5LC%1NUq93}!g-I)7WH*Iu47b`oT{Q`D7ZDEEo8844xa3N+ir!z~vR zoGCq#`qRPy{8eZ{DfV*{cSv(C(;mB{l373YX(aciXjb%NpXvAT%^nE~oZDqoM|wKY zLJ_Bf{!_aHju=zMpOimqPGu}}4*(}GbbCG$i2&pc(MiA_7f=^Ki>u$wCV}28o}yJ? zpLI{ugr0KZe(op^KVXfH4_Lp!xKcM5{+RhFZC@xh64PnqxY(qcb# z++aAdYLPr%Cq9L3-7+)Ny09=W4aZ<%QF+`9p$bft$BLiK;g6=q#+Gj70KY~b+U~@u za`8Q}ndzLLbHhBa&U`Wy=X;ct(7rPjCV9wLe_V|Tp9SrGYwN9H&?_m{9$xFjb+2n0 zaS(5hL!ccNM`xPHNem4dZ+|VUstGY5VT^N-LV0`l9IWrNZmM1`sdb5McpV)l0r1J< z$2Fcid!j`(#S)Fj1c5dFM}bYHb|7C*fIzB}YBjg98VYe!H4uc%8?!Uoo3N0=nsF3R zAhz`Qoa87^!86IdRV~)#q92>2-V+QxfXXH%E5Tl87Vu#D3%QX*7_3=yTaVE#7{i1& z0EOTEldWci2sFf|;_JZ&aRyR?ybN(@L~;NN=S3WI>oHs%GsI8QeQaWYeRqcS4EdXd z+!YesDXHX%_5TYg8!g|NcBfYuvMIsLLM+1U>~|1i4(m**VJGr|L6M~sxM3y(P!F8P z7710=7$jCZKh*}Zla_iR7=CAWI_(6eVBS3d9SD|aB<>)7ZDen^BJcp)*lS`OEFo+p zU*qjs{;g9Rl4OAQzuG)(N!Ag?SIX6lhW;Q}Mfv&tv^o+YMFZAFR7N6%(hygooInr@ zU;^tl-?LxD3maVA$M`{*;Qlxb6@&3*#>LA^!kLHk-Nxoa4<((n;tgM zti(i0Kys7!3ct-mre2e5QQ`z4Jj379@Mg3c$5TthJ!dt4F02lc`}-fKZ#(x5o(Kk? z$Dc_3^^5+j;{!kfhCQFYJPO0f1!2#-%^d6Yb{;#rzyFpRvnePtz~UmAec09M5#hVJ zXr;vW^+6*E2V+XVw9r${HK*^hp)%Z_0sp&tWZs%u~E{Fx38)On5$20jvN z60w?pk_@7r^^Bi_XSB3tMK(8~<>Klao!4GOV69t~>Ax>8X98yDwCfkV5tRPem2v$N z7nc+${7lTP(hwJb5H=nb)OI8`{~>gmve7t^&J-#tvV#bKC!b6<&tIuedsclX@h`ryET zf`l!Ei|FX+{&WxAQRl+2d^bE3AWY_91?Rdeh;Vt;l=Q``!k$|@ixFcIC&!!4eIxK> z8ZNai-q_`W$MOU3OdKHGT);Q~dMvRy?;pexrO4-mKY$T@_udI6bc;aFeH~gh5cgXV zNF(CbE+kGJgLLEOHsoW}3T|g9xa~+g7xdL3(Gto_I?A8ze3+wgJG!Hs%qNpy=ojjM z4WPVVHN|-wD+rv4=>4+7_wma(SRd(2xR#rlDa(jOOM362${kEA%B1-1K zNkdblJlWD>5)n~ws2C2D3|iPwxo>NXisOPI&Ipl(yL3gk8K!>;?!k0N;+RD1nAh7> zc7NKc{Wr)!1gRrcf?d6f7%)ejAJ#s7@G`M!Wcz*Uwzq=fj~Vc#@q!=m>+0&7Zv3(X zbe`Z@Hy?aH0-`mh&^3ZUYy{hr@fy->y4y%KvV%i;QmJv;*>%N%@-3Z`a9tFo1)b`@x?$&O=5FkQy$+&(I(P z*#e+kiYxoB?^yDo#Q>fHqiLj`&rHEsyr$5PC)8)~Cbb^@TlRpEm9_T@gJ*DjF)Ui8 zAdDlihVuf4W>SKlpntgeu0_fkU%XFZV=`K|mb*9RE^i(*-6^HffRjceYy2I;Nq$rT*9E0<6{XrhBpA*ry1i2 z?+#yQMWb2Tj9f(YK&3-?>=OsvxL!xrEWaBP`*ys|zJ~hDeW@Mf4xYIf>2JX@gN`H~ zne6;Lqx^4#3pm%Q>C}{-6G5OWKHdzmwCd{UI5^$~r9XF7$BTG%n1-3aQ8=E<-~u3` zMBjkdUO#fTX4o!Nvp`nqGnXQs22lTwUjyfx*kmRO@mW#smGpq| zGe15z92}Dz7twa426y)+ zV{UHlktZGhUO7mjauycYP-=x@h{o)o*kioz=Nvdkpmnpne2heXIOLRbOJsliv?9oz z%xWj>v~m45lqT79FB{Y6S=~j_^gN3+3)X7J>x5oTQ;X-c0gH~`#cQ9DGQRi&Vs??R zPPwB&3SZqy(L8AC54gtP*JSxlG2R4LQ-g|Q8~{{@Vj=Sc2L@MIzhpA~5ZbZ;L>xb5 zQfhV$$@#{bR65&%-663~l0Mg#p|SM|9BJF)I!u`7##D&LK5VzLv-kAm^4J%+8J{~l zuLCb%PtD8gYPy%<&xs6wmg@bM@tLgacr;1j0LR;#{Aqv)-zD-^-`Ypq%ds#0RD(dI zg#UYd+Y4CeoCkzZnM8dz9zB6-*fTow|3$T%NFm+Nj5}Vvv^%*6$nuDr0qFyY`9J2^ z;~0ON);+J)jK&Ua-s43)64i>n7UF;?WriaR{E)^R*#JGMAQ6MV&GiOAp$&PCXzf+Y zaO>{TQ$!jV_&cmF$o7oIRJv@QfU}H3L4N_`>aXBG?dr1P%p06WXQ08F4o!7uwBV2P z8P;#e$+nIXqj`MqPag-%6oUwT&Z^NV`!8osg|>bayg&_&*Jy_$GdQ?!hdck^lgzBm ztA9jR={yGZ=C5`9m23WEqo34(c*9Kb_{UIO$m`yfE;NtaUm6l?x*1n^H7*5CU+{OqDjj_lGv8^cStPeX4C)5asgtme8 z!G@I(Q2ITahDvYh)%&qR^5}4@_&`I$Nq-E<^p*1t$p*}PK4UjhPI&)5hS}2Lo*6_& zl=m?{#L^Z243qSuMFG8&*DyBb-t%9d47;mLQZ=i{B>AUH1;5XR5D_U^mFaIl6Z+@R zVkzHx|9#VhKY9Y}dVsY0c_*}j$a^>^e-aHjv-~aGS#!t>rb5r1O91T7P<`m^IR@U% z8KlRN5PIS-k$78Tc@`r9jc~di#YiIe|L)i!KdhRVaiE3+nZjk zvAS!;C;Q6KlZSBH67LPiwfX!Evpw{x>C~r~mqkU5Nhax7K4i!4ivtn<7&X(#=0)wg z>V21D*c9kpdKWv20O27>1iA@WSXIOH3m<#VYXJ;@`%VysrREs_3%Ks+^Hi6K$I1R? zBWKh>_OGo`Mz|9+T;Fd&FS9fQ2Fg=!Anxx^gtQUX(DJz0%V*bYxd)1jU<)B!KFdj#1>lA(YaNe<&&y-&HjyL%lhSInrQf;`9lsTdg~*NZUM!TLu-_T0t+KMK zjXgQ+)@>QLwY4pQU26O&r$gv{=19d3?4F7(4G;&cF^g?}Wk#<(ayHP|npYtS*8g=~aj9g{JRi}YHRmXh;A z(6Q95)k=j-*-%gg@UrOjJ!NMgdQ@WyxsTSP!V#TJe8+XMKv=sGr1~fo~`#lX3QSC9e{%}LQ}Jg zt7N>OGTivHu+@dEkr5p{V2!aK`PUN%fF&c{?Z9lZUcDl-e0L67_l=$o!U%4K5Ibx< zLWG!7fU_V4gLcRU=LHgd@*tTYkzWXrn{__liq`}06?E{Rbe4emUP{EYe)^1Bm0Sdy_lPcOzKudf_D@GKh8}9;|<4!04o6Q^} zd_-ppGYIBQvdRWx-~AO)RtFJ_%HK3~%g9oFl|2d88+rrHOhCO}&Z)RRA5 z51`E;n_jW-LHziu*5o&6aH*|zw3O!nv1LwC%7~8!wjIi91ywa_YY#B_MV^K$KYao{ z0XmxkS5uRO@Gn55&o#bpV9e>6oBT12%zWX(*PK?NSjZ|OU7bU7V)3wd z&~ywmuZyQ!7w6>#3X^y@jK%L6JZo+;V#;_fLItuNtPL#AZr-34KxAGTxRcEj?+Y-d zem64!9*6OaY*>Jd4UlfoMP$f(kRf>!jZJX2qh>3G9dEl3v5xf(3?4%+7hMI7WIy|L zP2?bEjs!{!%I%td`)+(U-`4(IEWQM8dFEi;W5F#>5fK~+8ENYf9fl%HrH9LO8@rXw z+Y8(d*(0~DExXfW9z7y?l9beuGROUs^I1c`qL?8o8j?rI9E!a{u(br6Anch5-uk;= z$HuRvbbZh6JU0Z8548GkN9)tkk<-VC1z5iw?JywAPI!2nDb!c?=pZABZ_@VC}>#(moCAPJ~{vZ%}0Og`q z@y-9D?oGh4T>G{0N2XL#6jCTk10^L28OvA{B|}JtBtxdmR1`ALl_DV(5hco$kdS0f zrp#03dH&9u*1Pt*_qX5u?R^~o?>qkMc#n6j*5Y}d`+lzLx_`g(cMe+YeJo?mpo8IS zm3u(vAb-Vy`xPWGc>vNtqmUB;7(+-u8Wx6<_NHehW)EqHOD2}*YQe1MX>5lG1T|(d zjR`OJ5wIy~O}y3Z$gTIw#l&#m2J7!_T65UwV_B`8sCI!hBR*Kz-YI(r7&?tg9R z+sT$hKNAvCf8bhag-W@$y1IozcLv}=c^|tp?%daR=!`B7NjxWP?+cDDy5>rN$|^o^g+v1Rr(Gsxo+A!Pu_#2 z&hsNOM;#~E;XrLoDPm)a61Bc@LmvAMa$m8T;wtE4^7GuN&z#LGx`#ruyZEaU3$S(u zSw%%i{r6{B#8A2}%}MYdQ73#>P&$+{MQ5IIc4lpMU24*dEXY640ecl#Iy8kvu8yey z-yV#~`uAhB5Gnl^Fw=$q5p%~uKM7qpawAdK`QMNb&$ct#_R(7*`CjPlAy z&~)5WIlm@t0==CKh|}S3axx;)3<>-vr_ls(!04D5L5^kQU0hGV)fg`a*;3$8xG^vr z+z`QxrYPIdwjCW2L}ogw)H1H~5q>-#>@J(c=IWPDVvIxx1JLjSo_3ls z#(^`)oOxqFT21Zf`~rDFRBWuiySF+$xN4v1_ zUpZ_Jf|;i^JfizSs=2W0TJ0Ncyuk_WFUF=4X986JxvsCB=(j<4ktK4Qe8O7uo}b@Iaq%Z2zv*+qf5ufCaZ3Aqbf+0XHz9qp(12e+;7LM) zLbGp=W_x?P+mr44Kl`!z-@GXf8Uu*J^BBV}^N^or-qsdl%*)#Wcv{5eK|qfxpye;JQ<0wFEd-=(pG4JF)S5*=1cyGblRe8)xjqs(_?TM))y|(E2U>HYRCK; zz5d^`7yU=Ww_>v=L3|lcGatD2*!kqxZhXsk7_2AimYbLMINdGIobbl*ZeV|1#YL6d zcPq=UPk7T^Z~tjvFG#v69TT|R^bo(_*NT1^{tFx&Bf9ogr_X8)v%zL!Fy#9m>xI!X z9nRbVuYb=-_-9Rp<0Zi%jUKIL$y{ELWZbeP^vgC3eSHz@ixEv=YnxlRbm;nN(vIX+W1l$y%6M@Bmf91+n#+taejP&dX~3wXjzpn2(ph zFMR%dPZ0`d_6J{yQ*qT|bUWYN`+O;FMU}Va3^}4RSM1d;gZu#Ebk5h-DUbAL&XX%tQ7|4A!OYXoRaaDPsO1Aqit%fCuI9#}zvs?c3 zcKATc+|4>Vk1_IP69J+$FshJJ>@H%RIo2~YDixR8ZMc1Iuh<1kR42=_38BM>>n_)) zZf>*Ly+lJxYx7{8)H_#jbJbAJ!zSxMdjCBq9V&%awU;LPiYjUhieULFD6hbK&y*mZ z?b!qtJ@EzN0K-QE{(XXi+FugSydWEVO%>lWyEB)lYzmI!-ghjFSX4i<*I~PH`NcfF zZ|5CP+1Vs!l|4>R#_1%h?r;X>BxO93X~xy99Foi+VimAMArE+KJ?f$F!Lffh&`z7P zHNa9jhcDZ4rEznxaUTAAB2gT1F(}Gy@qpMlvpOpsh~&XJQ%DkPy@HZ8oCw=|;;LXNOv4vQAJI-Bjwelk;Cm-nuF8|f)!5%ukG+q^R)HP={9138kni%Vg zgXC@)HqVKj2Le5)O0@HbJG4E1+lmR{4=T~N2Uiv;p`iuA{opm#muitaczrj>TN2U- z)LWjO-}75^?!Z3|f;|7}X^Qw!KTJ~9vS*_j!&EXF;H21JA3#DW-4!lF`@g*LRgUieJ<|s`RJ# zf>*=yD!xy;xpyWpWhA^5*gUk^d(UZbh^g9N^>uoTmaw9xX72$pXv$IE_-r}M$bDgv zM0AQ!_Yl1dFp1)041f7WSnU!-GdVpw%OSSJ5AFRUmmxacB`A4>Lu*$@oi+JQkv?~z z<=yZxu3e{todgEI`NyCukBx2g=gk#ytE^NA62MdK#}AsPm$&#{gf^^E>!Xz6)MTjm`D@G8W7|YR8)=+-tvBOCtyYx0co&xHV#$ zE~^+x1>ikQ7<5>|Q4nbVJH~QKDk{l1<>=_vi1b(p(wANFB7EVK5j4;RM=x~4_+~Cg z<-x3=@Uw4yTiWhg5Da-45S`8dUP&Lrj-}rod(A|P#l`N%aqKwF-RXn(+oB)G1xhkA-82u>s_Ni zmUrobCr1aG*9~glU^S`yU7V9}j?8X2&x5#!kA+({v`0p=OE^1Eb=S4T?*#aR$_NUB zyE2Dqhy%Z=7)tC7CA#jT>&Jc0WClNY&qy?G_)g(NmSS%ufC4zq1eG%>PPr}$^^q}#=frM+X`nPNB@Kfz@V�FW{l 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 q!gmbRWI~j*u#K0rWBd@u5Gl z-w_i4kDZ2U46}lmC8N6giYP~U`P)a9@sp{AcI`&MeRdKq&!@HUDmk$>}I` zOqf}SObt3757NTCQ_V-KVQP>gCBgU}IUh65>FNyjNj`-KJdoLysZM&FO6n`i1qZqL z944#FOicoAxIm3L9we8$E7g1Q6O#~+06!^ET=!vlT+E!3868kJ1>=o%AMZNt6v_e= zUY8MU0+!8I2bX*rk6ptTDh-ktM&Aiyl7ms^RtgNysz zzc+`vhrLdBa|kFZ_q*u-p&s~+pG1NMeQC>wuw%3gfXWkDnt|b)A!BCkgtWva&P&EY z+EgH{Zg^q>V+rmq{YM5VL4c9jrMq%&VeAS%kKe$7MnV4}56m2)Q7LO(6&(?WNg`LL zzj1HC#$&9J>EGws%RkI199lA`uv6Ua!Q8NES~ zEHf($xlp}$Xf0DZQp(PbZD@Gd(an^CjSXw6+UA7!WNhNI9VNH*G;Nn0f%v6WXp^&5 zV*JJnfGTVWa;t-xfsx95+GlFO;yVw%NL> z-`v9k%6gF@&y)N&n|ivRm5QCvdK*)KUjx+f!?f?sr$BGI|Ipy(fIB9YQ*GSEO?jbp zgQhQx=T|$U^NI>v*YA)3r;9+fzOZd;26DdFK~9j!#|6sG@tkJZDc&&GvL{_V2^?(p z%W}#ld~d&hGNoi^e;R{DL=?FMc&{7#JJpFTw;CxZiQ^MhMV_{K@lc1!eEVG>#W7PTlQT!b(jnW<9QVnk8Buel;kNL1IgZ23^ z4Be5lP!5H*5{eUeM?Bz5@uqow<(fCIV?nK7!@JW`W8KrHt1X+;4gKqo`PRS-`7p4L z@ZBwY(TVN&mB$Y@otYcY*BK@(K|{z#1Q58aAn2k%%@MRy zY|hkaSh>&nq7Hx}H@x=G#Kbhw;Lh`&MIQt5`D{6H@4IQL!H;iILZvT?wJUEK7#O&K z64l=2K|duUBf3$0n5d{Ig0{By?iW<@`@+KdE5nnH3B4x3ay*)jxqbnUHB>Se2nn~P zPp?TUw81^<-MfVoDBCNb4u#Vj8_A-gqRg??-kE}qr1gyr&&G{oADovEAWPQB5-KCd zv|}bEcZFo6B_t6b$J>+H5hj(DkpT~>)-I7m^W`yZi0)=HKb25bt&2H4?Z3WMgfur@ zO*I9}!;9U-BqU|dJ9?_Bs&fPB;x{odX;$Q88zFDszJ-LgWxy!E_4i8~8BuOGURYN) zz59G{a4_n>9{K(~zN)%<2s<_o4i*lMpGvMmdPWAtT*t*&N%xkM(QKn9#Ai5Hv2d7l zmwG&~9uGCMb{>$4*&uMkDU?({C!H}&7e^1PaVRkQ1;n><-vmM*HnBIAz1o_Sss@J?jA zW`*qG!-siphK3ZNUB`C0he-EYWNo~Z+`9411hjzUMb;w$?-YzpSy|avL*El`KtQHD z2bK2xXe03BN7j+?@lg4P8uq&GC);fnr40d~U!W=SM9wzo3Fq4%bbmedfj$#mdO4vC zn#IMhewp-V2g+Ty!4|-cb~$PskYXtwaI2r(+{R?%=FEPN=jq=orGOLE2>YnX2;_a? z@tw$^f!@H7adDzip1bf^3T*WS!CI&dI!HbwCJt8H=_&QDBFVmI^zAiK zk=OdBEEUR~cn3Te)zpliRsI;Z(|Cc=+uQ3!KtWq_TzkAd6RLl?Kp+%(62?~Xq@wZ% zn(#ICACPsiAr!7mUe;QqUSIE!zg^~{V@?leup5f$#i-fE@d@l^*e#S4!1=SSsMlG+ zalF{_slJ=6$)oqhvJCE1&n17VbS0<&UT9OO-gwB#tT#D`_?vg`s8tpe&>szQ1DtLR z#2gpQ=>`zv-@Wvd05Jw7Tdh$2tiB-YVas!=ce~WBAY>j;Q%jLHgoH}MSlx6N3YBve zQ>A2OZ#Q0S^OrH;Aj@D|F}YTuCW)Y6#J)G2%8|FN)4BOcyNr=VG5JIXn4Ex8LzLVX zBnpk+3ezzk2WO6iYslbO;1pL`*YESffWVaoLfHA%t&tZ+J)wGqA-t_04&^R3BBI8GQ;PenyX`+i_bv zcK_gDFRtklMNweS-%XxIA!%1D%kVYL#I-;vUVTCkIk_YYJ>A}!#ltQBv|Vb(Y|FAH z3OfLP@F}0rM^7kj4o?g~R(NKge;Y_QM_UFyQY%Zt5|_-$j`Y4CW{YK6Ga&ZKJkVxy zn{vx758OP9m0pSXjW@>=a{f4ZMNVOP&) zMa5d96@`LdS3|Llm-&1N-h!E7s+ZzZy#uwuxf$nKJY#HQzBGC1w2^yA|2Cj6`ix$| zDK#l`1Z%*)|Gza3`XG8rU52dUjrx#0=e&(5JWx z)1HlW%~at;0l?X`7nv#);LD=N6p zxz!a5jx;!?G|s;L-@3#WJ{mxL0Ats9{|J!!+Ak+8l`B9_OmZ<;^iYLg=@Z0pT9bb+ z+H-6MG8nyn5ko}f9TEfp?ZQZBv`>yu-M6<{4*|`AS9rk64oDdXD<%uLjwUjo-iqTq zZeV6Mn-&Vf2Tq-#N48)A zrf@8^7A@qf71Mq%bNM(+3W;;rg^2n0Luj>?4z@E1**ArPgF zuF!i-EWnlkF^ow3i+>GdTqfT8US z^EhIOlA5seIbnO2P|ZkB3#^Oi$?87}a7rq=^32mOSDwV~x5;QN0A>BdokvIsySNIs z{1ut+0GV-kO_trpcpFuCDbp7is$20~uLP%1sJ*=>j5xo?TKc@gjPDLq+I_1~&QLg8 zm(h>WE8uCBCO^wLJS6p;Cr>(Q9)so4%{QcnjmB^-!$BwbAD{!TIn1%((PZ?7~0X_V+&Re2z4PO3^Jik{v zG8}#>7*dTW5l@bXt*q!ccdhskm!wZi5QJMeX7IGO+1U}ThLL6NMEw`zOu1>Q4kZ;g z5_K0RbmTuZ+3!XE(BCv!>&C&-eCzAYYaUF6w2J=#zhbYGj|QhxvoLC>y*KAk@LByV z%ltXeUsCILo#)~SJ4?ORij&Bn6)2(b4fshy+%GMIclHLJEvx+3W&vb#jUDujc{nljhKO36in7{1( zE$^k_T1>e8hB8xeGz-d;pb0=AO?N)_wKeP*jY|xaVd*#4fiTLQQeXjff8Z=mSjp0J z$eHF&Q7IAq=H}r7qwH&rlPM@4E%&8j%F@hOemD7KFj-+HM1rfBBA~?tF}ZC>A{4L| z;xL6g3CtaRh2#);;iSbDTp=KW@PX4fyn_KfB4W&n(wPf*43fa@!8SCSDsCJceg5hD zT^3a;wL`!SH)os3M@L74!owwXbdn~*4N6FAtq}3(gkA2g^rfIcBs#uAK1e&39rGRC zY@@Fw!y0|G#?0`zRekn!gf5|pM1 zz!-)x$KAx2I-_YQnVB&Nn04+Z-X$Z8SY9?685v2-$+^KC*KO+G#X62NV~wXLF&MpF zhY1Wj6v*5oN11UAb$8vpacV)7?Bxq!o9Naq5ZYCFoAnwzI@&uQxiep;2+j3 z;Xj;lPCc)YsqDXzi^E@SJ$e>2&J0CW#&Jv?m5)RX_rB(bPJKiGgEFGb3 zsv6kFuMWRqL7JQSx8cdial~VLQ!9pCfY!;BaG7}63McP#kVN>zM+f_Up|k>AP5XD4^Jq zxwK?B?v&fu2oOP%)QX#w&nmtZm)(9vnP zjpCrtP;niddyM$9xpczatmBBFeM2OTYc@P>Bv3;yfgajO3M>Nix_3%=B}W!=?3+&f zKy&QP`C(EB36VKEI_Bl)W7YkBFT+c5%zTCwxEJ{?NpNal)m~X09~h*PM1eB0%I*uu z5I`pKTk#`>&Q~cdq4nQQ{cEhIxQq0g$Tr4H19dgSjN&)$K>Pas#Q4lrkV)YTUEZ;B z{!Qta5K?`z?(=`AkMl=n)mxkKef?miV?1EIpdaWfC|B)xv7-;$*&=RH0JpPYe_U7( z^w&6jXrl~RD*=BM3-exmaFjeM`N3)j)Nu%1Fh>5oz4+SirF(Ofe|OO8g|?pJ&{0#j zUyPslvbi5y;?^I%r$vHjxNcI=&XRlU%Q=g`uNy1XXXz?#p;Y=uh3Nl=_fr0{>5yrZ z0RQ#_beu4N?dES!4p(RDP8i4xL*11RTm&9Je%uVYhdo>W=VF}{9US? zXi(wSj&V?$W%;8c?yuw?H2b0bZTYpqCTiN$E5{^YNi*c0eBYi_0p^HP6A5B->?cqd}-1(c6pQO(xuJmRaE*=$|c%x@NzqJS<2rC-L%!YjD3y224}4(Sfdr2O6{ljPvg%D$%Rm;7d;$T3Qo_ z^MUIl&EP9ke%CHXYL42^!3qko<@CqTM+fmE?$u$3um2BClox&mlRt zOOl~?2?zq^$-RO!2v}}F>T6xtWVW2pn4*SAt1>YH!ITl{T=Jay*!_DtFRjF6#$BM#jZJ`8F4YujCSlL^q!s7iY zf_8aDa=8p0cFxo3!$iyGAXF-d6moIk`E$vq#$}JfTp{VMaV&f&-pTAJ;3Z0OuZf*| zxow7`$1QJac?UM%+#dX7s;J8tV0Ie>y4BAWgBvb>UYADuYT01n_SJGy1l`X`sr2ey zlt~k|XR9&ykWk@~_1N`L`BAchTq+w93yU@~#I{Cf{W5pVx@L{~s4T@`@|NBkOtC*& zEp<1Cqj0TeBfPH84c41rg%eqQ_UF%DJjKr1r!8gm_<9qv%g;X3WJ3dA*~JZLh8qqs^|oZBDoYntkgG3$9k z`pWy-JsGp!i;Ih^b}(ySVJ&KZpJ6AeL^t%)N`K)Ngw<$S4&rk)tT@^~)*dfpbb~rK zr+|$Q`~M^W;_Zyu^GY%44&H8zm3Bn!zjADwCVzs4Mq4>G%G(2$xooW!bM!Hdl#$J{MFwoB_(f8khYRI_q@`c{%$7lxd;QO zj6V+iuZ3!Vjla1UC2zWko%LMsQUc&#)di<^kzReC*Y|wyw`c!pM}Y3A|4PF_lKM}K zS{tl$-q8^FN