From 8c5d45e7f8b870129062b9027578937bfed673f0 Mon Sep 17 00:00:00 2001 From: Zentropivity Date: Thu, 16 Mar 2023 17:05:26 +0100 Subject: [PATCH 01/31] Correct html head and switch litegraph to pointer mode. --- web/index.html | 3 ++- web/lib/litegraph.core.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/web/index.html b/web/index.html index cd95594f..b5911fd4 100644 --- a/web/index.html +++ b/web/index.html @@ -1,10 +1,11 @@ + + - From e9206a52da64dc020657565f1341a417534c27a4 Mon Sep 17 00:00:00 2001 From: Zentropivity Date: Thu, 23 Mar 2023 10:06:06 +0100 Subject: [PATCH 03/31] Fix double click handling by not using faulty is_primary check --- web/lib/litegraph.core.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/lib/litegraph.core.js b/web/lib/litegraph.core.js index e86ecf67..ba88bd26 100644 --- a/web/lib/litegraph.core.js +++ b/web/lib/litegraph.core.js @@ -5801,7 +5801,7 @@ LGraphNode.prototype.executeAction = function(action) var skip_action = false; var now = LiteGraph.getTime(); var is_primary = (e.isPrimary === undefined || !e.isPrimary); - var is_double_click = (now - this.last_mouseclick < 300) && is_primary; + var is_double_click = (now - this.last_mouseclick < 300); this.mouse[0] = e.clientX; this.mouse[1] = e.clientY; this.graph_mouse[0] = e.canvasX; From 3ebf7452c32398ffed53d838cfdc35bf5257f0b8 Mon Sep 17 00:00:00 2001 From: "Guo Y.K" Date: Thu, 23 Mar 2023 23:33:35 +0800 Subject: [PATCH 04/31] nodes: add ImagePadForOutpaint --- nodes.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/nodes.py b/nodes.py index 0b8be765..1f495900 100644 --- a/nodes.py +++ b/nodes.py @@ -908,6 +908,45 @@ class ImageInvert: return (s,) +class ImagePadForOutpaint: + + @classmethod + def INPUT_TYPES(s): + return { + "required": { + "image": ("IMAGE",), + "left": ("INT", {"default": 0, "min": 0, "max": 4096, "step": 64}), + "top": ("INT", {"default": 0, "min": 0, "max": 4096, "step": 64}), + "right": ("INT", {"default": 0, "min": 0, "max": 4096, "step": 64}), + "bottom": ("INT", {"default": 0, "min": 0, "max": 4096, "step": 64}), + } + } + + RETURN_TYPES = ("IMAGE", "MASK") + FUNCTION = "expand_image" + + CATEGORY = "image" + + def expand_image(self, image, left, top, right, bottom): + d1, d2, d3, d4 = image.size() + + new_image = torch.zeros( + (d1, d2 + top + bottom, d3 + left + right, d4), + dtype=torch.float32, + ) + new_image[:, top:top + d2, left:left + d3, :] = image + + mask = torch.ones( + (d2 + top + bottom, d3 + left + right), + dtype=torch.float32, + ) + mask[top:top + d2, left:left + d3] = torch.zeros( + (d2, d3), + dtype=torch.float32, + ) + return (new_image, mask) + + NODE_CLASS_MAPPINGS = { "KSampler": KSampler, "CheckpointLoader": CheckpointLoader, @@ -926,6 +965,7 @@ NODE_CLASS_MAPPINGS = { "LoadImageMask": LoadImageMask, "ImageScale": ImageScale, "ImageInvert": ImageInvert, + "ImagePadForOutpaint": ImagePadForOutpaint, "ConditioningCombine": ConditioningCombine, "ConditioningSetArea": ConditioningSetArea, "KSamplerAdvanced": KSamplerAdvanced, From 7a7e3288ee413a600bb945d6b2df235991904b99 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Thu, 23 Mar 2023 21:37:19 +0000 Subject: [PATCH 05/31] Added support for converting widgets to inputs (and back) --- web/extensions/core/widgetInputs.js | 315 ++++++++++++++++++++++++++++ web/jsconfig.json | 9 + web/scripts/app.js | 31 +-- web/scripts/widgets.js | 50 ++++- 4 files changed, 385 insertions(+), 20 deletions(-) create mode 100644 web/extensions/core/widgetInputs.js create mode 100644 web/jsconfig.json diff --git a/web/extensions/core/widgetInputs.js b/web/extensions/core/widgetInputs.js new file mode 100644 index 00000000..4ee77802 --- /dev/null +++ b/web/extensions/core/widgetInputs.js @@ -0,0 +1,315 @@ +import { ComfyWidgets, addRandomizeWidget } from "/scripts/widgets.js"; +import { app } from "/scripts/app.js"; + +const CONVERTED_TYPE = "converted-widget"; +const VALID_TYPES = ["STRING", "combo", "number"]; + +function isConvertableWidget(widget, config) { + return VALID_TYPES.includes(widget.type) || VALID_TYPES.includes(config[0]); +} + +function hideWidget(node, widget, suffix = "") { + widget.origType = widget.type; + widget.origComputeSize = widget.computeSize; + widget.origSerializeValue = widget.serializeValue; + widget.computeSize = () => [0, -4]; // -4 is due to the gap litegraph adds between widgets automatically + widget.type = CONVERTED_TYPE + suffix; + widget.serializeValue = () => { + // Prevent serializing the widget if we have no input linked + const { link } = node.inputs.find((i) => i.widget?.name === widget.name); + if (link == null) { + return undefined; + } + return widget.value; + }; + + // Hide any linked widgets, e.g. seed+randomize + if (widget.linkedWidgets) { + for (const w of widget.linkedWidgets) { + hideWidget(node, w, ":" + widget.name); + } + } +} + +function showWidget(widget) { + widget.type = widget.origType; + widget.computeSize = widget.origComputeSize; + widget.serializeValue = widget.origSerializeValue; + + delete widget.origType; + delete widget.origComputeSize; + delete widget.origSerializeValue; + + // Hide any linked widgets, e.g. seed+randomize + if (widget.linkedWidgets) { + for (const w of widget.linkedWidgets) { + showWidget(w); + } + } +} + +function convertToInput(node, widget, config) { + hideWidget(node, widget); + + const { linkType } = getWidgetType(config); + + // Add input and store widget config for creating on primitive node + node.addInput(widget.name, linkType, { + widget: { name: widget.name, config }, + }); +} + +function convertToWidget(node, widget) { + showWidget(widget); + node.removeInput(node.inputs.findIndex((i) => i.widget?.name === widget.name)); +} + +function getWidgetType(config) { + // Special handling for COMBO so we restrict links based on the entries + let type = config[0]; + let linkType = type; + if (type instanceof Array) { + type = "COMBO"; + linkType = linkType.join(","); + } + return { type, linkType }; +} + +app.registerExtension({ + name: "Comfy.WidgetInputs", + async beforeRegisterNodeDef(nodeType, nodeData, app) { + // Add menu options to conver to/from widgets + const origGetExtraMenuOptions = nodeType.prototype.getExtraMenuOptions; + nodeType.prototype.getExtraMenuOptions = function (_, options) { + const r = origGetExtraMenuOptions ? origGetExtraMenuOptions.apply(this, arguments) : undefined; + + if (this.widgets) { + let toInput = []; + let toWidget = []; + for (const w of this.widgets) { + if (w.type === CONVERTED_TYPE) { + toWidget.push({ + content: `Convert ${w.name} to widget`, + callback: () => convertToWidget(this, w), + }); + } else { + const config = nodeData?.input?.required[w.name] || [w.type, w.options || {}]; + if (isConvertableWidget(w, config)) { + toInput.push({ + content: `Convert ${w.name} to input`, + callback: () => convertToInput(this, w, config), + }); + } + } + } + if (toInput.length) { + options.push(...toInput, null); + } + + if (toWidget.length) { + options.push(...toWidget, null); + } + } + + return r; + }; + + // On initial configure of nodes hide all converted widgets + const origOnConfigure = nodeType.prototype.onConfigure; + nodeType.prototype.onConfigure = function () { + const r = origOnConfigure ? origOnConfigure.apply(this, arguments) : undefined; + + if (this.inputs) { + for (const input of this.inputs) { + if (input.widget) { + const w = this.widgets.find((w) => w.name === input.widget.name); + hideWidget(this, w); + } + } + } + + return r; + }; + + // Double click a widget input to automatically attach a primitive + const origOnInputDblClick = nodeType.prototype.onInputDblClick; + nodeType.prototype.onInputDblClick = function (slot) { + const r = origOnInputDblClick ? origOnInputDblClick.apply(this, arguments) : undefined; + + if (this.inputs[slot].widget) { + const node = LiteGraph.createNode("PrimitiveNode"); + app.graph.add(node); + node.pos = [this.pos[0] - node.size[0] - 30, this.pos[1]]; + node.connect(0, this, slot); + } + + return r; + }; + }, + registerCustomNodes() { + class PrimitiveNode { + constructor() { + this.addOutput("connect to widget input", "*"); + this.serialize_widgets = true; + this.isVirtualNode = true; + } + + applyToGraph() { + if (!this.outputs[0].links?.length) return; + + // For each output link copy our value over the original widget value + for (const l of this.outputs[0].links) { + const linkInfo = app.graph.links[l]; + const node = this.graph.getNodeById(linkInfo.target_id); + const input = node.inputs[linkInfo.target_slot]; + const widgetName = input.widget.name; + if (widgetName) { + const widget = node.widgets.find((w) => w.name === widgetName); + if (widget) { + widget.value = this.widgets[0].value; + if (widget.callback) { + widget.callback(widget.value, app.canvas, node, app.canvas.graph_mouse, {}); + } + } + } + } + } + + onConnectionsChange(_, index, connected) { + if (connected) { + if (this.outputs[0].links?.length) { + if (!this.widgets?.length) { + this.#onFirstConnection(); + } + if (!this.widgets?.length && this.outputs[0].widget) { + // On first load it often cant recreate the widget as the other node doesnt exist yet + // Manually recreate it from the output info + this.#createWidget(this.outputs[0].widget.config); + } + } + } else if (!this.outputs[0].links?.length) { + this.#onLastDisconnect(); + } + } + + onConnectOutput(slot, type, input, target_node, target_slot) { + // Fires before the link is made allowing us to reject it if it isn't valid + + // No widget, we cant connect + if (!input.widget) return false; + + if (this.outputs[slot].links?.length) { + return this.#isValidConnection(input); + } + } + + #onFirstConnection() { + // First connection can fire before the graph is ready on initial load so random things can be missing + const linkId = this.outputs[0].links[0]; + const link = this.graph.links[linkId]; + if (!link) return; + + const theirNode = this.graph.getNodeById(link.target_id); + if (!theirNode || !theirNode.inputs) return; + + const input = theirNode.inputs[link.target_slot]; + if (!input) return; + + const widget = input.widget; + const { type, linkType } = getWidgetType(widget.config); + + // Update our output to restrict to the widget type + this.outputs[0].type = linkType; + this.outputs[0].name = type; + this.outputs[0].widget = widget; + + this.#createWidget(widget.config, theirNode, widget.name); + } + + #createWidget(inputData, node, widgetName) { + let type = inputData[0]; + + if (type instanceof Array) { + type = "COMBO"; + } + + let widget; + if (type in ComfyWidgets) { + widget = (ComfyWidgets[type](this, "value", inputData, app) || {}).widget; + } else { + widget = this.addWidget(type, "value", null, () => {}, {}); + } + + if (node?.widgets && widget) { + const theirWidget = node.widgets.find((w) => w.name === widgetName); + if (theirWidget) { + widget.value = theirWidget.value; + } + } + + if (widget.type === "number") { + addRandomizeWidget(this, widget, "Random after every gen"); + } + + // Grow our node if required + const sz = this.computeSize(); + if (this.size[0] < sz[0]) { + this.size[0] = sz[0]; + } + if (this.size[1] < sz[1]) { + this.size[1] = sz[1]; + } + + requestAnimationFrame(() => { + if (this.onResize) { + this.onResize(this.size); + } + }); + } + + #isValidConnection(input) { + // Only allow connections where the configs match + const config1 = this.outputs[0].widget.config; + const config2 = input.widget.config; + + if (config1[0] !== config2[0]) return false; + + for (const k in config1[1]) { + if (k !== "default") { + if (config1[1][k] !== config2[1][k]) { + return false; + } + } + } + + return true; + } + + #onLastDisconnect() { + // We cant remove + re-add the output here as if you drag a link over the same link + // it removes, then re-adds, causing it to break + this.outputs[0].type = "*"; + this.outputs[0].name = "connect to widget input"; + delete this.outputs[0].widget; + + if (this.widgets) { + // Allow widgets to cleanup + for (const w of this.widgets) { + if (w.onRemove) { + w.onRemove(); + } + } + this.widgets.length = 0; + } + } + } + + LiteGraph.registerNodeType( + "PrimitiveNode", + Object.assign(PrimitiveNode, { + title: "Primitive", + }) + ); + PrimitiveNode.category = "utils"; + }, +}); diff --git a/web/jsconfig.json b/web/jsconfig.json new file mode 100644 index 00000000..57403d8c --- /dev/null +++ b/web/jsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "/*": ["./*"] + } + }, + "include": ["."] +} diff --git a/web/scripts/app.js b/web/scripts/app.js index fd410cd3..a33917b3 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -494,7 +494,7 @@ class ComfyApp { // Create and mount the LiteGraph in the DOM const canvasEl = (this.canvasEl = Object.assign(document.createElement("canvas"), { id: "graph-canvas" })); - canvasEl.tabIndex = "1" + canvasEl.tabIndex = "1"; document.body.prepend(canvasEl); this.graph = new LGraph(); @@ -525,7 +525,10 @@ class ComfyApp { this.loadGraphData(workflow); restored = true; } - } catch (err) {} + } catch (err) { + console.error("Error loading previous workflow", err); + debugger; + } // We failed to restore a workflow so load the default if (!restored) { @@ -572,12 +575,8 @@ class ComfyApp { const type = inputData[0]; if (Array.isArray(type)) { - // Enums e.g. latent rotation - let defaultValue = type[0]; - if (inputData[1] && inputData[1].default) { - defaultValue = inputData[1].default; - } - this.addWidget("combo", inputName, defaultValue, () => {}, { values: type }); + // Enums + Object.assign(config, widgets.COMBO(this, inputName, inputData, app) || {}); } else if (`${type}:${inputName}` in widgets) { // Support custom widgets by Type:Name Object.assign(config, widgets[`${type}:${inputName}`](this, inputName, inputData, app) || {}); @@ -667,11 +666,15 @@ class ComfyApp { async graphToPrompt() { const workflow = this.graph.serialize(); const output = {}; - for (const n of workflow.nodes) { - const node = this.graph.getNodeById(n.id); + // Process nodes in order of execution + for (const node of this.graph.computeExecutionOrder(false)) { + const n = workflow.nodes.find((n) => n.id === node.id); if (node.isVirtualNode) { - // Don't serialize frontend only nodes + // Don't serialize frontend only nodes but let them make changes + if (node.applyToGraph) { + node.applyToGraph(workflow); + } continue; } @@ -695,7 +698,11 @@ class ComfyApp { let link = node.getInputLink(i); while (parent && parent.isVirtualNode) { link = parent.getInputLink(link.origin_slot); - parent = parent.getInputNode(link.origin_slot); + if (link) { + parent = parent.getInputNode(link.origin_slot); + } else { + parent = null; + } } if (link) { diff --git a/web/scripts/widgets.js b/web/scripts/widgets.js index 30a02e72..8c78d955 100644 --- a/web/scripts/widgets.js +++ b/web/scripts/widgets.js @@ -10,9 +10,8 @@ function getNumberDefaults(inputData, defaultStep) { return { val: defaultVal, config: { min, max, step: 10.0 * step } }; } -function seedWidget(node, inputName, inputData) { - const seed = ComfyWidgets.INT(node, inputName, inputData); - const randomize = node.addWidget("toggle", "Random seed after every gen", true, function (v) {}, { +export function addRandomizeWidget(node, targetWidget, name, defaultValue = false) { + const randomize = node.addWidget("toggle", name, defaultValue, function (v) {}, { on: "enabled", off: "disabled", serialize: false, // Don't include this in prompt. @@ -20,14 +19,28 @@ function seedWidget(node, inputName, inputData) { randomize.afterQueued = () => { if (randomize.value) { - seed.widget.value = Math.floor(Math.random() * 1125899906842624); + const min = targetWidget.options?.min; + const max = targetWidget.options?.max; + if (min != null || max != null) { + targetWidget.value = Math.floor(Math.random() * ((max ?? 9999999999) - (min ?? 0) + 1) + (min ?? 0)); + } else { + targetWidget.value = Math.floor(Math.random() * 1125899906842624); + } } }; + return randomize; +} +function seedWidget(node, inputName, inputData) { + const seed = ComfyWidgets.INT(node, inputName, inputData); + const randomize = addRandomizeWidget(node, seed.widget, "Random seed after every gen", true); + + seed.widget.linkedWidgets = [randomize]; return { widget: seed, randomize }; } const MultilineSymbol = Symbol(); +const MultilineResizeSymbol = Symbol(); function addMultilineWidget(node, name, opts, app) { const MIN_SIZE = 50; @@ -95,7 +108,7 @@ function addMultilineWidget(node, name, opts, app) { // Calculate it here instead computeSize(node.size); } - const visible = app.canvas.ds.scale > 0.5; + const visible = app.canvas.ds.scale > 0.5 && this.type === "customtext"; const t = ctx.getTransform(); const margin = 10; Object.assign(this.inputEl.style, { @@ -149,9 +162,22 @@ function addMultilineWidget(node, name, opts, app) { } }; - if (!(MultilineSymbol in node)) { - node[MultilineSymbol] = true; - const onResize = node.onResize; + widget.onRemove = () => { + widget.inputEl?.remove(); + + // Restore original size handler if we are the last + if (!--node[MultilineSymbol]) { + node.onResize = node[MultilineResizeSymbol]; + delete node[MultilineSymbol]; + delete node[MultilineResizeSymbol]; + } + }; + + if (node[MultilineSymbol]) { + node[MultilineSymbol]++; + } else { + node[MultilineSymbol] = 1; + const onResize = (node[MultilineResizeSymbol] = node.onResize); node.onResize = function (size) { computeSize(size); @@ -199,6 +225,14 @@ export const ComfyWidgets = { return { widget: node.addWidget("text", inputName, defaultVal, () => {}, {}) }; } }, + COMBO(node, inputName, inputData) { + const type = inputData[0]; + let defaultValue = type[0]; + if (inputData[1] && inputData[1].default) { + defaultValue = inputData[1].default; + } + return { widget: node.addWidget("combo", inputName, defaultValue, () => {}, { values: type }) }; + }, IMAGEUPLOAD(node, inputName, inputData, app) { const imageWidget = node.widgets.find((w) => w.name === "image"); let uploadWidget; From bb0017673199890cd47f2ba5cd7e8272b6b554b5 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Thu, 23 Mar 2023 21:43:51 +0000 Subject: [PATCH 06/31] Remove debugger --- web/scripts/app.js | 1 - 1 file changed, 1 deletion(-) diff --git a/web/scripts/app.js b/web/scripts/app.js index a33917b3..a9acdce4 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -527,7 +527,6 @@ class ComfyApp { } } catch (err) { console.error("Error loading previous workflow", err); - debugger; } // We failed to restore a workflow so load the default From 4f24e6a13b5593b219b3638ba2c5fa6ab67dc503 Mon Sep 17 00:00:00 2001 From: Jairo Correa Date: Thu, 23 Mar 2023 21:25:21 -0300 Subject: [PATCH 07/31] Allow output folder to be a symbolic link --- nodes.py | 2 +- server.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/nodes.py b/nodes.py index 0b8be765..d952d1c5 100644 --- a/nodes.py +++ b/nodes.py @@ -752,7 +752,7 @@ class SaveImage: full_output_folder = os.path.join(self.output_dir, subfolder) - if os.path.commonpath((self.output_dir, os.path.realpath(full_output_folder))) != self.output_dir: + if os.path.commonpath((self.output_dir, os.path.abspath(full_output_folder))) != self.output_dir: print("Saving image outside the output folder is not allowed.") return {} diff --git a/server.py b/server.py index 73429acc..e4f688cf 100644 --- a/server.py +++ b/server.py @@ -125,7 +125,7 @@ class PromptServer(): output_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), type) if "subfolder" in request.rel_url.query: full_output_dir = os.path.join(output_dir, request.rel_url.query["subfolder"]) - if os.path.commonpath((os.path.realpath(full_output_dir), output_dir)) != output_dir: + if os.path.commonpath((os.path.abspath(full_output_dir), output_dir)) != output_dir: return web.Response(status=403) output_dir = full_output_dir From b13539c3ddcf370977dade661702e5e62801ba0d Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Fri, 24 Mar 2023 10:27:19 +0000 Subject: [PATCH 08/31] Sync widget changes --- web/extensions/core/widgetInputs.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/web/extensions/core/widgetInputs.js b/web/extensions/core/widgetInputs.js index 4ee77802..e5bfab83 100644 --- a/web/extensions/core/widgetInputs.js +++ b/web/extensions/core/widgetInputs.js @@ -251,6 +251,16 @@ app.registerExtension({ addRandomizeWidget(this, widget, "Random after every gen"); } + // When our value changes, update other widgets to reflect our changes + // e.g. so LoadImage shows correct image + const callback = widget.callback; + const self = this; + widget.callback = function () { + const r = callback ? callback.apply(this, arguments) : undefined; + self.applyToGraph(); + return r; + }; + // Grow our node if required const sz = this.computeSize(); if (this.size[0] < sz[0]) { From 89fd5ed5740fb5ad87842bb0094a531b6dcd2f2d Mon Sep 17 00:00:00 2001 From: Yurii Mazurevich Date: Fri, 24 Mar 2023 14:04:50 +0200 Subject: [PATCH 09/31] Added MPS device support --- comfy/model_management.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/comfy/model_management.py b/comfy/model_management.py index 809b19ea..6288d762 100644 --- a/comfy/model_management.py +++ b/comfy/model_management.py @@ -4,6 +4,7 @@ NO_VRAM = 1 LOW_VRAM = 2 NORMAL_VRAM = 3 HIGH_VRAM = 4 +MPS = 4 accelerate_enabled = False vram_state = NORMAL_VRAM @@ -61,7 +62,8 @@ if "--novram" in sys.argv: set_vram_to = NO_VRAM if "--highvram" in sys.argv: vram_state = HIGH_VRAM - +if torch.backends.mps.is_available(): + vram_state = MPS if set_vram_to == LOW_VRAM or set_vram_to == NO_VRAM: try: @@ -79,7 +81,7 @@ if set_vram_to == LOW_VRAM or set_vram_to == NO_VRAM: if "--cpu" in sys.argv: vram_state = CPU -print("Set vram state to:", ["CPU", "NO VRAM", "LOW VRAM", "NORMAL VRAM", "HIGH VRAM"][vram_state]) +print("Set vram state to:", ["CPU", "NO VRAM", "LOW VRAM", "NORMAL VRAM", "HIGH VRAM", "MPS"][vram_state]) current_loaded_model = None @@ -128,6 +130,12 @@ def load_model_gpu(model): current_loaded_model = model if vram_state == CPU: pass + elif vram_state == MPS: + # print(inspect.getmro(real_model.__class__)) + # print(dir(real_model)) + mps_device = torch.device("mps") + real_model.to(mps_device) + pass elif vram_state == NORMAL_VRAM or vram_state == HIGH_VRAM: model_accelerated = False real_model.cuda() @@ -146,6 +154,9 @@ def load_controlnet_gpu(models): global vram_state if vram_state == CPU: return + + if vram_state == MPS: + return if vram_state == LOW_VRAM or vram_state == NO_VRAM: #don't load controlnets like this if low vram because they will be loaded right before running and unloaded right after @@ -173,6 +184,8 @@ def unload_if_low_vram(model): return model def get_torch_device(): + if vram_state == MPS: + return torch.device("mps") if vram_state == CPU: return torch.device("cpu") else: @@ -195,7 +208,7 @@ def get_free_memory(dev=None, torch_free_too=False): if dev is None: dev = get_torch_device() - if hasattr(dev, 'type') and dev.type == 'cpu': + if hasattr(dev, 'type') and (dev.type == 'cpu' or dev.type == 'mps'): mem_free_total = psutil.virtual_memory().available mem_free_torch = mem_free_total else: @@ -224,8 +237,12 @@ def cpu_mode(): global vram_state return vram_state == CPU +def mps_mode(): + global vram_state + return vram_state == MPS + def should_use_fp16(): - if cpu_mode(): + if cpu_mode() or mps_mode(): return False #TODO ? if torch.cuda.is_bf16_supported(): From 4b943d2b60857f5fe88723d3e81e3cd46e4c05f2 Mon Sep 17 00:00:00 2001 From: Yurii Mazurevich Date: Fri, 24 Mar 2023 14:15:30 +0200 Subject: [PATCH 10/31] Removed unnecessary comment --- comfy/model_management.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/comfy/model_management.py b/comfy/model_management.py index 6288d762..db774e49 100644 --- a/comfy/model_management.py +++ b/comfy/model_management.py @@ -131,8 +131,6 @@ def load_model_gpu(model): if vram_state == CPU: pass elif vram_state == MPS: - # print(inspect.getmro(real_model.__class__)) - # print(dir(real_model)) mps_device = torch.device("mps") real_model.to(mps_device) pass From 4580f3e64420835aa73b89ec4e8c9bda48c5ee2a Mon Sep 17 00:00:00 2001 From: "Guo Y.K" Date: Fri, 24 Mar 2023 22:39:33 +0800 Subject: [PATCH 11/31] nodes: add feathering to to ImagePadForOutpaint --- nodes.py | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/nodes.py b/nodes.py index 1f495900..40e7558f 100644 --- a/nodes.py +++ b/nodes.py @@ -919,6 +919,7 @@ class ImagePadForOutpaint: "top": ("INT", {"default": 0, "min": 0, "max": 4096, "step": 64}), "right": ("INT", {"default": 0, "min": 0, "max": 4096, "step": 64}), "bottom": ("INT", {"default": 0, "min": 0, "max": 4096, "step": 64}), + "feathering": ("INT", {"default": 0, "min": 0, "max": 4096, "step": 1}), } } @@ -927,7 +928,7 @@ class ImagePadForOutpaint: CATEGORY = "image" - def expand_image(self, image, left, top, right, bottom): + def expand_image(self, image, left, top, right, bottom, feathering): d1, d2, d3, d4 = image.size() new_image = torch.zeros( @@ -940,10 +941,30 @@ class ImagePadForOutpaint: (d2 + top + bottom, d3 + left + right), dtype=torch.float32, ) - mask[top:top + d2, left:left + d3] = torch.zeros( - (d2, d3), - dtype=torch.float32, - ) + + if feathering > 0 and feathering * 2 < d2 and feathering * 2 < d3: + # distances to border + mi, mj = torch.meshgrid( + torch.arange(d2, dtype=torch.float32), + torch.arange(d3, dtype=torch.float32), + indexing='ij', + ) + distances = torch.minimum( + torch.minimum(mi, mj), + torch.minimum(d2 - 1 - mi, d3 - 1 - mj), + ) + # convert distances to square falloff from 1 to 0 + t = (feathering - distances) / feathering + t.clamp_(min=0) + t.square_() + + mask[top:top + d2, left:left + d3] = t + else: + mask[top:top + d2, left:left + d3] = torch.zeros( + (d2, d3), + dtype=torch.float32, + ) + return (new_image, mask) From 7f0fd99b5d2fbaaf23ec707aa357067a6f4e44fb Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Fri, 24 Mar 2023 11:39:51 -0400 Subject: [PATCH 12/31] Make ddim work with --cpu --- comfy/samplers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/comfy/samplers.py b/comfy/samplers.py index bf4f1796..17201d9d 100644 --- a/comfy/samplers.py +++ b/comfy/samplers.py @@ -450,7 +450,7 @@ class KSampler: noise_mask = None if denoise_mask is not None: noise_mask = 1.0 - denoise_mask - sampler = DDIMSampler(self.model) + sampler = DDIMSampler(self.model, device=self.device) sampler.make_schedule_timesteps(ddim_timesteps=timesteps, verbose=False) z_enc = sampler.stochastic_encode(latent_image, torch.tensor([len(timesteps) - 1] * noise.shape[0]).to(self.device), noise=noise, max_denoise=max_denoise) samples, _ = sampler.sample_custom(ddim_timesteps=timesteps, From 97198f5b749e19bd8ead423911b9d611b99e1613 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Fri, 24 Mar 2023 16:36:11 +0000 Subject: [PATCH 13/31] Restore original size after add/remove input --- web/extensions/core/widgetInputs.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/web/extensions/core/widgetInputs.js b/web/extensions/core/widgetInputs.js index e5bfab83..b699373e 100644 --- a/web/extensions/core/widgetInputs.js +++ b/web/extensions/core/widgetInputs.js @@ -54,14 +54,22 @@ function convertToInput(node, widget, config) { const { linkType } = getWidgetType(config); // Add input and store widget config for creating on primitive node + const sz = node.size; node.addInput(widget.name, linkType, { widget: { name: widget.name, config }, }); + + // Restore original size but grow if needed + node.setSize([Math.max(sz[0], node.size[0]), Math.max(sz[1], node.size[1])]); } function convertToWidget(node, widget) { showWidget(widget); + const sz = node.size; node.removeInput(node.inputs.findIndex((i) => i.widget?.name === widget.name)); + + // Restore original size but grow if needed + node.setSize([Math.max(sz[0], node.size[0]), Math.max(sz[1], node.size[1])]); } function getWidgetType(config) { From 1fa9ccaa164c6f11c24d6c94c89dd94b45d8582e Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Fri, 24 Mar 2023 16:51:17 +0000 Subject: [PATCH 14/31] Set title to widget name --- web/extensions/core/widgetInputs.js | 1 + 1 file changed, 1 insertion(+) diff --git a/web/extensions/core/widgetInputs.js b/web/extensions/core/widgetInputs.js index b699373e..ad8bcdf0 100644 --- a/web/extensions/core/widgetInputs.js +++ b/web/extensions/core/widgetInputs.js @@ -149,6 +149,7 @@ app.registerExtension({ app.graph.add(node); node.pos = [this.pos[0] - node.size[0] - 30, this.pos[1]]; node.connect(0, this, slot); + node.title = this.inputs[slot].name; } return r; From fc71e7ea08db1f41eaac0409814b25bfbf37da88 Mon Sep 17 00:00:00 2001 From: Yurii Mazurevich Date: Fri, 24 Mar 2023 19:39:55 +0200 Subject: [PATCH 15/31] Fixed typo --- comfy/model_management.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/comfy/model_management.py b/comfy/model_management.py index db774e49..dfeef81a 100644 --- a/comfy/model_management.py +++ b/comfy/model_management.py @@ -4,7 +4,7 @@ NO_VRAM = 1 LOW_VRAM = 2 NORMAL_VRAM = 3 HIGH_VRAM = 4 -MPS = 4 +MPS = 5 accelerate_enabled = False vram_state = NORMAL_VRAM From 4461ddc9e67875c22d3a222e8c86cd67f8af0f66 Mon Sep 17 00:00:00 2001 From: Zentropivity Date: Fri, 24 Mar 2023 19:18:58 +0100 Subject: [PATCH 16/31] Change close on mouseleave to false --- web/lib/litegraph.core.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/lib/litegraph.core.js b/web/lib/litegraph.core.js index ba88bd26..862d5906 100644 --- a/web/lib/litegraph.core.js +++ b/web/lib/litegraph.core.js @@ -108,7 +108,7 @@ node_box_coloured_when_on: false, // [true!] this make the nodes box (top left circle) coloured when triggered (execute/action), visual feedback node_box_coloured_by_mode: false, // [true!] nodebox based on node mode, visual feedback - dialog_close_on_mouse_leave: true, // [false on mobile] better true if not touch device, TODO add an helper/listener to close if false + dialog_close_on_mouse_leave: false, // [false on mobile] better true if not touch device, TODO add an helper/listener to close if false dialog_close_on_mouse_leave_delay: 500, shift_click_do_break_link_from: false, // [false!] prefer false if results too easy to break links - implement with ALT or TODO custom keys From 4adcea72287981f88758151c73a1892c82724ffe Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Fri, 24 Mar 2023 14:30:43 -0400 Subject: [PATCH 17/31] I don't think controlnets were being handled correctly by MPS. --- comfy/model_management.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/comfy/model_management.py b/comfy/model_management.py index dfeef81a..0d5702b9 100644 --- a/comfy/model_management.py +++ b/comfy/model_management.py @@ -62,8 +62,7 @@ if "--novram" in sys.argv: set_vram_to = NO_VRAM if "--highvram" in sys.argv: vram_state = HIGH_VRAM -if torch.backends.mps.is_available(): - vram_state = MPS + if set_vram_to == LOW_VRAM or set_vram_to == NO_VRAM: try: @@ -78,6 +77,12 @@ if set_vram_to == LOW_VRAM or set_vram_to == NO_VRAM: total_vram_available_mb = (total_vram - 1024) // 2 total_vram_available_mb = int(max(256, total_vram_available_mb)) +try: + if torch.backends.mps.is_available(): + vram_state = MPS +except: + pass + if "--cpu" in sys.argv: vram_state = CPU @@ -152,9 +157,6 @@ def load_controlnet_gpu(models): global vram_state if vram_state == CPU: return - - if vram_state == MPS: - return if vram_state == LOW_VRAM or vram_state == NO_VRAM: #don't load controlnets like this if low vram because they will be loaded right before running and unloaded right after @@ -164,9 +166,10 @@ def load_controlnet_gpu(models): if m not in models: m.cpu() + device = get_torch_device() current_gpu_controlnets = [] for m in models: - current_gpu_controlnets.append(m.cuda()) + current_gpu_controlnets.append(m.to(device)) def load_if_low_vram(model): From d6830b958c1f37a584ddb5d91beeef54b6540ce4 Mon Sep 17 00:00:00 2001 From: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Date: Fri, 24 Mar 2023 20:20:34 +0000 Subject: [PATCH 18/31] Prevent exactly overlapping nodes Throttle double click --- web/extensions/core/widgetInputs.js | 30 ++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/web/extensions/core/widgetInputs.js b/web/extensions/core/widgetInputs.js index ad8bcdf0..5e601347 100644 --- a/web/extensions/core/widgetInputs.js +++ b/web/extensions/core/widgetInputs.js @@ -139,17 +139,41 @@ app.registerExtension({ return r; }; + function isNodeAtPos(pos) { + for (const n of app.graph._nodes) { + if (n.pos[0] === pos[0] && n.pos[1] === pos[1]) { + return true; + } + } + return false; + } + // Double click a widget input to automatically attach a primitive const origOnInputDblClick = nodeType.prototype.onInputDblClick; + const ignoreDblClick = Symbol(); nodeType.prototype.onInputDblClick = function (slot) { const r = origOnInputDblClick ? origOnInputDblClick.apply(this, arguments) : undefined; - if (this.inputs[slot].widget) { + const input = this.inputs[slot]; + if (input.widget && !input[ignoreDblClick]) { const node = LiteGraph.createNode("PrimitiveNode"); app.graph.add(node); - node.pos = [this.pos[0] - node.size[0] - 30, this.pos[1]]; + + // Calculate a position that wont directly overlap another node + const pos = [this.pos[0] - node.size[0] - 30, this.pos[1]]; + while (isNodeAtPos(pos)) { + pos[1] += LiteGraph.NODE_TITLE_HEIGHT; + } + + node.pos = pos; node.connect(0, this, slot); - node.title = this.inputs[slot].name; + node.title = input.name; + + // Prevent adding duplicates due to triple clicking + input[ignoreDblClick] = true; + setTimeout(() => { + delete input[ignoreDblClick]; + }, 300); } return r; From 44b6eaad6fa2316d921b6136ab28b0342e240a7a Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Sat, 25 Mar 2023 01:04:02 -0400 Subject: [PATCH 19/31] Don't completely break workflow if field name changes. --- web/extensions/core/widgetInputs.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/web/extensions/core/widgetInputs.js b/web/extensions/core/widgetInputs.js index 5e601347..ff9227d2 100644 --- a/web/extensions/core/widgetInputs.js +++ b/web/extensions/core/widgetInputs.js @@ -131,7 +131,11 @@ app.registerExtension({ for (const input of this.inputs) { if (input.widget) { const w = this.widgets.find((w) => w.name === input.widget.name); - hideWidget(this, w); + if (w) { + hideWidget(this, w); + } else { + convertToWidget(this, input) + } } } } From bfe64dc73cbf49901d46e57c2c0785876d866f6f Mon Sep 17 00:00:00 2001 From: ltdrdata <128333288+ltdrdata@users.noreply.github.com> Date: Sat, 25 Mar 2023 15:23:29 +0900 Subject: [PATCH 20/31] Add support for Google Drive mount feature in Colab Notebook (#193) * Added Google Drive mount feature to Colab Notebook. * Don't set goole drive mount as default and rollback triton installation. * colab notebook robust patch (while switching mounting mode) --------- Co-authored-by: Lt.Dr.Data --- notebooks/comfyui_colab.ipynb | 138 ++++++++++++++++++++-------------- 1 file changed, 83 insertions(+), 55 deletions(-) diff --git a/notebooks/comfyui_colab.ipynb b/notebooks/comfyui_colab.ipynb index d9726947..5108ec83 100644 --- a/notebooks/comfyui_colab.ipynb +++ b/notebooks/comfyui_colab.ipynb @@ -1,29 +1,13 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - }, - "accelerator": "GPU", - "gpuClass": "standard" - }, "cells": [ { "cell_type": "markdown", - "source": [ - "Git clone the repo and install the requirements. (ignore the pip errors about protobuf)" - ], "metadata": { "id": "aaaaaaaaaa" - } + }, + "source": [ + "Git clone the repo and install the requirements. (ignore the pip errors about protobuf)" + ] }, { "cell_type": "code", @@ -33,22 +17,55 @@ }, "outputs": [], "source": [ - "!git clone https://github.com/comfyanonymous/ComfyUI\n", - "%cd ComfyUI\n", - "!pip install xformers -r requirements.txt" + "#@title Environment Setup\n", + "\n", + "from pathlib import Path\n", + "\n", + "OPTIONS = {}\n", + "\n", + "USE_GOOGLE_DRIVE = False #@param {type:\"boolean\"}\n", + "UPDATE_COMFY_UI = True #@param {type:\"boolean\"}\n", + "WORKSPACE = 'ComfyUI'\n", + "OPTIONS['USE_GOOGLE_DRIVE'] = USE_GOOGLE_DRIVE\n", + "OPTIONS['UPDATE_COMFY_UI'] = UPDATE_COMFY_UI\n", + "\n", + "if OPTIONS['USE_GOOGLE_DRIVE']:\n", + " !echo \"Mounting Google Drive...\"\n", + " %cd /\n", + " \n", + " from google.colab import drive\n", + " drive.mount('/content/drive')\n", + "\n", + " WORKSPACE = \"/content/drive/MyDrive/ComfyUI\"\n", + " %cd /content/drive/MyDrive\n", + "\n", + "![ ! -d $WORKSPACE ] && echo -= Initial setup ComfyUI =- && git clone https://github.com/comfyanonymous/ComfyUI\n", + "%cd $WORKSPACE\n", + "\n", + "if OPTIONS['UPDATE_COMFY_UI']:\n", + " !echo -= Updating ComfyUI =-\n", + " !git pull\n", + "\n", + "!echo -= Install dependencies =-\n", + "!pip -q install xformers -r requirements.txt" ] }, { "cell_type": "markdown", - "source": [ - "Download some models/checkpoints/vae or custom comfyui nodes (uncomment the commands for the ones you want)" - ], "metadata": { "id": "cccccccccc" - } + }, + "source": [ + "Download some models/checkpoints/vae or custom comfyui nodes (uncomment the commands for the ones you want)" + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "dddddddddd" + }, + "outputs": [], "source": [ "# Checkpoints\n", "\n", @@ -110,26 +127,26 @@ "#!wget -c https://huggingface.co/sberbank-ai/Real-ESRGAN/resolve/main/RealESRGAN_x4.pth -P ./models/upscale_models/\n", "\n", "\n" - ], - "metadata": { - "id": "dddddddddd" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", + "metadata": { + "id": "kkkkkkkkkkkkkk" + }, "source": [ "### Run ComfyUI with localtunnel (Recommended Way)\n", "\n", "\n" - ], - "metadata": { - "id": "kkkkkkkkkkkkkk" - } + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "jjjjjjjjjjjjj" + }, + "outputs": [], "source": [ "!npm install -g localtunnel\n", "\n", @@ -154,15 +171,13 @@ "threading.Thread(target=iframe_thread, daemon=True, args=(8188,)).start()\n", "\n", "!python main.py --dont-print-server" - ], - "metadata": { - "id": "jjjjjjjjjjjjj" - }, - "execution_count": null, - "outputs": [] + ] }, { "cell_type": "markdown", + "metadata": { + "id": "gggggggggg" + }, "source": [ "### Run ComfyUI with colab iframe (use only in case the previous way with localtunnel doesn't work)\n", "\n", @@ -171,13 +186,15 @@ "If you want to open it in another window use the link.\n", "\n", "Note that some UI features like live image previews won't work because the colab iframe blocks websockets." - ], - "metadata": { - "id": "gggggggggg" - } + ] }, { "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "hhhhhhhhhh" + }, + "outputs": [], "source": [ "import threading\n", "import time\n", @@ -198,12 +215,23 @@ "threading.Thread(target=iframe_thread, daemon=True, args=(8188,)).start()\n", "\n", "!python main.py --dont-print-server" - ], - "metadata": { - "id": "hhhhhhhhhh" - }, - "execution_count": null, - "outputs": [] + ] } - ] -} \ No newline at end of file + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "provenance": [] + }, + "gpuClass": "standard", + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} From 4c01386c19e2dd5be3ba234124575a80283995df Mon Sep 17 00:00:00 2001 From: "Guo Y.K" Date: Sat, 25 Mar 2023 16:27:47 +0800 Subject: [PATCH 21/31] nodes: ImagePadForOutpaint: fix feathering, ignore edges not expanded --- nodes.py | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/nodes.py b/nodes.py index 40e7558f..a3c03350 100644 --- a/nodes.py +++ b/nodes.py @@ -1,3 +1,5 @@ +import math + import torch import os @@ -942,28 +944,31 @@ class ImagePadForOutpaint: dtype=torch.float32, ) - if feathering > 0 and feathering * 2 < d2 and feathering * 2 < d3: - # distances to border - mi, mj = torch.meshgrid( - torch.arange(d2, dtype=torch.float32), - torch.arange(d3, dtype=torch.float32), - indexing='ij', - ) - distances = torch.minimum( - torch.minimum(mi, mj), - torch.minimum(d2 - 1 - mi, d3 - 1 - mj), - ) - # convert distances to square falloff from 1 to 0 - t = (feathering - distances) / feathering - t.clamp_(min=0) - t.square_() + t = torch.zeros( + (d2, d3), + dtype=torch.float32 + ) - mask[top:top + d2, left:left + d3] = t - else: - mask[top:top + d2, left:left + d3] = torch.zeros( - (d2, d3), - dtype=torch.float32, - ) + if feathering > 0 and feathering * 2 < d2 and feathering * 2 < d3: + + for i in range(d2): + for j in range(d3): + dt = i if top != 0 else d2 + db = d2 - i if bottom != 0 else d2 + + dl = j if left != 0 else d3 + dr = d3 - j if right != 0 else d3 + + d = min(dt, db, dl, dr) + + if d >= feathering: + continue + + v = (feathering - d) / feathering + + t[i, j] = v * v + + mask[top:top + d2, left:left + d3] = t return (new_image, mask) From 3b873029581329fd943a56955550f0b02c548c62 Mon Sep 17 00:00:00 2001 From: "Guo Y.K" Date: Sat, 25 Mar 2023 16:32:48 +0800 Subject: [PATCH 22/31] nodes: ImagePadForOutpaint: clean imports --- nodes.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/nodes.py b/nodes.py index a3c03350..84f8b01f 100644 --- a/nodes.py +++ b/nodes.py @@ -1,5 +1,3 @@ -import math - import torch import os From a30526aec1f7c6fb563b5c49503e9d18f6fa73d2 Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Sat, 25 Mar 2023 04:49:58 -0400 Subject: [PATCH 23/31] Set default value of feathering to 40. --- nodes.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/nodes.py b/nodes.py index 84f8b01f..152fa32d 100644 --- a/nodes.py +++ b/nodes.py @@ -915,11 +915,11 @@ class ImagePadForOutpaint: return { "required": { "image": ("IMAGE",), - "left": ("INT", {"default": 0, "min": 0, "max": 4096, "step": 64}), - "top": ("INT", {"default": 0, "min": 0, "max": 4096, "step": 64}), - "right": ("INT", {"default": 0, "min": 0, "max": 4096, "step": 64}), - "bottom": ("INT", {"default": 0, "min": 0, "max": 4096, "step": 64}), - "feathering": ("INT", {"default": 0, "min": 0, "max": 4096, "step": 1}), + "left": ("INT", {"default": 0, "min": 0, "max": MAX_RESOLUTION, "step": 64}), + "top": ("INT", {"default": 0, "min": 0, "max": MAX_RESOLUTION, "step": 64}), + "right": ("INT", {"default": 0, "min": 0, "max": MAX_RESOLUTION, "step": 64}), + "bottom": ("INT", {"default": 0, "min": 0, "max": MAX_RESOLUTION, "step": 64}), + "feathering": ("INT", {"default": 40, "min": 0, "max": MAX_RESOLUTION, "step": 1}), } } From 070b5749b3233adab07db6e63a9373be6e371d52 Mon Sep 17 00:00:00 2001 From: Jairo Correa Date: Sat, 25 Mar 2023 06:28:09 -0300 Subject: [PATCH 24/31] Slot colors by type --- web/scripts/app.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/web/scripts/app.js b/web/scripts/app.js index a9acdce4..7a926865 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -486,6 +486,27 @@ class ComfyApp { } } + /** + * Setup slot colors for types + */ + setupSlotColors() { + let colors = { + "CLIP": "#556B2F", // Olive green + "CLIP_VISION": "#4B0082", // Dark purple + "CLIP_VISION_OUTPUT": "#006400", // Dark green + "CONDITIONING": "#FF1493", // Deep pink + "CONTROL_NET": "#8B4513", // Dark brown + "IMAGE": "#8B0000", // Dark red + "LATENT": "#00008B", // Dark blue + "MASK": "#2F4F4F", // Dark gray + "MODEL": "#FF8C00", // Dark orange + "STYLE_MODEL": "#004A4A", // Dark teal + "VAE": "#4F394F", // Dark plum + }; + + Object.assign(this.canvas.default_connection_color_byType, colors); + } + /** * Set up the app on the page */ @@ -501,6 +522,8 @@ class ComfyApp { const canvas = (this.canvas = new LGraphCanvas(canvasEl, this.graph)); this.ctx = canvasEl.getContext("2d"); + this.setupSlotColors(); + this.graph.start(); function resizeCanvas() { From 58695f9c7ad25f12a9efa31183da6237108a3cba Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Sat, 25 Mar 2023 11:12:03 -0400 Subject: [PATCH 25/31] Fix seed being impossible to increment/decrement by 1. --- web/scripts/widgets.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/web/scripts/widgets.js b/web/scripts/widgets.js index 8c78d955..5f5043cd 100644 --- a/web/scripts/widgets.js +++ b/web/scripts/widgets.js @@ -20,8 +20,12 @@ export function addRandomizeWidget(node, targetWidget, name, defaultValue = fals randomize.afterQueued = () => { if (randomize.value) { const min = targetWidget.options?.min; - const max = targetWidget.options?.max; + let max = targetWidget.options?.max; if (min != null || max != null) { + if (max) { + // limit max to something that javascript can handle + max = Math.min(1125899906842624, max); + } targetWidget.value = Math.floor(Math.random() * ((max ?? 9999999999) - (min ?? 0) + 1) + (min ?? 0)); } else { targetWidget.value = Math.floor(Math.random() * 1125899906842624); From bff0c408b7c8ff8d8205134fef19695ab043958f Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Sat, 25 Mar 2023 12:46:24 -0400 Subject: [PATCH 26/31] Update screenshot. --- comfyui_screenshot.png | Bin 117904 -> 112342 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/comfyui_screenshot.png b/comfyui_screenshot.png index 72642438dcbbb246a4e03dbc8ea32ec85e5c2b63..c357e24392eaedfb2ab2fe7bc824c2bdf1b5e274 100644 GIT binary patch literal 112342 zcmeFZXH=Biwk=vJNd*DPNU}tNWJExsB0&&|lB0s;EIAucf`DX@q#z(!Kynt4ObJNN zIp>_;DED5gy?xrf=bnAuc|TrjuUf6;DppzbeRGaEMjyTRfuDk$6y7DuO9%u4Px_&_ z5(0s(jzFC6!Z{B=Idcwof{tMHkUSQ?ww5NtR0=6n;VUL z@d9OdM8L>fd!eYdKUzcf+0|zRudy)1Zh!0QCpSfeIue&E zbp;{SWCj(dWuyiDwV6$&LRfCDFxjPiq5iMFNqxH`UQpY}C{=)e!#C-nIM(a?)ZU68 zSWf=EXJ)5>fWRBB%m&wtro~>jghr;=n>c;0>+e^-HcS{7{(dFSPyFiK->;BVQ86*;R9-1mQLul`TFPA{cM zhW+=o|L6C0srK(TBL3UUSn~cot^=HxzaHZLIXUbv=Uh}W>7_&IZK)b<<8E!oN%}n` zmIyRqB1R^4rqdy%Lw%WsUk-}yxxBw>mm(!DFYz_ksK{@L0roB#b4f|)Aps=ZV4g#uO5m2(=z`#T+>Xu|K%9^Z?3g%OiavT zk)IT?1d^Lvfz*q0T1NEWdzyU@3c6Bj!jlo}cm8Ef^os1Xgog+%q0iDMk7e_*unO%F!+DzDE`Yb2DP@eJt=-Hl*Dv3q}Drs|MhjX!+-Oc>|k$?Bblr?B1?>e z@zcT>$+5U~;LD_qy<)(q`9G0c|6ZZc}yY!Oo=rsp|7*g{UNSsQwO}|9+H<=>bi!mc|e>-HvxL^o+FW|K@hm`2Ti$%FfjalmWPXnm-n+#_v(-Ri|e?PE~7>T z5)u-4xVYaU8&5}}DtliBdZ$~ zdxfHU4Gj%GZW`W=t@@l_Qc`yI_5zZcw%kjIa64h8`(2D?cC3AZuNtyl0=vhoBMs3tJ}K4W-W`sa>oo`K*g2 zPpdV}uKcbMulw5iw(!CNo;Tw;G_G~_-rU^m>QZuGK?t$Q=a3V-$TDwQ8HX%*k(3k^3u|k%ZGJ3Xf}u|e@4c|RXlHv%*n}V zX^|-&qNb(Q)7C!jdc@&zFcVd)uP`F`{sQ)uZ)JWxW^C;2qb0Ue#)%%PDk=_eBgl^; z9)}e!TX4DU0_EE5GkJrv?XgZXEhO*iY7=M#>`iQJ6b2?f>*68qJr|lvQ&Ls!-JEH~ zrx9w(sJU&_#>C8g*JX2hq}<8Rq$Ql0MKx>v=%mG-uOmS?HZd_VAwgGBv2%FX{q)#n_i%HG z$#SHuFg>05#*G_XT%G!yae_`crKK^xa3EzKJ<_;kW^QghTykHWH`elCa|X5{iK(c# zI8oTGcWsYI@#)hESVdWeuneW!=Dk^^FXl8^Ny|rcm6f}DdsE+^uL)bXueuxj;yC=d zp<$M8<>7p1@@5GiEL~7g&`_~;L0Vv7phzNW#jzl*w6t_<4i)U@x8W?LmaALoc_Ki_ zrc?I&SsupgT4v?cbs;?!mFEQmMjdgcdFnYj<&Lmj0S%i0ddErm`F0&~cRM>f9m`Ml zH>T?9>Xz@saAEhGcBisw6=hXbc~1QBaob()JX<>-Z9=nh=-nR62f2+()Khza|9MNe z!&2|caB267DpAS}rauEG#V%NpP{SEREN`R#8z2AZ61mH0y!Sh3pX#5|U>-_4DmptRf;k zPtViQO1B4}e=YW8qGMjzZFl%6M*Jz3x*{pHx1ry3CD6yh5P5^;eFS*!K{Yz$I z5TISC5q2QK;|eBI$6q*|_5boR{TsfcK^G1ee1|v>56_n?LbsATOH4YE!Hq;#cWh;3 zWbEuV;r=8Paj{;Lap<~lG?2+B2r>IlHit3lxy(dVRaI3~RG>u9v_0qv2`vZmB@Vt< zS9?KbUA8qh&m6I0OxoSuooS7dl8|VqucxP{Umhv%TibJTa-tP+@1LuapiyTi+iKK7LsPoF;Z@DM(l`(9M!=-@CjJBv>H66eM* zUi1+YLSetYFCF?r$N8(UoS76w;C-bVUx;aGMXg6GYHRPiY;e4o`WYA<9sM|#7m6`d zfB1-z(iiXW1m)6RGzL*;3EA(h>XeTpgoggu6>#FG%CZ?A84>n6buUsXDK8(==j^xO z<;Cpz^{ZxgB|S6K4VHn8^fC*9^8UFuyks#PUM6rA$4fbQan)Ksbx_$N$2-Pk?cKn9n%SR!Q)Xd}ez3iJBTJQPk`7_yE2za!5i^ z=*6t; z+s*0b-rnBf;bBPN9+0txP*ANlwimkLx;Hj9uJKyn_=xr8=+yZr$P)=BHVUN_qUNwA zAyr>PZDSEa$~XYHvwQ`mo4Yq$`r^vF*X>Ak*2u1|E+DsF*Z%76ezEvFePUuFTdNrA zUf=KE-|FBb$3YS^MkUy6k>*1NjSLUhF135UyF8$pSqOL}IoV*LD}^_9Wp$)HA|fJ* z$&RWRE`NAfyI>$IZtk0AcBX1JRM!^*@pGueF+e5|>u>^S_8&YIa!#P#%JLkiIBHT{ z$azXaq#M|>-xXqN5lt!ooYBI9MR5NwO z=*j@&j<|u&&RT}g@p8siR_t2KC=>0)FOyKeJ-uXQWlIXr01rS-f_)UXpZbYcJ!Z{G zZujB^^%bcH4=xZwYc*Wqa+{HHZm`h2guo0*j^0i<%QG`GaGaYT-CSH+8h9NVdbMES zc)&Q(N9=P1iyFIL)iIR1V(YPv*4D7gwHg{4fIf+hP{`hQA@s}w0)x-;mIn)2Zr?_y zJUBLb9y<}8ChjLYeQ9#>gI!&rfS{tH_ICR806esPypx%fG?^SMa#g~%Cqo76^~6-L zC~s_grdn>QTdOu~=Q(|``#?k^WxTw+N^+Sdc8xzk3WWz$pWR)@(s{_%02?)Rbh0x{ zOn!YuWdM#2Yc?zxP!I8Gr!Uwk4P$tW#;R&?C6fUhqh$^OZ1>3V)4Blyv65bPJAoRO zh?=wE4-bSD52eS$$1m5;f!IChFDciFS65dlDeTPiv9b(->A74DKYv0&>Z+U! zA6kiI%;UjQM>r=zsKDDGI@q;KY9bK@9@m`{Q0?szPWR!{ZZR<_kiNRZ?m(%`M0}}u zSCp4m)y0x16Q{ruIW3vieHU^}FD;pvM1_sl_`}=unHd?HrFJvsxs}k5{DuZ&6#eKp zT?8CKNT_Atw$z(V!lFu`_~OMDI;$HPKmdt}iD_$Vzj*PY#N~3&Ha%)GS$Vk#%vh2J(+vd=l%Wo2eTs8rl4TwL|(b0kH^ciEi_#z2GMEVEL zVPRoGqamqx(9_+$Rg>H6d4MS4M(8)?wRaH$*O;S~ zA2*fOwX@V078ceAS4bPQKH<=eM!P}tY@P%*dDl9O)`;56MZEIGG(N`~;}dVhB44Iu%y+57wV z^xT}2qho$@s(hjqZ>(B28VBA&PVxuMxwvTAxJIXM_xG!ZHBZ~{TksA=o1Zy63mYgQ zxJ1*m;r9@CkY2;E$#u__Pts8*u_HtiD5Ki$f@5X#XWy4i)56#&X* zt~-m6`T;&IIhGIX5+={Fg>MmvPwyRFc!?N^y{u>zPLFe*@Zzg)HWNSKjO>Q{Iwurs zW>YmbbKI=X{_!~St0xmemI}C*dtVmj=K&oAJ4%h$*4A=VAKO9S3~3vbIQA%rK`pf$ z?U24N-zqs~P65uFT3JOVioCiZ6~qcT##rx<^NFa&9R7086IV}9 zPg~m!SQ|))fQorcyXcFy^+(DaGSo8D(@X6aLNgQ{r<+0`<@V`$jZAI)hKjSuYkquy z@><oNDOz@Zi17+LG81BQ_yr1WZ*`#O#&F#<`BKGrYcSkq+N-4_SoYJcbD z!EyoW_hWH!`|+A{yEQA0)qA6Ed)PhwjZy~->+9d#OR~z!G(B0RyXF$TI%uHwH@O9x z9)E%+r72j4J!-hys@MxkgPpIfK)eBaNI7&j(U0_V^r~|z{D~0Awj05T8HC)#m(Ya7 zX7{5g_Q1Q38&sb#YxVEO%RttF1~@9Q>g@DLyk7NmcWfA z$H(rwd6&q<9%D?!jQR!!>U=j*R8fg=-@>mR6XoGCEY!4wI$~7rx^t^slJn+G36aI! zm7xGK4mo(p${Lc@3grj~KOKJ zgF2Sn3MDPA)*>Vu6B9WV)f2YU$`^ATK(!PU6bK3kJls-BgB&+G`3$+~S_w-AJ$#50 z5zUL0>ed+nyXmITn*iiBo)r(FshJkTclflr`G(E@BrE`00nXI-nogpFOQ`!ABr<4u z&HHjHoi~!|CI~Q|4t@uE;IW|Na&+Gko{t!$5xKP6EG$s{l?gDyXv{>W{_+AeLkiJh zSJTrQgOUT6rH*-bxWeafPT03~29lE!g`o6BG>R6nR?Xo5KzuD=jjDJMdH2Hk=EUy0Du2W80Q~6cpw!_^L)u23MV9#@AeB_ zk&%%=d|8ZE9Q3H^L8F$&~Y5B@@jq0K-JYC`U|278Mmm z%WpH@pJxC`Zm`JmT6t^JTfA%iScJhd@6O+=ABPN{V|4?*5v`fI%1=uSV8jntsABuh z-~SgS8$W_&#>f(ZAe0ZKS8e^K&iab3$%#v;i^gDv2^j7<=+7<(PF3b^99&91cT8tB zRs}&du!@l^Z@RK|@UpWr(}R&RXbKnWLV2MyJj@W&x}B_P)Kf zu1q)f#C=;M+v8^tW{~xAD|bIK`9t(W zE>zs}X7rvr;6g28C*%cF_0S9z2FIJAEg(V9f`K;v^YEUFZk)R7y#5J@{c+Dl4gP=r z9RBd-{Ob&&fA*K(Awj34`|_VR36b{SAV(zJrU{lBft4zqE>{eu{V9+Bf8Kt$Xbq!7 zTuLf47J)!UjjgHi3Eu+p9Q`1o_y->j|AmtSWG*5)`Y)eF^gSC7ggA|?H3BhT`%fK0 zk=UmSjm=s;AXT$@po{J&W43~aqWH~!~e|LbM_$Nxvhp(%M-zqE!4 zn-U!>#jDB5$x~BPJx>w73V=>)^*{Jx+dUk_73BCBJs zt;SD^psx%gNymFszS4#l@{FHr~?V(0XhWx|#9Dj=9Xmi=HgVLpD5WmiPQ& zb#8gX8A>m-zRXdr65`P7F*7mkL$&lgI~ps9b+Dmoyt1~ka$yBuKKAhl`nzxlPT?o>jZMxRlmSlt2CvK|7rU52gn6GFSSn`CT)*Z_uPJX#&wrFNa|Tt z#QJ_*?j0#s7O9TNSmm(-Jo8Xmn&QR#h{mT52z_^4tUB7$^>=5-s52@W8dV?QD)L;m zW*@w}($m*R)EWKyXArd@yg~F^TE4vK$#>ul@xAuz8Uo0m0B9IkSy=%~4()rRdpy4A zvBJS6alq-M3yHG*V+?F1-45YR2G?Y_v^cG8^7=m)Q*`F<1Ta{0pI? zyqbJZNXG80qXQ#)^O0icKJcDwMszqyc;d$_B_-7l4}WP~HbU1*+c-F=KLbg$Z?Ujg zkCXw-A!XOz|9Q>YVysG-0H*?$k39-Xmkt!Dn>SOEl8_=Ix;Z405)$nIz>A7@Py24X ztJ^p|T6;l728{_60n4ExkNt^vaEw>i8%0k;e6L=;I_kQ_wyS z3fgVZHlT?Pl$?U5z|X|l*%^A-_V)JA3J*P|g(nW{>+35veqIAgUKmQ{pMuu~bgFYg zZcdJ>;|*~1h_UT*f84NIHn*EHnk&Z(r1m?A@ec|XBW?h4!e1(h2@9<&N+`<8sj9_z z#dRNvl74TIe=#+(yb$&k^Ma5dU=q1Fe#IwGKr=JALYcLAxLUrJvDk$5`Z_u8?A#ng z#T8s!rUwR99VU2qBQ)}tI#C14iuA#A$#37TCLwp+#^yl51tSN4P*`S7oY=w7O)}nU zy1hhRgTe0<-EuV0?ER81QnCNteHuhn2oNkuBmByvmpR&<($WWP-(OXkITnS(8mO51m4)} zqN1YIR7qPNgwS_rPyr0g!m2JW_z^KebM2CV>gWja_dgsOJN;>v4y^(3sGdhF#hICz zKtKD<1Gfb-4lvy72ktFohV;?^ya%hj&Y%%4f<7}NStqME5Pkn=La6`}wrb(ZRkJMWX2ZYAEbjPFddLJkTfTiajfzjMc-?kyhr zQ`*|TtFxjpR*B71=()ADhCp`kWfB#w{_>?>pR;6S^))vBl`B^+z4``35)cUZ`1pI< z+u!_`(y_M(=APem+r-#-&O;PyytzP~6}Ud&HdJhF^V*HBQBWxE{hENa02&A2 zv=TOrp^eS2x!Wx&<8Gd-duL1IYlTsXHoto zRu(NaRj=sv_ zjK9X0%pJ$V+iYN8Hj4ngra=1fET}BI&O(AttA_Gyq^(2N)gI9G!R@tp$TBE{4hD^O zkC{WMHq<5HhM;CyJU*G1*jQOvyg65^|E>IU?et#SJ25K7sM=qhJrTMJoU_P11*ZCr z2O!C5PIsKXVPn^-c-DUDQMk_?SK(3Rck((y!n=icKz{i4`@wBQ&F!YOy`z&;ea^3k zoGss|uW$1VS`@)ip%!%HkMDri9r%`YU=A}xLg^_2e?l7L5fC`+t3KU<4k})b^#Q_J z+^FC#Y##u|7D-j&1n%c8@Yljw%&4z4f_9nqIQHkI+JBI2XeBC$I_&6u@2_8+z{xmd zrna@oma4Y$@bX#>e)o&ehm^W8)#$Ympr>8!DXi_oq@4(=oOX%L{mzhKtK!Y{w#g~p z=u0Yrs@y3G_F8nG%<$1*F+|vCEa|~#*r#wQ2}R-vy)+`_tIAzUp~_(cujivp!UhbB zqMa&p*){Xfx9Fb~9U2P2J|v7$-U=F35X{hJitwaP^tcY#dzS<~Ak3s_JwR~bftU=u z#<$v^mkb4tfnoM!Z;X#JQ1oa31q6t%Noyn|C?5ix~gL2hv*M+ zkyMG~v?L_Y$KeRN4AUg`&Dpw5hW%K*Rdv7^>vZxwYG`KHwL&B}*mru1NwudCyIv+`e-2 zKKAkv8ZxqCvz`nPG121D@`uiVNvS0(lZPA5Rf)p{4Z%VQt8d@7B_Sm^kjPz^ggFO$$8mv#Zu93-8RwtZ*zJncK=kzG|KE4+@fd^aylPLoHFD=M7c{3ylg~0HeTR zPhvWBuhJ^E(#Y=Z@9zgQ1~1VsP`kLfLqkHiX2uQPif; zn!NzvIO)j9!@0)PT&%>linnA^rhg@y3O zW@=EHcVOQe>+69|fCEYZs+8P6RNR)g+b>_f%&j_H{Ct`LHG z++*H#tosDG6))+Leqzra;`#yn2>lY>Pp(3uu3D8>u`9OntLB5iC+4)`;*y=CmEg${ zt6h70wrI=CIc6BYUbnXtxVZLgzujew+YtYw#4+gp5$2felF!GgC_n3NXmKf;6PDR? zY`R4DeCu5@xPwFK!HIpL5STUco6|B*;U8E=6kUI7y9m)#kD+Xbe=nyuJPMfOh_U94 z72Ti1e=>4xWwm{%SMByb@p+-yz%Tm{ovc&^RC=JU*+!^5TAR%%1tg70IBdxEXEo+rm1drWgv8bkyd1q@JHQd7`O z@Us(N(nw+*C>_was{v2tf;7$K9V;YPDnq%$_Td=AQGYHoerzZ`Gi||gbC_eTJ|_W= zdbVmn!{m;uMsnX$p=LIq0fIMU$FqD{ohCfD-aYqDqXWtWM1i3q%VoemAX$YKvs0`< zn#C`s$_FDuZmu;LE0&R1@fi2V4^}$^$nf5>-`}^IsD2+&i4jIej*0XylE@U8CnF(g zm@WIl*)3)vg(Dnz_b%G3VUfEFqD*Q^3aB|*U@~}(FY;|@1&woo_6E70UK&{PL$G5k z?;W9g6p;BqD;ENF1_)EIIuJ3dd5v#qjxR_!u@71jBVPB~A7A3&JaHkoIciqX7bsQrfqJ6%%6UdH{mYSMR zQaeaQF8%}{MOav!tv2AQ+Sg!)YinuIEHDaW@&`o=ST?w)w7Q8J!=LrFwjdIZqtksU zLDtENx}Z$(;Yf^vF*#(5DnHErv(d3cElaF^_7%3}L=|t7bOO&vuw>L5(!j_5;%2Gr`4^XlrBPYNHHpkyj0f8D+ zOQ4crv5SUQT3Yo0Q$q6b{R+A@Py`keAiPKN@uOu&Gy^z=5;=O`Zu7pBNmrth>b36= zRr@=pG(<$;FxVRzGa=cferkU`dIjfmnj(X#oPJw0*K3KJ(uW{eBt%8^_4k)Nt$Pc6 zB=kwf;2?t>Lo6X{B+HbA(Y94VhtmSFKjzg)M13-%anS(_(y(;U+Y`PEh+~BcT@Edc zNRhiIYo`-ySHr5SQ`;64^d8EI*HvO6uQS}K@5MYC8MfgNosFLaW)K7{IJnSjLH-!( z?!G-s62C0?)ZN`(M#f(f4+pW$@38nAP@pgkK1&5a=Wm}rjf2_h!i5XKr3{uin1i#T zZUR^YfMO+%D<92PzA^cOfI~t;(jxiOs34C+2atziBM%U^)d#b&ENVFwz+#N8CGuJh ze!OE2@?6HEs-7O&K>?Ht(EaIR+$xD+MtjyKf8M>)LFi=`&kw{ZDZfIOo zvCMuHcb4h>D1yHX=}4J1TR+^qm;-}Y*9H09Ch~pif+l)rRrh?4WOgEgB7-!xj40ZF zzD#&Ix;lC~dU~3$cB<@AOuV*2CsanzW_799L6TOBY}l}PwJM(bP|g+~Tw3`ci$T=~ z^A_M|5Cr#6PCGg}Am6n{am2RI!nJ}KZ(`zU`G^QWsKY~7uvX~mdd~m4z5`ZFE~-Wn zQc};ug*3ZIpdf%DG>BG|J*e=@#!IRzjewb>ST%lRL<*1)f8pb?KXN~lBEIcQpRmRo za}4~*q9=N$ER_CrZ4K%ELtvh0iW{eP2|D`{Jx)4kM-^!wh>Lrj>{Yk$1pw$U;lA`r zpNHbHQCO$RG^R+)*PJU_*}I)fUfHVU89u(?`vign>=%$xW`F+t3Dp6bP7p)0vRILj zpf-y{&o!i6u;>V8Q+*b=sa=km3**B?A~SnF#>5bN{)Ffd@S{FHCloV;K&lN(gC_3>Kh>_9aGHw;7^*B%ZH1%=B} zc5$207BCPryP+=-3V`+wHd{F!$;iOny{a7t)z}fbdeR`kx0&C+Z$p9r`4GT6oFL^9 z(?EDX1v&W#vbdiO4JW62)r?56gA5OY&4#wM5Gx*7I#2}jAj21rx(3W0fSV2a;~Bt8e1So@-u2!EwqSKJOSup}- zogyMOqxRg{c^|xnAk%WAwm{qi#Y@~C{FQBOZPjN-)lLHO00}^vVMv1QbA_D;uH^%L zI`B0Hojf%L*ZYY4zGh^!tnINl*@2ZAw4&}b`D%}&qT#P!gyMWb{D0zh3A|Cdx`@m$ zIvfd!7&LD?uCvR-WxKpbr=@J2ryhQ}UACAjco0bGki?J&Sqf&?spDw1wg6${~GVE5!nxKPT3U1|UF zWpuP_yaiQE=z$Ooe&+eyf&A2Gt$UXdfWx{G-innv;Zt>fi`0!I0m5^(lP|%Xegn_~H*lcEOA$6g`a;^|pJWlgE zWK@{~1N9R&i;MJulsrF$;uNc9PCU=NjvKw0UM==rlyV?qJLw;aIXQ!7KHf4ug(St4 z!c_csch8H(^>kpGi(2uHWE(P?H$&%a%o7J5PaGcR50vR=_9TRM2|+Ose*$tl35mnu zwrL^?n!`3*s@OJz%Wj|~@)#wA!(bFRQK+s+fx!~SH-<+C2XE;;{g99#0&QioRIt@R z{tTGqfOMgtq1iofpE|ooUJEuWufy&{u!J%j4}!%jJ8o@xWu;J^6*>oaCm1tMI)gp! zx92-SY6KH0SRX!;@QL)?sQmP){PV=wzB@${6QRRa#h9TC2b03yjZlt6<3jyjCh4mz z!h&z9r1q#sj>FpbsG(52+odtHvgqB{0)oTSvnnI+?oA1o0{&9Po}@95e0}Gwy^dn( zrI-408Idy#51|tfLJ|E*sDDC?#a)CpR#8u}N-XC*@M^E!t|W-Ke$=6CCJh%h-FG~P zKm~b=D!8TWc9lMYKI)q8zz05-VBb)sP|t%QJ%P7Wwim}pLb5x1>!<5q-NhVp-)-Ls z=v#BUi15{3XtF)fAkhQ~noE#qc(bc@IC0EA7;{+hosLLF+bZA+5xw*MH=6xns z)?@H@-VqXV2lpamZRkrxzJ>Nfp@#PP%NP2z?(~WqUt4F;^e>1#hCGx5?$-%*fOCaB z4QM2kzNe?h!O6+%Ow6Vl9J*1hDZ|)f7QEn~d~j!F@b_;X*srO^U@x#8K#3m%Xk%~x zeP{(ljZ;u;blAxRRU|q5X@z5vIATVMo#W%{W<84EyVaNO_F*;LM! zfqtFMbVsWyGv~0PD(s!SZf>a+xYJ@HLRuTe>HR08`AQ7i3I`YG+X zR;w$EE0sf;S75B`3P>JRGOss|PC(iJka&7jeO8WqC{C}3J#JTeI-_^$BMhkpn^<^(3VB~xWuyRf*pfW_i;#>36{FE7AB;#o{# z6X1}6*ZQ2!ll4$t<%VhdG>Ju1rF5rrl$2FoY#p|LfBzkx3BY;f(4>u+LMMpzn$xWN zsYc1;B&(FvptQ|Q7~?1aBRpWTF|gu+@D66x`Q>FH_x*M7U%HEofi3#NOK*DVKP#ot zA3}^6Prr!uS~oXp?jVIF3OI4|sGOC36t#H0ZCtxi_x|*rbF-cpD2SL;jd=mrVIGW* z;A>{Kd4{=W<FK@`#oc0v{shfz+UlhNr<^8wS1oqg|)9)t&^n zSOb>%%x!s~L5njHPr8VZ<8FdOOwDl1cmj3+jFMXiFsw3QG0T4?nW<*$q32qG;LWdf z;$Nn2cU=%XreoKw_-gga@8x5qw}L5!@@gyd_%krF0*4OZyhHiOnCDTp0B#6yEqU0< zD6^H@jzWrE%by67{K#&$U!lD2Kl~Lv^+x#j)U4xy>sea9 zRJ+=-x^kAUgX^c7dFR$G{~xrM5uEqG4NWyU^>I-Kk_M#As6JAai!5UyBux2|lEtKF zJG&nP)WRhnxRV|;6{qvw#tDlsb|yN1J9O7r(VG_I|L${^e*{_!@JeJ3EVAT6s9+aW z(e?Kp(_eS{bN)F6ZudlZAA;eIg)&ai)ad@swdLH|dt)_jXG_AtLk8S2>Ll=+6n@%o z*!S<)zfyEw2#oUFJ3F>A+kGM(Dnt|9y|8_BvgnD{I1!v7pFlqo#dVa@L24FysvJ(+ z!`RFQ$JrrSpYJ0A3|8F>h+n-=`s_b1zAB4oTCmB-hJ`pCI@=j5IyotV69WRtTkSue z75&ZT>?UIWsdMG10#kT+=y#)5%3eE*v%JyrNT&1b7&4_mQL;93y7$OqUEN3nE8^| z>i?SB&<~QA%J+fA1sL~w1pzI6eXLaRXu>zA}o_fEB zB50FO^H^@Zs{J&yvRfjo=e{k`)0yGVMk3K5!I~lB?d$8g+%_f<7qui$m&DNhYc)DH zv5_}JFc2krIwcAnhljIs$=9#*P`_J99l!zMoyG*SfKY&d#RDo0K<^@__;+Bm0WyOj z4AjXhczEe`2*OKf&&MDzUYz9b1A}$WT3maT9KK{!ri_^IXtG8g9i2zi)DdD_=jH81 zPaljz&ZAyieJCxjaWpyjqtpkQSy9K?v*4FEH@mgH&bu8to7b*Y?$N}afzoc^qhE>% z_x3IndY_OGTY&6P&>V0X5NX{SYHCr@(dtj0KmmmLQqX6S=uxZn?|B?&OS-zoMbUmu zT+{oz0oHy@0s@q=kobg1Ndp=Txm_xC6H$HLJzK?lr;(uvS80iI7mFPD<$HcmN|C+l z?&^Yu9s1(Xgaq)U22#Nmmk5HiD$JJ@Z-SS&hU54*m;0b3)XbL z>VtN0yuqXrCa|)-TGk$?2XofdC%fn$dLGPxyJD=uCCnFm>d+PE8#D$jFE8ikb0^HL zI3B&cfc?#jwq^?HpLBf2C2=h&JFcgR!jFj#b2xP9<|G~tAqzXZ73>HZyEZupp^f@T z3M#6soE(_d$s1cM9$H!CyjPF5lPBCNqT**@H#!YH$eQWK7s10g|BCKg`>V$E++2BZ z?X0&wl9pEF3ycLFQZt)006etx#Fus)_JD3IK#OcLp#b*PLAKV=hzScT06*Z_VeT1v zFcUbRceI}5I2gPz{R6`} zdb-JH9Ev;`N8vSChYMhk304qNC)%@jbfLy1iK&G|SF((e0EZx?aVmsf+TjVXgc&yn z38;;I!xAa)8c>l*iGRg>AkIyW3nc=&&<7;szD-Lzy49YQ@a4|VWTX2UU&W| zydCn7ocq!FKc?W;nX3|c7M2u4mrG7HJ(P8b2xHof0_*NTgb;ENU)m6&#l^ZQeW|!7 z_a{FE3CT_WB-ETTHcjZ*nzgCv^`zO^S!f{c!XX7~>(0*3vJ_}Q$yr&;;KuqxhVb(8 z=IhY$pq0^~qQEJb0?#ifkcWl~s5W?vjme7xV++PDs>Z;ar{`n|Hr+(Yaq~$_f3uKz ztqG2ME?3r_TJun}8*QDTM&ld#6la4koV87hxOVdRM2aocc3!v?sYE~!@<9BTtA`GW zqJm=et^Ca8$<@BKoYkD%lZ7O9-KH741$Mf!7R#s1ti&(Hm@!=yG#}x+elhK$3X?YS z^b&erWg9AY`SE3*#68-I(7CNPdY6Z(G4crqLNbL)DN4*LGPY_6wiFV+b0*B$c=dkc zK&l*c%*a1}+}_a<*=z`L1B&pM^UmNc0)IT>iHZs}zYU_B1qaa-Tbe9teATP(=7LJK7?3R+x4T2|>GM zukPV|04@x^7slc_ap5n;0KZ=W^OeKtm&0Xdzy^wqOTG@iBmYI`H$FZvstUuqrDDzL z6t|6J!Pp8@HUKVw!jHZCBGu_E2%LH_5SQGkuBOHqBz-l=qH4`-!O6lYiEiLN5~G$3 zv-!%^>+|J`rQrXQLa0aX49RU*GTpti`1SR6Q7vgh-X;Sz{7W*4CivZ)OSW9BhZL_V zYA8&q`@1YdvT0dzd&=H>0x=JogPHf*pkTxl)Z2zW*NBiwQA)2r=gs{*VC{H}JLPOg z>CF@FMq8_5t!!2ELd}Va)(IPvLe1hKGza_K*cgTYOJODz{PtJP*P`2vGJ7bmU3=91 zz1a|^r8Ki0LCgbA5=pHd*<)6yPJJGeE%G@Sj^P@ZTGotd5n^>>4}L)BFSh;p@WZbU zAHIF~@QXmlS1!4SNkt|?Gvx{M9m>F8iE}O;b=hubXS1_JUy$Nzlpb@NnLUfJc3E1* z9e?@-gX8@TfWnW#I3_JU08!pLQwDsuWFV!Af&$$r*(H%_>zFZ7myups|fdI@py zI3WFp2lEJTNLmbjPtVKSC_st4;HMf*Opn!&5>35A$%8h2!SL%PpC5aoNCh|=QEXbf zFoSb4CwdmrYzR4H9CFM)3@7U~vMxi(ft&$9P(SR;wE}4r3Q$F__%~UGt)raPZECj> z#kSkdVL_AXE<{P^N(io9e^b`9V1K@*-jpap<|g8I-*2^WRRp3mfI#ePlqEj%jxMX5 z32`C857z_$pPv6*o{B6QRZ!q-h*LtqkNkHlXcsfpU%2(0qnvd}QEoNr$ z&xJM{f{cXFFBkyMrwClLtM3#PkR&vS8hsvda^#O2KkAS_ejNF{d;9LK#G8<~T<6$? zIl-v01$*?oFniQxL`G&NR2T#(XXzy+(Q$7Q@4jGQVYy6HJJ0aBZ%LR&zOOq3UufN1 zCZ!B)e0ytSUSl46;N@u%6!1LWhmr7vIk58Xu8pm2IFrK6C?r}S(0$&$gAbYoEQ;2TLwP7|a2K-wy`;0x52%>Q#G!PluhIeYf0rt?}mJ-Wtb~ zb+ybM*q5V)v_x>fU4zU_P3^HU*-%j-)aeNx>!#Z-;2481N8Y#r*M%N$0UaAAPVlMt z*GJvfbP9~{+yYA-^yGzienVUPX5lCBDmm%t*ImAX*9R5LC(j-QLz1w;pUTPv7#SI1 zNk1#pH#YL|@_O!#I6*aq3^EQF1ZH==z)A=LJqUm>9S0skxC%s5M~CNPdYb3SlAfEW ziBtcIBlNa?OXa7d_vTgK`02k<;DF(9_NYgn6=W;Sk){U|N3@80*{V~Nwm8@AAAFFQ zu*-VTTrtl5ymj}3(pbbK4F7Ri^nVKt4TUuX6m~bh18O`JE?6cIeYUr^LHht!0{tru zs?SDO9AVBWxs%DF! zOe_KAp`o$yg12Tiq(sE0?gh9=U~&=ONlfJxAuJg(?q5`)W5*VF82<6&VFZOzfXWT%0>>o)YiP3_u~)TJRo?$ipnllPAAn5I;XZAL0Ep8su5nN6W$Q3vj9i%bl$E3Tg!6*}1qj zyw3K#Dz8Z^fxyPDkw1;5WPu8S0m@2nDnhM|nJR%(57ZFMwS%EYE}C-!9EuO+<@LbK z5B|$_fLfIxxquS2`~Y8=$6@hFC{6;u?PT@YiS^ovlOAY=lF7B=oQp%8gzpI!ZyE~N z^wzTms$M{(GIS5TD)^=0Fh08X>j6HL5S3xq6|i!PI@kC(8?`L; z>un$9<>eV;VF2cXCH#m(rwjvORG^X8ExkMtrBHhYS|SMgl!0&O4nW0#dN#l530?t6 zgEa2zwLovdq=N1KV2E00*JN7%Z_DBlRc&oqf6TR^;x#CUH{&5JA64PP46Tn)GdQ=J znjWrMqLa>VW%&hrfp>Kw@$uB_9LMnME`%uF9CFHH+<4=9q0yE-3bHtJLF$Ldib@wD z6iY-)Lgpg}5A>Y9_ZL<$z@+spHDvS2ebS98K0G``o5sL90Q1eGD^PL%Hjwi?EZoy**zWy<%hzMfpYmXU-52zPL^x59 zkAc!%T3m!Yf~YBv)n?z*lDu$TTpvk({r9z|^R;zdZ++grJMUe$%D<6FG_GRH{SEya zGQjTx514;5G&Zh2JzRon1dgKFuZqc#?u#M&!f$^#e@{-X11uT*K`dY=A6fGR^Z0jI zRxap!V0sC`Y1}~-+z3vkt+v}J8>+pv|BJIX0mpJ}yMS*~M2So#WJ;8zLS~YwLP(N~ zMI;HCLXn{|WDFr>R#GIHGF6fk2@S@IGGz#n`Cqr*_xQg3ec$^Z|M5S^vD>@7caM9x zuJbz2b*{BeoDn#xha>p*FHL1D-Qbd$fWQ{4gE`PnNm2)*2aoC|q$)GrL6rW&(XS(}<*4&a{{7bYILA%`47<2D6!iL*utBxBdJ5J4VdFjsS1iwyAQN!%CS+MIj@7fmtQz8dtmf zb*J5-(W$a#qG17=SqDnAWuu=)9n2iEJ;A)mrf}c21N`UHN*7QIq9c9rN4yOhW#Ay= z0cISCX5^N&65jx2%+~07C`U^}iPS`jhDS+_MPvMlZ%O?iK*{S=N_$VfxQ@314cM+V z(FqCL-q6Lqt5u-#9XAf3U+Qi~a+8(=O5Wn1-f)lsV3CvFv*pKwpq4>V@c2)44dK(>)oHLK$}~;Nh)8o9Ek`n!W`j2%XAhs#AT!@z_)uYG$~kZMF9}5wB!Nz zgNEMsXdvNwDEEWnw$4W!U3v^<0_LOdP>!Z3J<_)=(MlOW?mBQpi=5NMal zwjYL<4HBwlsI1x9*djAyz32a!Hb^Ugws}+Jbm8pq!zxIoi|ef>y6&}n{7!16@gJa# zrCYmJ0cQ!Ki{L2q8NWV<(FC@BD;6Fe#GLHgrePdPTNvTkl>b z%W!KYmdE}1L|;~7Gk))jlJ_4+{hA)R_S(fz$cs-FkdZL;8V~25)1f^R%pdL0a)2&k z^L@kZr8)!n4+-E9BVT}87aRHH$&=v2+rVDNz`#XY@&#h&)WT%bRzbmt)!XHp#y%JJ z&!Y2)?F6|d%0fBhBg1C<#L#)GtTgKk*6r~lle+L;>Bin)!be}Xh8hrGE-npJg{y>X z(+VM#2Hg{dPkzo~#Z0%{*$<-ddBTUC9ZmVE?{VhnD^5ILr^ISnEBfm7YffCd($cSW z#Jl0&5QC~XgCbhRR+gmXlWek#f<}3Ljmq`$uEQ{fd3#!*=lQE+n|l;5v(z9|A^;K* zpwPs|{&11KR6I20I{O-NrJ(_iW~goh0|UQ}AH}O3ZKiQ6uXy^@8+!~rJitxoN5m(* z!GCVEQ@FfPBE4{-dzphSmFNAtcf7`1x%paK47RbU>EUqf^Q--ud$)VI`jP!!Yzfot z&01}na`N)DQ*~{N+RwgLnmcM{#>2)YiLUPM$s`k^e;D)>q?k<#Gq>^WSYuS{fQ@@KH@D#8@axM{o}~FveQOtXh$XnwNKz}e_nPM7e?cftgtGPo zJU}3vM4^E*djy162lGnrStw;_167()7(sRsTznHePeUUkn38PMnm2_QzXjBCY`dY~ zbI4oV(apkjDfQ$WYPADtFm}mjU(UK}RdJP^x=6t@?E?~l`V>UmYq6r^9kvOhufxB7 zyrCt_BsPNT$`j!e6zhI8Vn7dyVz`a2{6fm|f(;b;*hxlD?Bi#CP&YgRV#K_|{g6lY z&hHb`r|zN@^x}&dyBw-6Q0HW3x-d1!dROR2`O)l$4RJH^f)`JA?+mbdzZmxQH}3NM zkH(}EW@e)m5e6Ev6^ae#w{7GLU@B{y)m~Z^@cipQb5Aex1lXJ9lOwxOWVV1dfMjqd zql>cexhiz02|#AZVgz>}Pg3xl%6Z2^EI}kN+ufaS>HluPYorTtw|;HnTXi1Fg^^ML zvV^Phsd6m7Lw=M?hRZjn>c2op(sb}fN!WMwv%OitNt)8GOKCRzSWx&(I{Zrh^efkV zF}M@Ldh7`bU(owJcT&KU?rDf=iOB<;!t~1me&}yw4+nE@5flyh9HaM&>sCiZS1 zCuzV-FXAUJv)`8xKP%cGCTeq5K{?HUJLlEv$Cd^5Xhf9<)-lM0MK{#erG!b**6VVh za>r{$^aI@_RT%pfa8BDM=)kaj=oCbP>DR8^vVFsC=wymMnuUah3U2Y`X1vxDM1>=L z&AN3^$s>k&_TJe0!qR6RY=t$eSM$X=Mb6SyURqEzgxXeBHK6t+U%2(|c<+_%Ba8dm ziS7<5pUQ2E`bCmSRhXQ8^faC>jk`fdv`wN(!d?6=i>B%Dkm3@22eI27>&3k zWYx#`aaUw6R+`ehZ$A6}(EFY! zY2ascQNMM#cm6@_m^ikY`DooygpKs-+nE9m0x<~hW+|tI>>Z5LQyGC?NeM*xy z?9ND+Hl&_y$@!3@5z0kD$Ty|zkOqchn9KIyz|Te_*JkMMlTkH6XhAYZgeAwZhwz}l z&R#5^!BJC%^dF@j4je?Yh3`9kK0iLgLP&Fk^(T9Y2?(6Rroiq`@t&wpR`7bYa~dg< z7YZ@jwVaRL$GTCmfh4;8E8K@m!dBPF=o7Le()DPinupU7l*%Y!sA3LU7Z{CJEiZxB z)uZ^Va6Oldb03l_*gn3&dDfI9M@v+maQ*JOdPEh@1OTbsetyz}x=l}yf`mA-gyFr&j@xb!4nb`=Nuy=W3TsyuyU(|@Zc4+g~%yhccM8myG^Xq#aN{8)9 ze2Z6`sULKTjwYeY;XJGr8orb1{XzY&?K3-eEM6X!*ya$`=SKF^;k|Hi;g3^d-l4OC z-HwOle+7)uN_~p8^hU}A(cdp*@P8Ea${g&9WMPhQJLCGPBw$c|!aHPj-RHt8Msr>i zaLac5eWL-wl2)&nobnqs&AV<_uTOkFlXFn>{3d%nuI=aFf2A~ zUQYFHn>Z?=eJwC>^`!@A?xV$fO!t04fnI0pa}ZX|;klp|!X89bd>^Q$Hv|foKSt8s zspIj|Li4~>M5hmN^%D3rP(;^K1k6Q1!{XF(6lFPZPvVYY?!%oM1ywV{Q}Aro&Yqbr zQ<{I@^KipeTs|KkpKOv2*M4C~c$l6#C7`C45s+Y z)o3sm@G6V%*{}x2Y=E=5-|9vh!a8aH`WkNTj?Ch zWnh|cLKaFy94)}4?i#GO3CBSfYmHC>v6O6*;N&6%vZk^o%%ALPs5rL;VFEj<6IB%`6=*$Q^w?E^SPQy*)d5esdshB^2Nk!OE zQ!y;-Ocae!fUQQnVp_P`fp3S?{8j1vL_PCPZLzv?CgJq)>8#h3EL?TuAAB9N9qS^! zIj7AI%+G%4@lZ_zT5uv#dEcSp0dyL!wNZ0pjLIl`@_@f9ACt;J>~w^+QJAakqwSQ$ z>zg||_8%<1YBm}5`Qw$W!LQG+rN9poNEd=R3Fw#5s^s)Xisrkk8_^xGn!D4aR?iSO zfOCj9#BA7T^_bY#p2S!y%g+fSD|{NeA<4C=pF+_59N;al{#0}Z7u{RGkoJNfX8+927w~RvU;hU3LGR0=s@qx{t-|zM@;76-|LBRo_ZNGLdz%C0 zs{+Q~+SHqFyo4tPp8XmwY2EA=(g?52WiKmmBdx1u!)cZii{&uMGx zbKOr%i;4grO3KNd5Q+xM3JIS0n#pRabvXw2G$CpjRn;P3A{@TSYYj^h@FLZ7NphvwT7u*h|r73F~e6Po`9?t7s%{q4Dka$7hU zLD>-GLHrwZ4-9j^OY7trf*W)SDvlJNrP6vUPNmCFkp((_QAV$atXd!W0FuhhWm&)e zRTs)6IKT8PGBnX5Z^Ev2$?LNc*=o*R#ByopKhDN~=|+`H$7Yn~|9iKGu2NXjErM>}VRa-DjnexnLamQ~HQv%gRWv2{MD8C+ z)KpiF2`DWBglNOuxvhu`w=G;+_mPVYy@%+qRkKFFWh)%1Y?jo)JOOWpvcAwJSAMk+Wh?NnOrF5eNp%$R z!P8Bazo>7!Yr~ptF~OZ523`6NSEE4=mj{OtCZ_ zjukNb-BB91Qo@#+4EGq3;Pu7)E*GAMu2IR+xK2+Um$LI(m`})lI=)sG=`bATpn!ks z`SWvU3fnb`Cs$(^s$QLX#!903%OUbV%Joe&@Hnth$+k}@r{uOBJMvb*Q{*I+)mY$~ zYP>hpTiV-Si-#KLLBJ=lsK65*v6~&-f>17*sH{Plj^Y98`CwgNw>ZwelWSi^y}guN zl1^}%;}e#$qA#IjHOjQbZ)dCtwTTELUw|ivNTY=~Cws*c&GfeG&j})5@^Qv+ym{or zgtLE*`1x-6c&*dB>$=sSN2YPrfht#yTevjTWUNsU9>@9VA%8G)x0|CV z0aIK(V+y=`x>U0l;-PS5tG8m{*x4F5AiZwusM8J{vgC2t)A1K7SpK-~3yQalXFJvO zz;L$NaMk)V0C#$B#o0a<=TkU9`d-2r=G9u{r4SOwbP9RTth`75`V!!{5fMyDI$Ie9 zSf#;BLZWkvL6m7`|3Fs2m_dN{zHqyy5SMNAFbSig2=2h$ls&u z#|1gMoE_bGaQm8Ne3l-RrCtS7{1#U%uzJ;i3-?O*61_=dIy8`=Ie5;0 zhbO}gl){qOvLr3u9=tAj9p;Cp>@NF(NEXenaA_r*-7CRx zTy5VYGK=^d&mFgG)UO*`mA>z;0bt#)whs2}?P`f0(Vt3HNlZ%K**dLbsg~dj8 zh_~WgzM9khrw26r-R_%+acH+ZbNP~Rk24`lBsl8R6S-4?WP4sl4!sTM($4d{U(F*B zuhDLyTE%$%a40RYcert-oe#UuZfZW4$?~kG%7>%g{|=;NCOjy-5v9f!Mnc)9W7P@P zy4Q&=tV;eXNk9Em^izYFF^O<7ZUdhxOy$CCsxOpaYT-q$S_>@ z_s?%}+CSfvkSZ~OHko3kFv!$>eHg3EvPsP16a-W2RAR9-M^yP)f-nz{q zV#&?#B36J;_4Hq8^0O72Ndl=tq;Sg3KsOr|4Gb0HJVgIql0(Z56J0Rah^3<>@w&u!>? zotEGPK(a#1LTm!Qy8_A9PTdqdMUdV33dU$ld%K?$T ze>MfST*NbzFFKoOpi{)pBBi!~%w1fjVBj6jE%yN&bo4AC7es!7Qxiu63M<2hAHz8% z=?UpD2AHorvTh*RQI^lB16B4#JpuV<@-3wo=3pRa2F;Lc>!+usAq&6*D8mncLFxF6 z*8i22X18cP`fRZX=-n8kw4EM>T@F_4TV#1LxK)Ti{=~XAKnr+pYT7ui<1$_#!nXY|oxO zbsS}3loGqC-jO5wr$4l}dk((eLISd$6+8#byczXARZ_`J09g zdpFNUYaE`CSF-rxE0@)?%k7&{sY>HT=^oX5!?V*#%h1uO?dX1NJi_hX$-HsnY66r4 z()%QA=${E~wA=Jhv3`(utab%$?DMXJgr5S!SJ>LHpG>$QG62gHELKhq+V+z+OcgI??DLT=!^ zFt|^fPX02lwc#po3&DFWgPQ9hg#Zq54syM-NB)K{zsQu$vCJw1a}ks^kuNo!i|?kc z{?`u&Khv#z(?f~fIxj6G-kgv){ECvwx9fCMSNw2WMN+eoqKD%ZaT=ps$#py?ycPPl z)ze{zg-J2C5}-_7e%jd zZ@Ielh9-Y43sK!_^|~Y4ec_eU-eFKnmS)`uLj6>!%a3Dy5I4+pUN{VQUsKaAWZC2( z0bHMXBv3Z2) zAE?;&tRYRsVy!PGV;z73NV3gX=>x%JdHXw>iOdFpdTbz@&8*^r%=Y4(uT1}*U%tK4 zxoxkVOblFF|A_Pkn)k{(G+pVUogVwt^hi{@B}3<#>seb{qar&t0+y)}n^cb<-$;;#ug>=V?IC-@RErf8-bk)-3@+VVSRkBR4%+Ai8T%=bwFGqWIcokxWm$*G_wQQ zHABh-fn6=opn~CFD}aK;qbT-oGvJ(C7G>^y+e(G=2Zp{Bglx z^83)vO~ac+g7t-2jq{{5w>?ps?TbbLzz63DtVHhjy|4dQAdk5ty+s+Zd$+)+Pd%EW zW_K$nSCV=jfj2Zf8tMTTCHq(KzklVWlS#&|iP?`SA8jRxFHT-z+=?GM-*uio zhYLlh^a)1oM_$|NKJFNu;s4au_`)9QjA?=<9#+z&XYF>cq&WFOFP;RbqV+*m-jMtV zMI%$e$+ylPq?qr{cO{2x;^cD~nkjrcMjDlF^}O#))6eY`+p7%e(jD z3c@|Ua(>;=4WF!T;?koelTI^%n}kGIXaB7N3OU14y351dLYT1)BlC#K$tYSkK& zG9;VyZG%cq1NwxZC7nEVs@`4j?+c(iw4XPC@=k?vzAi_aOazAzieE|sW{!HT`zJT^ zyKisU9==(T5%@m%%cj@E9!GDi=~ANHv}RS|=gyen&*;Ey2H6FE|3Oq;(=dpCaJ=xP zT~RPq&S6b>xjpr8f|bE@and~=BnmeAT7;S7v0J!df-r}!JC!nM7-%uiqrZlsOpS75 zu$n0~sf1P^OwkVeC*-`Hj^cHMkk+knkbP9u)eQ{{V4eLGCJE4#lakU-hrOS_0@3zC z7Zq(LlS}lxaSdQKjNsr|z2jqFl6&`OoG{Sey||Kc7UD(+2S|}24#p!vRMFk}jI1;W zO@3+7w8cjn7Z}LEEgZ4oYU&wJt?3Q^&B~*fOXm&|=uQgOXRd3DPJSY_i8@UppvD5l zO-ae`eocC5cmZ=M=P-cr@C3&kY%I`;C8r29Yiw?_l|XX7PN8+_EG?M5B*_^B=UEu1 zV`{~FT-_|mUBc7(IOq~CKcNYSV7L{7ehOw4jQr+c?|56uXX$QsvgdbDhI|%XE6jYr zJd4t1M`J*tPu32 zBcS52l-6g(@m>hyvEq)TTem#wxZMFK7Jhz;G#)#V*r0UT+t`@1X%dMCT6=K22N5kE z1fHfzxIguUGYmxw2Xmquxo;l@dG`MG?D{2tzVNfE0xsQXOsGuCTtuG3 zM|unC>O;Vy;wea6=yFo|;uUMBC~_0H>@h|fQdR>;;)~neG>*Nm0c!!$hu?FfN-G8I zJJ)E2k7hyt8QsWLgW{D4P=9J+(A4( z-aaw?!-*@~U>m^Vc;@@fXEbecYhOEY)pIj=m3&CgG0t;1caE)?QrSktf*2Yp@u-JqJ_x#Q>L8Is=QsMs*0V-6Z#OjElZ5n)ke zybQmz7cXCev6N?2;Fks4a!38?E0(uN8v$fKNHRbJ7n0iyy@Z|~GcoXc4v!hbppb)b zW1JW=2chj^l-0fzRA9*|0V(_{;(8=|knDS*zo#8!0sFM*dThm}N$$nU?!oL6{|ChL z|602IFS!M9{&#w`B*qqe>btfqr@<+;DAuow?KafK3C3p<424-$e1guUdXZ30jj~Xj zb$55NS69WQz5QQr9?aCq78vBi3IX9y*i@#{+wNYF~h!Jx+DptZJBRg&}6K3#%c=hR+go2L{5dc)FCnPz*vM zvEW^obC@)U@4htC1@_rli3Du!rj@f7Lk)Z&2tzXh{pJ^m;5lN$4!V>*e*E~Onb%u; zsb#n@l06o~h>%_GJ*&U_Q>pQD|8$XcEt@v(HdXx)hwO<&xA=|bTDtzf)Jr($g^6~K zkn#k&m+zVA_*jk3q_?ncqah?d>`j*UTu(@Ft~JSflipHn6W4zK9MkpZDB8M2#GJrk z2CEw_8E6mScf_}MFEj*j1BpEJhXUqsXGqhq#G5xIVChNRIn#c+@NSzOXu)$}Z5TT1 zQ2!zX@gl(}@2kdC;AJW0Y|1FLV zOfWm#G6fo2!z4l~X&a8`gh_&g1qSkv&mFT6H$`!vZ<;Tz?E%yTF4>%=JK`E_(Dldr zh%8@8E%#BbU~jxZU*3&Rzh{ayWS~ZW7w3Ba#dxh)*=;eMT{B&Z$^BSGCSqIl2;MCM zM78Bu{=G3t%j2jmY5!CO0E8Ly=-Wp2E0Xs-ePL7XnpI96T3ISQ5^u_Ain(Uz> z6ulN5PZ5zpECtVsB~XSuG4m`?RGfee48sl0kR5~n5UIf<Z<6l#xMTUaIP~=C@k*O@Cdyb}<=C{27Iz zynwXw86nWTS{|D{9J96DKKQu?XHz18L9}kFC%sV;A9AW%{5KZ>;FYP^N2Ea)oSj!H z+VbyzLvsg>XpVcHQ^ z=aa{e-`tjIu@Hx=o}tHeP*YvV4f1s2HDo*TJWW6xUp*n9=!I=oKysJhE(W7J&9*lW zT5D_;UdbQ3uOPY5bw@|X@~dUvgQ7P2TQulN5RvuPRhhF$u-uB%chKdk5hNl@ST4Gu=$))ny@XG+M3=)tlzl(i?G5qOJ{SrCjCfw?G+Q2W}ad z#ZBeD>K$gBeoniU!cD5M+dxm>xaKOPgHAvDHD!%JOl2auh$ZzYkRqU5FgD)Ch(0Mw z%?E_mhJAE2GEsDltJm_mpEKMdle^H~J+32oaih$Po8j5&k zKm({-us4d@r^{Hti@4Kf2XO?bvrd`PD>{ro`7 zW0ll#2aYX%s2bfLC!+d6nF20t$3t@^r!{=7G^m%54Fb%7B!g?Eo*r^_juvs6E?Ulats!i1~H-_wksU|Ht3~Q68JF1+0v$M`&y?xH5w)%WBl)0@V zEdktav~^BA;r+(p)!aa?;BW~L1JqcEUQ1fpR7^8k23M`+g!k#u6DPd7+ODAWswH%x zyi2~xeTu~^JH;Ug+ROieWB#iF^>4D>Kl6w?W9r}2E^YxGbfx`cy#mJ4Nh6;9}?+emt5TY=a2rY^R&`_ z`rp5-)-w@h)PN&`F?}dT z)6bYEGV=8`jJUz%{M*#UmE{nyqGEb5%~_*zhVDMuzoBp~9oqdzltm*#V0^iaZZuvs z9}_RpwEuVeW5Ccio)cSk)>QOC|H>I};1PEIjKh^&j-dH1f`0XEjw|OO9bX@V4OxBe z*QAbq&m=8Cu3kUZ4S15@Xr%%lRdC&E_*}Th4`eNHdvg@8GT}`#UZd)7B)8ar&`Ou7 zcwGMQY3kuA+4m=Row&2Lg-j_7VBq8;&wb0_49D(5!LwZB0$|s|St$7Wb>5I#nIxTw z5;{KS;51}IfH2VoftNbQ18lY=?-=q0vO4Qhai-u*y4uJ6Q%a7|Wn~**0VuYHcTf@N zr;XY7@rtS*k6k=2&GhW~a|o|M-$mGUTHGE`2AKxrbReL^_6csZN4eC=+bv^WNHIYF zha-|JK%D#2htvK%w?eNXue{%KQV!2{@1`#sYam8Oc@C5hByiM@HQJdU2KGOvxbybp z>D!DXK8!X1rt@WGXG4OJnVPz%R_k~2fL-dcC0speO_Wi)+t91&uuOlRFa75-bU zG|uXd@FYWC4P*N&ELWH(V#U3!hHm|$`gWCWhihA0FhiK3iF9up0|EOP8K9GpURi&} zh%!Cal`oIe!!>=A!dLEo#DDO0&P|$!qJ-~-!2SAt66 z^#Emcns8pF!pPa;&mzJ6Hlp2Kp0@W%&=;jN2s>-^dd`W%bZ9KJVro&n0NmM%VU@_l2S0UiiOE8Lw<%egkWDHg9C~#d;8Gf zV3G|Lm=SsS0dBN;f6v2=@J+=hSsm|}anW$)ifK^P-D}XRE*NtDuYdJ*$cVzXbF5uJ zw1M7+wG#B9r!otSG(^5=haR15$AzAMv54x808|2Uea{4rTGp9T6L0%p<#~7hcCI(6 z>GjQTmwD{D)gL2b&LpG>$3I~x=*av z;!f}857@>ux5opUYE7D^PE<{KLZ0d@{bJbMHS+CgIe21TXBK$XRX$p_T}Eajsgiad zX|HwaL}GyBUK%3Z@$qqB0$d87tRx=~?E4WH*_|dO%2FA^cDO$*Qz~Dm_~4badrcvL zBwz$kR66A`Jm5O?G%Min)-`W43A!s!=&BoaUoF3Bn>Z6;oZZ%&DgeL3lk z)&#^$&|#zUfaKL7Ne6NSQc;wUz**Jw0_kfzL==cmwI^qxu-mW!fYAZ6nZ&>Z82%d056nK9-TQO zLac$b5b8Y$&oJ!eDc%lt=x6)xqO-@)9fScC`lk322(Z<|c^1)2M|dZ0$+~V+)9XI& zF%kUJ%?mf?<~EH*ylP3k7c^1$RbpWF>a}Yn6W_uEw(7t{128I+M^*bVcZeEm!A)->F<4O9HD6JX*!YrJvm@GzI zsAgv^ft!|v-4?i8Was?Rp_qz{^f|{O1jKioU6$2&9X^*N<&h`BsSOctNl}A~EIEzw zz&(f`5zt}V=ZSG708|BY8z#L0i9z5K4u=sE2&50>hxH|%D2SJs3XoJ|!8^YZsXv?% zpeiiDq(Kt0lK*U&s_P9MB--;xPTw{)_2gSZJ&G3i^2{0n;$>_CB|HgWlE24#%ro_Y z4P<9z+=qr9(+9w{Mo~wIqvHk2J)o13uJRcyjJSHM%PBz+pEqID2NKtmOVh_OlM-uZ zX%H$b>Ye3@)gfeq-0jnu*rre`_jY=nxLkiZ?=#;)j>mzINLcUH zH5;8Fs5D<3Iz|>BDIVWe6B}R)1j@n_lpYwuEh{2&2HrGQlO-i3`0ZR=)dHytIw!#y z*af||C5m#mZ%*uKl4rsALG0s%EEKIpn1mu~lz#^Ya`xG(FRKXyyBjk@j_X&wSgUup z!-sd~bb(R8=ElEe>viJxHr@cgb ze;OR}iKU9nmzTec*MPTB4@!u9GF1Ct_o=1tYsd5jlF`;}wL35%fKIOTN~n4- zk}X798UipY@|(UG5XAK>GVa|A7A^KbL;#oL^LOV0Q7@c@h>Ot*041aQX8|mL;mBvo zNFY9ZDn6g`_H?hb1Lz_EWW4O{?;GbSI(?%iAY-hXpAS`h{CxSW`DHmdF2)P9YkrV}4>84AlV(G5tUYj`!!$VF?wr?3shQbxWKjH=CGZmAK za_GlgOkT&pAh7W;!Sq@h=_ZL_v+FlKTZ?SwW;O^`&+HFIasGh%nYUQY#}nGZmy-+k zj~9ZSPyh_xZ1)PzDhP&-ajQgozCCxTxsjvIP?lk0R81fZqs0y9MPIR-DSkjZ8{xL^9`N(toIwj6Vnt`iIOIWs%E zki*EM%{~jeVA_^3gp&ypo2E(ibSHSRaOYW@AiQvJz*_)(=0~{*-$3=y;!Vo|oDmhw zWJ->ufy#~)5<+O7mV*-pBRDekR}(l$puxd%gP2;D3PwK=4M1Uor5JI%dd>5kwjs<% zZEoN@a^%1%;8)^3ZV0O?@s#G5y)a`OMk-sOtmWjy!z(CQPN|p=3;EX0LtK7x?DhK) z7dEwB^qI$6`5z+h3I}5+6 ze>Z$z^f8!MCw#(W$jU?4>)A&1m<=tr_!W@FcF`v1Raq=G=Sqw)k?BTpaWRZswy%>2 zF?+b&v%Ity6NLaRp?Rm1AaNI$4aqOYW8Ic^;yGBPqkLh27cLJu3SbG59b z1SiC}$5XU!@G7Sr)*jN*;)0`)MB$v}6EWGqOP-@j%Y8p6VG%81BFzV$&+KRvVC zDJ%>HO+1D{<5WC&kiOn|2?f({jo!%L(2Ju_^zy|EUDhHvK3%=MW9H}QN%*R0!)yg& z8vu2fbpeeoeM%E%B6ULSs(%;1?!S0ZraqfW+1vZ+!-r#tPTN`OF=+ea{o}BPR7BPU z4i|+orf;jM(M(dsByjcI{QXToy7#m8%ny#}<;0cnFM!P-$zFq9ZvEx4DtrN>kSljwT`K=fWCV@ z9W{~wUMBIwF+$OIpFH`{QnzP1$%uGW|K|97v+)(>JG#Q7V@=hUmaLpyT`|Ss_pw9! z!yh3Rbb_G^7@YUrz!Y)V|}A}|M=S+c;ykXc86vnZIVV^|n z6|bH~*omF|7UmXJz;AQZQ$2s5&6mm9lLfaVMLrExKK?*TMqE88uMk84?n&6ntN|#M z^Xn~%r=#PW`WdJxKgbkX+cX1;s;*Yn(5M4o>b6E9%Fo{)Lb^rKd=s%{vfGRlEG9N~ zdbCSUNht+)!+l^v>L!DOFavyc@zK2JEpcdn$|cU3>~hJE$CA);t9=2BGhEm=qg_rY z=5Cdw=WWh~#Pbo=fD>GS50xJ^h&Rvtm4C#=y~rjI;`P|8%5+6sXEUY!yOoVsC?iEw zxX`=&wk@^ai0YFCtgNh4xB#>%)0^|34=}TEbMJ_*M>_eOkswC~LB<0kJ$aso@Sj8y z`;#X}rg3veT%2q6u~!zSy&ezh98cG3oK{5Y6r zCc@lM>sNJf+t^KmHqOv4lb?2LvpAFVw!~?wx|(k!;W9g!TpGW;Mx%Xnd{YtcX1ZU= zl&(E$Xb2ZFq&0{=-2F64-_VeI>2MM`)xpK~nw;9v?h?0|my$sSS&xfo30K$5wzjWC zbxjSQv~&r?+)MV{E8vur+c5GN0F4f)ae%-tzDM|T;H`DuFMYvW{+|MiQ2QfHFV8Wvgh{C zniCQAR&dA0P$U%bB+$+mFjS6e1h_qHKDfBKU1d!#UL=_XbvHKEjeazP#2v{<<>K@S zw>z@{gP`NqgQJe#O?X$LI8;}9J`-{4O)MUecH55)qMqp+iETx5lf{!eSZn)#Y5kZt zXZicc4Ec>7woo;a@{wt^6xRd%C2vC}4bZu6ZAF5KRxup)FnTbF@%%hrEAL$cK-SyY zL(q$ZJ7f?WLHJ+lIACDFsuB48G<*Q9 z;jw`Z2?a08Hk4NI)U|fElcQ8@>S%s)=R<^E`p29i`gmPowzzv|f5W)@k4(F#Tzk}D zHAx@RJ)3VweaepD3usS?E@aVF{v{lL|AFq|MCgSP&hdc_-?o_7-zTJY?!Tg2SKa#y zllu1UyJDPox(-*$=hB1@92hAYHdiRBo0`s}#f7HCWe9~~2(|$i3Y*OGyP1{COY<;{ zkNybPgDG0DV8++iu&TwJU7IOsd}E`idU}$IC<_A{ag_41YhG+qf9~3>g>5&QRb*bh z_Fy=tEf?S@v=6T`^Mbp;m{-R>@j;eD$+SY5!&u-GoZM)S? zo@Y!dc`)BTj47B(dpVhzQw?)bSDupK?0*wqh)M-6E#wp?)H@Jd;~;OgBPRkqxPM<_ z!y5Q-fron#-2imhg}Nc3#U8S;xxW}n+NL(ASvK^PHl>R`vZn3 z$Zn(SGd>QJ!>PdY01E_95c$|hcf~xS%gD!vDayQ`Fe)3lezE=MlfQjI>?WNyzzj!r zt-bl_{rjSFavdEViT10gsWHq4Juf+F>35gfBbv1qC+gNF`|iA{`9@tJW#^@5^^Hx< zFF%@<&P?Pv7a8-fUrdf&ODwNhw~Bc4kvG6NOj6*}ojvkQ*aB1H3X9KL1R1m@r>1Y0 z+lrYM(2`GyE>%Mtc%IoqcXxN2qVm#G3gy$Me*lWd}qloJT?zd z(kbpBSpdt0PtVJ19?%M$6U77tRrw>K%HO({TQ^f5=Vwh@Ta1&v@Qxic&=>5Jf{JPI z$@ zQsuXh8_M$<{A7n39B3lytt0mc%s6y4Fg~Wy=Ts4X!Jrwy3DC$zmb)>DB+Hhx?UYnE zmZtxWju{Ev5SYz0H$6fYa{$H*D>Lh~P|rlcTXfQUhQTmAcj%j&)lMb}%uX*s>UDGipcn8t{V2%)5}eqDfW zI$G8k=4N4GfoNiFy+y85!cb{mt21TvgNeE8-=D`?7aSz_UkQZb(*nE0{E@b>5Jhfl zT?D0gBW6~$=IGsbOQ@(=3|P&A3G>=+cX+UMa5`MVID((m3cy3j!6g6_!Tl4reti>G z0;dtE3K8Ds@eF6Z6-5qo4p5vyC`ZAwXHRr%LJ5+vl$4Z%nI~t?$_X*V95IVNk;=aM zj|xRfQ*Tg!x>sqZp^)TpQJSL(wb4?R8*h~i_Qila=I;NBoaUzhhk~x&YfT;xRI)=p-#g*V^>%pp<-#?fx|i1 zFps1+TJPRSK=}<{JxW4Nk3A%CYUAEUj0gEQ7r>ztape`)i3FH@x(>5n)Kr$LhurSP^c`iE#k5vT|~TQ5#nITVm6amQ{D9y%Dw`G|8nUZMabSV_seS4Prdp zXW#j@$Zt4*O8!pY$y9%p_Kyu0?GK-)MZUJa^s`9as*BfVOJuiYIu}IH zx;9N(2JH>dZHQFOH{uscJa@|zjE5H^hC_Ly6=j7dC5*b z$1EZ^pFmVJjWjjfIFCoxB?qw;MFf-qo>K$6&=Nq5qNSyUQC~6iPJkL9Ap+753}y*9 zB4&|%!xce11&ZhUvC$tt*jZR6U$7iTegbw|2noDhoan=DgPSNxvrA0$LdAu6S2^)| zJ8(A;SxQ_6^#LIdZO(^%GeSO^d`K^+YA7tgK>~Fd2rc#x=2F6ZhJ8=_4{Gnq@bsi; zeKBVG4E`(rD#lsOGQt_%j8YGtOgM;5(<2l<+^!$Gl8tm7rXK!1E*^3RjnTABlY@iY zC#@@_lMLNG`YjDlF<|GdTNe&w`V{+y)DIw;0wn;6!63IS?=A;Ax^%AM$oa5@gdW1p zr2-EPhi-Gwmr@*9n1}Fm2@vNi1_EP~xfc`QG4}TLqup!2VbPEW^=I_w#9?o;>(oo} z6L9OT6+J)(8})phMXD%H-8bwi!mO9Ukoo!H+JRU7pX-Nq??KMYx<2w+5*Hz;az)kX zm|V$&trw{H0uln{@9@QRZC{&OOD3#EDcp%}s*RyPyB_ZCii%5`>DXCSR6n^9RY~|$2;Y~nz;IRRW zP4OJM3&h~*;&g|KWrNL2iA4bv+F!qXsdgail6MNEFAr8K4-*rblb?3Ax*1>Yf)3Pm zkKbVJx4&hQoNG}6tvrz(F+AG~|E1C;Ovf5edv^f^LPu+L3EMO)(`A0vTo4CcSV%@3EH zarQTQ8E)9gF+mn-%`T2dkH%;TJzpuis*a)5K&;ARZ&TyG6&~J1c27tq;D>aUnpG7P z?Y6r)k!z{zvC@R9=GWR^XCaZXAvn>t?DoRRVcRDGGYYE7g1MJV8 zT`1sWX5Wje-bDZ^Y=rO@=L1Y;q&dBAd9i1?fGTG{On%`^xs#x~ zp)MdtM-Xd^kO0u%=9X4@H=9=d`HBE_(%;{X-%>p=!V_emB2`pm9GphZ1ThhxiCjs% zAa9T_{4B~u2iRIo&!s)?@d;6Oo~qHCXLl!}msxLh&!-U+FQ-^vxkVs&V)NqJYbDFi zA|=La$=DD2i!kdF2Cxbyo-8mDi`&zn8{y+;ux$~%VJJGqE&TvP;GY3`4f^x8y2$g8 z<6x0l01X#Y(?hF4EUrZlDM*{$#;(m`xg45YoO3_-v@Jg^baeSbx352h(uOvS$)!@* z(d|F}me_FPB}$AplgjD{l35>pbuH|Diwn`T2Asit`Ti^S z^~icE<2S5T=LxUt{q^Eo+3IInof-~rjes0p!vq3CS(x>Gw#hTA-M?nNDa>_?wJBtF z6gI}AF+e(TRI%l6xS?LQB)0=m8&2LqlYXdpp#abhQYB@=FmBAs$cS*ep?*qy1CX=2 zpFh8SQ)zn5N=MBfsfqcCqOmBRfgHvhlmu}NpR_doA7*rtwd6pj^XHdA(u*qph>QYp z)g_bp{P{5)mW4BCXmT%HS$)@_{eC!~#KPxnCv$g#=Z*mxD|B(odr~)ylc@`_EpOvYK*I(Gx^n8_n>Wcjjnz`F9Ew6h=pm5>BdZ#$C)nB9A9d5Ds^8eG)LmEC z4*|FpBrzATy3yzT3>*QbmoX_RNb|>vEA8m(L@g4q^)v;4A3Be80C%*N>|Gka8iJz; zlgh}|+t=!!qpdV?9Mdo#e#AB;##fJT+~uJ9j%DAwh0H$KB_rAlL@^rfYN>hSmS=ck z*=Ziv^A14z?_=s2jmVdw1W`NB&dRy~%512#%G)QH>j|KukP`wX1jRRY_VHO@zbh$K zp>^lBB8%6ZCq*zhf%k>{^4Rl14xAE?n9SD|ruH?~KDW>83fT0Le*SZ-)IvjWJ(kn< zu}FvkIO60~FFYp5{l?*(koO&Gg|OJ2=8X=IULtvFZvKS@{}bj!d{Z82!b5m8fE~1S zbTBvk$hH`4ek5Uuup5ty<0zj=N5?`?K*0Yqe{{X~rAzRPooGM%aM#C}OR6~jkx_uX za*f+oaph^{h%tMgKO?RGmQMbyQW9XN0RHk;h)bdonzQt22O0e55$vy!hPya*#GaRPzau#Ghs zC_QrgBpr8b0SJpob8~Wd3v%+e-TjfQn8aYF%St+$;%%ef&ke&o9D(7+Vjd__5DiGZ z&Eg_YQSG97lR>R zuA%U)J-I7hYf7ucE%x^9PQ&vz);VEiUO&qD%vSuFKm-X=HC9`Q8yq_Zx@1UgTE5=Y z&z1{s`gR@G@rY`qJbSjNKP=@$fqm_R&F(R*u^84CsPgN}t_0HEVekJ#*_(i4*|z)Q zH_Ff;Ns=j3l88hZOF~i#$rzcEIWiBKG9;Oj%2*PSDMW^lM9Gv4rHDkP5G5I6|8DR5 zu5bOn{q42)-?5I4_gj@b&vV`9b)LWJ-2Vj4D|!U?b_->$p8_$eX{1mWwG1>5Brh^# zqbrvTt;Q3)_w)#!$Ee&0**5ZcrXeH1`9Vj!Ll~U_EHK%ss-!jF^Nm<#i;npu_ zm*;PtcyQUv%pFrB*!@`58HAX(UT7C1X~uR1Z5xyY22Xc^t8Yh~f9g9l+c&539tl}b z_hs!w?}xn1hf==%-p{*MVPGY2lW;LW6<2oH2|)J44r}zu7?z;{V0`oK1Z|2JA7f}z zQj#LiP7#qRk01Qnftc&sqiuUDIS43}EL<+#g*pVmoQVf6#b@tmq&IMa4m%?w1M)y{ zL6|$CaN7fol2ajltSgva;<3y~?}CNNw<2qKAhhJ?|!iUsy0;8Ujb z`|v@(U?*d!z*WzoBsYPp`e-UW$|jJBy$op(GAe(<`F4uQ1>GYwAb8ftp)2^dJz51% zB2-iOg5zxlhXq?i>P_hO)I)W1Bt5%zC9-U z64;~_4v&jR03gE5{~Zcpc`gL=0`9qATUEY%#gW(Z*GRoLed_&;fmy1mvvWVzlxpl? z41HmmFVE$teMd=+{}f;otfYkPLpAMU>C@F&E!^!}zq`xE)N84$BY2`K|10mEOEL9| z8aFy7KfVb(x&O%jwek6Z z_P_eN^ZB~S;8YhFm~yX}|K)jcG3FD+r$+k0?SpRipQN4+IVkA`=?Wo81s~H1wxZ8^ zS~=QJj(V=;Zf6=$jzA{Pnjq~>)&Dol3$mUw8XBK5u{kEdP0Pzzd75C9#~XMwl@y7Cr*-AqW3#B{a%a+@zi1YTYT9lClwby+F7+XZKj9cEdX zR^^xm>I^2MK5hKMTlU*IB~NkZ)v{!7IT4u_b8+$x!6G=aW4rZrg{+`0VnJi=BX&)3 zWaxcKPl+QH;RBy8L=(}Qv6RH5NSBNl21)?eAq&f^2#SHPUoY|n9Ob6v2O5aM`sZjz zSl966GF5n!Nn#${Bx4-lZ(vg72#t9S8vbS|WCOI!bxO;dU zilIr-Tj8%#%2=yso9*u_i|%F)VNkGZFyH60c9eOaWMe~1n9Dm*>KoGZ&^W&pywR}&3mSK1grUcyY z=&hvqw+sypQ4xDb>iri>6VWn&ZqQBPH?q6VyNZT}bY^~I@yp8-DGxQlF#6L5(F{XF z`!P7ruNC^()nVvgQ}M)1IOX`hxX7l~A3;{$2kyuYw=r}sTtD7WqZ@bmPYn8cqV)Q=IFsXc%bM&skfmK;K9sDohTJ+I2%z?I*)L&TMxw|94 zT{gMa)?~6<`IS-?)>31v%gs&K$vRA%j{=0BWn^S011)p}pzRVQwxG0+qg+WgboK8r44K6pv!sgn{D zU)e;fyl7l}e))(4GU1(_pTd0wtwLct)el;`E7`nmXji!p2fqow|7`V6hE`KNrl$6v zN}Xs3ghk&Dw+r~Q3}7lg!~V3VqalBQR)#H&bW+63dGL_Zf^nMsI z`*~pXll|$pBX4;}P%{7>_(o+`QO9;NjunsI`N1 z+;ED(pv8uwu#7$HIz}Er5}{<(;d0zxbZmBKF%kwAv|a@tx2f32v*s54Op1OWm3FE8{n7?I~+vvIcz0a--q>K#ir)6;DaKkCNyJKtJFHA?gP_Om(4{sjA z=Ac5fKA@;YbRRtfv4F)6h}S}!iV}6d26E^sV9I#s&tcBDF7m{w0D6h#IX^ezU2z2z zhfxbLHmin3KbR@ZpM)}!C;)QHKf40;~}QB=482q7II_8chqR$%kaZ9l)E`O zPky=tyq3)J$E^T_7kC00b-QKD7Djlt)J~pUhOZmvm03vldtYwTWfEh~db79ngI&HP z?#FyxG)_S1$8H%Pp-qYKe~BA)FxF`IYQkThi!l_HtRv>rA0?TOkG0Ej8+`u`Ay72} zC~^*^Q_l{!9?sD=s~|^F4!?v1(rEhxO)zwlz?@@m-J~gttIJWd9Q&?qRiL+RtU0 z4W91qPtltJ#6uQ4!=+VdRPY(*>KBbdM}^epEY&pR&R;^RJP=xykm4d#m~GqcAa<;B zrqh5)3Dk=VGAYTmR`37Bk3bTigLRlyK9|5vU`(>L{e~qWBGU5+R^P4v*b;Jt0#C{- z>*RoiS4|wd8suS|xs_Avh7N8obQ?fLuoRJW25bzgZB(#jQbJ#@djI-{ zPOQIGzC1Oq^NE_Ua1;+X5VkK%J-!^SfTVQy`^Nn-^J5Qy?QkV zoXZFd{l=o8wigOY-0QSK&ru`Lb_48<+{%IIZali*`uec&tr*$PSfWJS#$FkieB`+# zfuTZ^Y?iN!o&pBz9AF&4EPSw}3u3*-%i;~_`yj!Ifozbzy)8>egb)xCGN+O3sqorD z+}F%h7sx&vvN79`caOyE{MF3=h%h~#F`EH)v){9;Q;1x>1+WC7vAq`uR9x3dRO7Mu z!}X{M^n3On@f^3 zjP&UVFvX*87J*B)1I3WyUWU2yUNSir@YZ4xicT{2fkVYI^qf-HK4sGSjZ& zj|sh(5xkTk@&A+07DK`5#^aZqt+Ce z4%cc;$&hqhXjsc|K0E1ZJP4pvcw+9}B?vOr#TR?(8ZBWmfx)D{;0wuE0Tfi^(SVf? zRS#xH!WirvC@M*mZh84<2y|(*_<>V^Bx(SqcnIrcwVWijlh{5SP@0*b`@ZScyqd#0 z@?r~Rhr=8tv*YAGfxj`_e^Kg}+|4>nap{Czxgv=f4a^?@$z-8u6__1fO$2go)lTli zm1u9YWb|q2(>Lt91YS2aJ^Q*ep@v>|)c{+xJft71n8Q|QZx5h&W}Ug_gV~m}2b&70 zW*q|i_Cz8=sBHuYrMdw7^gvYKBjd7@uhVXXJ=hKTPrj~Dtm@J5_GVdaZAV4NY+cEF zO{}}{S&Fi}qI+Fmo7sEU2TvXlit|q567lx}?md6{JnLFh^#Y*J$m6z=Q(E@O01v~up zrmAh-b@kplYN{kk$a`emU-bELQZ(8J%>`{aY1D4zf}$l>dOSA@Lvott(R8afrAT^fJVdppwzVYQ5*E1Q(+<-* zBJbo6u<0sT9s$%;7*&BCwtye)ZCD-Q2djU*Ib&#`J;Y;TagEmdJqu?f-&TXJNl_Oy z0AiOCfkz8|N^+yXH^MrA+>VG{k;YFBh_CkvKSZ1IlJe-P!&GhlBXiE$a_JiLRWlN0 zlV+?P2nYA_0;Ih+`Ocxd@Ti2Og|XQx?G^lXzJdCB%|7Sv=}$$L^6QFZ5Jc|6W%^6;{vah`myeP#KR3I55C z!&6q^Stm~)X&w8yA6vp?Y6Gx2Lwh1YLlpKyyPR%^nwlyXA_rk(Uh`C?9 zz!-rPiN%E}VnU8blMgOLzcK!&!vfn3e zhO4FdL= zg2n_AX6&?5NsWv=2|n50J{ME3A`iC&GbA#AR@I~*(~-Osp6LG5Bjoug?*H;7CNYtW zk)pp#FDxb1_3|an%1G{?ST5D&R+w{>uDLRy$KHioJ>V(HK3y6r-#@7@#EiG-pka`@7wpQItQx&yRkmN|r4EUte^T@$O$O{=1Kq8Y+vE)O zwN&4}z_D!^0)HYC%Msav?Wr!p-3?;iMmpld&_qQaGeP6{r3w9hdyn^;+|t`5*>J7-~WB4HmEU*}?w;p4jxsN?BVYy$`k z3E2jC8-x$yW%O|~U@SERDbW=o zJHV<_VGek3;V3J3%Rw?H`{UsS06z_VOda0Ark5|zgA|8@PKZAH(6gVmCy^mt;U9_w_T)jOE8aMUpM>yJ6jOs2wT!xx|! z26_)&v2?EH1vuLFHHXwi^8l#FI$}E|uvDH8(aMKYslFVXVXhZVaQw z+p!spN!iag(mFzJ^A`7HC-feKbQgA<0+{L1Trv&I;_NI_{zZe zd!{jGFG=}lY!__URkhgH@L*{&vyy5aYWmBcq8xUA{?=N^lX9hJbBYC?yZaY2RD?V& zCiY%ZSRnjrZE^MOh)k5-S$&qz9cZu#MR{pxy<4DE-xY^tj(l!jiI?iuL~5KO}k4;`89p?&+bu!U@L z^3L_^&*?=)+p4qQV6K4*tlE||&(?>*>LW%2?MFC=%+1|fuc@bE-88T;R||0e&0ud{ zjUgohWlJ=bcm#MJP`Ri9&_j~xv$e`6?*YJkq%GjTGkx1ZELgcro$p^*|BZ(5=<*=b zjl*hr5?obR9m7f`#emxFGJ@yNpP%NLI&Rt@x8Oua@vOJ^PHE_yR4$1<5)yl2d)BzK+n*QI&#$6_^3f6W00@W?*6j7%BgU>a zHRQT0kSUnW)9@?Gj^s`jxyrw}LwI;UeOkiuv=#0!P(& zyWLz2RCG$lgvIqk7YM}5H0H}3xzacMYz_PYCTl>aXhatPhQD7>aJ}*7_7TI*xTwUC zbJJytkIIzo@^$~xLcF9a=4K8f6JRAJC82RK8qHCIpvDxoVN9sxVk__8qB7UiU*1y} zfV%?eJ^Jb!;TMDj<1e^Aa-aC;wx-s9NiP2R3IA4L{QLjZWh#orI16|jMFsuW@A-MM zv^3?|Z%+KhcYm7(+4lZr6*(usHu|jM!g)jkz>FdDOE+4C@8|1D>dO>xg^WF5vi$Z6 zomi}DN48iziiTwWl)GT;!xh~tE)TpR(nqhmN^i`5H!|m4sVkK0yL<2el@s=_H`mu= zmZqkm*}}vG8C`*yn!LT&T8vrhxLg|ljM#V1Y(Dn) zkFz4C_%F%9a1Gn8_FxRG?;y1U!vBbB7Em%a_(rB8ieu0dIXkRMoJX0D)ta|u>{r-( zOUimH6jiS7TL3pILKUk!Ve*n7CIvyCHK&s3WU`@Ph?cltWjm#-j#j&-Ss8skYa=-r@_2`<_ya0VGS(5JH7U1@!^ag zQL1Sm_JF0{yVsAiS(3XG*ITm{r%ApC`EVP#_aviYEG{D z;tWJ-h%Z_Ny1M#n#uw9bWay4;@?eec9SkQYpsca&K3p3 zoZygs9Hf{QFJ<4<+hZaW&%pI1yZ48pxrYM;d#ln=|G`*QfT+blW#3!*2RrdFB9n{) zBt`fvu!QgogdAZ1Hgj@TTDIPUn1sx1`1Xa8M0?2$O{j}g@7)6^VIj%_s0`MGai~Xu zvf)BHF!f^7N}L!fFbR8;lK@ytY_0*?c2}#@Pz%hm(vc&82K&(Gl6d2qwQDK*0HzL3 zxkI)adF6_OvokRA10y8R>V`c<`2TJLL}R8UwVuq=(GM8ln%EJrp86R(WH@r{SlwEr z%O1D!_!e62caKl;+`bXa5LUZh*eHZyrOyEdTu23sQ+)@Sg$lC~l!*ijFd_5+jLgjG z9oE3V&w31QzHXQVot05uZ;2x>@q2ELr0x)K0v{oCb@*0@9>BUrT*>6-R^a)A(`6Dd z6cDJvOF|ZC99o#f;Z-M7!u}Gj%)lC9|KTwmvCqDnW%K4(#5v#%hdZ!xs*VlP9%?@{ zGdN?R?B^%COTjvl6fe=&1i%Sn0Ps{JIQy~Jk&N}~DRUvMk$5LaT9%D10SSmX#l_lu zjHGVDNS76h~k|G6zg$G6hELXhjywD64_e5#Bf*_k%5uf+1Gk9DNur7>;~Y> z7^;}sYJTnNXpYi8!V`uY80j_$)B~Cd+GKLl zsRioiSLn$;kB=LoUYtH%>&g28O$AQ+`yAR7`m1~a<65rfKT`Mu$frYA7EcN^C`LfY zP=K>B{Zv*~Lg9sChrj$y6a~0l3etw_wf%q=&v(|2!fKWe`&@p>gp`>*$`0w`2IyGSy_ZwaIA+C zDuqmQB;y&F^hB^RN>_;4g6BPK{s%Tp=s!sLrHq!Pw7eWX#EOyq9gsPz8yF;D+3@f% z3k1|!S}&%GVlMxK^m+g4G9fIVKS)UZ-`z9+W~TY)f94M#R{FXZ%Q|<)ss<@g5F~^T zskj_O_K5a{`^m4O<}$eYB{+U70LddU4)@#UU68~W>FFK4fb?Z>Cgf+f!oNTp6Vq|R z$<2)h`|j5i95pH_FGoI^Sa~b5ph$)Tky&VEk!T=f^z?SmmuNnw(9vnhK*_v=)`H{NipBt2b6eY}*oSdD_E&Q!=b8`_;+{&bk9|F=2 zphd4NaL*YTeZsaVupXc;w|)D_m7{%(u>g+&$Z$jkKMe~z=HqjKV|&Y^D77?ADckp= z8#Zi!A{RX=!f{1efZuLqWW+`jdSquZhe5KpdE2&aEG)xczwU#09;R0^yn5ib_Rt`r z1IE$Z;0c5a)BC_dZtl-G9HftY!urr`SJmnhyi z70@<<(FpVS4$HS3?iBuddH^2YPZ! zD@Xs2P~rg+c1CRKE~cw6w~L76p&mjKfSVVDVOTBHyp8eS6>-Jz&e4cb3h^pmdsJA6 z920Dlz#3mEY|bU+aHEC3%RcyNpqEFG%6=?W!d`hR4`aU z3f=_05uQ^SEPQXzJO!O=qk_te22%&t?4Wr-uM0MCm#l0eU%<<2TVqfP`d`qY4nUrP z>OV9vaBbVcN=Toec>&o8&;YbJBHY~^99U4Pa2^paQ|3A@js39K=~1mG-sSazMMD=0 z-~{ewGBi7@-V(A!t~Bm%9Ak{t_r(J{WHrL*R#CzR0wYZ$C2u<`eE-N{fx8&X%|=>Q zx}wN(vYSI;cMdncdJl`?fF>hLoFwOv(`1SJm3V^}0o6exT6k=c#cvoQ5eSQeV5EUQ zo#=z?f|LS2crb+f9m&(+_He#g4%}IWHjT`M_7MqEa0E7v1sBHX+kl;t4b@}IjdZa$ zZaf7>h-V6vB#t(69fA9T zY+qeN7(B7RgdPErQIrIz!7G4v5gnkQ5TGt_Utkn*t@nIch}-+@$h+v*WN(YD`Si?8 z5)||0MTTU6W;-L_Mxp2fk950x6KMHe{B!zgHv)or=1zTo2JkynNk#g0hYLx$8!k_f zD8}S?*9NFJ{dnBPiEgQ|TKrlH1r0KPNU9Z$&o?;=!teB_%Eym?;-n6^XlpZj2;lUe zM=u1_v#w4#O_M{?0n$gv^+`9yU#N0*^=B+YGH3pdws*(z+u&9g7Z-7VzOwDb`+r^k zH^G1bB{})Tl9V3ef9K}#36*1aZYWRShpk6}k zA=QRM;4Gn8wCopU(!e>~$Ej6JdvWXd z!pNFkhgk*u#LcJRPr;Io)!Sf2(c8-7u$;kZRHpN^4=Z; zej%Z29KQ|FDqeiTn39gXg@L^tl+YC53*v(C^vi_>1t=P1PX>whUT^l0)hn-%>ueln z=354IWGQh~>(fqI-GAW^oOFzC_^Xf9{U3#%6`!m}cvzJ*unP=&1Y;U3x#{f0w4`sC zc*8P7S+qMLyXo!EWeG}uzpl9ET^dZdXng<7yGWC2h^UXU;3Ulp1*&L?-`+lL2S>u; zQ*ZQAnsI#Kx0&b zy`?nFjEwz#eXuPB0gZxZ13eEmX0x%e#nh9wysvf-F(EpF2oQ5+~Dr`86 zS&iIM04+y{b=AT|IsR?*%4Dh{+NIUR*RkMvx3Nw;3o=Pa%?uiV zO?7oyfHg0E#N&vYyES{w1m8ge9G9fk)P6v0Q4P-L1}SjM-JY13fDjX;ssT=WPj~mk zWSb_$tWf+NsI020dhp=<>C>AFfkY+W%Rm7GdD!@%t$r9cI<#_ShREUX)c~D5Kpk6{ zu(wNSw*WPf@<@1c0y`3dC-xyWAN3SIvd!zy`BU7*69vXc_WT3wEc{dVHAev3xkC60 zstb32fpc)J>C}%OG6-#Tmz*A zj}IK+4L)q`yO;h<`reWCAS)yORkA>{{`r&F+iNc7;pxfG$M;xl?Qxr*sT!wGD~&Re zj7J6s`n<{R(!!DwcO0(Y7#9<4 z$S9Wh>#PU7CH3}TpA2sBRx>O{i8~0=eLcs+JmgUzy8s6h4M$Ux9sUwP8>pxrKX%6Y z0(?_|^?`xi6<)U%y>Lrl9;!8Ugt2m@Xat@HN=izobinm~XS_6uG5_CYSN$FB^;2LLjWk^hKx z7`*7Q*5@J4N*b(0B(Z>o)Mt4(qXI7#KzfkSuqPTS-0+B_aos_k^=Ic*0Dz>|de)vJ zA~N*E1DnBGa{E-E`mWDK0AadD8LJ~T4QY8+V)~_}q@tyA{+cp(B4AKJM5MRe4Ut@y z=8jA-OT2~fcq1~*pz~hY6rfn} z@%|Kq-Y|FI_PozxdFap~#5KN2S;nG;mr5=c8>kLC4T&X5GaXu`1%XZNC(~=fb(9%< z;-iaGZ^orfleC}(bQ_EfjK1Q6h!J(m;(YMf8>^@T>YTYgX;RgaY&;fjMu7V;%AYdxR54%uDeLPXHhRk+I3%Amk~IKFV3T2WDeSnfK5*jk&$;{HRA;J_n`rF9`M;ftG3Cw zHhz^nBKM+KP(FuK5B`xZtQNRuINS=Q0h z15aFUZ=0$dZY|ckFXi<28-8?ncp-C|5D)=Z#Iy!4TCb)VdAn43_Q|V~86?j#xo>h; z=tFvjS|6Q1f;{&7?^uOQjZgpjO#(J(7!491ty@F-0VKhy5R!9|CqG_lun~*<76JdN zYO#y8kpHqS2!=CV{gJNUO797%3YI@nZ@9ZZip`cowm9Wx<4P`;c@nQ$n|TQI5(;G@ zQEz&BCyT$YvAqSkARQgFcj0!I>d(?w!vA(-=P70oVg8U8W;n05e>1PvW<)AC(O< z>KR1|B&$N*x#VlOK00=3pyhNL?YC67_ zZUu6NfWLCx4D39{w@jYPkMsf&WJS&j;x!T#1ofWD*ev%PN3teI3&p6D*4%IV>{ zjqwWi=dD|}bYePoY0`gPK$cq!2MTfb*t^|gLF))Dmxl%YVwMRCk7`YK?%o}7?b?lo z!EW6JW-u5T{*atI{9y3p8@T9!#tA7h6HIV042S-JrpIThb_*={1k`EdG8|xe`DlHB zH}aXl?E$ZOW_C8f{4Hn&IM~>{z>fse2{j-A@FI}0Q|ZS6ykD7FTz^_e2Pb|BM!{~} z`^fQ=A|tC&OANuoqnwapC^Dl9t3!-*bf9}L!>w>YN-EClrZ!1Iw2h!~qyiu~f_4tN zT_3~|gK}z|3oW+qQMEr~0LNnK;4oq}I@gGai^UM4?%$0yHRfPXB`40{O&#V6PM@!m z4W#4R>i4jl1ai`8s*G;x3XyFpy+MUs)+enxj!4ZFSA(n?vb}OBzuD}~HdMU+{nw6! z&k;O7B_SU}f-#ynK)3c}NQCt)3XQE!4v>U9ZN*`T$RMu(NvpT_F_MrvOsq)Lv2Io?9nAvL?0^@9{u#;)(zQ(YkF9N>k{|;Pp`WSLX15&?QP5$w3;lO zupbQ*AHEr4_x4k9n@676y@8Gn=T}fj=!GEA_>>(R8w!+DqxV|6m6sxE4MYR!trTkb zaLFbXoSke+u;vyU`V8?ndr4DYK3vVgN#u^+X6yO^nH3yaO)b;M{xPjwZ zF?7XyM`(q>fpK0hI`YUUkB0njbvA5WHenIDAhO)NMBIHh_QUB1#WSQJJicbhi;sLI z-RA)yJD~>j6{F75Prve-Z)qsd%xv%JNlG6<(M6Z=WTase`GLz&`g8H|4d74!mow+X zNx=_SEY*3|2`RP+N7)_;B#wK(N(q3yZLm^w!p?A3qun4 z6>uAfAX*0KVS707j)1uMPv}^{3b9B!7{f%4-!?YpqMK^GKcnViwsM9|xPegFuB##Z z6a~3YI+8WW`qaR~V>hWbut@u@GirERNA93yQYvyugO~BfP4eqCmXK-*-fF1N;il!L z_m{`@2=xZ;qWvqLUMn)i8ejq*u~RAP2$Vtsz6p*c3<>6G5A}1J8ycwmkl=_32ejJ{ z5PJv<0O7NK6CS=Y05yohM;{e4SfK_lnK9aJ>}6C{z1qX^S>UR5$=l+NCdi86k2R~i zmNK%uS%Ym!5h(9_bm#EM!~216s&=Bbd*V1H903L{E=5&U%V<=|xR39T)%f2p?TmP) zAgVCT9lAZT?8u`N55CZI2S#lYWepcLV*xH>_uOvgu%4bCcoO$&_Oe4b3$898AOQD^?oC4s(f};Ui&reJa%tWsRPp)I z+u~MlVT?okgzdfr;GlJX%vh%oxl{#e55Te z_%6j185Sk|=kdRHFlDMqXDxlY|l_E+4CP6pZ(3*H>=oP=7F zm(=95v##cm5E~043kwr1;hD5#`dW#IQkj^szF;G+w($G60GX6?_Uzd_?W}weSq0bV zrhW{YfWx5V$Kz@6On|3U(ybNp3 zw_5^SOP^SU)?4!Ml5b?nzPEet?daP3aM*t12)$5D{fGI72>$&m5a-dFYwE`=#p97` zf}RO{;~(5;v?;it0l*;0$^LFCugygnm(dsNW%XA+mJK@>^xXvBj{Wpok3X6r9I9kW z7z;I48ZHp>e2j7dgU?{!#*G!x-NFgW|CTLJU;wxGyM-ql^#VK2o~{25^UNGH2X{3y zODIqnEzzFCUvE#O)R7ArKvZOAWb{$97Xp97ZU|vHxg<7sb&>)<9SbJv=ux_rx+@ij zpAouC%=)+3hKKQaGBPr9E_j-gcUJt65%+JO%f?A3X63=ns5>F!4HzMX-|^jO6}!J* z5^CU-b9kIy0HxxA_=#s=3jtGgx6(v2LLDN$|BVsYo@s-1F0$C&*LgZp(|P3!>(gTf z`%v|O)EeU|31mP(iNkY2Q34zE?#lh-uOmNR56Pgumz6y4J8n776kRbFB3OzjPnW8n zo_KS%?%g{#$d*7qaEe<-X=cj8OojHKT@{cPxTj4_OnfT_PrN9%g-!_{13L^yb`Og2enr`Yu6|;)}1QM>aJG8bR zLXdH^mca`{(A^HyQ}{ufpsb_>K7uX04i^B{T;RwUp|`fk97vONLKrgx87kA)q( zx}Jg&sSEa;@~`V}$W-;F2&nSM$ORnBJ+u3~UU6k*GFwSx)hZ#THMk`3PoDReSBEF+ z#tj^C$j2nGYz4+bpxjX|ig#{9C_E%Ycyutix@z8~aD}TWxjnNCpUNRD3kRB7HkPp(&hTpmc zKC41VqhO4mTUgj8?R;f1k_`<7qJ9+HoYBys7J7h?B4Z^04#WC@?gTUm*0#7fI?~b6 z;p9TQ^9-IMlsS-hAXxYK%YO&uwqe_WGh7Ua!-7bovWQheQj;F61AolX6!nY_>y>60 zy=2OIYAUyN1i{L-L)z#+P3q&4*837r>Q#7nc%^e9yd$tcsot#g@P_`QmO=xg4FZQ7 zJ0I|D&04pI>J5EoKqwgu8FpHHNnsqDXS1!n-kyfl|0V@qp!k)xwoU^1)c_ z2^wCl4Xv37?0!I};RYq-AGC#U-TM{&XZK!844X z5OF+CEUlnm8lAH_`C)Y?k_$)B?_qd{h;&VmDNZ5zt&ytOXt9@2NqY+((Za$){|B43 z&=4ARxCrH7O9NvDYdy3`Xni0Lqe*RjRWH;~{_)7z+}S6mcXRRaW{EHKPg+=SXN)^; zkubN=)O%sDhllNjglm40jAiXMI~Bp$eZ~2ked%tatBh?JgvJV~<0s{2w4fh@a1M;% zBUr-FeBqKnkOF{2Q0$0VA``C!1+4+Z09o@wPlFSVAJ;;h6?@8nlcUm*=LUM-Uf<;k z-{mDlfiHweV1wpkG6vbgVjebyx;h_((X6X+_w)ootY5WPetcVvDEJHvW|dE#%tE1n zT|V$k>mbbz5Hau_Y#xSDV;b5l@q{LH^d3+=0epqj1C_MGvXv)CyBv%$EMUIht7*X3 z!=)#Q1BM-(@Rya~58ONlwuH2Vf-1Pa@Ss>8#R@(hGK5NjG@q>rLThK5FaB%2dd&Yj z9P~!(aRsIaB=OIp$E$CH{2qbJX=vLaFyn*{`f{n-Z44UFWGOI*v8)TmCrUDtd+sl4jn?n^J-xBDid{5wX}+?d$*jOxK3`RYv**yy#6=l0P+9>?~PV*hQa9LOcl(( z=1Si&?I5R$m5~t|UOtEAb8y7U%~YpIHxnBQ9#B+Udx>VP9JO< z-dI#hf?Qbzudy_2VF(VIJhK6#BVOd25v0{RBHhMb*UIi1`fMzoCv|d~j!?XiVof{+ z_-pWNUSX)-&RJ zocFxlX%~HuIH3W51qUmQoy3(|(@ZT@4W^;%!@oNc*lZFZlBtpFXWvP&31nBMmMcp6 z-MfD6A0XtxtHabskmM51oQH>=&`pfQAel5;G20SkU@~M&=Bg0t(rn=L#?=Bmt3Vf4 zYp>^lbj7~vhcT^S$^`UCsADs(b`}~0*xuy1UNtohTBQCOheMk{*imNN2pCSR4EKeh z2xuE2i7^9arTVusPoK)#Gz0-X*0d7dwX58Hiibcck4oQ#8Lg$Ukx!%!7gABHwy^A= zafOk{tp>Xz@rp*JOiFY?3gtn4`#gPXeS6#)Q~jI<9hlHiM^HA$)@VE{y(qcH?x0S$ zyv#mGc2S)5)>fnNCP~<60~EZhx8VXtqi$}J!2+@~%@nXTIDg^T+|fgAkCP@C;I=%! z={mCfMfl23QIL|Tdrx7y?bS2s?M-EO*w{LV)Q5u^qXQ6%f3;eV8(>lz^zH zC@*h~D<8S841R9NIWXYa9Y$Y@j%|D7)?m=(l$X!v zv+kVJyLt}}=Ip9l7$B>S9iTWPKA!FD^c8OWQ}mI|g#b^PPYODRQ% z2b^%-h^y`Q{(SgU-UNT|SqbKV^ycoVdy+cEzf=G17rXsBPqx zuC*UTTo95wCLyDU6E%7M@N^c*#I=o(X6luwhIrs4d1tE*Kv;^&3s*Km62_|FH=j6a z7j(uB-9J42++i6smy{h4+_~WFa%l zU;YtJA{Kz3JTMpNHR_t(>bs4W+kDF$m!0sc7|v?D`HFkh#`qS(i^MiYMpMIUu6@ra zf=#~JzjpqDoi>O!0s)Jr4Xt&?ARpt=nxZuGL=%?g;27(o4`rL;<+)0*YaW^ztW}wF z6F!yI5#hY<5hK*c%c`v5{Gy^!vTzgw=b8JmZTWUwT$gCfqXgb)mF%=#(JDXTO^JDl z-{iK@vXk)CuyHuFIaF~#ZJ8JQK3MIK-h#U-IeDV5tdC?2t9%TFm=V|{CnyLLToffc z0cl3`u#qn}J$98qm-EpDfk>J>rSD>m@Ea#ZimNtCJ^+J*J;&H=R><*lYRc-f$i{X~ zEQ&xK03{v`Y%4+HFrF0*LkH)Fd5K3p){@XdLQObvhng@(j{X2I)lgCm1Pss<)8 z+%HV(I%hA%rjMZgMK5>}y)~2#auCBoVf7Tp11uL>Y+U|eti*9HKnOxt0?4{h&S2sE zP}sRZhW_fEtHvHnTNaXcCjh9uEbD|CeuXccbvn5#wX^w-jhi}ujNYweEQ79773_qG z_I-94qe8|W=_GVTu`+A0gbF-ww?K}%fMmlmMBIA-XVi@bE7qj`wkrA%?7O}6jJ+2l z`tHAy6+hm0kZ6SKjT9p6V-1HA3vz&6R`$kC+{g!0HkLmB^;7)!3x7P6UsPNvYL&Pd zg6w=Jr!NtdguJKcJjPwLaduDImDaIKzWERUAtl`^%qjtR=O9Hy@E%qVK=$Am2{jek zVT9*RSIGzp3W|vpq^H-J<|EQB{907+A!K}{s7GZvLw{}Cf+>x38O%X+4eWSsdFt*C z6^ua`y5;2w0uiH9fbjH0yrC_`gI9Ait6#k=Q3rTJNCSfex zSt}l>6*zLQm>5)n^Uy+(*@1u`WPfz2p=dtU+JcK&f8H2C>#dI>S z0;{jdt>aK$ek`KLmCT8=p9O1aX}{0RtoB0)!y>RIke#?9yI=oWRlOO`j;|&x z)V6D@r8&T&8s-OOyG>KOti77F04S_$o=JJ zVM|~v1+Esj(z+;`n52O7%gf6v3b`!LH4K&5klJU|CpaF;TnAk*JgTkVDJY0d^PQD- z=4p?5B>a%Ov&*8>GKRja!oqITVx?=ZQpv6#GnYhX_o!!Tfi*VGFUj9sznFCyADA>^ z*m33yg$y(`6{ICG!U*i!2MIs?*)qbyP0-srF%jKQJ=$PXgdkoaX9UaC~ir#T{q7GI%eHxseCd6qZCO4 zBhaw6Htp$CGChCD;`=<<5AEDDQpokjMMLgXg9W2#pTGs~m;M8lJc*|MndeB%8kBi*JyzT0*uR_v|mqXQyJ4*Z+1T8Wt z0U~=OmVS9&~3X{LV)1c5&1CW4*NT=;|waCUhBBcW!oe zjH%~*zjMM7)YCfP?Fpq4b;azqGP!Ld(D>OMA-MMMf9G0WjE@zfaB=TMT%p&mo2pTf zH3L1~^lyxj1Jyuwb9&3oxgV%EAYwSN`Wi z@gGvM^y)ISS#LcSf&Jr?e!`z9=fzB*W}9$$&_>+w3q|EX3d_YKE`7c=@l$j~ zeMx5Y`T(uL8$G6n=qvuw0=yOp!4gI9-wwx*UsK@&BBXNiJwCw7ej?;y3*>us7q@WKS$ ze^%{TJuWxgEclmy{rrjX64wAE?lxv?Z^m)ybZ)wCb5(#rWl$_ltk3_%*2vSKbx})j z-;d{dx<+3Vbz|b*@d!ZPM3fwc1Vog7JM4#RJH-NOuQ{X>k}_TylC=Z3h#*aDyN%gh z0d1T&K6N;ghR4Pd5)x#f9Qx?ZiSvogY^AzF7AzLH-+=4G2fO&Ocj?#P+<>`b4SMQ& zDM1LpL6+dp4_$lWOIf~Oc6yTU{nWjI;+J*v{?psWY&8;h87#I&NCVP)ZM&~(t~$Y= z+n@N}w4;}anF$rFKU0OqcRho#9MHDy`IS zHEXY5;4FctRAIwhH<1T{ug|Zp^WCjSkQ>@Z@~%G|bXN8D3gzbiN{T?*x^+>!2}>1G z_3o30+Jxr?lkO4T2QiG-S%R&`6hvhsIO0Iv^kAWPnw2L~Q2}kL<*o&DIWRc5dFxg^ zef@cc(`1weZP7_EDrD-@@}JpK{~Z)|)&urqb#-Lo&wmqy{H+!_BolGnFp^J`Zfk3X z#JU=EcL+Ve8_dnNt|qEQ77&V;V-=&VAn&ARQmJYI(zlr zH=lF0zTtzB(;3)z6n7kN93~wouS>%C73g6~z-^|QHvPGiaua+(0!)ZBxp{6pmzJ8w zs7Ll+VxDIRPEUBYi4vjX|3T@KDRA)(s$l8ilk^`Z?m5O#h1KI@kPFo)cwCvk>R$v4 z_t5Ak!+Hf({#z78LxE>fGHD!dAIO*0K%@iNx~&;y{yF+Fuk6YhLOw_H!f)Hdr#)ij zxg4;NPU>lqHzar6B%?{ALUAR1gt<7_T@t(c(75AjeHF!x4DQNGOh_Mvm3ad(>aQ%d z5m$Q$(>bg|CO;fsV(xw9G452OR#7H1;MKbC>c12u|N1XzN#w-vwm{|tElwY`bQw5| zzCPoLVcrl@VbUb8owoDL=7G$IMyrKC?Tk35m!sWKkbTy#_ugQb%I1>FVxOAxY}OC0 z1+HFK;T!+_4yqg};jmgw5TyG0525PU%sjLEf`<&`x_kg;_9c*xyao!Kj#s%b2moY9 z7=jZOhasYjZEc0zen!`jAotc+JA7@pbq(`^Z_adJFE31xLSuvDGovzj*CQCLV?Dnd z+<#s05qR5UH{U|8VXb6c#M)r6!YU4@U~03fzrMX&<7dWWOO9;{ue!Q-VZEuysw{nd z+Rm{Vi^8s^9=rO7+wWIqzZxC`XWA)aIXGIiq<n`qFdDtde0r!bHp+-jPb%d_aL>`+U35)Dz!FJ$WShD zb;ZR=|E?Lo0p0BLl~-3H7jSw*FYkNXeKz8(#O(@WSNU56@km$5V83mJ(-^&yhAy_d zrToI)chFmq_aPouN9RGS<#)#LD8qF%05<*nhyuMc5No)WkUy&Wf`1Sm4_t87Lk zzN_bOvjlUW?&D4kQCuIvb9w4x|Bu|S(Us3O=$rvv)jo<@8d6uN3D70KN<*+7U+Ec6 zcJ^-c0RRh00mX{xWZ049b~Co>XB|P>g9%Hzlf%&aEt7Wfaq)@q(bp-6i>2&Y&+rXT zU{~V8!UCxrKYiNKj5ehXod&*{r-ui!t=@_o>gm-tk^Te*&w)oD0vN2RPuN@u8G|B* z1u?o|uLf)18S(MD`BcR`+Dk#0i)~f=vPBEucQg%gr8EA_Fl~e1R zn#8Qh>ud;LeTi6de z$qh*Zbhu8VnUDwbzYLznleBR8O}zPnFi|`OC8-;Dw)cTBw7**fS8cuh=5;ioTx=*TJdU}9 z175T{OFtiwl7ddJg!o-ZHNlshTt)pw2Y~jtIbr$27O{Ai@Z-+N3&OzXSSn*}Grq!Iz9lj;B=go>gvW3-7!`g|A<=N4WhMF2)s4uo}Url(oO(Q5JHM|a->I|sr5R?a*xiW0Qx0Lw*qWSB68+?{KF*~mi zmDJCkO-Y3rd$nIiwMNBrFA7MV4%#h2b#q0Lr<)5Bl@FW2Tzs$ex<^VdAsvIz4(WVK zsjbJ8q+{11qaEvRY!T!Su`EA7zo6hKx<#P|JX3#weBr7fbACKM%d`ZO;NS+-ijz;; z9FE5oz*TpVI#Wv;1R_9NxW%A9Kr?Mr=4|!hu@w}IuNxbG&dx@LhyQ^^T!^`0c}XzC ztiGjXh`#3?oR>f;rs0G^d>I0~0IwKqDc-VqGc*UTAYmUrZl9054?bN~^ifcd@jV@TwG*u}NE|D9YGi%B)sWk|<=BAu=oT5NSXITc#qE zA!MHCDG5nZnKBlVS!7B$*K61Q{^$J9cg}bI=Uc!1t9HYB*LvUQxu5&K?(4el-MgOx zD*zldu;EiC4s)Ea81RVOMJG^+W<@~6Vrd!ujKhp=`Bjr3Oh#$941FEa!v_+P@81!N;QI}eSA2L<&_Ou!cNlP9~o5JRAnWuAW+=yR=3E(L@wmi*fY)OJm$uFa>9p; zrt-vrdJ^S5k-7Ni+2AK<)zAZdJd!v6j;+08fb)4OC$DG+GcUzq>R4h5cesdY_-TQ4 zUazxW$1Vn}^*YUUwVxXMj&*OS2}}9s*xdjMz}_|*S@-Dl4ko5g5G#<_t=MV{a(Qa9 z_>QYU4XAZP1nxlMmL5L=M1T!w4;mC&kAx!fRJ@Q<`Rpf)J#u@tXa)slHx1b%l(r=F zvpvvD533(ACd0Xdp~G{J@w=ZnN?-sKcikt7QJD4-qypyZ{S>Wgt=Eli8B8%GyG@L* zyWPF0H8IF`jZ0~_mdEAOm|B7*$WqSP2fwxzm_wqKbfgcRIzTD<&}f==+TD-*3kzGO zxPA}F9C)!@rg_>rl3MSadR+7$oV7UrO~-q4BEanqz*&QrrS|r)kPwVk3s@aYE zkRKH{;H-5F`H4?=2sRm>keZNgB?va&d`5P2_T0)A7R*`IsD>7Km(Ziyb3k~TqDVH1u0>dKV~~Z zSEwU>`TZVJ0pyTp&%Oie;c|GCs7*Jh5c=8e?(hMCzUAk_!hS*@U4R0#rMVeSBqlfk zg_H;oha-@fj@20?9n7WA1Q|18g-H0J7)IouP-xFk( z>ShCQi)S%?85s(|;bNxN9V^4VK(i4i0CS6*CKzTYLw$XRVehS@FXU z__x%SKZ5ctRV&vV{x*;#Bm20#Fzzjx?3Ie@LSfH~NP_dD(T-2$`{eb7iA zvJ-;%53K;;YOq#d5cBlnIv@OF5DHBIZgI2@1$|7+C_F5HdSG(D7+-UC=Toj#S{dZ>305RNBYb zZ!#ZcqEL+6^8Ol5{$UuF^lCnoXZn1c_TFfBu>|SDo6vcy?1?L?M`2wLP$BrF? zAVtr0XfGz9z^gvXRCIxL`}hiLZoTU_^Ys($oe63*^JzaMGFhbh)=L=+49V4mx_G@|d}?*1Ss$ZEnt zJJ-A!Jm{6#{Bm^06_GY%tZNQw z-gf*XlJBe9nxJ4|yeIr+h0V`9I_5zKX=j(&WHyRtL?%;^uy0`ggAN6nKtIMh!ra_B znW7SQ7n{z0|Gt0UzIot*Xtzxphyz}-03rgq7V=Uq?R=o+_%!k-P6W-ibnYZVaQF}+ zE5ITUrXTy80-Z$*X$b<`6vZf-4ONW#?g!zg4O0#> zC?Pa4K`hv-3~mE_4O-!Jg`^By8g~+&8&b|Mw{9d*0_GR|6s?ony){Gk)?cnU!#eVH zd;@7FcZPe5G6{J`pC-AJ2dNwZGedGsxGF%G^K1y3nk6vs&^Lzab)6UbhCs}aZth@Y zl(;4_4W6~w;N{x!N98|GnW9|qtn!qhj;O;-`B>E??0QI0pSME(I0CyP zqgKzGkD03utV#rQ_iTZ_1r2Bx33$I@diwFC^8$J$^ZL*rfxH5CJ;8Fq9uVd`gc=7u zTeJp<=HNX(NIt>TLdd`kVI{q+t_FeB3GMQhqZvTtan2!IKs$t%1SwS>D5!`kAReE5 zfw$Fz>;{GxKW#i0cm3sZln@5=(_f*x<#60qS1IQuq)CequDPtO*hv=Z%h2GO7oWgjv%MI|L1GNa({ z{X}MRxjoBd&lnWX#Lzt4e>itpX&iXiaESyjG>}@lP!&N>f{?ey06ktIB^dRRWWj(U zSrW^nCADRpAD+Y&`6w}hM||X_jzFnJLVZ0R6yqAZWzBQ*?H(e_+u>U+THyULToZ@ zQ#sFLHo?2`sTD2BELV%P^N_2rz84$m+sw~nZnSH>F7S<$G*16>|8Ns?*^p);H$tv~ z%bh%RiV0QqKQ*T`yvNbdXb*q2U;iG4l{GfnV2Ogf2jLJgWM~UQDG45Z;+W0VaZG%} zC*wnQ@K=12X-AA*|IhNwcW+~;s}4|eZn@i^c7=q2F2ZWUB)F(p=F6g>k&jj3V^H>w zJT31(Dg_Mc)=`Yu%yPS=P2lH*a-dejuKz7H0mY}k@{H^cfOZ}>LjOob>$7NVsyM>k z9j5n8-uz#p?7#oe`&rCb4`z<AV{Vf*ShDQNzrgMG!d|l!4aNg(<5D|vkZTl2lVZ7<0zZ*76^XX(AZeRU+!Pt(TKLLBL&qNJ3Yqi zs4LuV|1oXhY=Gf>%)UE(Q|rB^9$dK-WA^jzybL3B|_(2|!s|W&Ai9u?*hqe5<^rg^} z@+*1!-iGim{|`Tybu=_@l}q@5S>Bi64u@xqZa}X8$jnc|?2iPiLK+hAB9bk_yRWa? zF2f`Rt&ohnPx39HyR`Ee$JJz zcmN}BIV|ayAxv>J@p5Mw{eT+UIT>}vhC5$%eemcn2sG}O`Mz?I4}Hg&A$c2V;I}_& zAC9+%U{YnYL&OzgeKMeAkb=|@UE`{%D$riv!DfAxX>AWO?x#2DLtVYitdR0P^vvdQg0SJY2FE$H8 zxFsegHjh&d>OCVsKLD#OKSYsN)dTl`cuvk1J8dN&*IX}of$GvudBTBVrZZ)bP+ePh z6*$aHse$2>3}Mx`@9&4~3v9TLDsKW*kxxgBNY$SMzX|kq`c_{UR&h>EZ7)3)RHqnw zDuT@nk!xTMSPCGh4xs!;HZg~PtfSLO$>t7cov7g89Qg7A&rqe>;Dzo6ATVUCf$=ZZ z(M=X}pPz(*Pnk*mj$Ey=!NECnQ3+EMVtok5qVG;A z>~6~s5_Hkh)Z0k6!@F*5yKa%=(5@~<(uL5j?5lJ{6=8i;u47+|Ed&O5;nVh>#MkyJA4{jdYq2 zj|hAq_misc{b2x-8qogZ-?X2G{6HFXB)G#B(^Rg)9a=Fi6a1igWlyxDrMh zZ>oel+vNqfBdbTqi)HP^+ZkcZN0sS8CsR+>j^9L0!UzbGxWhO(NWD~87 zMxL5M!OAq@4MUZ?>Gv7qb@=Vd#x=V?reXcS@ld+s+_q}XM;&d+QD!^$CQQ-&;8s?= za|-HDO?93yM^(p7-?sEJ_Hu`uT=S$TMqKzvh>0dzrjwF1C&Zk$IOE7hqreU36$*m16nlyL|tX=?=2)982Qjmn=4 z+nB|`ObXr>dUo4(DGt{!_x$3P6*DThxb|$KSetpFbCPv!v1uL%-=udJ)~;l(exG_V zr4Kae!xSqH54cZh9TVEIzT4<&(!Rnx(O>svC;zYzRJb4Uj?{Nrf4n2}>A{@F+a0U? z;{V|XtKvd)8ABr@F#ielHBF8Y8oSu)olTB@6CIatz6-j`x99TI?H(>o#<+Q>vV4w$ zNym$_XDfmqozo%H{o2IfRnbsILyCL9qUM90nrj-D@@6_B=9bEc=PvUpxG`w0bes)B zegE-i&+Tx@S--o)^M3mb30m9^9oUTA&sB`u)S2|5)G>Ta$4!s|o(RY9?ig#&PC&c3=_o@*sSjh!C z0y3^Y_KA9ZqKR5`kEs5{enDaLnkRYBLQUFPFG`828GLy(7**&p^GwC2f5U3hx%vY$ z^vv&&7vjjfvTjUOUS1x!5^yp+)Fk1}gq2`NhxXI6BrmPhG|)OhX5kWsmfi?-9u$FK zn8r4t)u4m1X(`S&+`uDJo6QSjMG(7S$%AQ*q&HDggtt5|@7;(WRDcMf!$pw?W#NrV z@Z2%R4Q??Fm!{DrLuFD($!<)ypJF9l@MYJQTMJ_q_SnvviKq+XDwbRZCZ^%u#*P++V}qvA9^jSl#b9q(7y^yr2sA_Y3Vvi4 zAA)e7^_lvpQjrD~ZHWezK+(B98ns_(h)N$~EB2lbgPs1YqvAH=nFHZzxp9>1wz6KBsQ}`1|L#F@qEO?lEP>OSK9EG96 zKTV`KNhVCRVqn-ER*$<3)cfSQEfyBOFtP-p3~h2C*LPxY0h_L(?MN`TZ?Dd>M0p83 zkGn&rDHL*MXk742Q8@ytymX0+z)lEfGf1;ge&l(=0{Au^8){)ExCeg!a(v_@a!nL@ zs64pnsql?qbgHePae_(uvABadx^F~_r?GKvauTKG&Y=}JjN&`PVH9cb{yQA0y9r+$ z^h!}@q@XaxML_^WO$1d3P;YpI;lhbpspCj{jIxcl)6*ZY|8^Gr?o@R*^kA@1Tg*>+ zeY$a**SncVcxb()1|~*3{Xfr!O3FGlo1?9xBSONSP1zS-qGkP2YmaO^a05;q&zbyr*T$7yGSy#3{8P$8-5?c z8p0|K)JZW($r60Pyp7*Zo>*?6xZSBerstktkoGJsGqs4ubsa$p{qsaVJ#E=fp)GM# z=;c-pkX1=ud{b6$z^1mauz+4?#dM;3UCh3@mFu34j-k2+g*}3se03;<1@~<-k2+od z`qw2B^MsGDQ_eU^J!?)1a=50h94KXIi=||KVO$)a%%!5_~vwHMHUzP z>Mk=IRD9evxAfCu(8cr8U(uiHq$L-rwZEMrBdS3UfIF7mZV7uTNHs>gOC@UT(C^=H zV>g(YhMCMLegQ{)Ip&Nkl|R4pK}d)iLc6?}zXTM=43Pd{SD_NyqOuymtwC62r$TNF zZQ?h)S2E-F9Xrq^-hz%zpn5U@x{&QT;MzS)OB3McuCdNXPzQK>r}QdV}MPzR;o8U z_6+6v^-@3vA?6>%nGIxWZ|jr~j-`#>@8IkVTR^nAgqT=pPq?@ghP6)gEZI1Ol5sQw zKn67K&5jtwEOSj#K;VoPDUwN>c64N-{#q=m-se2e!P z3F1|74Hiov$Er$y+Nc|qx?5nq_UqSqxmJqDj;(XMnBURmQD(?`CajZN-?z8@|p_%BN02&bYnDXU2WTbqPR2o5Izrhu!S4Q6uDI3;X;f zu6Z(YsB7x!ogu$JQGq$TDSD-!8XE<1OQFF*j|@aig3j3|#KEy8+RHS*BR;*l>}qoM zo~a){s5fqO0S&gA!R|`0IC}@<7oEx@5e={G9yc47KJia%|5zerwD`1?k#7tpm#eP= zohZaqVk{v@%b=)DQHy)!YYot_JWKtqE-WIFmphf;mB&7!i*{NaYc-d(lkA}A!N0GF zG4Hrblv82%^8r4_7Z$en^vH;dL&*HW^6V#%uVVf)CEs4KwVL}B4b1#HGU@^IA*?|n zenYpJ_tPY)AoS5ijTdJ$iyc!f2TfY?x35se0PDmHl+>T|^MoBLM5kFwK^;rkIl_wf zsy<_y0!X|;_Vj7%-+M-ztO)G)EQ(KpijiXXA+853JE8<~I>vwFO#)IvXYjdkXB|v5!n5wMxy3a^z{y)!3yj50Dq6U2;`b`Of;*F8tSi zN-W*>cujhfS-%k(5`pILdGH>{ZKm2Ww_tU*$&3$1n`p3ObF~G3G!t^_a%ct4s0A(I z#f6Esz9v+S7DCgKjnnS18U$WuYnySQ1+G4`iJ|~k!9ztC6HEv2D6-d0>8HLt@mIz065;+c|Xpm_{BkxJuR#5+W$D+^!e3Ns_it_Iqx%KgtVVew*}tFjcsqkGRL)UUxX313Yjxo?86 zYDY=F+7ov;2s#9Gy{gtO8f|s^*zGZ89v^na#wl;x)xGhL4b$R+&%Fr=zH+DVf$Euq z8mh1Ne?4{TNVU$%{RtY@X%#1HS5ACsg#YX%?X9)JVPW+<((=p^_PV>f(RakgD*y!_ z8ccwBprB~OdzfG+rKFr*B{~ZT2tYym*Fi%HhJmkNp;tj?wL{$MEO+jKW6 zmnma(VqsL>9?>>73kw237#KeXSO7EGI57Jf$=60|>V7c+5s?<`N*G4|D%>>cNVK=+ z>G=^Ic2`bI7Q+=^%)bvI4Ujty+~Z^=B_-s6|JdSS505Tbl7V<_gFV^ENb-jvh;{c# z502r41Q8u%s;^=KyLVqi^O0Ys4wLktGKCalW^N8A_VnB;;_nir@$h|Kj<_O%lMdo5 z22MdU4l`;*rykoXn)hqJl~BmhQ&cuL2rU>f38OPvW`&xa!+cC!89EdeM>ca|*4}GaO5GfdVN-|)_ zr>b{+{D>zR78%Lkm6R6`XY9CV&(OzT@@C)0$cW@G#20BPoTne4%kua!P6e3L?;f|Q zho#_jl-u~p)2A)X&9k%!*HUn|(!uL%Y?QguPsM;C1rWX7N1#t`hOeF_Y%C29DD*t# z2fs?R%l-rA6D-0&n?VKoSe&iA&%pVILg)?fZ1hHasQ-H3*7h(Y#NpSx9mgkRKUfn9 zrypU^OfLR9IuCdYB}_;Fj~auQp-6BnmO_fl&hC{;g2U?*#PaF45-w5cX=&XM12vn6 zD4oY50KXR3LlT0bM2YL1i^~EWt=itbt5DzJq=Og^JPE8`%!5H=M>L`VpA{D%o@Ltv zYf-g>k&o$gqt=_yvhn(pLikoowUP4(BoJgE&uFPqG> z!^M)?$4C`3HRicnRO~z1c2U%Dz4}S{b8A!kVbcH>ad{#bKR7IKSdJc}ggiV-F@#Nw z`Kj))f$e`DKAB9wxbP?-r0)*bAAx$LAKT<>aS|&y>+%P#mi0R*DlcX4-Lr?Dp@Zcp z{Y~6Df^H~q;IPB+`R@*Swh>tq+(BYD%8nf8R*@n)KJ)&}=`9gJhJ_<+PU0LWg?cX&wV_lqg?+;<8 zBB)RBxIc5o-(Esb!zj3esRu$-Feq@}x+AW`9UruGV`BL5GOo=B2%mtJ7 z7w6{3yQRA&p`WuY$Vog8$0qxt&2I~hz1blp}9+RiuNJVQa#_X;8 zcl4hRB1@&*d6gl7v?(N*-xsqTsiIZv`=x=dV7t6zEvD1g3O7 zZ8pz5ae$=LXuNndczamkNY~QZrBRW^m9j-P2K1ElUM)W9vd-5^MYq6;Vsv<1y#Lwm z8!IAhx)TB|865|IUtd-c2lm_i8}VT8!EMW>+fsyJrDFLI%N`RdFXKsGs1vCOmP#qh z%=}*DV$Q%+NqTpuCwd#>++xs|3;Jz>6*e_rSsa8Nm}@}tQy5uc&Z7VuJ$r7@Mf%x^ z)2imGhSB8vcjfsGpa09zs(of84XrSaYPmnRKm}ZVhJpTm1xlES!%n6~WG(0_5MhsZ z9OY_1Z)a)62eh4`da1|%p~#kdBtmSkkGcDDSI7lo!tC7 zPqDRd*t^QxPl5g>DB9Z--Vf)F43+SbzF>e>OKjFa!6XACnhRL4nQl1_B;&(CQNgDak&N< z3A>bF5nj1+D0!hjNcrW@xBjhW%NHEEan7Xruah->s-C{Qa%q_yAYUEo(o;xMbb@sWQ?Hapeme%q9!N{jiM-5YTWe3kBn=*6*9)zGo^ z6uOwo>8&AdYUCO2B@Y&o*SU*M3g1J!r{p483fI-2Xe_?6f3eY=(+6HrjmUanWneh3)NP1%pQ?kA3w%y{K-SIga_le)kor0?u>t}MOes(~jr(y& zv2#S8ajNIfN6bddokk7_Jtx8R!uuc{hz<xH%8 zK{?ax_ATDzHcwS$DJ9*g_*t-x$j})lH(z1)5jgOB(b6~JfZWH%!36hEz#ou=A+a)P6!IYB?O-p&l!20ewMMHr7bc4#`Ntrx*E`s(f&Po2H8Rg ztD_!^6$MGqW`($nkNq01{8ogJba;)cEN zu9pV6W_PD0&Rg1jO?$J>jaDck98S|fP~l#kI$N~x3Qd~TS4HlV*!x81X!Y$ctjotx z=+TUM%Yz-6VZLnwG>qpJGnPE9L?YT&z?avJEt(zf;muTz(SH)1(}s)Zth~FfOL?j> zWDA3~;3!JCFJEFNIe))7skd>+4EOZ$b#^Mm=?@**+LodmSE&5Iy!hf>vi4liNx0Y) z6x1qVya-iuNyy>~;z{17WRHkvvn&iRDtGtws)MjH4@xWVP*THQ51dN1Wp(Pw%!6$WExZ zxEb!;t1qweEyO!Z0L#hmSi14+Sn=&Gf$UV=w9$z$1xRitLo#HV-Trbs^{rZ1o9Mwz zWkbuODX)$%8|0&ojrH+oZIphSN8;k}slv$w{H3ukZ{6?rPQ`d}h~kG^C+18Ub^E|E z0xhgRwv|T>rICAzFe;F#-K2usD1UJKq6VAI9Zs}#i!=Mf9jCZ!xuTEm>ddWXLa1IP z8`UZD@1zP^&xwcFkddz8YF=kJ*x6;J_W*bz&fW20=9>MTXVUkxl;p3wm?p5{>+`+? z8Z17A!(wmLYA&XU(_U@13zOCW$T9WQLK(FfiUrI%8K@NA&%r^A^#pi0)%ywjA?N$@ zWx)ZyDe4x zTm}(Ybltl?e(bjuGu&!8CQ@A7-BsVpdq8aR`VbujMSht=L#O3isVKMpcY#}dlpjVk zkoQon9a*`<>$~Rnvlb_22f;EE10^0%ww3^224G7}rkd(yx^am{cF^d+PD_zp4BsUu zMn-r8_F}2hId0WVZ3$JZdvockg0sR4nvKYnmgSa_PG+rrWqfG+*X>^izk=Gy$hafh zf*tOc4eHCo_ESF9e=cedtAdNBqieUSz{?4qS6ExDLf&hFPeWRg-b&a4e^G$8V7#Eu zA3-fUod-N5!u$8Yfp?d(F^mXBTQ-_Xz64vbbWTr>-WUEc(4P=PDUy=>N=?no66bG| zbKoNdo)O*^A?cUPmgl(^(9F=RFI-

e;wMG5q^!f5;o7r8-CwR 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

nsQ|)A&sz)jh6{%HGW8wkT`e?eWu^Uq-86w zZSR^#e&09)!ImY5sMbWGWo+UT`DOBEwm@(M%wf+DGDmxg*eX#Jj17aDF(lHWD7kmA zxY^5@2Vd#Cb3LaeD*p1%#C`0taa02Y7*i%r=!yfi?NtghKV4#}&&B*7)nz95Z0%BT zX?O4TMU*ZY5gRM)t8yb^Eftj1lo(?Gdx*WY|F@m*7!lc6F6`^;lOCHoQN##ENQApm zId##!`s6Z`-t8bY{trZp~aM9Uj~uvaf!;hI{u5#gI~m2>jSY!XLog}f0_rph`wI8j0m9Q166b1 zTNT7X)ODo%Ispd|N1{%n^ep*OtL0amJg86?IRUqa_%ypa43m%oHVLRPxWnz^1PYyM ze78~c?2bBj4z7+VwbDxad=J4KCUK8 zL7X64$YQ)!*I`YuT$ezv#&7g0G@kP!w_=&`T^3fuVCBFlcUxU8@4F|e_TQm<{{B6L z|88hH!8qN68%NhoqgbjZhn)(2d)K77)AIJxn-+ihd6ezg)VT6Xg}V3p0oJNdXa07O z{F^QmL&sxhMZ!PI&;B7@`f2_3`)Owhkf2YY^uzif=#DU@;p)8)%Qr7%avk1Oy0 zer|nvbKIE4TS=aO%|Ib6hp7ZyFZcqk=e`>c?SGKLen+tQ>&vJHRl{-UP`GXk$>$Uw9?j~yepS|Jr_Sl0N!O2ozF0wIhZ1h?fo9RY=OWguf6(Cnc)dS}^x2iRf2y1Ow;Rt-M+qs4y!zTW zby*&pjl>=Yd}KizKTZ;`VEo9p8i$$jum9%F2UpJPiD`lyMMQQFXyQPF-U` zh4GTx-xC-ABAgfE77+Vx9E^;0mW!U`-91;iXwI)2Ha!wEy_6uiO4z`C;?$L~S4!HF zq*sqvtV%vycqq~Akf}@mrqQmb2M5C)-wM2q+J8^)$&SAJ`|fK!*pvRdU)#Q@y|MrC zPkBQuR)H=bxfp{uc-C@^U)Z%#)^Of(_82jcI&VP!?B2jPZjV#o!z#kY^L?40(Boe5)&I$pa+D9N8K2C5{{;Se0ssDpK#>?^2N&*Z%~NaKxFX>xUrF6V9_V&u Lb)}fi2B-fYG%bX9 literal 117904 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 From a5c78a5796b8b66740ed338d697289f49cd4d141 Mon Sep 17 00:00:00 2001 From: Jairo Correa Date: Sat, 25 Mar 2023 20:23:46 -0300 Subject: [PATCH 27/31] Draggable menu --- web/scripts/ui.js | 44 ++++++++++++++++++++++++++++++++++++++++++++ web/style.css | 25 +++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/web/scripts/ui.js b/web/scripts/ui.js index 58012fe6..a66f0eb3 100644 --- a/web/scripts/ui.js +++ b/web/scripts/ui.js @@ -35,6 +35,47 @@ function $el(tag, propsOrChildren, children) { return element; } +function dragElement(dragEl) { + var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; + if (dragEl.getElementsByClassName('drag-handle')[0]) { + // if present, the handle is where you move the DIV from: + dragEl.getElementsByClassName('drag-handle')[0].onmousedown = dragMouseDown; + } else { + // otherwise, move the DIV from anywhere inside the DIV: + dragEl.onmousedown = dragMouseDown; + } + + function dragMouseDown(e) { + e = e || window.event; + e.preventDefault(); + // get the mouse cursor position at startup: + pos3 = e.clientX; + pos4 = e.clientY; + document.onmouseup = closeDragElement; + // call a function whenever the cursor moves: + document.onmousemove = elementDrag; + } + + function elementDrag(e) { + e = e || window.event; + e.preventDefault(); + // calculate the new cursor position: + pos1 = pos3 - e.clientX; + pos2 = pos4 - e.clientY; + pos3 = e.clientX; + pos4 = e.clientY; + // set the element's new position: + dragEl.style.top = (dragEl.offsetTop - pos2) + "px"; + dragEl.style.left = (dragEl.offsetLeft - pos1) + "px"; + } + + function closeDragElement() { + // stop moving when mouse button is released: + document.onmouseup = null; + document.onmousemove = null; + } +} + class ComfyDialog { constructor() { this.element = $el("div.comfy-modal", { parent: document.body }, [ @@ -253,6 +294,7 @@ export class ComfyUI { this.menuContainer = $el("div.comfy-menu", { parent: document.body }, [ $el("div", { style: { overflow: "hidden", position: "relative", width: "100%" } }, [ + $el("span.drag-handle"), $el("span", { $: (q) => (this.queueSize = q) }), $el("button.comfy-settings-btn", { textContent: "⚙️", onclick: () => this.settings.show() }), ]), @@ -331,6 +373,8 @@ export class ComfyUI { $el("button", { textContent: "Load Default", onclick: () => app.loadGraphData() }), ]); + dragElement(this.menuContainer); + this.setStatus({ exec_info: { queue_remaining: "X" } }); } diff --git a/web/style.css b/web/style.css index 52a8a9c6..d3168044 100644 --- a/web/style.css +++ b/web/style.css @@ -111,6 +111,31 @@ body { width: 50%; } +.comfy-menu span.drag-handle { + width: 10px; + height: 20px; + display: inline-block; + overflow: hidden; + line-height: 5px; + padding: 3px 4px; + cursor: move; + vertical-align: middle; + margin-top: -.4em; + margin-left: -.2em; + font-size: 12px; + font-family: sans-serif; + letter-spacing: 2px; + color: #cccccc; + text-shadow: 1px 0 1px black; + position: absolute; + top: 0; + left: 0; +} + +.comfy-menu span.drag-handle::after { + content: '.. .. ..'; +} + .comfy-queue-btn { width: 100%; } From 9287770c6651a122aee30f608c0b44c889c8812b Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Sat, 25 Mar 2023 21:31:39 -0400 Subject: [PATCH 28/31] Allow negative Lora strengths. --- nodes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nodes.py b/nodes.py index 1915d2a5..a981abb8 100644 --- a/nodes.py +++ b/nodes.py @@ -241,8 +241,8 @@ class LoraLoader: return {"required": { "model": ("MODEL",), "clip": ("CLIP", ), "lora_name": (folder_paths.get_filename_list("loras"), ), - "strength_model": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.01}), - "strength_clip": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 10.0, "step": 0.01}), + "strength_model": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.01}), + "strength_clip": ("FLOAT", {"default": 1.0, "min": -10.0, "max": 10.0, "step": 0.01}), }} RETURN_TYPES = ("MODEL", "CLIP") FUNCTION = "load_lora" From 48d4edbceb9d0f9f0e2f49af7570b053a2a39fab Mon Sep 17 00:00:00 2001 From: Jairo Correa Date: Sat, 25 Mar 2023 23:06:00 -0300 Subject: [PATCH 29/31] Prevent draggable menu to get outside of window --- web/scripts/ui.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/web/scripts/ui.js b/web/scripts/ui.js index a66f0eb3..94f3c528 100644 --- a/web/scripts/ui.js +++ b/web/scripts/ui.js @@ -36,7 +36,12 @@ function $el(tag, propsOrChildren, children) { } function dragElement(dragEl) { - var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; + var posDiffX = 0, + posDiffY = 0, + posStartX = 0, + posStartY = 0, + newPosX = 0, + newPosY = 0; if (dragEl.getElementsByClassName('drag-handle')[0]) { // if present, the handle is where you move the DIV from: dragEl.getElementsByClassName('drag-handle')[0].onmousedown = dragMouseDown; @@ -49,8 +54,8 @@ function dragElement(dragEl) { e = e || window.event; e.preventDefault(); // get the mouse cursor position at startup: - pos3 = e.clientX; - pos4 = e.clientY; + posStartX = e.clientX; + posStartY = e.clientY; document.onmouseup = closeDragElement; // call a function whenever the cursor moves: document.onmousemove = elementDrag; @@ -60,13 +65,15 @@ function dragElement(dragEl) { e = e || window.event; e.preventDefault(); // calculate the new cursor position: - pos1 = pos3 - e.clientX; - pos2 = pos4 - e.clientY; - pos3 = e.clientX; - pos4 = e.clientY; + posDiffX = e.clientX - posStartX; + posDiffY = e.clientY - posStartY; + posStartX = e.clientX; + posStartY = e.clientY; + newPosX = Math.min((document.body.clientWidth - dragEl.clientWidth), Math.max(0, (dragEl.offsetLeft + posDiffX))); + newPosY = Math.min((document.body.clientHeight - dragEl.clientHeight), Math.max(0, (dragEl.offsetTop + posDiffY))); // set the element's new position: - dragEl.style.top = (dragEl.offsetTop - pos2) + "px"; - dragEl.style.left = (dragEl.offsetLeft - pos1) + "px"; + dragEl.style.top = newPosY + "px"; + dragEl.style.left = newPosX + "px"; } function closeDragElement() { From 980379bab278de696d8caa8d10255b1e492e14d5 Mon Sep 17 00:00:00 2001 From: mezzo-anon Date: Sun, 26 Mar 2023 04:11:53 +0200 Subject: [PATCH 30/31] change colors to a more consistent and pleasing palette --- web/scripts/app.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/web/scripts/app.js b/web/scripts/app.js index 7a926865..a743ef63 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -491,17 +491,17 @@ class ComfyApp { */ setupSlotColors() { let colors = { - "CLIP": "#556B2F", // Olive green - "CLIP_VISION": "#4B0082", // Dark purple - "CLIP_VISION_OUTPUT": "#006400", // Dark green - "CONDITIONING": "#FF1493", // Deep pink - "CONTROL_NET": "#8B4513", // Dark brown - "IMAGE": "#8B0000", // Dark red - "LATENT": "#00008B", // Dark blue - "MASK": "#2F4F4F", // Dark gray - "MODEL": "#FF8C00", // Dark orange - "STYLE_MODEL": "#004A4A", // Dark teal - "VAE": "#4F394F", // Dark plum + "CLIP": "#FFD500", // bright yellow + "CLIP_VISION": "#A8DADC", // light blue-gray + "CLIP_VISION_OUTPUT": "#ad7452", // rusty brown-orange + "CONDITIONING": "#FFA931", // vibrant orange-yellow + "CONTROL_NET": "#6EE7B7", // soft mint green + "IMAGE": "#64B5F6", // bright sky blue + "LATENT": "#FF9CF9", // light pink-purple + "MASK": "#81C784", // muted green + "MODEL": "#B39DDB", // light lavender-purple + "STYLE_MODEL": "#C2FFAE", // light green-yellow + "VAE": "#FF6E6E", // bright red }; Object.assign(this.canvas.default_connection_color_byType, colors); From f5365c9c815318169a584ccde763df37f25f356c Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Sun, 26 Mar 2023 00:36:54 -0400 Subject: [PATCH 31/31] Fix ddim for Mac: #264 --- comfy/ldm/models/diffusion/ddim.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/comfy/ldm/models/diffusion/ddim.py b/comfy/ldm/models/diffusion/ddim.py index fe39c76c..5e2d7364 100644 --- a/comfy/ldm/models/diffusion/ddim.py +++ b/comfy/ldm/models/diffusion/ddim.py @@ -18,7 +18,7 @@ class DDIMSampler(object): def register_buffer(self, name, attr): if type(attr) == torch.Tensor: if attr.device != self.device: - attr = attr.to(self.device) + attr = attr.float().to(self.device) setattr(self, name, attr) def make_schedule(self, ddim_num_steps, ddim_discretize="uniform", ddim_eta=0., verbose=True):