From 1108e7a7889908376bdd79aab1a0d865166c5e03 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 10 Jul 2023 04:32:12 -0500 Subject: [PATCH 001/168] New effects SMStrobeDiffusion and Balls are workable. Checkpoint work as a save point. Still need cleanup. --- include/effects/matrix/PatternBalls.h | 150 +++++++++++++ .../effects/matrix/PatternSMStrobeDiffusion.h | 198 ++++++++++++++++++ 2 files changed, 348 insertions(+) create mode 100644 include/effects/matrix/PatternBalls.h create mode 100644 include/effects/matrix/PatternSMStrobeDiffusion.h diff --git a/include/effects/matrix/PatternBalls.h b/include/effects/matrix/PatternBalls.h new file mode 100644 index 000000000..4897957ec --- /dev/null +++ b/include/effects/matrix/PatternBalls.h @@ -0,0 +1,150 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" +#include +#include +#include + +class Ball +{ +private: + float vx_, vy_; // Velocity of movement along each axis. + CRGB color_; // Private because I'd considered mutating it while drawing. + +public: + float x_, y_; // Getters and setters are only annoying here. + // + Ball(uint8_t x, uint8_t y, float vx, float vy) { + x_ = x; + y_ = y; + vx_ = vx; + vy_ = vy; + } + + void SetColor(CRGB color) + { + color_ = color; + } + + CRGB GetColor() const + { + return color_; + } + + uint16_t GetColorRGB565() const + { + return ((color_.r >> 3) << 11) | + ((color_.g>>2) << 5) | + color_.b >> 3; + } + + + // Move, change ball directions at edges, and clamp. + void Update() { + x_ = x_ + vx_; + y_ = y_ + vy_; + + if(x_ < 0 || x_ >= MATRIX_WIDTH) { + vx_ = -vx_; + x_ = x_ + vx_; + } + if(y_ < 0 || y_ >= MATRIX_HEIGHT) { + vy_ = -vy_; + y_ = y_ + vy_; + } + } +}; + +class PatternBalls : public BeatEffectBase, public LEDStripEffect +{ +private: + std::vector> balls; + + // These might eventually change at runtime or via settings. + const int kInitialBalls = 4; + const int kFadeEveryThisMS = 50; + const int kPercentToFade = 60; + const int kChangeBurstRadius = 2; // Center pixel + radius on each edge. + +public: + PatternBalls() : + BeatEffectBase(1.50, 0.05), + LEDStripEffect(EFFECT_MATRIX_BALLS, "Balls") + { + } + + PatternBalls(const JsonObjectConst& jsonObject) : + BeatEffectBase(1.50, 0.05), + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + balls.resize(kInitialBalls); + for (int i = 0 ; i < balls.size(); i++) { + // Visually tuned (made up) adjustments to the increment to + // get multiple balls going at different velocities and directions. + float inc = .5 + i * .17; + float inc2 = .6 + i * .31; + + balls[i] = std::make_unique(1+ i, 1 + i, -inc, inc2); + balls[i]->SetColor(RandomRainbowColor()); + } + } + + virtual void Draw() override + { + ProcessAudio(); // Without this, HandleBeat has no audio to process. + + for (auto&& b : balls) { + b->Update(); + g()->leds[g()->xy(b->x_, b->y_)] = b->GetColor(); + +#if 0 +debugI("Beat: %p %p %u %u", &balls, b.get(), (uint16_t)b->x_, (uint16_t)b->y_); + g()->fillCircle((uint16_t)b->x_, (uint16_t)b->y_, + 1/*4 + (random8() & 0x7)*/, random16()); + g()->fillCircle((uint16_t)MATRIX_WIDTH-3, (uint16_t)MATRIX_HEIGHT-3, + 2/*4 + (random8() & 0x7)*/, random16()); +#endif + } + + EVERY_N_MILLISECONDS(kFadeEveryThisMS) { + fadeToBlackBy(g()->leds, NUM_LEDS, kPercentToFade); + } + + } + + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + // debugI("Beat: %u %f %f\n", bMajor, elapsed, span); + if (elapsed < .2f) return; // short beat? We may already be in a draw. + + for (auto&& b : balls) { + b->SetColor(RandomRainbowColor()); + // Serious impedance mismatch between the FastLED layer that + // takes floating point coords and 24-bit colors and the + // Arduino drawing layer which wants ints and 16-bit RGB565. + // Because this is "under" FastLED, I wonder if it knows about + // wrapping NeoPixel style matrices. This def works on HUB75. + // + // Worse still, because it's lower than FastLED, it doesn't + // know the sizeof the added LED array, so if you attempt + // to draw a circle that's nearthe beginning or end, it will + // dutifully draw that circle ... outside of the LED array. + // This eventually causes heap corruption and a crash. Thus, + // we manually clamp the clipping region of the circle so we + // draw only inside the leds[] boundaries. + int16_t r = kChangeBurstRadius; + int x = b->x_; + int y = b->y_; + x = std::clamp(x, + kChangeBurstRadius + r + 0, MATRIX_WIDTH - r - 1); + y = std::clamp(y, + kChangeBurstRadius + r + 0, MATRIX_HEIGHT - r - 1); + g()->fillCircle(x, y, r, random16()); + } + } +}; diff --git a/include/effects/matrix/PatternSMStrobeDiffusion.h b/include/effects/matrix/PatternSMStrobeDiffusion.h new file mode 100644 index 000000000..954c7da12 --- /dev/null +++ b/include/effects/matrix/PatternSMStrobeDiffusion.h @@ -0,0 +1,198 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Inspired by https://editor.soulmatelights.com/gallery/1685-strobe-and-diffusion +// Was originally drawn for a lamp, but I like it on a panel. +// The original coordinate system had 0,0 in the LL corner. We have 0,0 in UL. +// BUGBUG: This would look better if the snowflakes took longer to decay. I +// can't find the magic for blur2d(). + +#if ENABLE_AUDIO +class PatternSMStrobeDiffusion : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMStrobeDiffusion : public LEDStripEffect +#endif +{ +private: + uint8_t hue, hue2; // gradual hue shift or some other cyclic counter + uint8_t deltaHue; + uint8_t step; // some counter of frames or sequences of operations + uint8_t noise3d[MATRIX_WIDTH][MATRIX_HEIGHT]{0}; // Locations of snowflakes. + uint8_t Speed = 250; // 1-255 is speed + uint8_t Scale = 100; // 1-100 is something parameter + uint8_t FPSdelay; // BUGBUG: This is set but never used. :-( + const int LOW_DELAY = 0; // This is used to set FPSdelay ... which is never used. + +#if ENABLE_AUDIO + const int top_line_offset = 1; +#else + const int top_line_offset = 0; +#endif + + + +public: + PatternSMStrobeDiffusion() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSTROBE_DIFFUSION, "Strobe Diffusion") + { + } + + PatternSMStrobeDiffusion(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { +// FPSdelay = 25U; // LOW_DELAY; +// hue2 = 1; + g()->Clear(); + } + + +// =========== Christmas Tree =========== +// © SlingMaster +// EFF_CHRISTMAS_TREE +// Christmas Tree +//--------------------------------------- + void VirtualSnow() { + static int ct; + ct++; + // Scroll existing snowflakes down the screen. + for (uint8_t x = 0U; x < MATRIX_WIDTH; x++) { + // Don't copy the very top (usable) line that we're about to fill with + // fresh snowflakes. + for (uint8_t y = MATRIX_HEIGHT - 1; y > top_line_offset; y--) { + assert((x >= 0) && (x < MATRIX_WIDTH)); + assert((y >= 0) && (y < MATRIX_HEIGHT)); + noise3d[x][y] = noise3d[x][y - 1]; + if (noise3d[x][y] > 0) { + g()->drawPixel(x, y, CHSV(170, 5U, 127 + random8(128))); + } + } + } + + // Scroll the flakes above more often than we add new flakes below. + if (ct&3 !=0) return; + + // This is a fragile way to to it, but we fill the top line of + // the display with fresh snowflakes to be scrolled down later. + uint8_t posX = random(MATRIX_WIDTH); + for (uint8_t x = 0U; x < MATRIX_WIDTH; x++) + { + // randomly fill in the top row + noise3d[x][top_line_offset] = (posX == x) && (step % 3 == 0); + } + } + + // функция получения цвета пикселя в матрице по его координатам + CRGB getPixColorXY(uint8_t x, uint8_t y) + { + // Just don't think about what this does to prefetch and prediction... + return g()->leds[g()->xy(x, y)]; + } + + virtual void Draw() override + { + const uint8_t SIZE = 3U; + const uint8_t DELTA = 1U; // центровка по вертикали + uint8_t STEP = 2U; + +#if ENABLE_AUDIO + ProcessAudio(); // Without this, HandleBeat has no audio to process. +#endif + + // Most of the things being tested in this mess are constants and + // many of the things being set are not used. Messy! + STEP = floor((255 - Speed) / 64) + 1U; // for strob + debugW("step %d STEP %d Scale %d", step, STEP, Scale); + if (Scale > 50) + { + // diffusion --- + // The offset is to skip the VU meter. + g()->blur2d(g()->leds, MATRIX_WIDTH, 0, MATRIX_HEIGHT, top_line_offset, beatsin8(3, 64, 80)); + // g()->blur2d(g()->leds, MATRIX_WIDTH, 0, MATRIX_HEIGHT, top_line_offset, 24); + FPSdelay = LOW_DELAY; + STEP = 1U; + if (Scale < 75) { + // chaos --- + FPSdelay = 30; +// VirtualSnow(); + } + } else { + // strob ------- + if (Scale > 25) + { + g()->DimAll(200); + FPSdelay = 30; + } else { + g()->DimAll(24); + FPSdelay = 40; + } + } + + // Tuned by hand. Too slow and they just flash and show up in new locations. + EVERY_N_MILLIS(50) + { + VirtualSnow(); + } + + // Much of this could be calls to lineDraw() but maybe being able to do + // both ends while iterating through the loop is a win. + const uint8_t rows = (MATRIX_HEIGHT + 1) / 3U; + deltaHue = floor(Speed / 64) * 64; + bool dir = false; + for (uint8_t y = 0; y < rows; y++) { + if (dir) { + if ((step % STEP) == 0) { // small layers + g()->drawPixel(MATRIX_WIDTH - 1, y * 3 + DELTA, CHSV(step, 255U, 255U )); + } else { + g()->drawPixel(MATRIX_WIDTH - 1, y * 3 + DELTA, CHSV(170U, 255U, 1U)); + } + } else { + if ((step % STEP) == 0) { // big layers + g()->drawPixel(0, y * 3 + DELTA, CHSV((step + deltaHue), 255U, 255U)); + } else { + g()->drawPixel(0, y * 3 + DELTA, CHSV(0U, 255U, 0U)); + } + } + + // Shift layers ------------------ + for (uint8_t x = 0U ; x < MATRIX_WIDTH; x++) { + if (dir) { // <== + g()->drawPixel(x - 1, y * 3 + DELTA, getPixColorXY(x, y * 3 + DELTA)); + } else { // ==> + g()->drawPixel(MATRIX_WIDTH - x, y * 3 + DELTA, getPixColorXY(MATRIX_WIDTH - x - 1, y * 3 + DELTA)); + } + } + dir = !dir; + } + + if (hue2 == 1) + { + step ++; + if (step >= 254) hue2 = 0; + } else { + step --; + if (step < 1) hue2 = 1; + } +} + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + debugI("HandleBeat"); + // Just light eye candy to show we react. + hue2 += 128; + } +#endif + +}; From 778e0909fe6bdaeb0b0cbaad07f23b5a0267fe7f Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 10 Jul 2023 04:34:20 -0500 Subject: [PATCH 002/168] Add missing files --- include/effectdependencies.h | 2 + include/effects.h | 2 + include/effects/matrix/PatternBalls.h | 52 +++++++++---------- .../effects/matrix/PatternSMStrobeDiffusion.h | 13 ++--- src/effects.cpp | 9 ++-- 5 files changed, 41 insertions(+), 37 deletions(-) diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 3d3168f89..a3ca91bbe 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -60,6 +60,8 @@ #if USE_MATRIX #include "ledmatrixgfx.h" #include "effects/strip/misceffects.h" + #include "effects/matrix/PatternBalls.h" + #include "effects/matrix/PatternSMStrobeDiffusion.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index e9edf5998..37c55689d 100644 --- a/include/effects.h +++ b/include/effects.h @@ -106,6 +106,8 @@ #define EFFECT_MATRIX_WAVEFORM 133 #define EFFECT_MATRIX_GHOST_WAVE 134 #define EFFECT_MATRIX_MAZE 135 +#define EFFECT_MATRIX_BALLS 136 +#define EFFECT_MATRIX_SMSTROBE_DIFFUSION 137 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternBalls.h b/include/effects/matrix/PatternBalls.h index 4897957ec..38c5e0ed9 100644 --- a/include/effects/matrix/PatternBalls.h +++ b/include/effects/matrix/PatternBalls.h @@ -120,31 +120,31 @@ debugI("Beat: %p %p %u %u", &balls, b.get(), (uint16_t)b->x_, (uint16_t)b->y_); virtual void HandleBeat(bool bMajor, float elapsed, float span) override { // debugI("Beat: %u %f %f\n", bMajor, elapsed, span); - if (elapsed < .2f) return; // short beat? We may already be in a draw. - - for (auto&& b : balls) { - b->SetColor(RandomRainbowColor()); - // Serious impedance mismatch between the FastLED layer that - // takes floating point coords and 24-bit colors and the - // Arduino drawing layer which wants ints and 16-bit RGB565. - // Because this is "under" FastLED, I wonder if it knows about - // wrapping NeoPixel style matrices. This def works on HUB75. - // - // Worse still, because it's lower than FastLED, it doesn't - // know the sizeof the added LED array, so if you attempt - // to draw a circle that's nearthe beginning or end, it will - // dutifully draw that circle ... outside of the LED array. - // This eventually causes heap corruption and a crash. Thus, - // we manually clamp the clipping region of the circle so we - // draw only inside the leds[] boundaries. - int16_t r = kChangeBurstRadius; - int x = b->x_; - int y = b->y_; - x = std::clamp(x, - kChangeBurstRadius + r + 0, MATRIX_WIDTH - r - 1); - y = std::clamp(y, - kChangeBurstRadius + r + 0, MATRIX_HEIGHT - r - 1); - g()->fillCircle(x, y, r, random16()); - } + if (elapsed < .2f) return; // short beat? We may already be in a draw. + + for (auto&& b : balls) { + b->SetColor(RandomRainbowColor()); + // Serious impedance mismatch between the FastLED layer that + // takes floating point coords and 24-bit colors and the + // Arduino drawing layer which wants ints and 16-bit RGB565. + // Because this is "under" FastLED, I wonder if it knows about + // wrapping NeoPixel style matrices. This def works on HUB75. + // + // Worse still, because it's lower than FastLED, it doesn't + // know the sizeof the added LED array, so if you attempt + // to draw a circle that's nearthe beginning or end, it will + // dutifully draw that circle ... outside of the LED array. + // This eventually causes heap corruption and a crash. Thus, + // we manually clamp the clipping region of the circle so we + // draw only inside the leds[] boundaries. + int16_t r = kChangeBurstRadius; + int x = b->x_; + int y = b->y_; + x = std::clamp(x, + kChangeBurstRadius + r + 0, MATRIX_WIDTH - r - 1); + y = std::clamp(y, + kChangeBurstRadius + r + 0, MATRIX_HEIGHT - r - 1); + g()->fillCircle(x, y, r, random16()); + } } }; diff --git a/include/effects/matrix/PatternSMStrobeDiffusion.h b/include/effects/matrix/PatternSMStrobeDiffusion.h index 954c7da12..cb6ad7800 100644 --- a/include/effects/matrix/PatternSMStrobeDiffusion.h +++ b/include/effects/matrix/PatternSMStrobeDiffusion.h @@ -20,19 +20,17 @@ class PatternSMStrobeDiffusion : public LEDStripEffect uint8_t deltaHue; uint8_t step; // some counter of frames or sequences of operations uint8_t noise3d[MATRIX_WIDTH][MATRIX_HEIGHT]{0}; // Locations of snowflakes. - uint8_t Speed = 250; // 1-255 is speed - uint8_t Scale = 100; // 1-100 is something parameter + uint8_t Speed = 150; // 1-255 is speed + uint8_t Scale = 90; // 1-100 is something parameter uint8_t FPSdelay; // BUGBUG: This is set but never used. :-( const int LOW_DELAY = 0; // This is used to set FPSdelay ... which is never used. #if ENABLE_AUDIO - const int top_line_offset = 1; + const int top_line_offset = 1; #else - const int top_line_offset = 0; + const int top_line_offset = 0; #endif - - public: PatternSMStrobeDiffusion() : #if ENABLE_AUDIO @@ -81,7 +79,7 @@ class PatternSMStrobeDiffusion : public LEDStripEffect } // Scroll the flakes above more often than we add new flakes below. - if (ct&3 !=0) return; +// if ((ct & 0x07) != 0) return; // This is a fragile way to to it, but we fill the top line of // the display with fresh snowflakes to be scrolled down later. @@ -113,7 +111,6 @@ class PatternSMStrobeDiffusion : public LEDStripEffect // Most of the things being tested in this mess are constants and // many of the things being set are not used. Messy! STEP = floor((255 - Speed) / 64) + 1U; // for strob - debugW("step %d STEP %d Scale %d", step, STEP, Scale); if (Scale > 50) { // diffusion --- diff --git a/src/effects.cpp b/src/effects.cpp index 946813303..4b5709315 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -323,7 +323,7 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_STRIP_LANTERN, LanternEffect); #elif MESMERIZER - +#if 0 ADD_EFFECT(EFFECT_MATRIX_SPECTRUM_ANALYZER, SpectrumAnalyzerEffect, "Spectrum", NUM_BANDS, spectrumBasicColors, 100, 0, 1.75, 1.75); ADD_EFFECT(EFFECT_MATRIX_SPECTRUM_ANALYZER, SpectrumAnalyzerEffect, "Spectrum 2", 32, spectrumBasicColors, 100, 0, 1.25, 1.25); ADD_EFFECT(EFFECT_MATRIX_SPECTRUM_ANALYZER, SpectrumAnalyzerEffect, "Spectrum 3", 32, spectrumBasicColors, 100, 0, 0.25, 1.25); @@ -357,7 +357,10 @@ void LoadEffectFactories() ADD_STARRY_NIGHT_EFFECT(MusicStar, "Stars", RainbowColors_p, 2.0, 1, LINEARBLEND, 2.0, 0.5, 10.0); // Rainbow Music Star ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); - +#endif + ADD_EFFECT(EFFECT_MATRIX_SMSTROBE_DIFFUSION, PatternSMStrobeDiffusion); + // ADD_EFFECT(EFFECT_MATRIX_BALLS, PatternBalls); +#if 0 ADD_EFFECT(EFFECT_MATRIX_BOUNCE, PatternBounce); ADD_EFFECT(EFFECT_MATRIX_CUBE, PatternCube); ADD_EFFECT(EFFECT_MATRIX_SPIRO, PatternSpiro); @@ -370,6 +373,7 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_GRID_LIGHTS, PatternGridLights); ADD_EFFECT(EFFECT_MATRIX_MUNCH, PatternMunch); ADD_EFFECT(EFFECT_MATRIX_MAZE, PatternMaze); +#endif // std::make_shared(), // std::make_shared(), @@ -722,4 +726,3 @@ bool bitmap_output(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t *bitma pgfx->drawRGBBitmap(x, y, bitmap, w, h); return true; } - From 0dccb01b4867edf2ef31d39845bbf87294147a2a Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 10 Jul 2023 04:57:29 -0500 Subject: [PATCH 003/168] Change to use bitset to save ~8 * NLEDS memory --- include/effects/matrix/PatternSMStrobeDiffusion.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/effects/matrix/PatternSMStrobeDiffusion.h b/include/effects/matrix/PatternSMStrobeDiffusion.h index cb6ad7800..55bf33706 100644 --- a/include/effects/matrix/PatternSMStrobeDiffusion.h +++ b/include/effects/matrix/PatternSMStrobeDiffusion.h @@ -2,6 +2,7 @@ #include "effects/strip/musiceffect.h" #include "effectmanager.h" +#include // Inspired by https://editor.soulmatelights.com/gallery/1685-strobe-and-diffusion // Was originally drawn for a lamp, but I like it on a panel. @@ -19,7 +20,7 @@ class PatternSMStrobeDiffusion : public LEDStripEffect uint8_t hue, hue2; // gradual hue shift or some other cyclic counter uint8_t deltaHue; uint8_t step; // some counter of frames or sequences of operations - uint8_t noise3d[MATRIX_WIDTH][MATRIX_HEIGHT]{0}; // Locations of snowflakes. + std::bitset noise3d[MATRIX_WIDTH * MATRIX_HEIGHT]; // Locations of snowflakes. uint8_t Speed = 150; // 1-255 is speed uint8_t Scale = 90; // 1-100 is something parameter uint8_t FPSdelay; // BUGBUG: This is set but never used. :-( From 2fd4172cb08e9285e68f63db6456dfef55569580 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 10 Jul 2023 05:36:45 -0500 Subject: [PATCH 004/168] Add OneRing --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/PatternSMOneRing.h | 78 +++++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 include/effects/matrix/PatternSMOneRing.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index a3ca91bbe..0d7e6e8c1 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -62,6 +62,7 @@ #include "effects/strip/misceffects.h" #include "effects/matrix/PatternBalls.h" #include "effects/matrix/PatternSMStrobeDiffusion.h" + #include "effects/matrix/PatternSMOneRing.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index 37c55689d..51d43340b 100644 --- a/include/effects.h +++ b/include/effects.h @@ -108,6 +108,7 @@ #define EFFECT_MATRIX_MAZE 135 #define EFFECT_MATRIX_BALLS 136 #define EFFECT_MATRIX_SMSTROBE_DIFFUSION 137 +#define EFFECT_MATRIX_SMONE_RING 138 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMOneRing.h b/include/effects/matrix/PatternSMOneRing.h new file mode 100644 index 000000000..8473c229b --- /dev/null +++ b/include/effects/matrix/PatternSMOneRing.h @@ -0,0 +1,78 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +#if USE_AUDIO +// class PatternSMOneRing : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMOneRing : public LEDStripEffect +#endif +{ +private: + const int RINGSIZE = (MATRIX_HEIGHT/2); + const float INCLINE = (1.5); // 1.0-?.0; + +public: + PatternSMOneRing() : +#if SOUND + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMONE_RING, "One Ring") + { + } + + PatternSMOneRing(const JsonObjectConst& jsonObject) : +#if USE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + } + + float code(double t, double i, double x, double y) + { + return sin(x*3 / RINGSIZE-t) * INCLINE - y; + } + + + void processFrame(double t, double x, double y) + { + float tempcode = code(t, 0, x, y) + MATRIX_HEIGHT / RINGSIZE * 1.5; + double frame = constrain(tempcode + RINGSIZE*0.4, -1, 1) * 255; + uint8_t bri = 0; + if (frame >= 0) + bri = frame; + frame = constrain(tempcode + RINGSIZE*1.1, -1, 1) * 255; + if (frame <= 0) + bri = -frame; + frame = fabs(constrain(tempcode + RINGSIZE*0.75, -1, 1) * 255); + if (frame <= 254) + bri = -frame; + bri = 255 - bri; + g()->leds[g()->xy(x, y)].setRGB(bri, bri, 0); + } + + virtual void Draw() override + { + double t = millis() / 1000.0; // some formulas is hardcoded and fps get down. this speedup it + for (byte x = 0; x < MATRIX_WIDTH; x++) { + for (byte y = 0; y < MATRIX_HEIGHT; y++) { + processFrame(t, x, y); + } + } + } + +#if USE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } + #endif + + +}; diff --git a/src/effects.cpp b/src/effects.cpp index 4b5709315..588c1d6e7 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMSTROBE_DIFFUSION, PatternSMStrobeDiffusion); + ADD_EFFECT(EFFECT_MATRIX_SMONE_RING, PatternSMOneRing); + //ADD_EFFECT(EFFECT_MATRIX_SMSTROBE_DIFFUSION, PatternSMStrobeDiffusion); // ADD_EFFECT(EFFECT_MATRIX_BALLS, PatternBalls); #if 0 ADD_EFFECT(EFFECT_MATRIX_BOUNCE, PatternBounce); From dfaea37becd5682de981a4deb9428d61732144ce Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 10 Jul 2023 06:39:37 -0500 Subject: [PATCH 005/168] Initial implementation of PatternSMLumenjerPalette --- include/effectdependencies.h | 1 + include/effects.h | 1 + .../effects/matrix/PatternSMLumenjerPalette.h | 121 ++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 include/effects/matrix/PatternSMLumenjerPalette.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 0d7e6e8c1..6e8794495 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -63,6 +63,7 @@ #include "effects/matrix/PatternBalls.h" #include "effects/matrix/PatternSMStrobeDiffusion.h" #include "effects/matrix/PatternSMOneRing.h" + #include "effects/matrix/PatternSMLumenjerPalette.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index 51d43340b..7922c636d 100644 --- a/include/effects.h +++ b/include/effects.h @@ -109,6 +109,7 @@ #define EFFECT_MATRIX_BALLS 136 #define EFFECT_MATRIX_SMSTROBE_DIFFUSION 137 #define EFFECT_MATRIX_SMONE_RING 138 +#define EFFECT_MATRIX_SMLUMENJER_PALETTE 139 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMLumenjerPalette.h b/include/effects/matrix/PatternSMLumenjerPalette.h new file mode 100644 index 000000000..b69994884 --- /dev/null +++ b/include/effects/matrix/PatternSMLumenjerPalette.h @@ -0,0 +1,121 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Inspired by https://editor.soulmatelights.com/gallery/1441-lumenjer-palette + +// additional palettes +// converted from 4 colors to 16 for writing in PROGMEM at https://colordesigner.io/gradient-generator, but not sure if this is equivalent to CRGBPalette16() +// values of color constants here: https://github.com/FastLED/FastLED/wiki/Pixel-reference +extern const TProgmemRGBPalette16 WoodFireColors_p FL_PROGMEM = {CRGB::Black, 0x330e00, 0x661c00, 0x992900, 0xcc3700, CRGB::OrangeRed, 0xff5800, 0xff6b00, 0xff7f00, 0xff9200, CRGB::Orange, 0xffaf00, 0xffb900, 0xffc300, 0xffcd00, CRGB::Gold}; //* Orange +extern const TProgmemRGBPalette16 NormalFire_p FL_PROGMEM = {CRGB::Black, 0x330000, 0x660000, 0x990000, 0xcc0000, CRGB::Red, 0xff0c00, 0xff1800, 0xff2400, 0xff3000, 0xff3c00, 0xff4800, 0xff5400, 0xff6000, 0xff6c00, 0xff7800}; // пытаюсь сделать что-то более приличное +extern const TProgmemRGBPalette16 NormalFire2_p FL_PROGMEM = {CRGB::Black, 0x560000, 0x6b0000, 0x820000, 0x9a0011, CRGB::FireBrick, 0xc22520, 0xd12a1c, 0xe12f17, 0xf0350f, 0xff3c00, 0xff6400, 0xff8300, 0xffa000, 0xffba00, 0xffd400}; // пытаюсь сделать что-то более приличное +extern const TProgmemRGBPalette16 LithiumFireColors_p FL_PROGMEM = {CRGB::Black, 0x240707, 0x470e0e, 0x6b1414, 0x8e1b1b, CRGB::FireBrick, 0xc14244, 0xd16166, 0xe08187, 0xf0a0a9, CRGB::Pink, 0xff9ec0, 0xff7bb5, 0xff59a9, 0xff369e, CRGB::DeepPink}; //* Red +extern const TProgmemRGBPalette16 SodiumFireColors_p FL_PROGMEM = {CRGB::Black, 0x332100, 0x664200, 0x996300, 0xcc8400, CRGB::Orange, 0xffaf00, 0xffb900, 0xffc300, 0xffcd00, CRGB::Gold, 0xf8cd06, 0xf0c30d, 0xe9b913, 0xe1af1a, CRGB::Goldenrod}; //* Yellow +extern const TProgmemRGBPalette16 CopperFireColors_p FL_PROGMEM = {CRGB::Black, 0x001a00, 0x003300, 0x004d00, 0x006600, CRGB::Green, 0x239909, 0x45b313, 0x68cc1c, 0x8ae626, CRGB::GreenYellow, 0x94f530, 0x7ceb30, 0x63e131, 0x4bd731, CRGB::LimeGreen}; //* Green +extern const TProgmemRGBPalette16 AlcoholFireColors_p FL_PROGMEM = {CRGB::Black, 0x000033, 0x000066, 0x000099, 0x0000cc, CRGB::Blue, 0x0026ff, 0x004cff, 0x0073ff, 0x0099ff, CRGB::DeepSkyBlue, 0x1bc2fe, 0x36c5fd, 0x51c8fc, 0x6ccbfb, CRGB::LightSkyBlue}; //* Blue +extern const TProgmemRGBPalette16 RubidiumFireColors_p FL_PROGMEM = {CRGB::Black, 0x0f001a, 0x1e0034, 0x2d004e, 0x3c0068, CRGB::Indigo, CRGB::Indigo, CRGB::Indigo, CRGB::Indigo, CRGB::Indigo, CRGB::Indigo, 0x3c0084, 0x2d0086, 0x1e0087, 0x0f0089, CRGB::DarkBlue}; //* Indigo +extern const TProgmemRGBPalette16 PotassiumFireColors_p FL_PROGMEM = {CRGB::Black, 0x0f001a, 0x1e0034, 0x2d004e, 0x3c0068, CRGB::Indigo, 0x591694, 0x682da6, 0x7643b7, 0x855ac9, CRGB::MediumPurple, 0xa95ecd, 0xbe4bbe, 0xd439b0, 0xe926a1, CRGB::DeepPink}; //* Violet +const TProgmemRGBPalette16 *firePalettes[] = { + &HeatColors_p, // // this palette is already in the main set. if both sets of palettes are connected in the effect, then a copy is not needed + &WoodFireColors_p, + &NormalFire_p, + &NormalFire2_p, + &LithiumFireColors_p, + &SodiumFireColors_p, + &CopperFireColors_p, + &AlcoholFireColors_p, + &RubidiumFireColors_p, + &PotassiumFireColors_p}; + +// palette for the type of realistic waterfall (if the Scale slider is set to 100) +extern const TProgmemRGBPalette16 WaterfallColors_p FL_PROGMEM = {0x000000, 0x060707, 0x101110, 0x151717, 0x1C1D22, 0x242A28, 0x363B3A, 0x313634, 0x505552, 0x6B6C70, 0x98A4A1, 0xC1C2C1, 0xCACECF, 0xCDDEDD, 0xDEDFE0, 0xB2BAB9}; + +#if USE_AUDIO +class PatternSMLumenjerPalette : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMLumenjerPalette : public LEDStripEffect +#endif +{ +private: + const int DIMSPEED = (254U - 500U / MATRIX_WIDTH / MATRIX_HEIGHT); + + uint8_t hue; + uint8_t x = MATRIX_WIDTH / 2; + uint8_t y = MATRIX_HEIGHT / 2; + int8_t dx = 1; + int8_t dy = 1; + uint8_t Scale = 1; // 1-100 is palette. This would be good to control via web. + + // added changing the current palette (used in many effects below for the Scale slider) +const TProgmemRGBPalette16 *palette_arr[9] = { + &PartyColors_p, + &OceanColors_p, + &LavaColors_p, + &HeatColors_p, + &WaterfallColors_p, + &CloudColors_p, + &ForestColors_p, + &RainbowColors_p, + &RainbowStripeColors_p + }; +const TProgmemRGBPalette16 *curPalette = palette_arr[0]; + + +public: + PatternSMLumenjerPalette() : +#if USE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMLUMENJER_PALETTE, "Lumenjer Palette") + { + } + + PatternSMLumenjerPalette(const JsonObjectConst& jsonObject) : +#if USE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + #if 1 + if (Scale > 50) + curPalette = firePalettes[(uint8_t)((Scale - 50)/50.0F * ((sizeof(firePalettes)/sizeof(TProgmemRGBPalette16 *))-0.01F))]; + else + curPalette = palette_arr[(uint8_t)(Scale/50.0F * ((sizeof(palette_arr)/sizeof(TProgmemRGBPalette16 *))-0.01F))]; + #endif + } + + virtual void Draw() override + { + nscale8(g()->leds, NUM_LEDS, DIMSPEED); + + dx = random8(3) ? dx : -dx; + dy = random8(3) ? dy : -dy; + #if (MATRIX_WIDTH % 2 == 0 && MATRIX_HEIGHT % 2 == 0) + x = (MATRIX_WIDTH + x + dx * (bool)random8(64)) % MATRIX_WIDTH; + #else + x = (MATRIX_WIDTH + x + dx) % MATRIX_WIDTH; + #endif + y = (MATRIX_HEIGHT + y + dy) % MATRIX_HEIGHT; + + //leds[XY(x, y)] += ColorFromPalette(*curPalette, hue++); + if (Scale == 100U) + g()->leds[g()->xy(x, y)] += CHSV(random8(), 255U, 255U); + else + g()->leds[g()->xy(x, y)] += ColorFromPalette(*curPalette, hue++); + } +#if USE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif + + +}; diff --git a/src/effects.cpp b/src/effects.cpp index 588c1d6e7..f71a3d03a 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMONE_RING, PatternSMOneRing); + ADD_EFFECT(EFFECT_MATRIX_SMLUMENJER_PALETTE, PatternSMLumenjerPalette); + // ADD_EFFECT(EFFECT_MATRIX_SMONE_RING, PatternSMOneRing); //ADD_EFFECT(EFFECT_MATRIX_SMSTROBE_DIFFUSION, PatternSMStrobeDiffusion); // ADD_EFFECT(EFFECT_MATRIX_BALLS, PatternBalls); #if 0 From ad39cdb97f453c4c285a0299aac1c11c3c479cfd Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 10 Jul 2023 06:52:00 -0500 Subject: [PATCH 006/168] Working start for SquaresAndDots --- include/effectdependencies.h | 1 + include/effects.h | 1 + .../effects/matrix/PatternSMSquaresAndDots.h | 71 +++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 include/effects/matrix/PatternSMSquaresAndDots.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 6e8794495..1c8fa4590 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -64,6 +64,7 @@ #include "effects/matrix/PatternSMStrobeDiffusion.h" #include "effects/matrix/PatternSMOneRing.h" #include "effects/matrix/PatternSMLumenjerPalette.h" + #include "effects/matrix/PatternSMSquaresAndDots.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index 7922c636d..beb0ed188 100644 --- a/include/effects.h +++ b/include/effects.h @@ -110,6 +110,7 @@ #define EFFECT_MATRIX_SMSTROBE_DIFFUSION 137 #define EFFECT_MATRIX_SMONE_RING 138 #define EFFECT_MATRIX_SMLUMENJER_PALETTE 139 +#define EFFECT_MATRIX_SMSQUARES_AND_DOTS 140 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMSquaresAndDots.h b/include/effects/matrix/PatternSMSquaresAndDots.h new file mode 100644 index 000000000..40b9b5fc3 --- /dev/null +++ b/include/effects/matrix/PatternSMSquaresAndDots.h @@ -0,0 +1,71 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +#if USE_AUDIO +class PatternSMSquaresAndDots : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMSquaresAndDots : public LEDStripEffect +#endif +{ +private: + const byte sprites[2][3][3] = {1,1,1,1,0,1,1,1,1,0,0,0,0,1,0,0,0,0,}; + +public: + PatternSMSquaresAndDots() : +#if USE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSTROBE_DIFFUSION, "Strobe Diffusion") + { + } + + PatternSMSquaresAndDots(const JsonObjectConst& jsonObject) : +#if USE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + void printSpr(byte x, byte y, byte numSpr) { + byte hue = random8(); + byte y1 = y; + for (int j = 0; j < 3; j++) { + byte x1 = x; + for (int i = 0; i < 3; i++) { + uint16_t index = g()->xy(x1, y1); + if (sprites[numSpr][i][j]) g()->leds[index].setHue(hue); + else g()->leds[index] = 0; + x1++; + } + y1++; + } +} + + virtual void Start() override + { + for (byte x = 0; x < MATRIX_WIDTH / 3 + 1; x++) { + for (byte y = 0; y < MATRIX_HEIGHT / 3 + 1; y++) { + printSpr(x * 3, y * 3, random8(2)); + } + } + } + + virtual void Draw() override + { + EVERY_N_MILLISECONDS(300) { + printSpr((random8(MATRIX_WIDTH) % (MATRIX_WIDTH / 3 + 1)) * 3, (random8(MATRIX_HEIGHT) % (MATRIX_HEIGHT / 3 + 1)) * 3, random8(2)); + } + + } +#if USE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif + + +}; diff --git a/src/effects.cpp b/src/effects.cpp index f71a3d03a..31867ef35 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMLUMENJER_PALETTE, PatternSMLumenjerPalette); + ADD_EFFECT(EFFECT_MATRIX_SMLUMENJER_PALETTE, PatternSMSquaresAndDots); + // ADD_EFFECT(EFFECT_MATRIX_SMLUMENJER_PALETTE, PatternSMLumenjerPalette); // ADD_EFFECT(EFFECT_MATRIX_SMONE_RING, PatternSMOneRing); //ADD_EFFECT(EFFECT_MATRIX_SMSTROBE_DIFFUSION, PatternSMStrobeDiffusion); // ADD_EFFECT(EFFECT_MATRIX_BALLS, PatternBalls); From 188315f637f7e0d471566bbd67cee7f7f4091c0f Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 10 Jul 2023 07:22:07 -0500 Subject: [PATCH 007/168] Fix memory clobber in SquaresAndDots --- .../effects/matrix/PatternSMSquaresAndDots.h | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/include/effects/matrix/PatternSMSquaresAndDots.h b/include/effects/matrix/PatternSMSquaresAndDots.h index 40b9b5fc3..8c4aba282 100644 --- a/include/effects/matrix/PatternSMSquaresAndDots.h +++ b/include/effects/matrix/PatternSMSquaresAndDots.h @@ -2,6 +2,9 @@ #include "effects/strip/musiceffect.h" #include "effectmanager.h" +#include + +// Inspired from https://editor.soulmatelights.com/gallery/843-squares-and-dots #if USE_AUDIO class PatternSMSquaresAndDots : public BeatEffectBase, public LEDStripEffect @@ -17,7 +20,7 @@ class PatternSMSquaresAndDots : public LEDStripEffect #if USE_AUDIO BeatEffectBase(1.50, 0.05), #endif - LEDStripEffect(EFFECT_MATRIX_SMSTROBE_DIFFUSION, "Strobe Diffusion") + LEDStripEffect(EFFECT_MATRIX_SMSQUARES_AND_DOTS, "Squares and Dots") { } @@ -30,14 +33,22 @@ class PatternSMSquaresAndDots : public LEDStripEffect } void printSpr(byte x, byte y, byte numSpr) { - byte hue = random8(); - byte y1 = y; + int hue = random8(); + int y1 = y; for (int j = 0; j < 3; j++) { - byte x1 = x; + int x1 = x; for (int i = 0; i < 3; i++) { + x1 = std::clamp(x1, 3, MATRIX_WIDTH-3); + y1 = std::clamp(y1, 3, MATRIX_HEIGHT-3); uint16_t index = g()->xy(x1, y1); - if (sprites[numSpr][i][j]) g()->leds[index].setHue(hue); - else g()->leds[index] = 0; + if (sprites[numSpr][i][j]) + { + g()->leds[index].setHue(hue); + } + else + { + g()->leds[index] = 0; + } x1++; } y1++; @@ -46,6 +57,7 @@ class PatternSMSquaresAndDots : public LEDStripEffect virtual void Start() override { + g()->Clear(); for (byte x = 0; x < MATRIX_WIDTH / 3 + 1; x++) { for (byte y = 0; y < MATRIX_HEIGHT / 3 + 1; y++) { printSpr(x * 3, y * 3, random8(2)); From d401202c42a9d9c10621e76fb4af2de99d767b8a Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 10 Jul 2023 17:19:54 -0500 Subject: [PATCH 008/168] PatternSMSquaresAndDots.h --- include/effects/matrix/PatternSMSquaresAndDots.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/effects/matrix/PatternSMSquaresAndDots.h b/include/effects/matrix/PatternSMSquaresAndDots.h index 8c4aba282..f0913f161 100644 --- a/include/effects/matrix/PatternSMSquaresAndDots.h +++ b/include/effects/matrix/PatternSMSquaresAndDots.h @@ -5,6 +5,7 @@ #include // Inspired from https://editor.soulmatelights.com/gallery/843-squares-and-dots +// This looks better on 2812's than on HUB75. #if USE_AUDIO class PatternSMSquaresAndDots : public BeatEffectBase, public LEDStripEffect From 6b98b99d2d91929c527a69b207627b05c4d058db Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 10 Jul 2023 18:05:04 -0500 Subject: [PATCH 009/168] Add working version of Traffic --- include/effectdependencies.h | 187 ++++++++-------- include/effects.h | 1 + include/effects/matrix/PatternSMTraffic.h | 252 ++++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 349 insertions(+), 94 deletions(-) create mode 100644 include/effects/matrix/PatternSMTraffic.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 1c8fa4590..e8390e04f 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -1,93 +1,94 @@ -//+-------------------------------------------------------------------------- -// -// File: effectdependencies.h -// -// NightDriverStrip - (c) 2018 Plummer's Software LLC. All Rights Reserved. -// -// This file is part of the NightDriver software project. -// -// NightDriver is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// NightDriver is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Nightdriver. It is normally found in copying.txt -// If not, see . -// -// -// Description: -// -// Effective effect includes based on global.h -// -// History: Apr-05-2023 Rbergen Created for NightDriverStrip -// -//--------------------------------------------------------------------------- - -#pragma once - -#include "globals.h" - -#include "effects/strip/fireeffect.h" // fire effects -#include "effects/strip/paletteeffect.h" // palette effects -#include "effects/strip/doublepaletteeffect.h" // double palette effect -#include "effects/strip/meteoreffect.h" // meteor blend effect -#include "effects/strip/stareffect.h" // star effects -#include "effects/strip/bouncingballeffect.h" // bouincing ball effectsenable+ -#include "effects/strip/tempeffect.h" -#include "effects/strip/stareffect.h" -#include "effects/strip/laserline.h" -#include "effects/matrix/PatternClock.h" // No matrix dependencies - -#if ENABLE_AUDIO - #include "effects/matrix/spectrumeffects.h" // Musis spectrum effects - #include "effects/strip/musiceffect.h" // Music based effects -#endif - -#if FAN_SIZE - #include "effects/strip/faneffects.h" // Fan-based effects -#endif - -// -// Externals -// - -#if USE_MATRIX - #include "ledmatrixgfx.h" - #include "effects/strip/misceffects.h" - #include "effects/matrix/PatternBalls.h" - #include "effects/matrix/PatternSMStrobeDiffusion.h" - #include "effects/matrix/PatternSMOneRing.h" - #include "effects/matrix/PatternSMLumenjerPalette.h" - #include "effects/matrix/PatternSMSquaresAndDots.h" - #include "effects/matrix/PatternSerendipity.h" - #include "effects/matrix/PatternSwirl.h" - #include "effects/matrix/PatternPulse.h" - #include "effects/matrix/PatternWave.h" - #include "effects/matrix/PatternMaze.h" - #include "effects/matrix/PatternLife.h" - #include "effects/matrix/PatternSpiro.h" - #include "effects/matrix/PatternCube.h" - #include "effects/matrix/PatternCircuit.h" - #include "effects/matrix/PatternSubscribers.h" - #include "effects/matrix/PatternAlienText.h" - #include "effects/matrix/PatternRadar.h" - #include "effects/matrix/PatternPongClock.h" - #include "effects/matrix/PatternBounce.h" - #include "effects/matrix/PatternMandala.h" - #include "effects/matrix/PatternSpin.h" - #include "effects/matrix/PatternFlowField.h" - #include "effects/matrix/PatternMisc.h" - #include "effects/matrix/PatternNoiseSmearing.h" - #include "effects/matrix/PatternQR.h" - #include "effects/matrix/PatternWeather.h" -#endif - -#ifdef USESTRIP - #include "ledstripgfx.h" -#endif +//+-------------------------------------------------------------------------- +// +// File: effectdependencies.h +// +// NightDriverStrip - (c) 2018 Plummer's Software LLC. All Rights Reserved. +// +// This file is part of the NightDriver software project. +// +// NightDriver is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// NightDriver is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Nightdriver. It is normally found in copying.txt +// If not, see . +// +// +// Description: +// +// Effective effect includes based on global.h +// +// History: Apr-05-2023 Rbergen Created for NightDriverStrip +// +//--------------------------------------------------------------------------- + +#pragma once + +#include "globals.h" + +#include "effects/strip/fireeffect.h" // fire effects +#include "effects/strip/paletteeffect.h" // palette effects +#include "effects/strip/doublepaletteeffect.h" // double palette effect +#include "effects/strip/meteoreffect.h" // meteor blend effect +#include "effects/strip/stareffect.h" // star effects +#include "effects/strip/bouncingballeffect.h" // bouincing ball effectsenable+ +#include "effects/strip/tempeffect.h" +#include "effects/strip/stareffect.h" +#include "effects/strip/laserline.h" +#include "effects/matrix/PatternClock.h" // No matrix dependencies + +#if ENABLE_AUDIO + #include "effects/matrix/spectrumeffects.h" // Musis spectrum effects + #include "effects/strip/musiceffect.h" // Music based effects +#endif + +#if FAN_SIZE + #include "effects/strip/faneffects.h" // Fan-based effects +#endif + +// +// Externals +// + +#if USE_MATRIX + #include "ledmatrixgfx.h" + #include "effects/strip/misceffects.h" + #include "effects/matrix/PatternBalls.h" + #include "effects/matrix/PatternSMStrobeDiffusion.h" + #include "effects/matrix/PatternSMOneRing.h" + #include "effects/matrix/PatternSMLumenjerPalette.h" + #include "effects/matrix/PatternSMSquaresAndDots.h" + #include "effects/matrix/PatternSMTraffic.h" + #include "effects/matrix/PatternSerendipity.h" + #include "effects/matrix/PatternSwirl.h" + #include "effects/matrix/PatternPulse.h" + #include "effects/matrix/PatternWave.h" + #include "effects/matrix/PatternMaze.h" + #include "effects/matrix/PatternLife.h" + #include "effects/matrix/PatternSpiro.h" + #include "effects/matrix/PatternCube.h" + #include "effects/matrix/PatternCircuit.h" + #include "effects/matrix/PatternSubscribers.h" + #include "effects/matrix/PatternAlienText.h" + #include "effects/matrix/PatternRadar.h" + #include "effects/matrix/PatternPongClock.h" + #include "effects/matrix/PatternBounce.h" + #include "effects/matrix/PatternMandala.h" + #include "effects/matrix/PatternSpin.h" + #include "effects/matrix/PatternFlowField.h" + #include "effects/matrix/PatternMisc.h" + #include "effects/matrix/PatternNoiseSmearing.h" + #include "effects/matrix/PatternQR.h" + #include "effects/matrix/PatternWeather.h" +#endif + +#ifdef USESTRIP + #include "ledstripgfx.h" +#endif diff --git a/include/effects.h b/include/effects.h index beb0ed188..8b8e7c758 100644 --- a/include/effects.h +++ b/include/effects.h @@ -111,6 +111,7 @@ #define EFFECT_MATRIX_SMONE_RING 138 #define EFFECT_MATRIX_SMLUMENJER_PALETTE 139 #define EFFECT_MATRIX_SMSQUARES_AND_DOTS 140 +#define EFFECT_MATRIX_SMTRAFFIC 141 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMTraffic.h b/include/effects/matrix/PatternSMTraffic.h new file mode 100644 index 000000000..6446694a5 --- /dev/null +++ b/include/effects/matrix/PatternSMTraffic.h @@ -0,0 +1,252 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" +#include + +// Derived from https://editor.soulmatelights.com/gallery/1404-traffic + +#if USE_AUDIO +class PatternSMTraffic : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMTraffic : public LEDStripEffect +#endif +{ +private: + uint8_t center; + uint8_t centerY; + uint8_t divider; + + uint32_t light = 0xCFCF20; + uint32_t atr_light = 0xCFCF10; + uint32_t stop_light = 0x7F000F; + uint32_t atr_stop = 0x6F0008; + uint32_t color_force; + uint32_t color; + + uint8_t Speed = 20; // 1-255 - this should be a UX setting. + uint8_t Scale = 100; // 1-100 - this should be a UX setting. + + // несколько общих переменных и буферов, которые могут использоваться в любом эффекте + uint8_t hue; // постепенный сдвиг оттенка или какой-нибудь другой цикличный счётчик + uint8_t deltaHue; // ещё пара таких же, когда нужно много + uint8_t step; // какой-нибудь счётчик кадров или последовательностей операций + uint8_t pcnt; // какой-то счётчик какого-то прогресса + uint8_t deltaValue; // просто повторно используемая переменная + + static constexpr uint32_t colors[4][4] ={ + // light |atr_light |stop_light|atr_stop + { 0xCFCF20, 0xCFCF10, 0x7F000F, 0x6F0008 }, + { 0x5F5F5F, 0x5F5F3F, 0x00707F, 0x006060 }, + { 0x306F00, 0x306F05, 0x4F004F, 0x4F054F }, + { 0xFFFFFF, 0xFFFFF5, 0xF0E68C, 0xF0E685 } + }; +public: + PatternSMTraffic() : +#if USE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMTRAFFIC, "Traffic") + { + } + + PatternSMTraffic(const JsonObjectConst& jsonObject) : +#if USE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + deltaValue = 255U - Speed + 1U; + step = deltaValue; // чтообы при старте эффекта сразу покрасить лампу + hue = 0; + center = floor(MATRIX_WIDTH * 0.5); + centerY = floor(MATRIX_HEIGHT * 0.5); + drawTrafficLight(hue, false); + } + + // функция получения цвета пикселя по его номеру + CRGB getPixColor(uint32_t thisSegm) + { + uint32_t thisPixel = thisSegm;// * SEGMENTS; + if (thisPixel > NUM_LEDS - 1) return 0; + return g()->leds[thisPixel]; + } + + // функция получения цвета пикселя в матрице по его координатам + CRGB getPixColorXY(uint8_t x, uint8_t y) + { + // Just don't think about what this does to prefetch and prediction... + return g()->leds[g()->xy(x, y)]; + } + +// функция отрисовки точки по координатам X Y + void drawPixelXY(int8_t x, int8_t y, CRGB color) + { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) return; + uint32_t thisPixel = g()->xy((uint8_t)x, (uint8_t)y);// * SEGMENTS; + //for (uint8_t i = 0; i < SEGMENTS; i++) + //{ + g()->leds[thisPixel] = color; + //} + }// служебные функции + + + // ============== Traffic ================ + // © SlingMaster | by Alex Dovby + // EFF_TRAFFIC + // Traffic + //--------------------------------------- + void drawTrafficLight(uint8_t sts, boolean swap_color) + { + uint8_t center = floor(MATRIX_WIDTH * 0.5); + uint8_t centerY = floor(MATRIX_HEIGHT * 0.5); + uint32_t light_colorV = sts == 1 ? CRGB::Green : CRGB::Red; + uint32_t light_colorH = sts == 0 ? CRGB::Green : CRGB::Red; + + if (swap_color) { + light_colorV = CRGB::Yellow; + light_colorH = CRGB::Yellow; + } + + drawPixelXY(center + 4, centerY + 4, light_colorV); + drawPixelXY(center + 5, centerY + 5, light_colorV); + drawPixelXY(center - 5, centerY - 5, light_colorH); + drawPixelXY(center - 5, centerY - 5, light_colorH); + + drawPixelXY(center, centerY + 1, CRGB::Black); + drawPixelXY(center, centerY - 1, CRGB::Black); + drawPixelXY(center - 1, centerY, CRGB::Black); + drawPixelXY(center + 1, centerY, CRGB::Black); + + if (sts == 1 ) { + drawPixelXY(center + 2, centerY + 1, CRGB::Black); + drawPixelXY(center - 2, centerY - 1, CRGB::Black); + } else { + drawPixelXY(center - 1, centerY + 2, CRGB::Black); + drawPixelXY(center + 1, centerY - 2, CRGB::Black); + } + } + + virtual void Draw() override + { + if (step >= deltaValue) { + step = 0U; + } + if (step % 120 == 0) { + drawTrafficLight(hue, true); + } + + if (step % 128 == 0) { + hue++; + if (hue > 1) { + hue = 0; + } + drawTrafficLight(hue, false); + } + + divider = floor((Scale - 1) / 25); // маштаб задает альтернативный цвет + light = colors[divider][0]; + atr_light = colors[divider][1]; + stop_light = colors[divider][2]; + atr_stop = colors[divider][3]; + + // drawPixelXY(center, centerY, 0x747474); + + if (hue == 1) { + // Green Traffic ------- + // [B] **** + color_force = (divider == 0) ? CRGB::Blue : atr_stop; + color = ((random8(2)) == 1 ? CRGB::Black : (random8(2)) == 1 ? (random8(20) == 5 ? color_force : atr_stop) : stop_light); + drawPixelXY((center + 1), 0, color); + + // [T] **** + color_force = (divider == 0) ? CRGB::Blue : atr_light; + color = ((random8(2)) == 1 ? CRGB::Black : (random8(2)) == 1 ? (random8(20) == 5 ? color_force : atr_light) : light); + drawPixelXY((center - 1), MATRIX_HEIGHT - 1, color); + + // [B] **** + for (uint8_t y = centerY - 2; y > 0; y--) { + drawPixelXY((center + 1), y, getPixColorXY((center + 1U), y - 1U)); + } + if (getPixColorXY((center + 1U), centerY - 2) == atr_stop) { + drawPixelXY((center + 1), centerY - 1, light); + } else { + drawPixelXY((center + 1), centerY, getPixColorXY((center + 1U), centerY - 2)); + } + + // [T] **** + for (uint8_t y = centerY + 2; y < MATRIX_HEIGHT - 1; y++) { + drawPixelXY((center - 1), y, getPixColorXY((center - 1U), y + 1U)); + } + if (getPixColorXY((center - 1U), centerY + 2) == atr_light) { + drawPixelXY((center - 1), centerY + 1, stop_light); + } else { + drawPixelXY((center - 1), centerY, getPixColorXY((center - 1U), centerY + 2)); + } + } else { + // Red Traffic --------- + // [R] **** + color = ((random8(2)) == 1 ? CRGB::Black : (random8(2)) == 1 ? atr_stop : stop_light); + drawPixelXY((MATRIX_WIDTH - 1), centerY + 1, color); + // [L] **** + color = ((random8(2)) == 1 ? CRGB::Black : (random8(2)) == 1 ? (random8(20) == 5 ? CRGB::Blue : atr_light) : light); + drawPixelXY(0, centerY - 1, color); + + + // сдвигаем поток влево ---------- [TL] <== + for (uint8_t x = center - 2; x < (MATRIX_WIDTH - 1); x++) { + drawPixelXY(x, centerY + 1, getPixColorXY(x + 1, centerY + 1)); + } + if (getPixColorXY((center + 2U), centerY + 1) == atr_light) { + drawPixelXY((center + 1), centerY + 1, light); + } else { + drawPixelXY((center), centerY + 1, getPixColorXY((center + 2U), centerY + 1)); + } + + // сдвигаем поток вправо ---------- [BR] ==> + for (uint8_t x = center - 2; x > 0; x--) { + drawPixelXY(x, centerY - 1U, getPixColorXY(x - 1U, centerY - 1U)); + } + if (getPixColorXY((center - 2U), centerY - 1) == atr_light) { + drawPixelXY((center - 1), centerY - 1, light); + } else { + drawPixelXY((center), centerY - 1, getPixColorXY((center - 2U), centerY - 1)); + } + } + + // ********* + // сдвигаем поток вверх ----------- + for (uint8_t y = MATRIX_HEIGHT - 1; y > centerY; y--) { + drawPixelXY((center + 1), y, getPixColorXY((center + 1U), y - 1U)); + } + // сдвигаем поток вниз ----------- + for (uint8_t y = 0U; y < centerY; y++) { + drawPixelXY((center - 1), y, getPixColorXY((center - 1U), y + 1U)); + } + // сдвигаем поток вправо ---------- [BR] ==> + for (uint8_t x = MATRIX_WIDTH - 1; x > center; x--) { + drawPixelXY(x, centerY - 1U, getPixColorXY(x - 1U, centerY - 1U)); + } + // сдвигаем поток влево ---------- [TL] <== + for (uint8_t x = 0U; x < center; x++) { + drawPixelXY(x, centerY + 1, getPixColorXY(x + 1, centerY + 1)); + } + // ********* + // LOG.printf_P(PSTR("Trafic | hue = %03d | divider = %01d | step = %03d\n\r"), hue, divider, step); + // ------------------------------------- + step++; + } +#if USE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif + + +}; diff --git a/src/effects.cpp b/src/effects.cpp index 31867ef35..616aae49b 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMLUMENJER_PALETTE, PatternSMSquaresAndDots); + ADD_EFFECT(EFFECT_MATRIX_SMTRAFFIC, PatternSMTraffic); + // ADD_EFFECT(EFFECT_MATRIX_SQUARES_AND_DOTS, PatternSMSquaresAndDots); // ADD_EFFECT(EFFECT_MATRIX_SMLUMENJER_PALETTE, PatternSMLumenjerPalette); // ADD_EFFECT(EFFECT_MATRIX_SMONE_RING, PatternSMOneRing); //ADD_EFFECT(EFFECT_MATRIX_SMSTROBE_DIFFUSION, PatternSMStrobeDiffusion); From 8ab953490435e6b397c9f04491b2eb41742f3b0b Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 10 Jul 2023 19:47:35 -0500 Subject: [PATCH 010/168] Add DDPR Effects --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/PatternSM2DDPR.h | 102 ++++++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 include/effects/matrix/PatternSM2DDPR.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index e8390e04f..55f21f5d0 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -66,6 +66,7 @@ #include "effects/matrix/PatternSMLumenjerPalette.h" #include "effects/matrix/PatternSMSquaresAndDots.h" #include "effects/matrix/PatternSMTraffic.h" + #include "effects/matrix/PatternSM2DDPR.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index 8b8e7c758..be0abc997 100644 --- a/include/effects.h +++ b/include/effects.h @@ -112,6 +112,7 @@ #define EFFECT_MATRIX_SMLUMENJER_PALETTE 139 #define EFFECT_MATRIX_SMSQUARES_AND_DOTS 140 #define EFFECT_MATRIX_SMTRAFFIC 141 +#define EFFECT_MATRIX_SM2DDPR 142 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSM2DDPR.h b/include/effects/matrix/PatternSM2DDPR.h new file mode 100644 index 000000000..0b9a020b2 --- /dev/null +++ b/include/effects/matrix/PatternSM2DDPR.h @@ -0,0 +1,102 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Inspired by https://editor.soulmatelights.com/gallery/1479-2dd-pr-centering +// Looks best on a square display, but OK on rectangles. +// I'll admit this math may as well be magic, but it's pretty. + +#if USE_AUDIO +class PatternSM2DDPR : public BeatEffectBase, public LEDStripEffect +#else +class PatternSM2DDPR : public LEDStripEffect +#endif +{ +private: + uint8_t ZVoffset = 0; + + const int Scale = 127; + const int Speed = 215; + uint32_t effTimer; + + float HALF_WIDTH = MATRIX_WIDTH * .5; + float HALF_HEIGHT = MATRIX_HEIGHT * .5; + float radius = HALF_WIDTH; +// byte effect = 1; + +public: + PatternSM2DDPR() : +#if USE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SM2DDPR, "2DD PR") + { + } + + PatternSM2DDPR(const JsonObjectConst& jsonObject) : +#if USE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + } + + + // Use integer-only Pythagorean to compute the radius from x^2 and y^2. + int16_t ZVcalcRadius(int16_t x, int16_t y) + { + x *= x; + y *= y; + int16_t radi = sin8(x + y); + return radi; + } + + // From point X,Y, find is the distance to center(X,Y) + int16_t ZVcalcDist(uint8_t x, uint8_t y, float center_x, float center_y) + { + int16_t a = (center_y - y - .5); + int16_t b = (center_x - x - .5); + int16_t dist = ZVcalcRadius(a, b); + return dist; + } + + virtual void Draw() override + { + effTimer =sin8 (millis()/6000)/10; + + EVERY_N_MILLISECONDS(1) { + ZVoffset += 4; + } + + for (int x = 0; x < MATRIX_WIDTH; x++) { + for (int y = 0; y < MATRIX_HEIGHT; y++) { + int dist = ZVcalcDist(x, y, HALF_WIDTH, HALF_HEIGHT); + + // exclude outside of circle + int brightness = 1; + if (dist += radius) { + brightness = map(dist, -effTimer,radius, 255, 110); + brightness += ZVoffset; + brightness = sin8(brightness); + } + + int index = g()->xy(x, y); + int hue = map(dist, radius,-3, 125, 255); + g()->leds[index] = CHSV(hue, 255, brightness); + } + } + } +#if USE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif + + +}; diff --git a/src/effects.cpp b/src/effects.cpp index 616aae49b..03daaf289 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMTRAFFIC, PatternSMTraffic); + ADD_EFFECT(EFFECT_MATRIX_SMTRAFFIC, PatternSM2DDPR); + // ADD_EFFECT(EFFECT_MATRIX_SMTRAFFIC, PatternSMTraffic); // ADD_EFFECT(EFFECT_MATRIX_SQUARES_AND_DOTS, PatternSMSquaresAndDots); // ADD_EFFECT(EFFECT_MATRIX_SMLUMENJER_PALETTE, PatternSMLumenjerPalette); // ADD_EFFECT(EFFECT_MATRIX_SMONE_RING, PatternSMOneRing); From 6eb32d4e488884bfdbb8c3508528a6fa720fa893 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 10 Jul 2023 21:13:01 -0500 Subject: [PATCH 011/168] Add (very awesome) SinusoidSin16 --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/PatternSMOneRing.h | 2 + .../effects/matrix/PatternSMSinusoidSin16.h | 378 ++++++++++++++++++ src/effects.cpp | 3 +- 5 files changed, 384 insertions(+), 1 deletion(-) create mode 100644 include/effects/matrix/PatternSMSinusoidSin16.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 55f21f5d0..e919dd182 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -67,6 +67,7 @@ #include "effects/matrix/PatternSMSquaresAndDots.h" #include "effects/matrix/PatternSMTraffic.h" #include "effects/matrix/PatternSM2DDPR.h" + #include "effects/matrix/PatternSMSinusoidSin16.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index be0abc997..ee9ff8464 100644 --- a/include/effects.h +++ b/include/effects.h @@ -113,6 +113,7 @@ #define EFFECT_MATRIX_SMSQUARES_AND_DOTS 140 #define EFFECT_MATRIX_SMTRAFFIC 141 #define EFFECT_MATRIX_SM2DDPR 142 +#define EFFECT_MATRIX_SMSINUSOIDSIN16 143 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMOneRing.h b/include/effects/matrix/PatternSMOneRing.h index 8473c229b..ccbebe25f 100644 --- a/include/effects/matrix/PatternSMOneRing.h +++ b/include/effects/matrix/PatternSMOneRing.h @@ -3,6 +3,8 @@ #include "effects/strip/musiceffect.h" #include "effectmanager.h" +// Inspired by https://editor.soulmatelights.com/gallery/1455-one-ring + #if USE_AUDIO // class PatternSMOneRing : public BeatEffectBase, public LEDStripEffect #else diff --git a/include/effects/matrix/PatternSMSinusoidSin16.h b/include/effects/matrix/PatternSMSinusoidSin16.h new file mode 100644 index 000000000..1a671279d --- /dev/null +++ b/include/effects/matrix/PatternSMSinusoidSin16.h @@ -0,0 +1,378 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Taken from https://editor.soulmatelights.com/gallery/1192-sinusoid-sin16 + +#define SQRT_VARIANT sqrtf // sqrtf or sqrt or sqrt3 (quick variant) +#define WIDTH (MATRIX_WIDTH) +#define HEIGHT (MATRIX_HEIGHT) + +#if ENABLE_AUDIO +class PatternSMSinusoidSin16 : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMSinusoidSin16 : public LEDStripEffect +#endif +{ +private: + // Good settings +#if 0 + // 2 rings spinning + uint8_t Speed = 1 + (9*6); // is speed 1-255 and type (every 9) + uint8_t Scale = 3 + (9*6); // is scale (every 9) and amplitude 1-100 +#else + // (Pastel) Hurricane warning! + uint8_t Speed = 7 + (90*1); // is speed 1-255 and type (every 9) + uint8_t Scale = 1 + (180*1); // is scale (every 9) and amplitude 1-100 +#endif + + // несколько общих переменных и буферов, которые могут использоваться в любом эффекте + uint8_t hue, hue2; // постепенный сдвиг оттенка или какой-нибудь другой цикличный счётчик + uint8_t deltaHue, deltaHue2; // ещё пара таких же, когда нужно много + uint8_t step; // какой-нибудь счётчик кадров или последовательностей операций + uint8_t pcnt; // какой-то счётчик какого-то прогресса + uint8_t deltaValue; // просто повторно используемая переменная + float speedfactor; // регулятор скорости в эффектах реального времени + float emitterX, emitterY; // какие-то динамичные координаты + + // функция отрисовки точки по координатам X Y + void drawPixelXY(int8_t x, int8_t y, CRGB color) + { + if (x < 0 || x > (WIDTH - 1) || y < 0 || y > (HEIGHT - 1)) return; + uint32_t thisPixel = g()->xy((uint8_t)x, (uint8_t)y); + g()->leds[thisPixel] = color; + } + +public: + PatternSMSinusoidSin16() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSINUSOIDSIN16, "Sinusoid Sin16") + { + } + + PatternSMSinusoidSin16(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + //deltaHue = (Scale - 1U) % ... + 1U; + deltaValue = (Speed - 1U) % 9U; // количество режимов + + emitterX = WIDTH * 0.5; + emitterY = HEIGHT * 0.5; + //speedfactor = 0.004 * Speed + 0.015; // speed of the movement along the Lissajous curves //const float speedfactor = + speedfactor = 0.00145 * Speed + 0.015; + } + +// ***** SINUSOID3 / СИНУСОИД3 ***** + + /* + Sinusoid3 by Stefan Petrick (mod by Palpalych for GyverLamp 27/02/2020) + read more about the concept: https://www.youtube.com/watch?v=mubH-w_gwdA + https://gist.github.com/StefanPetrick/dc666c1b4851d5fb8139b73719b70149 + */ + // v1.7.0 - Updating for GuverLamp v1.7 by PalPalych 12.03.2020 + // 2nd upd by Stepko https://wokwi.com/arduino/projects/287675911209222664 + // 3rd proper by SottNick + + virtual void Draw() override + { + float e_s3_size = 3. * Scale / 100.0 + 2; // amplitude of the curves + + //float time_shift = float(millis()%(uint32_t)(30000*(1.0/((float)Speed/255)))); + uint32_t time_shift = millis() & 0xFFFFFF; // overflow protection + + uint16_t _scale = (((Scale - 1U) % 9U) * 10U + 80U) << 7U; // = fmap(scale, 1, 255, 0.1, 3); + float _scale2 = (float)((Scale - 1U) % 9U) * 0.2 + 0.4; // для спиралей на sinf + uint16_t _scale3 = ((Scale - 1U) % 9U) * 1638U + 3276U; // для спиралей на sin16 + + + CRGB color; + + float center1x = float(e_s3_size * cos16(speedfactor * 72.0874 * time_shift)) / 0x7FFF - emitterX; + float center1y = float(e_s3_size * sin16(speedfactor * 98.301 * time_shift)) / 0x7FFF - emitterY; + float center2x = float(e_s3_size * sin16(speedfactor * 68.8107 * time_shift)) / 0x7FFF - emitterX; + float center2y = float(e_s3_size * cos16(speedfactor * 65.534 * time_shift)) / 0x7FFF - emitterY; + float center3x = float(e_s3_size * sin16(speedfactor * 134.3447 * time_shift)) / 0x7FFF - emitterX; + //float center3x3x = float(e_s3_size * sin16(float(speedfactor * 134.3447 * time_shift))) / 0x7FFF - xemitterX; + float center3y = float(e_s3_size * cos16(speedfactor * 170.3884 * time_shift)) / 0x7FFF - emitterY; + + ProcessAudio(); + + switch (deltaValue) { + case 0: //Sinusoid I + for (uint8_t y = 0; y < HEIGHT; y++) { + for (uint8_t x = 0; x < WIDTH; x++) { + float cx = x + center1x; + float cy = y + center1y; + int8_t v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 0x7FFF); + color.r = v; + cx = x + center3x; + cy = y + center3y; + v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 0x7FFF); + color.b = v; + drawPixelXY(x, y, color); + } + } + case 1: //Sinusoid II ??? + for (uint8_t y = 0; y < HEIGHT; y++) { + for (uint8_t x = 0; x < WIDTH; x++) { + float cx = x + center1x; + float cy = y + center1y; + //int8_t v = 127 * (0.001 * time_shift * speedfactor + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 32767.0); + int8_t v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 0x7FFF); + color.r = v; + + cx = x + center2x; + cy = y + center2y; + //v = 127 * (float(0.001 * time_shift * speedfactor) + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 32767.0); + v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 0x7FFF); + color.r = max((uint8_t)v, color.r); + color.g = (uint8_t)v >> 1; + color.b = (uint8_t)v >> 3; + drawPixelXY(x, y, color); + } + } + break; + case 2://Sinusoid III + for (uint8_t y = 0; y < HEIGHT; y++) { + for (uint8_t x = 0; x < WIDTH; x++) { + float cx = x + center1x; + float cy = y + center1y; + int8_t v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 0x7FFF); + color.r = v; + + cx = x + center2x; + cy = y + center2y; + v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 0x7FFF); + color.b = v; + + cx = x + center3x; + cy = y + center3y; + v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 0x7FFF); + color.g = v; + drawPixelXY(x, y, color); + } + } + break; + case 3: //Sinusoid IV + for (uint8_t y = 0; y < HEIGHT; y++) { + for (uint8_t x = 0; x < WIDTH; x++) { + float cx = x + center1x; + float cy = y + center1y; + int8_t v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy) + time_shift * speedfactor * 100)) / 0x7FFF); + color.r = ~v; + + cx = x + center2x; + cy = y + center2y; + v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy) + time_shift * speedfactor * 100)) / 0x7FFF); + color.g = ~v; + + cx = x + center3x; + cy = y + center3y; + v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy) + time_shift * speedfactor * 100)) / 0x7FFF); + color.b = ~v; + drawPixelXY(x, y, color); + } + } + + break; +/* case 4: //changed by stepko //anaglyph sinusoid + for (uint8_t y = 0; y < HEIGHT; y++) { + for (uint8_t x = 0; x < WIDTH; x++) { + float cx = x + center1x; + float cy = y + center1y; + int8_t v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 0x7FFF);// + time_shift * speedfactor)) / 0x7FFF); + color.r = ~v; + + v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy) + time_shift * speedfactor * 10)) / 0x7FFF); + color.b = ~v; + + //same v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy) + time_shift * speedfactor * 10)) / 0x7FFF); + color.g = ~v; + drawPixelXY(x, y, color); + } + } + break; +*/ + case 4: //changed by stepko //colored sinusoid + for (uint8_t y = 0; y < HEIGHT; y++) { + for (uint8_t x = 0; x < WIDTH; x++) { + float cx = x + center1x; + float cy = y + center1y; + int8_t v = 127 * (1 + float(sin16(_scale * (beatsin16(2,1000,1750)/2550.) * SQRT_VARIANT(cx * cx + cy * cy))) / 0x7FFF);// + time_shift * speedfactor * 5 // mass colors plus by SottNick + color.r = v; + + //v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy) + time_shift * speedfactor * 7)) / 0x7FFF); + //v = 127 * (1 + sinf (_scale2 * SQRT_VARIANT(((cx * cx) + (cy * cy))) + 0.001 * time_shift * speedfactor)); + v = 127 * (1 + float(sin16(_scale * (beatsin16(1,570,1050)/2250.) * SQRT_VARIANT(((cx * cx) + (cy * cy))) + 13 * time_shift * speedfactor)) / 0x7FFF); // вместо beatsin сперва ставил просто * 0.41 + color.b = v; + + //v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy) + time_shift * speedfactor * 19)) / 0x7FFF); + //v = 127 * (1 + sinf (_scale2 * SQRT_VARIANT(((cx * cx) + (cy * cy))) + 0.0025 * time_shift * speedfactor)); + v = 127 * (1 + float(cos16(_scale * (beatsin16(3,1900,2550)/2550.) * SQRT_VARIANT(((cx * cx) + (cy * cy))) + 41 * time_shift * speedfactor)) / 0x7FFF); // вместо beatsin сперва ставил просто * 0.53 + color.g = v; + drawPixelXY(x, y, color); + } + } + break; + case 5: //changed by stepko //sinusoid in net + for (uint8_t y = 0; y < HEIGHT; y++) { + for (uint8_t x = 0; x < WIDTH; x++) { + float cx = x + center1x; + float cy = y + center1y; + int8_t v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy) + time_shift * speedfactor * 5)) / 0x7FFF); + color.g = ~v; + + //v = 127 * (1 + float(sin16(_scale * x) + 0.01 * time_shift * speedfactor) / 0x7FFF); + v = 127 * (1 + float(sin16(_scale * (x + 0.005 * time_shift * speedfactor))) / 0x7FFF); // proper by SottNick + + color.b = ~v; + + //v = 127 * (1 + float(sin16(_scale * y * 127 + float(0.011 * time_shift * speedfactor))) / 0x7FFF); + v = 127 * (1 + float(sin16(_scale * (y + 0.0055 * time_shift * speedfactor))) / 0x7FFF); // proper by SottNick + color.r = ~v; + drawPixelXY(x, y, color); + } + } + break; + case 6: //changed by stepko //spiral + for (uint8_t y = 0; y < HEIGHT; y++) { + for (uint8_t x = 0; x < WIDTH; x++) { + float cx = x + center1x; + float cy = y + center1y; + //uint8_t v = 127 * (1 + float(sin16(_scale * (2 * atan2(cy, cx) + hypot(cy, cx)) + time_shift * speedfactor * 5)) / 0x7FFF); + uint8_t v = 127 * (1 + sinf (3* atan2(cy, cx) + _scale2 * hypot(cy, cx))); // proper by SottNick + //uint8_t v = 127 * (1 + float(sin16(atan2(cy, cx) * 31255 + _scale3 * hypot(cy, cx))) / 0x7FFF); // proper by SottNick + color.r = v; + + cx = x + center2x; + cy = y + center2y; + //v = 127 * (1 + float(sin16(_scale * (2 * atan2(cy, cx) + hypot(cy, cx)) + time_shift * speedfactor * 5)) / 0x7FFF); + v = 127 * (1 + sinf (3* atan2(cy, cx) + _scale2 * hypot(cy, cx))); // proper by SottNick + //v = 127 * (1 + float(sin16(atan2(cy, cx) * 31255 + _scale3 * hypot(cy, cx))) / 0x7FFF); // proper by SottNick + color.b = v; + + cx = x + center3x; + cy = y + center3y; + //v = 127 * (1 + float(sin16(_scale * (2 * atan2(cy, cx) + hypot(cy, cx)) + time_shift * speedfactor * 5)) / 0x7FFF); + //v = 127 * (1 + sinf (3* atan2(cy, cx) + _scale2 * hypot(cy, cx))); // proper by SottNick + v = 127 * (1 + float(sin16(atan2(cy, cx) * 31255 + _scale3 * hypot(cy, cx))) / 0x7FFF); // proper by SottNick + color.g = v; + drawPixelXY(x, y, color); + } + } + break; + case 7: //variant by SottNick + for (uint8_t y = 0; y < HEIGHT; y++) { + for (uint8_t x = 0; x < WIDTH; x++) { + float cx = x + center1x; + float cy = y + center1y; + //uint8_t v = 127 * (1 + float(sin16(_scale * (2 * atan2(cy, cx) + hypot(cy, cx)) + time_shift * speedfactor * 5)) / 0x7FFF); + //uint8_t v = 127 * (1 + float(sin16(3* atan2(cy, cx) + _scale * hypot(cy, cx) + time_shift * speedfactor * 5)) / 0x7FFF); + //uint8_t v = 127 * (1 + sinf (3* atan2(cy, cx) + _scale2 * hypot(cy, cx))); // proper by SottNick + uint8_t v = 127 * (1 + float(sin16(atan2(cy, cx) * 31255 + _scale3 * hypot(cy, cx))) / 0x7FFF); // proper by SottNick + //вырезаем центр спирали + float d = SQRT_VARIANT(cx * cx + cy * cy); + if (d < 0.5) d = 0.5; + d /= 10.; + int16_t v2 = 1/d/d; + v = constrain(v - v2, 0, 255); + //вырезали + color.g = v; + + cx = x + center3x; + cy = y + center3y; + //v = 127 * (1 + sinf (3* atan2(cy, cx) + _scale2 * hypot(cy, cx))); // proper by SottNick + v = 127 * (1 + float(sin16(atan2(cy, cx) * 31255 + _scale3 * hypot(cy, cx))) / 0x7FFF); // proper by SottNick + //вырезаем центр спирали + d = SQRT_VARIANT(cx * cx + cy * cy); + if (d < 0.5) d = 0.5; + d /= 10.; + v2 = 1/d/d; + v = constrain(v - v2, 0, 255); + //вырезали + color.r = v; + + drawPixelXY(x, y, color); + } + } + break; + case 8: //variant by SottNick + for (uint8_t y = 0; y < HEIGHT; y++) { + for (uint8_t x = 0; x < WIDTH; x++) { + float cx = x + center1x; + float cy = y + center1y; + //uint8_t v = 127 * (1 + float(sin16(_scale * (2 * atan2(cy, cx) + hypot(cy, cx)) + time_shift * speedfactor * 5)) / 0x7FFF); + //uint8_t v = 127 * (1 + sinf (3* atan2(cy, cx) + _scale2 * hypot(cy, cx))); // proper by SottNick + uint8_t v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 0x7FFF); + color.g = v; + + cx = x + center2x; + cy = y + center2y; + //v = 127 * (1 + float(sin16(_scale * (2 * atan2(cy, cx) + hypot(cy, cx)) + time_shift * speedfactor * 5)) / 0x7FFF); + //v = 127 * (1 + sinf (3* atan2(cy, cx) + _scale2 * hypot(cy, cx))); // proper by SottNick + //v = 127 * (1 + float(sin16(atan2(cy, cx) * 31255 + _scale3 * hypot(cy, cx))) / 0x7FFF); // proper by SottNick + v = 127 * (1 + float(sin16(atan2(cy, cx) * 31255 + _scale3 * hypot(cy, cx))) / 0x7FFF); // proper by SottNick + //вырезаем центр спирали + float d = SQRT_VARIANT(cx * cx + cy * cy); + if (d < 0.5) d = 0.5; + d /= 12.; + int16_t v2 = 1/d/d; + v = constrain(v - v2, 0, 255); + //вырезали + color.g = max(v, color.g); + color.b = v;// >> 1; + //color.r = v >> 1; + + drawPixelXY(x, y, color); + //nblend(leds[XY(x, y)], color, 150); + } + } + break; + + +/* case 8: //changed by stepko //blobs + for (uint8_t y = 0; y < HEIGHT; y++) { + for (uint8_t x = 0; x < WIDTH; x++) { + float cx = x + center1x; + float cy = y + center1y; + uint8_t v = 30 * (max( + cy = y + center2y; + v = 30 * (max(0., -hypot(cx, cy) + (_scale >> 7U) * 0.07)); + color.b = v; + + cx = x + center3x; + cy = y + center3y; + v = 30 * (max(0., -hypot(cx, cy) + (_scale >> 7U) * 0.07)); + color.g = v; + drawPixelXY(x, y, color); + } + } + break; +*/ + + } +} + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + // Hacky. Just an external control to turn the knob without a debugger... + deltaValue = (deltaValue + 1) % 9U; + debugI("HandleBeat - New delta: %d", deltaValue); + + } +#endif + + +}; diff --git a/src/effects.cpp b/src/effects.cpp index 03daaf289..93bc23e44 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMTRAFFIC, PatternSM2DDPR); + ADD_EFFECT(EFFECT_MATRIX_SMSINUSOIDSIN16, PatternSMSinusoidSin16); + // ADD_EFFECT(EFFECT_MATRIX_SM2DDPR, PatternSM2DDPR); // ADD_EFFECT(EFFECT_MATRIX_SMTRAFFIC, PatternSMTraffic); // ADD_EFFECT(EFFECT_MATRIX_SQUARES_AND_DOTS, PatternSMSquaresAndDots); // ADD_EFFECT(EFFECT_MATRIX_SMLUMENJER_PALETTE, PatternSMLumenjerPalette); From 8d30009bc451617d7fa612e59dbd2f7aebf0e0a7 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Tue, 11 Jul 2023 03:42:51 -0500 Subject: [PATCH 012/168] StarDeep now working well for long periods --- include/effectdependencies.h | 2 + include/effects.h | 2 + include/effects/matrix/PatternSMFireworks.h | 207 ++++++++++++++++++ .../effects/matrix/PatternSMSinusoidSin16.h | 52 +++-- include/effects/matrix/PatternSMStarDeep.h | 199 +++++++++++++++++ src/effects.cpp | 4 +- 6 files changed, 438 insertions(+), 28 deletions(-) create mode 100644 include/effects/matrix/PatternSMFireworks.h create mode 100644 include/effects/matrix/PatternSMStarDeep.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index e919dd182..ae6ce7b3d 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -68,6 +68,8 @@ #include "effects/matrix/PatternSMTraffic.h" #include "effects/matrix/PatternSM2DDPR.h" #include "effects/matrix/PatternSMSinusoidSin16.h" + #include "effects/matrix/PatternSMFireworks.h" + #include "effects/matrix/PatternSMStarDeep.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index ee9ff8464..068a447da 100644 --- a/include/effects.h +++ b/include/effects.h @@ -114,6 +114,8 @@ #define EFFECT_MATRIX_SMTRAFFIC 141 #define EFFECT_MATRIX_SM2DDPR 142 #define EFFECT_MATRIX_SMSINUSOIDSIN16 143 +#define EFFECT_MATRIX_SMFIREWORKS 144 +#define EFFECT_MATRIX_SMSTARDEEP 145 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMFireworks.h b/include/effects/matrix/PatternSMFireworks.h new file mode 100644 index 000000000..106718854 --- /dev/null +++ b/include/effects/matrix/PatternSMFireworks.h @@ -0,0 +1,207 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" +#include + +// Inspired from https://editor.soulmatelights.com/gallery/1165-fireworks-by-shaitan + +#if ENABLE_AUDIO +class PatternSMFireworks : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMFireworks : public LEDStripEffect +#endif +{ +private: +// uint8_t Scale = 50; // 1-100 is size // Suggested setting. + uint8_t Scale = 25; // 1-100 is size // Suggested setting. Probably should base on MATRIX_HEIGHT. + + uint8_t step = 0; // a counter of frames or sequences of operations + uint8_t hue2; + + int SaluteX,SaluteY; + int SaluteDX, SaluteDY; + int Saluteerr; + int Saluteystep; + CRGB SaluteColor; + + uint8_t deltaHue, deltaHue2; // ещё пара таких же, когда нужно много + uint8_t deltaValue; // просто повторно используемая переменная + uint8_t poleX, poleY; // размер всего поля по горизонтали / вертикали (в том числе 1 дополнительная пустая дорожка-разделитель с какой-то из сторон) + +public: + PatternSMFireworks() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMFIREWORKS, "Fireworks") + { + } + + PatternSMFireworks(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + // функция отрисовки точки по координатам X Y + void drawPixelXY(int8_t x, int8_t y, CRGB color) + { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) return; + // uint32_t thisPixel = g()->xy((uint8_t)x, (uint8_t)y); + // NightDriver's coordinate system is dfferent. Invert height and this all works! + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT-(uint8_t)y); + g()->leds[thisPixel] = color; + } + + // We use our own drawCircle() and drawPixel() because we KNOW we're going to draw near + // edges and the system versions scribble on memory when we do. Ours clamp. + void drawCircle(int x0, int y0, int radius, const CRGB &color) + { + int a = radius, b = 0; + int radiusError = 1 - a; + + if (radius == 0) { + drawPixelXY(x0, y0, color); + return; + } + + while (a >= b) { + drawPixelXY(a + x0, b + y0, color); + drawPixelXY(b + x0, a + y0, color); + drawPixelXY(-a + x0, b + y0, color); + drawPixelXY(-b + x0, a + y0, color); + drawPixelXY(-a + x0, -b + y0, color); + drawPixelXY(-b + x0, -a + y0, color); + drawPixelXY(a + x0, -b + y0, color); + drawPixelXY(b + x0, -a + y0, color); + b++; + if (radiusError < 0) + radiusError += 2 * b + 1; + else + { + a--; + radiusError += 2 * (b - a + 1); + } + } + } + + + void SaluteStart() + { + step=1; + SaluteColor=CHSV(random(0, 9) * 28, 255U, 255U); + poleY=0; + deltaHue2=random(MATRIX_HEIGHT*2/3,MATRIX_HEIGHT); + poleX=random(0,MATRIX_WIDTH); + deltaHue=random(poleX,MATRIX_WIDTH); + // deltaHue=random(0,MATRIX_WIDTH); + hue2 = 0; + + SaluteDX = deltaHue-poleX; + SaluteDY = deltaHue2; + + int tmp; + /* + if ( poleX > deltaHue ) + { + tmp = poleX; poleX = deltaHue; deltaHue = tmp; + tmp = poleY; poleY = deltaHue2; deltaHue2 = tmp; + } + */ + if ( SaluteDY > SaluteDX ) + { + hue2 = 1; + tmp = SaluteDX; SaluteDX = SaluteDY; SaluteDY = tmp; + tmp = poleX; poleX = poleY; poleY = tmp; + tmp = deltaHue; deltaHue = deltaHue2; deltaHue2 = tmp; + } + Saluteerr = SaluteDX >> 1; + if ( deltaHue2 > poleY ) Saluteystep = 1; else Saluteystep = -1; + SaluteY = poleY; + SaluteX = poleX; + } + + void SaluteFadeAll(uint8_t val) + { +#if 0 + fadeAllChannelsToBlackBy(val); +#else + for (uint8_t x=0; x < MATRIX_WIDTH; x++) + for (uint8_t y=0; y < MATRIX_HEIGHT; y++) + g()->leds[g()->xy(x,y)]-=CHSV(0,0,val); +#endif + } + void SaluteDrawLine() + { + if (SaluteX0) deltaValue--; + else step=0; + } + + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + switch (step) + { + case 0:SaluteStart(); break; + case 1:SaluteDrawLine(); break; + case 2:SaluteExplosion(); break; + case 3:SaluteDecay(); break; + default: + debugI("Invalid Step %d\n", step); + step = 0; + break; + } + SaluteFadeAll(32); + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/include/effects/matrix/PatternSMSinusoidSin16.h b/include/effects/matrix/PatternSMSinusoidSin16.h index 1a671279d..76d8249a3 100644 --- a/include/effects/matrix/PatternSMSinusoidSin16.h +++ b/include/effects/matrix/PatternSMSinusoidSin16.h @@ -6,8 +6,6 @@ // Taken from https://editor.soulmatelights.com/gallery/1192-sinusoid-sin16 #define SQRT_VARIANT sqrtf // sqrtf or sqrt or sqrt3 (quick variant) -#define WIDTH (MATRIX_WIDTH) -#define HEIGHT (MATRIX_HEIGHT) #if ENABLE_AUDIO class PatternSMSinusoidSin16 : public BeatEffectBase, public LEDStripEffect @@ -39,7 +37,7 @@ class PatternSMSinusoidSin16 : public LEDStripEffect // функция отрисовки точки по координатам X Y void drawPixelXY(int8_t x, int8_t y, CRGB color) { - if (x < 0 || x > (WIDTH - 1) || y < 0 || y > (HEIGHT - 1)) return; + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) return; uint32_t thisPixel = g()->xy((uint8_t)x, (uint8_t)y); g()->leds[thisPixel] = color; } @@ -67,8 +65,8 @@ class PatternSMSinusoidSin16 : public LEDStripEffect //deltaHue = (Scale - 1U) % ... + 1U; deltaValue = (Speed - 1U) % 9U; // количество режимов - emitterX = WIDTH * 0.5; - emitterY = HEIGHT * 0.5; + emitterX = MATRIX_WIDTH * 0.5; + emitterY = MATRIX_HEIGHT * 0.5; //speedfactor = 0.004 * Speed + 0.015; // speed of the movement along the Lissajous curves //const float speedfactor = speedfactor = 0.00145 * Speed + 0.015; } @@ -110,8 +108,8 @@ class PatternSMSinusoidSin16 : public LEDStripEffect switch (deltaValue) { case 0: //Sinusoid I - for (uint8_t y = 0; y < HEIGHT; y++) { - for (uint8_t x = 0; x < WIDTH; x++) { + for (uint8_t y = 0; y < MATRIX_HEIGHT; y++) { + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) { float cx = x + center1x; float cy = y + center1y; int8_t v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 0x7FFF); @@ -124,8 +122,8 @@ class PatternSMSinusoidSin16 : public LEDStripEffect } } case 1: //Sinusoid II ??? - for (uint8_t y = 0; y < HEIGHT; y++) { - for (uint8_t x = 0; x < WIDTH; x++) { + for (uint8_t y = 0; y < MATRIX_HEIGHT; y++) { + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) { float cx = x + center1x; float cy = y + center1y; //int8_t v = 127 * (0.001 * time_shift * speedfactor + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 32767.0); @@ -144,8 +142,8 @@ class PatternSMSinusoidSin16 : public LEDStripEffect } break; case 2://Sinusoid III - for (uint8_t y = 0; y < HEIGHT; y++) { - for (uint8_t x = 0; x < WIDTH; x++) { + for (uint8_t y = 0; y < MATRIX_HEIGHT; y++) { + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) { float cx = x + center1x; float cy = y + center1y; int8_t v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 0x7FFF); @@ -165,8 +163,8 @@ class PatternSMSinusoidSin16 : public LEDStripEffect } break; case 3: //Sinusoid IV - for (uint8_t y = 0; y < HEIGHT; y++) { - for (uint8_t x = 0; x < WIDTH; x++) { + for (uint8_t y = 0; y < MATRIX_HEIGHT; y++) { + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) { float cx = x + center1x; float cy = y + center1y; int8_t v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy) + time_shift * speedfactor * 100)) / 0x7FFF); @@ -187,8 +185,8 @@ class PatternSMSinusoidSin16 : public LEDStripEffect break; /* case 4: //changed by stepko //anaglyph sinusoid - for (uint8_t y = 0; y < HEIGHT; y++) { - for (uint8_t x = 0; x < WIDTH; x++) { + for (uint8_t y = 0; y < MATRIX_HEIGHT; y++) { + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) { float cx = x + center1x; float cy = y + center1y; int8_t v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy))) / 0x7FFF);// + time_shift * speedfactor)) / 0x7FFF); @@ -205,8 +203,8 @@ class PatternSMSinusoidSin16 : public LEDStripEffect break; */ case 4: //changed by stepko //colored sinusoid - for (uint8_t y = 0; y < HEIGHT; y++) { - for (uint8_t x = 0; x < WIDTH; x++) { + for (uint8_t y = 0; y < MATRIX_HEIGHT; y++) { + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) { float cx = x + center1x; float cy = y + center1y; int8_t v = 127 * (1 + float(sin16(_scale * (beatsin16(2,1000,1750)/2550.) * SQRT_VARIANT(cx * cx + cy * cy))) / 0x7FFF);// + time_shift * speedfactor * 5 // mass colors plus by SottNick @@ -226,8 +224,8 @@ class PatternSMSinusoidSin16 : public LEDStripEffect } break; case 5: //changed by stepko //sinusoid in net - for (uint8_t y = 0; y < HEIGHT; y++) { - for (uint8_t x = 0; x < WIDTH; x++) { + for (uint8_t y = 0; y < MATRIX_HEIGHT; y++) { + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) { float cx = x + center1x; float cy = y + center1y; int8_t v = 127 * (1 + float(sin16(_scale * SQRT_VARIANT(cx * cx + cy * cy) + time_shift * speedfactor * 5)) / 0x7FFF); @@ -246,8 +244,8 @@ class PatternSMSinusoidSin16 : public LEDStripEffect } break; case 6: //changed by stepko //spiral - for (uint8_t y = 0; y < HEIGHT; y++) { - for (uint8_t x = 0; x < WIDTH; x++) { + for (uint8_t y = 0; y < MATRIX_HEIGHT; y++) { + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) { float cx = x + center1x; float cy = y + center1y; //uint8_t v = 127 * (1 + float(sin16(_scale * (2 * atan2(cy, cx) + hypot(cy, cx)) + time_shift * speedfactor * 5)) / 0x7FFF); @@ -273,8 +271,8 @@ class PatternSMSinusoidSin16 : public LEDStripEffect } break; case 7: //variant by SottNick - for (uint8_t y = 0; y < HEIGHT; y++) { - for (uint8_t x = 0; x < WIDTH; x++) { + for (uint8_t y = 0; y < MATRIX_HEIGHT; y++) { + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) { float cx = x + center1x; float cy = y + center1y; //uint8_t v = 127 * (1 + float(sin16(_scale * (2 * atan2(cy, cx) + hypot(cy, cx)) + time_shift * speedfactor * 5)) / 0x7FFF); @@ -308,8 +306,8 @@ class PatternSMSinusoidSin16 : public LEDStripEffect } break; case 8: //variant by SottNick - for (uint8_t y = 0; y < HEIGHT; y++) { - for (uint8_t x = 0; x < WIDTH; x++) { + for (uint8_t y = 0; y < MATRIX_HEIGHT; y++) { + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) { float cx = x + center1x; float cy = y + center1y; //uint8_t v = 127 * (1 + float(sin16(_scale * (2 * atan2(cy, cx) + hypot(cy, cx)) + time_shift * speedfactor * 5)) / 0x7FFF); @@ -342,8 +340,8 @@ class PatternSMSinusoidSin16 : public LEDStripEffect /* case 8: //changed by stepko //blobs - for (uint8_t y = 0; y < HEIGHT; y++) { - for (uint8_t x = 0; x < WIDTH; x++) { + for (uint8_t y = 0; y < MATRIX_HEIGHT; y++) { + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) { float cx = x + center1x; float cy = y + center1y; uint8_t v = 30 * (max( diff --git a/include/effects/matrix/PatternSMStarDeep.h b/include/effects/matrix/PatternSMStarDeep.h new file mode 100644 index 000000000..15b0d75b9 --- /dev/null +++ b/include/effects/matrix/PatternSMStarDeep.h @@ -0,0 +1,199 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Inspired by https://editor.soulmatelights.com/gallery/1166-stars-beta-ver +// The original has a bunch of Palette management stuff we just didn't implement. + +class PatternSMStarDeep : public LEDStripEffect +#if ENABLE_AUDIO +, public BeatEffectBase +#endif +{ +private: + // Why are these named "bballs"? Probably reused effect innards. + // const int bballsMaxNUM = 100U; // the maximum number of tracked objects (very affects memory consumption) + #define bballsMaxNUM 100U // the maximum number of tracked objects (very affects memory consumption) + uint8_t bballsCOLOR[bballsMaxNUM]; // star color (reusing the Balls effect array) + uint8_t bballsX[bballsMaxNUM]; // number of corners in the star (reusing the Balls effect array + int bballsPos[bballsMaxNUM]; // delay the start of the star relative to the counter (reuse the Balls effect array) + uint8_t bballsNUM; // number of stars (reuse Balls effect variable) + + float driftx, drifty; + float cangle, sangle; + unsigned int counter;//, ringdelay;//, bringdelay, sumthum; + const TProgmemRGBPalette16 *curPalette = &PartyColors_p; + + const int STAR_BLENDER = 128U; // хз что это + const int CENTER_DRIFT_SPEED = 6U; // скорость перемещения плавающего центра возникновения звёзд + const int WIDTH = MATRIX_WIDTH; + const int HEIGHT = MATRIX_HEIGHT; + + //константы размера матрицы вычисляется только здесь и не меняется в эффектах + const uint8_t CENTER_X_MINOR = (WIDTH / 2) - ((WIDTH - 1) & 0x01); // центр матрицы по ИКСУ, сдвинутый в меньшую сторону, если ширина чётная + const uint8_t CENTER_Y_MINOR = (HEIGHT / 2) - ((HEIGHT - 1) & 0x01); // центр матрицы по ИГРЕКУ, сдвинутый в меньшую сторону, если высота чётная + const uint8_t CENTER_X_MAJOR = WIDTH / 2 + (WIDTH % 2); // центр матрицы по ИКСУ, сдвинутый в большую сторону, если ширина чётная + const uint8_t CENTER_Y_MAJOR = HEIGHT / 2 + (HEIGHT % 2); // центр матрицы по ИГРЕКУ, сдвинутый в большую сторону, если высота чётная + + const int spirocenterX = CENTER_X_MINOR; + const int spirocenterY = CENTER_Y_MINOR; + +public: + PatternSMStarDeep() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSTARDEEP, "Star Deep") + { + } + + PatternSMStarDeep(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + + driftx = random8(4, WIDTH - 4); // set an initial location for the animation center + drifty = random8(4, HEIGHT - 4); // set an initial location for the animation center + + cangle = (sin8(random(25, 220)) - 128.0) / 128.0;//angle of movement for the center of animation gives a float value between -1 and 1 + sangle = (sin8(random(25, 220)) - 128.0) / 128.0;//angle of movement for the center of animation in the y direction gives a float value between -1 and 1 + //shifty = random (3, 12);//how often the drifter moves будет CENTER_DRIFT_SPEED = 6 + + //pointy = 7; теперь количество углов у каждой звезды своё + bballsNUM = (WIDTH + 6U) / 2U;//(modes[currentMode].Scale - 1U) / 99.0 * (bballsMaxNUM - 1U) + 1U; + if (bballsNUM > bballsMaxNUM) bballsNUM = bballsMaxNUM; + for (uint8_t num = 0; num < bballsNUM; num++) { + bballsX[num] = random8(3, 9);//pointy = random8(3, 9); // количество углов в звезде + bballsPos[num] = counter + (num << 2) + 1U;//random8(50);//modes[currentMode].Scale;//random8(50, 99); // задержка следующего пуска звезды + bballsCOLOR[num] = random8(); + } + } + + // Don't use the system g()->DrawLine because this code draws into unsafe places, which clobbers + // memory and brings down the app. Use our clamped versions instead. + + // функция отрисовки точки по координатам X Y + void drawPixelXY(int8_t x, int8_t y, CRGB color) + { + if (x < 0 || x > (WIDTH - 1) || y < 0 || y > (HEIGHT - 1)) return; + // Mesmerizer flips the Y axis here. + uint32_t thisPixel = g()->xy((uint8_t)x, HEIGHT -1 - (uint8_t)y); + g()->leds[thisPixel] = color; + } + + //Дополнительная функция построения линий + void DrawLine(int x1, int y1, int x2, int y2, CRGB color) + { + int tmp; + int x,y; + int dx, dy; + int err; + int ystep; + + uint8_t swapxy = 0; + + if ( x1 > x2 ) dx = x1-x2; else dx = x2-x1; + if ( y1 > y2 ) dy = y1-y2; else dy = y2-y1; + + if ( dy > dx ) + { + swapxy = 1; + tmp = dx; dx =dy; dy = tmp; + tmp = x1; x1 =y1; y1 = tmp; + tmp = x2; x2 =y2; y2 = tmp; + } + if ( x1 > x2 ) + { + tmp = x1; x1 =x2; x2 = tmp; + tmp = y1; y1 =y2; y2 = tmp; + } + err = dx >> 1; + if ( y2 > y1 ) ystep = 1; else ystep = -1; + y = y1; + + for( x = x1; x <= x2; x++ ) + { + if ( swapxy == 0 ) drawPixelXY(x, y, color); + else drawPixelXY(y, x, color); + err -= (uint8_t)dy; + if ( err < 0 ) + { + y += ystep; + err += dx; + } + } + } + + void Drawstar(int16_t xlocl, int16_t ylocl, int16_t biggy, int16_t little, int16_t points, int16_t dangle, uint8_t koler)// random multipoint star + { + auto radius2 = 255 / points; + for (int i = 0; i < points; i++) + { + // две строчки выше - рисуют звезду просто по оттенку, а две строчки ниже - берут цвет из текущей палитры + DrawLine(xlocl + ((little * (sin8(i * radius2 + radius2 / 2 - dangle) - 128.0)) / 128), ylocl + ((little * (cos8(i * radius2 + radius2 / 2 - dangle) - 128.0)) / 128), xlocl + ((biggy * (sin8(i * radius2 - dangle) - 128.0)) / 128), ylocl + ((biggy * (cos8(i * radius2 - dangle) - 128.0)) / 128), ColorFromPalette(*curPalette, koler)); + DrawLine(xlocl + ((little * (sin8(i * radius2 - radius2 / 2 - dangle) - 128.0)) / 128), ylocl + ((little * (cos8(i * radius2 - radius2 / 2 - dangle) - 128.0)) / 128), xlocl + ((biggy * (sin8(i * radius2 - dangle) - 128.0)) / 128), ylocl + ((biggy * (cos8(i * radius2 - dangle) - 128.0)) / 128), ColorFromPalette(*curPalette, koler)); + } + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + g()->DimAll(89U); + + //hue++;//increment the color basis был общий оттенок на весь эффект. теперь у каждой звезды свой + //h = hue; //set h to the color basis + counter++; + + // This block of 6 'if's could probably be replaced by a std::clamp...if I could read this junk. + // This keeps the absolute unit of our drift (xy) and the angle of our drift (sin, cos) in check. + if (driftx > (WIDTH - spirocenterX / 2U))//change directin of drift if you get near the right 1/4 of the screen + cangle = 0 - fabs(cangle); + if (driftx < spirocenterX / 2U)//change directin of drift if you get near the right 1/4 of the screen + cangle = fabs(cangle); + if (counter % CENTER_DRIFT_SPEED == 0) + driftx = driftx + cangle;//move the x center every so often + + if (drifty > ( HEIGHT - spirocenterY / 2U))// if y gets too big, reverse + sangle = 0 - fabs(sangle); + if (drifty < spirocenterY / 2U) // if y gets too small reverse + sangle = fabs(sangle); + if ((counter + CENTER_DRIFT_SPEED / 2U) % CENTER_DRIFT_SPEED == 0) + drifty = drifty + sangle;//move the y center every so often + + // по идее, не нужно равнять диапазоны плавающего центра. за них и так вылет невозможен + // driftx = constrain(driftx, spirocenterX - spirocenterX / 3, spirocenterX + spirocenterX / 3);//constrain the center, probably never gets evoked any more but was useful at one time to keep the graphics on the screen.... + // drifty = constrain(drifty, spirocenterY - spirocenterY / 3, spirocenterY + spirocenterY / 3); + + for (uint8_t num = 0; num < bballsNUM; num++) { + if (counter >= bballsPos[num])//(counter >= ringdelay) + { + if (counter - bballsPos[num] <= WIDTH + 5U) { //(counter - ringdelay <= WIDTH + 5) { + //drawstar(driftx , drifty, 2 * (counter - ringdelay), (counter - ringdelay), pointy, blender + h, h * 2 + 85); + Drawstar(driftx , drifty, 2 * (counter - bballsPos[num]), (counter - bballsPos[num]), bballsX[num], STAR_BLENDER + bballsCOLOR[num], bballsCOLOR[num] * 2);//, h * 2 + 85);// что, бл, за 85?! + bballsCOLOR[num]++; + } + else { + //bballsX[num] = random8(3, 9);//pointy = random8(3, 9); // количество углов в звезде + bballsPos[num] = counter + (bballsNUM << 1) + 1U;//random8(50, 99);//modes[currentMode].Scale;//random8(50, 99); // задержка следующего пуска звезды + } + } + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 93bc23e44..51f34d8bd 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,9 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMSINUSOIDSIN16, PatternSMSinusoidSin16); + ADD_EFFECT(EFFECT_MATRIX_SMSTARDEEP, PatternSMStarDeep); + // ADD_EFFECT(EFFECT_MATRIX_SMFIREWORKS, PatternSMFireworks); + //ADD_EFFECT(EFFECT_MATRIX_SMSINUSOIDSIN16, PatternSMSinusoidSin16); // ADD_EFFECT(EFFECT_MATRIX_SM2DDPR, PatternSM2DDPR); // ADD_EFFECT(EFFECT_MATRIX_SMTRAFFIC, PatternSMTraffic); // ADD_EFFECT(EFFECT_MATRIX_SQUARES_AND_DOTS, PatternSMSquaresAndDots); From bb5e25ae97ff0ea0a04520fd7d7d5bef826d9e05 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Tue, 11 Jul 2023 14:57:17 -0500 Subject: [PATCH 013/168] Add working Magma --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/PatternSMMagma.h | 236 ++++++++++++++++++++++++ src/effects.cpp | 5 +- 4 files changed, 241 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMMagma.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index ae6ce7b3d..207930171 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -70,6 +70,7 @@ #include "effects/matrix/PatternSMSinusoidSin16.h" #include "effects/matrix/PatternSMFireworks.h" #include "effects/matrix/PatternSMStarDeep.h" + #include "effects/matrix/PatternSMMagma.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index 068a447da..1292ebd4a 100644 --- a/include/effects.h +++ b/include/effects.h @@ -116,6 +116,7 @@ #define EFFECT_MATRIX_SMSINUSOIDSIN16 143 #define EFFECT_MATRIX_SMFIREWORKS 144 #define EFFECT_MATRIX_SMSTARDEEP 145 +#define EFFECT_MATRIX_SMMAGMA 146 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMMagma.h b/include/effects/matrix/PatternSMMagma.h new file mode 100644 index 000000000..5a7b1cee2 --- /dev/null +++ b/include/effects/matrix/PatternSMMagma.h @@ -0,0 +1,236 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Inspired by https://editor.soulmatelights.com/gallery/1129-magma + +#if ENABLE_AUDIO +class PatternSMMagma : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMMagma : public LEDStripEffect +#endif +{ +private: +uint8_t Scale = 20; // 1-100 is palette and count // THIS is a setting 0-33, 34-66, 67-99 + + #define trackingOBJECT_MAX_COUNT (100U) // максимальное количество отслеживаемых объектов (очень влияет на расход памяти) +float trackingObjectPosX[trackingOBJECT_MAX_COUNT]; +float trackingObjectPosY[trackingOBJECT_MAX_COUNT]; +float trackingObjectSpeedX[trackingOBJECT_MAX_COUNT]; +float trackingObjectSpeedY[trackingOBJECT_MAX_COUNT]; +float trackingObjectShift[trackingOBJECT_MAX_COUNT]; +uint8_t trackingObjectHue[trackingOBJECT_MAX_COUNT]; +uint8_t trackingObjectState[trackingOBJECT_MAX_COUNT]; +bool trackingObjectIsShift[trackingOBJECT_MAX_COUNT]; +#define enlargedOBJECT_MAX_COUNT (MATRIX_WIDTH * 2) // максимальное количество сложных отслеживаемых объектов (меньше, чем trackingOBJECT_MAX_COUNT) +uint8_t enlargedObjectNUM; // используемое в эффекте количество объектов +long enlargedObjectTime[enlargedOBJECT_MAX_COUNT]; + +uint8_t deltaHue, deltaHue2; // ещё пара таких же, когда нужно много +uint8_t deltaValue; // просто повторно используемая переменная + +uint16_t ff_x, ff_y, ff_z; // большие счётчики +const TProgmemRGBPalette16 *curPalette = &PartyColors_p; + +#define NUM_LAYERSMAX 2 +uint8_t noise3d[NUM_LAYERSMAX][MATRIX_WIDTH][MATRIX_HEIGHT]; // двухслойная маска или хранилище свойств в размер всей матрицы +uint8_t line[MATRIX_WIDTH]; // свойство пикселей в размер строки матрицы +uint8_t shiftHue[MATRIX_HEIGHT]; // свойство пикселей в размер столбца матрицы +uint8_t shiftValue[MATRIX_HEIGHT]; + +//const int WIDTH = MATRIX_WIDTH; +//const int HEIGHT = MATRIX_HEIGHT; + + +public: + PatternSMMagma() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMMAGMA, "Magma") + { + } + + PatternSMMagma(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + + deltaValue = Scale * 0.0899;// /100.0F * ((sizeof(palette_arr) /sizeof(TProgmemRGBPalette16 *))-0.01F)); +// if (deltaValue == 3U ||deltaValue == 4U) +// curPalette = palette_arr[deltaValue]; // (uint8_t)(Scale/100.0F * ((sizeof(palette_arr) /sizeof(TProgmemRGBPalette16 *))-0.01F))]; +// else + curPalette = firePalettes[deltaValue]; // (uint8_t)(Scale/100.0F * ((sizeof(firePalettes)/sizeof(TProgmemRGBPalette16 *))-0.01F))]; + //deltaValue = (((Scale - 1U) % 11U + 1U) << 4U) - 8U; // ширина языков пламени (масштаб шума Перлина) + deltaValue = 12U; + deltaHue = 10U;// map(deltaValue, 8U, 168U, 8U, 84U); // высота языков пламени должна уменьшаться не так быстро, как ширина + //step = map(255U-deltaValue, 87U, 247U, 4U, 32U); // вероятность смещения искорки по оси ИКС + for (uint8_t j = 0; j < MATRIX_HEIGHT; j++) { + shiftHue[j] = (MATRIX_HEIGHT - 1 - j) * 255 / (MATRIX_HEIGHT - 1); // init colorfade table + } + + //FastLED.clear(); + //enlargedObjectNUM = (Scale - 1U) / 99.0 * (enlargedOBJECT_MAX_COUNT - 1U) + 1U; + enlargedObjectNUM = (Scale - 1U) % 11U / 10.0 * (enlargedOBJECT_MAX_COUNT - 1U) + 1U; + if (enlargedObjectNUM > enlargedOBJECT_MAX_COUNT) enlargedObjectNUM = enlargedOBJECT_MAX_COUNT; + //if (enlargedObjectNUM < 2U) enlargedObjectNUM = 2U; + + for (uint8_t i = 0 ; i < enlargedObjectNUM ; i++) { + trackingObjectPosX[i] = random8(MATRIX_WIDTH); + trackingObjectPosY[i] = random8(MATRIX_HEIGHT); + + //curr->color = CHSV(random(1U, 255U), 255U, 255U); + trackingObjectHue[i] = 50U;random8(); + } + } + +void LeapersRestart_leaper(uint8_t l) { + // leap up and to the side with some random component + trackingObjectSpeedX[l] = (1 * (float)random8(1, 100) / 100); + trackingObjectSpeedY[l] = (2 * (float)random8(1, 100) / 100); + + // for variety, sometimes go 50% faster + if (random8() < 12) { + trackingObjectSpeedX[l] += trackingObjectSpeedX[l] * 0.5; + trackingObjectSpeedY[l] += trackingObjectSpeedY[l] * 0.5; + } + + // leap towards the centre of the screen + if (trackingObjectPosX[l] > (MATRIX_WIDTH / 2)) { + trackingObjectSpeedX[l] = -trackingObjectSpeedX[l]; + } +} + + + void LeapersMove_leaper(uint8_t l) { +#define GRAVITY 0.06 +#define SETTLED_THRESHOLD 0.1 +#define WALL_FRICTION 0.95 +#define WIND 0.95 // wind resistance + + trackingObjectPosX[l] += trackingObjectSpeedX[l]; + trackingObjectPosY[l] += trackingObjectSpeedY[l]; + + // bounce off the floor and ceiling? + if (trackingObjectPosY[l] < 0 || trackingObjectPosY[l] > MATRIX_HEIGHT - 1) { + trackingObjectSpeedY[l] = (-trackingObjectSpeedY[l] * WALL_FRICTION); + trackingObjectSpeedX[l] = ( trackingObjectSpeedX[l] * WALL_FRICTION); + trackingObjectPosY[l] += trackingObjectSpeedY[l]; + if (trackingObjectPosY[l] < 0) + trackingObjectPosY[l] = 0; // settled on the floor? + if (trackingObjectPosY[l] <= SETTLED_THRESHOLD && fabs(trackingObjectSpeedY[l]) <= SETTLED_THRESHOLD) { + LeapersRestart_leaper(l); + } + } + + // bounce off the sides of the screen? + if (trackingObjectPosX[l] <= 0 || trackingObjectPosX[l] >= MATRIX_WIDTH - 1) { + trackingObjectSpeedX[l] = (-trackingObjectSpeedX[l] * WALL_FRICTION); + if (trackingObjectPosX[l] <= 0) { + //trackingObjectPosX[l] = trackingObjectSpeedX[l]; // the bug? + trackingObjectPosX[l] = -trackingObjectPosX[l]; + } else { + //trackingObjectPosX[l] = WIDTH - 1 - trackingObjectSpeedX[l]; // the bug? + trackingObjectPosX[l] = MATRIX_WIDTH + MATRIX_WIDTH - 2 - trackingObjectPosX[l]; + } + } + + trackingObjectSpeedY[l] -= GRAVITY; + trackingObjectSpeedX[l] *= WIND; + trackingObjectSpeedY[l] *= WIND; +} + +#if 1 +// функция получения цвета пикселя по его номеру +uint32_t getPixColor(uint32_t thisSegm) +{ + uint32_t thisPixel = thisSegm;// * SEGMENTS; + if (thisPixel > NUM_LEDS - 1) return 0; + return (((uint32_t)g()->leds[thisPixel].r << 16) | ((uint32_t)g()->leds[thisPixel].g << 8 ) | (uint32_t)g()->leds[thisPixel].b); // а почему не просто return (leds[thisPixel])? +} +#endif + + // функция получения цвета пикселя в матрице по его координатам + CRGB getPixColorXY(uint8_t x, uint8_t y) + { + // return getPixColor(g()->xy(x, y)); + return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; + //return g()->leds[g()->xy(x, y)]; + } + + // функция отрисовки точки по координатам X Y + void drawPixelXY(int8_t x, int8_t y, CRGB color) + { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) return; + // Mesmerizer flips the Y axis here. + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT - 1 - (uint8_t)y); + g()->leds[thisPixel] = color; + } + +//по мотивам +//https://gist.github.com/sutaburosu/32a203c2efa2bb584f4b846a91066583 +void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) +{ +// if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть как-нибудь учитывались тут // зато с этой строчкой пропадает нижний ряд + // extract the fractional parts and derive their inverses + uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; + // calculate the intensities for each affected pixel + #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) + uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), + WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; + // multiply the intensities by the colour, and saturating-add them to the pixels + for (uint8_t i = 0; i < 4; i++) { + int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); + CRGB clr = getPixColorXY(xn, yn); + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); +//if (darklevel) drawPixelXY(xn, yn, makeDarker(clr, darklevel)); +//else + drawPixelXY(xn, yn, clr); + } +} + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + g()->DimAll(181); + + for (uint8_t i = 0; i < MATRIX_WIDTH; i++) { + for (uint8_t j = 0; j < MATRIX_HEIGHT; j++) { + //leds[XY(i,HEIGHT-1U-j)] = ColorFromPalette(*curPalette, qsub8(inoise8(i * deltaValue, (j+ff_y+random8(2)) * deltaHue, ff_z), shiftHue[j]), 255U); + drawPixelXYF(i,MATRIX_HEIGHT-1U-j,ColorFromPalette(*curPalette, qsub8(inoise8(i * deltaValue, (j+ff_y+random8(2)) * deltaHue, ff_z), shiftHue[j]), 255U)); + } + } + + for (uint8_t i = 0; i < enlargedObjectNUM; i++) { + LeapersMove_leaper(i); + //drawPixelXYF(trackingObjectPosX[i], trackingObjectPosY[i], CHSV(trackingObjectHue[i], 255U, 255U)); + if (trackingObjectPosY[i] >= MATRIX_HEIGHT/4U) + drawPixelXYF(trackingObjectPosX[i], trackingObjectPosY[i], ColorFromPalette(*curPalette, trackingObjectHue[i])); + }; + + //blurScreen(20); + ff_y++; + if (ff_y & 0x01) + ff_z++; + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 51f34d8bd..cf808abae 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,9 +358,10 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMSTARDEEP, PatternSMStarDeep); + ADD_EFFECT(EFFECT_MATRIX_SMMAGMA, PatternSMMagma); + // ADD_EFFECT(EFFECT_MATRIX_SMSTARDEEP, PatternSMStarDeep); // ADD_EFFECT(EFFECT_MATRIX_SMFIREWORKS, PatternSMFireworks); - //ADD_EFFECT(EFFECT_MATRIX_SMSINUSOIDSIN16, PatternSMSinusoidSin16); + // ADD_EFFECT(EFFECT_MATRIX_SMSINUSOIDSIN16, PatternSMSinusoidSin16); // ADD_EFFECT(EFFECT_MATRIX_SM2DDPR, PatternSM2DDPR); // ADD_EFFECT(EFFECT_MATRIX_SMTRAFFIC, PatternSMTraffic); // ADD_EFFECT(EFFECT_MATRIX_SQUARES_AND_DOTS, PatternSMSquaresAndDots); From 909e05aa3a4794cf5ee09ea056a270220872ea4b Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Tue, 11 Jul 2023 15:15:19 -0500 Subject: [PATCH 014/168] Add Working AmberRain --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/PatternSMAmberRain.h | 127 ++++++++++++++++++++ src/effects.cpp | 5 +- 4 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMAmberRain.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 207930171..37112459f 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -71,6 +71,7 @@ #include "effects/matrix/PatternSMFireworks.h" #include "effects/matrix/PatternSMStarDeep.h" #include "effects/matrix/PatternSMMagma.h" + #include "effects/matrix/PatternSMAmberRain.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index 1292ebd4a..ecf462f1d 100644 --- a/include/effects.h +++ b/include/effects.h @@ -117,6 +117,7 @@ #define EFFECT_MATRIX_SMFIREWORKS 144 #define EFFECT_MATRIX_SMSTARDEEP 145 #define EFFECT_MATRIX_SMMAGMA 146 +#define EFFECT_MATRIX_SMAMBERRAIN 147 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMAmberRain.h b/include/effects/matrix/PatternSMAmberRain.h new file mode 100644 index 000000000..a13db5c83 --- /dev/null +++ b/include/effects/matrix/PatternSMAmberRain.h @@ -0,0 +1,127 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/2007-amber-rain + +class Circle { +public: + float thickness = 3.0; + long startTime; + uint16_t offset; + int16_t centerX; + int16_t centerY; + int hue; + int bpm = 10; + + void move() { + centerX = random(0, MATRIX_WIDTH); + centerY = random(0, MATRIX_HEIGHT); + } + + void reset() { + startTime = millis(); + centerX = random(0, MATRIX_WIDTH); + centerY = random(0, MATRIX_HEIGHT); + hue = random(0, 255); + offset = random(0, 60000 / bpm); + } + + float radius() { + float radius = beatsin16(10, 0, 500, offset) / 100.0; + return radius; + } +}; +const int NUMBER_OF_CIRCLES = 20; + + +#if ENABLE_AUDIO +class PatternSMAmberRain : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMAmberRain : public LEDStripEffect +#endif +{ +private: + Circle circles[NUMBER_OF_CIRCLES] = {}; + + void drawCircle(Circle circle) { + int16_t centerX = circle.centerX; + int16_t centerY = circle.centerY; + int hue = circle.hue; + float radius = circle.radius(); + + int16_t startX = centerX - ceil(radius); + int16_t endX = centerX + ceil(radius); + int16_t startY = centerY - ceil(radius); + int16_t endY = centerY + ceil(radius); + + for (int16_t x = startX; x < endX; x++) { + for (int16_t y = startY; y < endY; y++) { + int16_t index = g()->xy(x, y); + if (index < 0 || index > NUM_LEDS) + continue; + double distance = sqrt(sq(x - centerX) + sq(y - centerY)); + if (distance > radius) + continue; + + uint16_t brightness; + if (radius < 1) { // last pixel + brightness = 255.0 * radius; + } else { + double percentage = distance / radius; + double fraction = 1.0 - percentage; + brightness = 255.0 * fraction; + } + g()->leds[index] += CHSV(hue, 255, brightness); + } + } + } + +public: + PatternSMAmberRain() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMAMBERRAIN, "Amber Rain") + { + } + + PatternSMAmberRain(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + for (int i = 0; i < NUMBER_OF_CIRCLES; i++) { + circles[i].reset(); + } + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + fadeAllChannelsToBlackBy(32); + + for (int i = 0; i < NUMBER_OF_CIRCLES; i++) { + if (circles[i].radius() < 0.001) { + circles[i].move(); + } + drawCircle(circles[i]); + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index cf808abae..30593b4cf 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMMAGMA, PatternSMMagma); + ADD_EFFECT(EFFECT_MATRIX_SMAMBERRAIN, PatternSMAmberRain); + // ADD_EFFECT(EFFECT_MATRIX_SMMAGMA, PatternSMMagma); // ADD_EFFECT(EFFECT_MATRIX_SMSTARDEEP, PatternSMStarDeep); // ADD_EFFECT(EFFECT_MATRIX_SMFIREWORKS, PatternSMFireworks); // ADD_EFFECT(EFFECT_MATRIX_SMSINUSOIDSIN16, PatternSMSinusoidSin16); @@ -367,7 +368,7 @@ void LoadEffectFactories() // ADD_EFFECT(EFFECT_MATRIX_SQUARES_AND_DOTS, PatternSMSquaresAndDots); // ADD_EFFECT(EFFECT_MATRIX_SMLUMENJER_PALETTE, PatternSMLumenjerPalette); // ADD_EFFECT(EFFECT_MATRIX_SMONE_RING, PatternSMOneRing); - //ADD_EFFECT(EFFECT_MATRIX_SMSTROBE_DIFFUSION, PatternSMStrobeDiffusion); + // ADD_EFFECT(EFFECT_MATRIX_SMSTROBE_DIFFUSION, PatternSMStrobeDiffusion); // ADD_EFFECT(EFFECT_MATRIX_BALLS, PatternBalls); #if 0 ADD_EFFECT(EFFECT_MATRIX_BOUNCE, PatternBounce); From daf3475323e717cf86e40021f277c6cc6975b9d3 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Tue, 11 Jul 2023 15:51:29 -0500 Subject: [PATCH 015/168] Add Fire2021 --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/PatternSMFire2021.h | 91 ++++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 include/effects/matrix/PatternSMFire2021.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 37112459f..0bb1d0bc2 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -72,6 +72,7 @@ #include "effects/matrix/PatternSMStarDeep.h" #include "effects/matrix/PatternSMMagma.h" #include "effects/matrix/PatternSMAmberRain.h" + #include "effects/matrix/PatternSMFire2021.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index ecf462f1d..76163bc0a 100644 --- a/include/effects.h +++ b/include/effects.h @@ -118,6 +118,7 @@ #define EFFECT_MATRIX_SMSTARDEEP 145 #define EFFECT_MATRIX_SMMAGMA 146 #define EFFECT_MATRIX_SMAMBERRAIN 147 +#define EFFECT_MATRIX_SMFIRE2021 148 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMFire2021.h b/include/effects/matrix/PatternSMFire2021.h new file mode 100644 index 000000000..9f5e27746 --- /dev/null +++ b/include/effects/matrix/PatternSMFire2021.h @@ -0,0 +1,91 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/388-fire2021 + +#if ENABLE_AUDIO +class PatternSMFire2021 : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMFire2021 : public LEDStripEffect +#endif +{ +private: + uint8_t Speed = 150; // 1-252 ...why is not 255?! // Setting + uint8_t Scale = 9; // 1-99 is palette and scale // Setting + + uint8_t pcnt; // какой-то счётчик какого-то прогресса + uint8_t deltaValue; // просто повторно используемая переменная + uint16_t ff_x, ff_y, ff_z; // большие счётчики + uint8_t step; // какой-нибудь счётчик кадров или последовательностей операций + + + const TProgmemRGBPalette16 *curPalette; + +public: + PatternSMFire2021() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMFIRE2021, "Fire 2021") + { + } + + PatternSMFire2021(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + if (Scale > 100U) Scale = 100U; // чтобы не было проблем при прошивке без очистки памяти + deltaValue = Scale * 0.0899;// /100.0F * ((sizeof(palette_arr) /sizeof(TProgmemRGBPalette16 *))-0.01F)); +#if LATER + if (deltaValue == 3U ||deltaValue == 4U) + curPalette = palette_arr[deltaValue]; // (uint8_t)(Scale/100.0F * ((sizeof(palette_arr) /sizeof(TProgmemRGBPalette16 *))-0.01F))]; + else +#endif + curPalette = firePalettes[deltaValue]; // (uint8_t)(Scale/100.0F * ((sizeof(firePalettes)/sizeof(TProgmemRGBPalette16 *))-0.01F))]; + deltaValue = (((Scale - 1U) % 11U + 1U)); + step = map(Speed*Speed, 1U, 65025U, (deltaValue-1U)/2U+1U, deltaValue * 18U + 44); // корректируем скорость эффекта в наш диапазон допустимых + //deltaValue = (((Scale - 1U) % 11U + 2U) << 4U); // ширина языков пламени (масштаб шума Перлина) + deltaValue = 0.7 * deltaValue * deltaValue + 31.3; // ширина языков пламени (масштаб шума Перлина) + pcnt = map(step, 1U, 255U, 20U, 128U); // nblend 3th param + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + ff_x += step; //static uint32_t t += speed; + for (byte x = 0; x < MATRIX_WIDTH; x++) { + for (byte y = 0; y < MATRIX_HEIGHT; y++) { + int16_t Bri = inoise8(x * deltaValue, (y * deltaValue) - ff_x, ff_z) - (y * (255 / MATRIX_HEIGHT)); + byte Col = Bri;//inoise8(x * deltaValue, (y * deltaValue) - ff_x, ff_z) - (y * (255 / MATRIX_HEIGHT)); + if (Bri < 0) + Bri = 0; + if (Bri != 0) + Bri = 256 - (Bri * 0.2); + // NightDriver mod - invert Y argument. + nblend(g()->leds[g()->xy(x, MATRIX_HEIGHT-1-y)], ColorFromPalette(*curPalette, Col, Bri), pcnt); + } + } + + if (!random8()) + ff_z++; + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 30593b4cf..b4c9074c1 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMAMBERRAIN, PatternSMAmberRain); + ADD_EFFECT(EFFECT_MATRIX_SMFIRE2021, PatternSMFire2021); + // ADD_EFFECT(EFFECT_MATRIX_SMAMBERRAIN, PatternSMAmberRain); // ADD_EFFECT(EFFECT_MATRIX_SMMAGMA, PatternSMMagma); // ADD_EFFECT(EFFECT_MATRIX_SMSTARDEEP, PatternSMStarDeep); // ADD_EFFECT(EFFECT_MATRIX_SMFIREWORKS, PatternSMFireworks); From 23fcfc69a61095347c1eda2779996b6024f39460 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Tue, 11 Jul 2023 17:05:25 -0500 Subject: [PATCH 016/168] Add Wisp --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/PatternSMWisp.h | 48 ++++++++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 include/effects/matrix/PatternSMWisp.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 0bb1d0bc2..143462d34 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -73,6 +73,7 @@ #include "effects/matrix/PatternSMMagma.h" #include "effects/matrix/PatternSMAmberRain.h" #include "effects/matrix/PatternSMFire2021.h" + #include "effects/matrix/PatternSMWisp.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index 76163bc0a..9c6ffd762 100644 --- a/include/effects.h +++ b/include/effects.h @@ -119,6 +119,7 @@ #define EFFECT_MATRIX_SMMAGMA 146 #define EFFECT_MATRIX_SMAMBERRAIN 147 #define EFFECT_MATRIX_SMFIRE2021 148 +#define EFFECT_MATRIX_SMWISP 149 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMWisp.h b/include/effects/matrix/PatternSMWisp.h new file mode 100644 index 000000000..9ffb70f5d --- /dev/null +++ b/include/effects/matrix/PatternSMWisp.h @@ -0,0 +1,48 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +#if ENABLE_AUDIO +class PatternSMStrobeDiffusion : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMStrobeDiffusion : public LEDStripEffect +#endif +{ +private: +public: + PatternSMStrobeDiffusion() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSTROBE_DIFFUSION, "Strobe Diffusion") + { + } + + PatternSMStrobeDiffusion(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index b4c9074c1..77c26d52e 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMFIRE2021, PatternSMFire2021); + ADD_EFFECT(EFFECT_MATRIX_SMWISP, PatternSMWisp); + // ADD_EFFECT(EFFECT_MATRIX_SMFIRE2021, PatternSMFire2021); // ADD_EFFECT(EFFECT_MATRIX_SMAMBERRAIN, PatternSMAmberRain); // ADD_EFFECT(EFFECT_MATRIX_SMMAGMA, PatternSMMagma); // ADD_EFFECT(EFFECT_MATRIX_SMSTARDEEP, PatternSMStarDeep); From 3f07bedfbfcebd1047a8395afaf684d2ba77854d Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Tue, 11 Jul 2023 17:25:50 -0500 Subject: [PATCH 017/168] Add Wisp --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/PatternSMWisp.h | 117 +++++++++++++++++++++++-- src/effects.cpp | 3 +- 4 files changed, 115 insertions(+), 7 deletions(-) diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 143462d34..df7c44df9 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -74,6 +74,7 @@ #include "effects/matrix/PatternSMAmberRain.h" #include "effects/matrix/PatternSMFire2021.h" #include "effects/matrix/PatternSMWisp.h" + #include "effects/matrix/PatternSMFireworks2.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index 9c6ffd762..a44e93381 100644 --- a/include/effects.h +++ b/include/effects.h @@ -120,6 +120,7 @@ #define EFFECT_MATRIX_SMAMBERRAIN 147 #define EFFECT_MATRIX_SMFIRE2021 148 #define EFFECT_MATRIX_SMWISP 149 +#define EFFECT_MATRIX_SMFIREWORKS2 150 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMWisp.h b/include/effects/matrix/PatternSMWisp.h index 9ffb70f5d..555ad523b 100644 --- a/include/effects/matrix/PatternSMWisp.h +++ b/include/effects/matrix/PatternSMWisp.h @@ -3,23 +3,52 @@ #include "effects/strip/musiceffect.h" #include "effectmanager.h" +// Derived from https://editor.soulmatelights.com/gallery/1151-comet + #if ENABLE_AUDIO -class PatternSMStrobeDiffusion : public BeatEffectBase, public LEDStripEffect +class PatternSMWisp : public BeatEffectBase, public LEDStripEffect #else -class PatternSMStrobeDiffusion : public LEDStripEffect +class PatternSMWisp : public LEDStripEffect #endif { -private: + private: + + uint8_t Scale = 28; // 1-100 - Should be a setting + + const uint8_t noisesmooth = 200; + + + // matrix size constants are calculated only here and do not change in effects + const uint8_t CENTER_X_MINOR = (MATRIX_WIDTH / 2) - ((MATRIX_WIDTH - 1) & 0x01); // the center of the matrix according to ICSU, shifted to the smaller side, if the width is even + const uint8_t CENTER_Y_MINOR = (MATRIX_HEIGHT / 2) - ((MATRIX_HEIGHT - 1) & 0x01); // center of the YGREK matrix, shifted down if the height is even + const uint8_t CENTER_X_MAJOR = MATRIX_WIDTH / 2 + (MATRIX_WIDTH % 2); // the center of the matrix according to IKSU, shifted to a larger side, if the width is even + const uint8_t CENTER_Y_MAJOR = MATRIX_HEIGHT / 2 + (MATRIX_HEIGHT % 2); // center of the YGREK matrix, shifted up if the height is even + + CRGB ledsbuff[NUM_LEDS]; // копия массива leds[] целиком + + #define NUM_LAYERS 1 // в кометах используется 1 слой, но для огня 2018 нужно 2 + uint32_t noise32_x[NUM_LAYERSMAX]; + uint32_t noise32_y[NUM_LAYERSMAX]; + uint32_t noise32_z[NUM_LAYERSMAX]; + uint32_t scale32_x[NUM_LAYERSMAX]; + uint32_t scale32_y[NUM_LAYERSMAX]; + + #define NUM_LAYERSMAX 2 + uint8_t noise3d[NUM_LAYERSMAX][MATRIX_WIDTH][MATRIX_HEIGHT]; // двухслойная маска или хранилище свойств в размер всей матрицы + + int8_t zD; + int8_t zF; + public: - PatternSMStrobeDiffusion() : + PatternSMWisp() : #if ENABLE_AUDIO BeatEffectBase(1.50, 0.05), #endif - LEDStripEffect(EFFECT_MATRIX_SMSTROBE_DIFFUSION, "Strobe Diffusion") + LEDStripEffect(EFFECT_MATRIX_SMWISP, "Wisp") { } - PatternSMStrobeDiffusion(const JsonObjectConst& jsonObject) : + PatternSMWisp(const JsonObjectConst& jsonObject) : #if ENABLE_AUDIO BeatEffectBase(1.50, 0.05), #endif @@ -27,6 +56,64 @@ class PatternSMStrobeDiffusion : public LEDStripEffect { } +void MoveFractionalNoiseX(int8_t amplitude = 1, float shift = 0) { + for (uint8_t y = 0; y < MATRIX_HEIGHT; y++) { + int16_t amount = ((int16_t)noise3d[0][0][y] - 128) * 2 * amplitude + shift * 256 ; + int8_t delta = abs(amount) >> 8 ; + int8_t fraction = abs(amount) & 255; + for (uint8_t x = 0 ; x < MATRIX_WIDTH; x++) { + if (amount < 0) { + zD = x - delta; zF = zD - 1; + } else { + zD = x + delta; zF = zD + 1; + } + CRGB PixelA = CRGB::Black ; + if ((zD >= 0) && (zD < MATRIX_WIDTH)) PixelA = g()->leds[g()->xy(zD, y)]; + CRGB PixelB = CRGB::Black ; + if ((zF >= 0) && (zF < MATRIX_WIDTH)) PixelB = g()->leds[g()->xy(zF, y)]; + ledsbuff[g()->xy(x, y)] = (PixelA.nscale8(ease8InOutApprox(255 - fraction))) + (PixelB.nscale8(ease8InOutApprox(fraction))); // lerp8by8(PixelA, PixelB, fraction ); + } + } + memcpy(g()->leds, ledsbuff, sizeof(CRGB)* NUM_LEDS); +} + +void MoveFractionalNoiseY(int8_t amplitude = 1, float shift = 0) { + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) { + int16_t amount = ((int16_t)noise3d[0][x][0] - 128) * 2 * amplitude + shift * 256 ; + int8_t delta = abs(amount) >> 8 ; + int8_t fraction = abs(amount) & 255; + // for (uint8_t y = 0 ; y < MATRIX_HEIGHT; y++) { + for (uint8_t y = 0 ; y < MATRIX_HEIGHT; y++) { + if (amount < 0) { + zD = y - delta; zF = zD - 1; + } else { + zD = y + delta; zF = zD + 1; + } + CRGB PixelA = CRGB::Black ; + // NightDriver change: Keep it out of the AUDIO line or you'll get green ghost wisps (which are kinda cool) + if ((zD >= 1) && (zD < MATRIX_HEIGHT)) PixelA = g()->leds[g()->xy(x, zD)]; + CRGB PixelB = CRGB::Black ; + if ((zF >= 0) && (zF < MATRIX_HEIGHT)) PixelB = g()->leds[g()->xy(x, zF)]; + ledsbuff[g()->xy(x, y)] = (PixelA.nscale8(ease8InOutApprox(255 - fraction))) + (PixelB.nscale8(ease8InOutApprox(fraction))); + } + } + memcpy(g()->leds, ledsbuff, sizeof(CRGB)* NUM_LEDS); +} + +void FillNoise(int8_t layer) { + for (uint8_t i = 0; i < MATRIX_WIDTH; i++) { + int32_t ioffset = scale32_x[layer] * (i - CENTER_X_MINOR); + for (uint8_t j = 0; j < MATRIX_HEIGHT; j++) { + int32_t joffset = scale32_y[layer] * (j - CENTER_Y_MINOR); + int8_t data = inoise16(noise32_x[layer] + ioffset, noise32_y[layer] + joffset, noise32_z[layer]) >> 8; + int8_t olddata = noise3d[layer][i][j]; + int8_t newdata = scale8( olddata, noisesmooth ) + scale8( data, 255 - noisesmooth ); + data = newdata; + noise3d[layer][i][j] = data; + } + } +} + virtual void Start() override { g()->Clear(); @@ -37,6 +124,24 @@ class PatternSMStrobeDiffusion : public LEDStripEffect #if ENABLE_AUDIO ProcessAudio(); #endif + + g()->DimAll(254U); // < -- затухание эффекта для последующего кадра + CRGB _eNs_color = CHSV(millis() / Scale * 2, 255, 255); + g()->leds[g()->xy(CENTER_X_MINOR, CENTER_Y_MINOR)] += _eNs_color; + g()->leds[g()->xy(CENTER_X_MINOR + 1, CENTER_Y_MINOR)] += _eNs_color; + g()->leds[g()->xy(CENTER_X_MINOR, CENTER_Y_MINOR + 1)] += _eNs_color; + g()->leds[g()->xy(CENTER_X_MINOR + 1, CENTER_Y_MINOR + 1)] += _eNs_color; + + // Noise + noise32_x[0] += 1500; + noise32_y[0] += 1500; + noise32_z[0] += 1500; + scale32_x[0] = 8000; + scale32_y[0] = 8000; + FillNoise(0); + MoveFractionalNoiseX(MATRIX_WIDTH / 2U - 1U); + MoveFractionalNoiseY(MATRIX_HEIGHT / 2U - 1U); + } #if ENABLE_AUDIO diff --git a/src/effects.cpp b/src/effects.cpp index 77c26d52e..aad071d7c 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMWISP, PatternSMWisp); + ADD_EFFECT(EFFECT_MATRIX_SMFIREWORKS2, PatternSMFireworks2); + // ADD_EFFECT(EFFECT_MATRIX_SMWISP, PatternSMWisp); // ADD_EFFECT(EFFECT_MATRIX_SMFIRE2021, PatternSMFire2021); // ADD_EFFECT(EFFECT_MATRIX_SMAMBERRAIN, PatternSMAmberRain); // ADD_EFFECT(EFFECT_MATRIX_SMMAGMA, PatternSMMagma); From bc02356abd5849201cb5977ca1b739f3853d9ede Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Tue, 11 Jul 2023 18:46:48 -0500 Subject: [PATCH 018/168] Add Noise effect --- include/effectdependencies.h | 2 +- include/effects.h | 2 +- include/effects/matrix/PatternSMNoise.h | 1158 +++++++++++++++++++++++ src/effects.cpp | 2 +- 4 files changed, 1161 insertions(+), 3 deletions(-) create mode 100644 include/effects/matrix/PatternSMNoise.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index df7c44df9..7784baa25 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -74,7 +74,7 @@ #include "effects/matrix/PatternSMAmberRain.h" #include "effects/matrix/PatternSMFire2021.h" #include "effects/matrix/PatternSMWisp.h" - #include "effects/matrix/PatternSMFireworks2.h" + #include "effects/matrix/PatternSMNoise.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index a44e93381..8287c8120 100644 --- a/include/effects.h +++ b/include/effects.h @@ -120,7 +120,7 @@ #define EFFECT_MATRIX_SMAMBERRAIN 147 #define EFFECT_MATRIX_SMFIRE2021 148 #define EFFECT_MATRIX_SMWISP 149 -#define EFFECT_MATRIX_SMFIREWORKS2 150 +#define EFFECT_MATRIX_SMNOISE 150 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMNoise.h b/include/effects/matrix/PatternSMNoise.h new file mode 100644 index 000000000..c6985952d --- /dev/null +++ b/include/effects/matrix/PatternSMNoise.h @@ -0,0 +1,1158 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/1509-noise-palettes + +// Leave these as globals so they're kept in Flash. +DEFINE_GRADIENT_PALETTE( temperature_gp ) { + 0, 1, 27,105, + 14, 1, 27,105, + 14, 1, 40,127, + 28, 1, 40,127, + 28, 1, 70,168, + 42, 1, 70,168, + 42, 1, 92,197, + 56, 1, 92,197, + 56, 1,119,221, + 70, 1,119,221, + 70, 3,130,151, + 84, 3,130,151, + 84, 23,156,149, + 99, 23,156,149, + 99, 67,182,112, + 113, 67,182,112, + 113, 121,201, 52, + 127, 121,201, 52, + 127, 142,203, 11, + 141, 142,203, 11, + 141, 224,223, 1, + 155, 224,223, 1, + 155, 252,187, 2, + 170, 252,187, 2, + 170, 247,147, 1, + 184, 247,147, 1, + 184, 237, 87, 1, + 198, 237, 87, 1, + 198, 229, 43, 1, + 212, 229, 43, 1, + 212, 220, 15, 1, + 226, 220, 15, 1, + 226, 171, 2, 2, + 240, 171, 2, 2, + 240, 80, 3, 3, + 255, 80, 3, 3}; + +// Gradient palette "Analogous_1_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/red/tn/Analogous_1.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 20 bytes of program space. + +DEFINE_GRADIENT_PALETTE( Analogous_1_gp ) { + 0, 3, 0,255, + 63, 23, 0,255, + 127, 67, 0,255, + 191, 142, 0, 45, + 255, 255, 0, 0}; + +// Gradient palette "es_pinksplash_08_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/pink_splash/tn/es_pinksplash_08.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 20 bytes of program space. + +DEFINE_GRADIENT_PALETTE( es_pinksplash_08_gp ) { + 0, 126, 11,255, + 127, 197, 1, 22, + 175, 210,157,172, + 221, 157, 3,112, + 255, 157, 3,112}; + +// Gradient palette "es_pinksplash_07_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/pink_splash/tn/es_pinksplash_07.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 28 bytes of program space. + +DEFINE_GRADIENT_PALETTE( es_pinksplash_07_gp ) { + 0, 229, 1, 1, + 61, 242, 4, 63, + 101, 255, 12,255, + 127, 249, 81,252, + 153, 255, 11,235, + 193, 244, 5, 68, + 255, 232, 1, 5}; + +// Gradient palette "Coral_reef_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/other/tn/Coral_reef.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 24 bytes of program space. + +DEFINE_GRADIENT_PALETTE( Coral_reef_gp ) { + 0, 40,199,197, + 50, 10,152,155, + 96, 1,111,120, + 96, 43,127,162, + 139, 10, 73,111, + 255, 1, 34, 71}; + +// Gradient palette "es_ocean_breeze_068_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/ocean_breeze/tn/es_ocean_breeze_068.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 24 bytes of program space. + +DEFINE_GRADIENT_PALETTE( es_ocean_breeze_068_gp ) { + 0, 100,156,153, + 51, 1, 99,137, + 101, 1, 68, 84, + 104, 35,142,168, + 178, 0, 63,117, + 255, 1, 10, 10}; + +// Gradient palette "es_ocean_breeze_036_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/ocean_breeze/tn/es_ocean_breeze_036.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 16 bytes of program space. + +DEFINE_GRADIENT_PALETTE( es_ocean_breeze_036_gp ) { + 0, 1, 6, 7, + 89, 1, 99,111, + 153, 144,209,255, + 255, 0, 73, 82}; + +// Gradient palette "es_ocean_breeze_026_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/ocean_breeze/tn/es_ocean_breeze_026.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 20 bytes of program space. + +DEFINE_GRADIENT_PALETTE( es_ocean_breeze_026_gp ) { + 0, 52, 78, 71, + 76, 0, 16, 29, + 127, 1, 1, 1, + 178, 0, 16, 29, + 255, 52, 78, 71}; + + +// Gradient palette "colorcube_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/h5/tn/colorcube.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 256 bytes of program space. + +DEFINE_GRADIENT_PALETTE( colorcube_gp ) { + 0, 14, 22, 0, + 4, 14,104, 0, + 8, 14,255, 0, + 12, 88, 22, 0, + 16, 88,104, 0, + 20, 88,255, 0, + 24, 255, 22, 0, + 28, 255,104, 0, + 32, 255,255, 0, + 36, 0, 22, 44, + 40, 0,104, 44, + 44, 0,255, 44, + 48, 14, 0, 44, + 52, 14, 22, 44, + 56, 14,104, 44, + 60, 14,255, 44, + 64, 88, 0, 44, + 68, 88, 22, 44, + 72, 88,104, 44, + 76, 88,255, 44, + 80, 255, 0, 44, + 84, 255, 22, 44, + 89, 255,104, 44, + 93, 255,255, 44, + 97, 0, 22,255, + 101, 0,104,255, + 105, 0,255,255, + 109, 14, 0,255, + 113, 14, 22,255, + 117, 14,104,255, + 121, 14,255,255, + 125, 88, 0,255, + 129, 88, 22,255, + 133, 88,104,255, + 137, 88,255,255, + 141, 255, 0,255, + 145, 255, 22,255, + 149, 255,104,255, + 153, 2, 0, 0, + 157, 14, 0, 0, + 161, 41, 0, 0, + 165, 88, 0, 0, + 170, 157, 0, 0, + 174, 255, 0, 0, + 178, 0, 4, 0, + 182, 0, 22, 0, + 186, 0, 55, 0, + 190, 0,104, 0, + 194, 0,169, 0, + 198, 0,255, 0, + 202, 0, 0, 2, + 206, 0, 0, 15, + 210, 0, 0, 44, + 214, 0, 0, 92, + 218, 0, 0,160, + 222, 0, 0,255, + 226, 0, 0, 0, + 230, 1, 3, 1, + 234, 9, 15, 10, + 238, 27, 39, 30, + 242, 58, 73, 62, + 246, 106,121,109, + 250, 169,180,172, + 255, 255,255,255}; + + +// Gradient palette "es_landscape_64_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/landscape/tn/es_landscape_64.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 36 bytes of program space. + +DEFINE_GRADIENT_PALETTE( es_landscape_64_gp ) { + 0, 0, 0, 0, + 37, 2, 25, 1, + 76, 15,115, 5, + 127, 79,213, 1, + 128, 126,211, 47, + 130, 188,209,247, + 153, 144,182,205, + 204, 59,117,250, + 255, 1, 37,192}; + +// Gradient palette "es_landscape_33_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/landscape/tn/es_landscape_33.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 24 bytes of program space. + +DEFINE_GRADIENT_PALETTE( es_landscape_33_gp ) { + 0, 1, 5, 0, + 19, 32, 23, 1, + 38, 161, 55, 1, + 63, 229,144, 1, + 66, 39,142, 74, + 255, 1, 4, 1}; + +// Gradient palette "rainbowsherbet_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/ma/icecream/tn/rainbowsherbet.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 28 bytes of program space. + +DEFINE_GRADIENT_PALETTE( rainbowsherbet_gp ) { + 0, 255, 33, 4, + 43, 255, 68, 25, + 86, 255, 7, 25, + 127, 255, 82,103, + 170, 255,255,242, + 209, 42,255, 22, + 255, 87,255, 65}; + +// Gradient palette "gr65_hult_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/hult/tn/gr65_hult.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 24 bytes of program space. + +DEFINE_GRADIENT_PALETTE( gr65_hult_gp ) { + 0, 247,176,247, + 48, 255,136,255, + 89, 220, 29,226, + 160, 7, 82,178, + 216, 1,124,109, + 255, 1,124,109}; + +// Gradient palette "gr64_hult_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/hult/tn/gr64_hult.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 32 bytes of program space. + +DEFINE_GRADIENT_PALETTE( gr64_hult_gp ) { + 0, 1,124,109, + 66, 1, 93, 79, + 104, 52, 65, 1, + 130, 115,127, 1, + 150, 52, 65, 1, + 201, 1, 86, 72, + 239, 0, 55, 45, + 255, 0, 55, 45}; + +// Gradient palette "GMT_drywet_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/gmt/tn/GMT_drywet.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 28 bytes of program space. + +DEFINE_GRADIENT_PALETTE( GMT_drywet_gp ) { + 0, 47, 30, 2, + 42, 213,147, 24, + 84, 103,219, 52, + 127, 3,219,207, + 170, 1, 48,214, + 212, 1, 1,111, + 255, 1, 7, 33}; + +// Gradient palette "ib15_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/ing/general/tn/ib15.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 24 bytes of program space. + +DEFINE_GRADIENT_PALETTE( ib15_gp ) { + 0, 113, 91,147, + 72, 157, 88, 78, + 89, 208, 85, 33, + 107, 255, 29, 11, + 141, 137, 31, 39, + 255, 59, 33, 89}; + +// Gradient palette "Fuschia_7_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/ds/fuschia/tn/Fuschia-7.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 20 bytes of program space. + +DEFINE_GRADIENT_PALETTE( Fuschia_7_gp ) { + 0, 43, 3,153, + 63, 100, 4,103, + 127, 188, 5, 66, + 191, 161, 11,115, + 255, 135, 20,182}; + +// Gradient palette "es_emerald_dragon_08_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/emerald_dragon/tn/es_emerald_dragon_08.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 16 bytes of program space. + +DEFINE_GRADIENT_PALETTE( es_emerald_dragon_08_gp ) { + 0, 97,255, 1, + 101, 47,133, 1, + 178, 13, 43, 1, + 255, 2, 10, 1}; + +// Gradient palette "lava_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/neota/elem/tn/lava.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 52 bytes of program space. + +DEFINE_GRADIENT_PALETTE( lava_gp ) { + 0, 0, 0, 0, + 46, 18, 0, 0, + 96, 113, 0, 0, + 108, 142, 3, 1, + 119, 175, 17, 1, + 146, 213, 44, 2, + 174, 255, 82, 4, + 188, 255,115, 4, + 202, 255,156, 4, + 218, 255,203, 4, + 234, 255,255, 4, + 244, 255,255, 71, + 255, 255,255,255}; + +// Gradient palette "fire_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/neota/elem/tn/fire.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 28 bytes of program space. + +DEFINE_GRADIENT_PALETTE( fire_gp ) { + 0, 1, 1, 0, + 76, 32, 5, 0, + 146, 192, 24, 0, + 197, 220,105, 5, + 240, 252,255, 31, + 250, 252,255,111, + 255, 255,255,255}; + +// Gradient palette "Colorfull_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/atmospheric/tn/Colorfull.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 44 bytes of program space. + +DEFINE_GRADIENT_PALETTE( Colorfull_gp ) { + 0, 10, 85, 5, + 25, 29,109, 18, + 60, 59,138, 42, + 93, 83, 99, 52, + 106, 110, 66, 64, + 109, 123, 49, 65, + 113, 139, 35, 66, + 116, 192,117, 98, + 124, 255,255,137, + 168, 100,180,155, + 255, 22,121,174}; + +// Gradient palette "Magenta_Evening_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/atmospheric/tn/Magenta_Evening.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 28 bytes of program space. + +DEFINE_GRADIENT_PALETTE( Magenta_Evening_gp ) { + 0, 71, 27, 39, + 31, 130, 11, 51, + 63, 213, 2, 64, + 70, 232, 1, 66, + 76, 252, 1, 69, + 108, 123, 2, 51, + 255, 46, 9, 35}; + +// Gradient palette "Pink_Purple_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/atmospheric/tn/Pink_Purple.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 44 bytes of program space. + +DEFINE_GRADIENT_PALETTE( Pink_Purple_gp ) { + 0, 19, 2, 39, + 25, 26, 4, 45, + 51, 33, 6, 52, + 76, 68, 62,125, + 102, 118,187,240, + 109, 163,215,247, + 114, 217,244,255, + 122, 159,149,221, + 149, 113, 78,188, + 183, 128, 57,155, + 255, 146, 40,123}; + +// Gradient palette "Sunset_Real_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/atmospheric/tn/Sunset_Real.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 28 bytes of program space. + +DEFINE_GRADIENT_PALETTE( Sunset_Real_gp ) { + 0, 120, 0, 0, + 22, 179, 22, 0, + 51, 255,104, 0, + 85, 167, 22, 18, + 135, 100, 0,103, + 198, 16, 0,130, + 255, 0, 0,160}; + +// Gradient palette "es_autumn_19_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/es/autumn/tn/es_autumn_19.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 52 bytes of program space. + +DEFINE_GRADIENT_PALETTE( es_autumn_19_gp ) { + 0, 26, 1, 1, + 51, 67, 4, 1, + 84, 118, 14, 1, + 104, 137,152, 52, + 112, 113, 65, 1, + 122, 133,149, 59, + 124, 137,152, 52, + 135, 113, 65, 1, + 142, 139,154, 46, + 163, 113, 13, 1, + 204, 55, 3, 1, + 249, 17, 1, 1, + 255, 17, 1, 1}; + +// Gradient palette "BlacK_Blue_Magenta_White_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/BlacK_Blue_Magenta_White.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 28 bytes of program space. + +DEFINE_GRADIENT_PALETTE( BlacK_Blue_Magenta_White_gp ) { + 0, 0, 0, 0, + 42, 0, 0, 45, + 84, 0, 0,255, + 127, 42, 0,255, + 170, 255, 0,255, + 212, 255, 55,255, + 255, 255,255,255}; + +// Gradient palette "BlacK_Magenta_Red_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/BlacK_Magenta_Red.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 20 bytes of program space. + +DEFINE_GRADIENT_PALETTE( BlacK_Magenta_Red_gp ) { + 0, 0, 0, 0, + 63, 42, 0, 45, + 127, 255, 0,255, + 191, 255, 0, 45, + 255, 255, 0, 0}; + +// Gradient palette "BlacK_Red_Magenta_Yellow_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/BlacK_Red_Magenta_Yellow.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 28 bytes of program space. + +DEFINE_GRADIENT_PALETTE( BlacK_Red_Magenta_Yellow_gp ) { + 0, 0, 0, 0, + 42, 42, 0, 0, + 84, 255, 0, 0, + 127, 255, 0, 45, + 170, 255, 0,255, + 212, 255, 55, 45, + 255, 255,255, 0}; + +// Gradient palette "Blue_Cyan_Yellow_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/Blue_Cyan_Yellow.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 20 bytes of program space. + +DEFINE_GRADIENT_PALETTE( Blue_Cyan_Yellow_gp ) { + 0, 0, 0,255, + 63, 0, 55,255, + 127, 0,255,255, + 191, 42,255, 45, + 255, 255,255, 0}; + +// Gradient palette "BlacK_Blue_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/basic/tn/BlacK_Blue.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 12 bytes of program space. + +DEFINE_GRADIENT_PALETTE( BlacK_Blue_gp ) { + 0, 0, 0, 0, + 127, 0, 0, 45, + 255, 0, 0,255}; + +// Gradient palette "Stripped_Spectrum_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/nd/strips/tn/Stripped_Spectrum.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 512 bytes of program space. + +DEFINE_GRADIENT_PALETTE( Stripped_Spectrum_gp ) { + 0, 255, 0, 0, + 2, 255, 1, 0, + 4, 255, 1, 0, + 6, 255, 4, 0, + 9, 255, 8, 0, + 11, 255, 13, 0, + 13, 255, 21, 0, + 15, 255, 29, 0, + 15, 0, 0, 0, + 18, 0, 0, 0, + 20, 0, 0, 0, + 22, 0, 0, 0, + 25, 0, 0, 0, + 27, 0, 0, 0, + 29, 0, 0, 0, + 31, 0, 0, 0, + 31, 255,135, 0, + 34, 255,157, 0, + 36, 255,182, 0, + 38, 255,207, 0, + 40, 255,235, 0, + 43, 242,255, 0, + 45, 210,255, 0, + 47, 179,255, 0, + 47, 0, 0, 0, + 50, 0, 0, 0, + 52, 0, 0, 0, + 54, 0, 0, 0, + 56, 0, 0, 0, + 59, 0, 0, 0, + 61, 0, 0, 0, + 63, 0, 0, 0, + 63, 42,255, 0, + 66, 31,255, 0, + 68, 22,255, 0, + 57, 0, 0, 0, + 159, 0, 0, 0, + 159, 0, 12,255, + 161, 0, 7,255, + 163, 0, 3,255, + 166, 0, 1,255, + 168, 0, 1,255, + 170, 1, 0,255, + 173, 1, 0,255, + 175, 1, 0,255, + 175, 0, 0, 0, + 177, 0, 0, 0, + 179, 0, 0, 0, + 182, 0, 0, 0, + 184, 0, 0, 0, + 186, 0, 0, 0, + 188, 0, 0, 0, + 191, 0, 0, 0, + 191, 42, 0,255, + 193, 54, 0,255, + 195, 69, 0,255, + 198, 86, 0,255, + 200, 106, 0,255, + 202, 128, 0,255, + 204, 152, 0,255, + 207, 179, 0,255, + 207, 0, 0, 0, + 209, 0, 0, 0, + 211, 0, 0, 0, + 214, 0, 0, 0, + 216, 0, 0, 0, + 218, 0, 0, 0, + 220, 0, 0, 0, + 223, 0, 0, 0, + 223, 255, 0,123, + 225, 255, 0,112, + 227, 255, 0,103, + 229, 255, 0, 93, + 232, 255, 0, 84, + 234, 255, 0, 75, + 236, 255, 0, 67, + 239, 255, 0, 60, + 239, 0, 0, 0, + 241, 0, 0, 0, + 243, 0, 0, 0, + 245, 0, 0, 0, + 248, 0, 0, 0, + 250, 0, 0, 0, + 252, 0, 0, 0, + 255, 0, 0, 0}; + +// Gradient palette "bhw1_14_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/bhw/bhw1/tn/bhw1_14.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 36 bytes of program space. + +DEFINE_GRADIENT_PALETTE( bhw1_14_gp ) { + 0, 0, 0, 0, + 12, 1, 1, 3, + 53, 8, 1, 22, + 80, 4, 6, 89, + 119, 2, 25,216, + 145, 7, 10, 99, + 186, 15, 2, 31, + 233, 2, 1, 5, + 255, 0, 0, 0}; + +// Gradient palette "bhw2_22_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/bhw/bhw2/tn/bhw2_22.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 20 bytes of program space. + +DEFINE_GRADIENT_PALETTE( bhw2_22_gp ) { + 0, 0, 0, 0, + 99, 227, 1, 1, + 130, 249,199, 95, + 155, 227, 1, 1, + 255, 0, 0, 0}; + +// Gradient palette "bhw3_52_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/bhw/bhw3/tn/bhw3_52.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 28 bytes of program space. + +DEFINE_GRADIENT_PALETTE( bhw3_52_gp ) { + 0, 31, 1, 27, + 45, 34, 1, 16, + 99, 137, 5, 9, + 132, 213,128, 10, + 175, 199, 22, 1, + 201, 199, 9, 6, + 255, 1, 0, 1}; + +// Gradient palette "Deep_Sea_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/ggr/tn/Deep_Sea.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 20 bytes of program space. + +DEFINE_GRADIENT_PALETTE( Deep_Sea_gp ) { + 0, 0, 1, 2, + 148, 1, 7, 24, + 194, 2, 31, 77, + 226, 1,108,144, + 255, 0,237,235}; + +// Gradient palette "ofaurora_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/pj/2/tn/ofaurora.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 124 bytes of program space. + +DEFINE_GRADIENT_PALETTE( ofaurora_gp ) { + 0, 255,241,242, + 10, 237, 1, 9, + 15, 42, 1, 2, + 22, 1, 1, 1, + 35, 237, 1, 9, + 48, 255,241,242, + 58, 239, 57, 1, + 66, 1, 1, 1, + 76, 239, 57, 1, + 84, 255,241,242, + 94, 242,217, 1, + 101, 1, 1, 1, + 109, 242,217, 1, + 119, 255,241,242, + 127, 9,144, 36, + 132, 1, 1, 1, + 140, 9,144, 36, + 147, 255,241,242, + 158, 1,156,186, + 168, 1, 1, 1, + 178, 1,156,186, + 186, 255,241,242, + 198, 16, 13,255, + 206, 1, 1, 1, + 216, 16, 13,255, + 224, 255,241,242, + 234, 78, 1,156, + 237, 14, 1, 30, + 239, 1, 1, 1, + 244, 78, 1,156, + 255, 255,241,242}; + +// Gradient palette "shikon_22_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/gacruxa/shikon/tn/shikon-22.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 84 bytes of program space. + +DEFINE_GRADIENT_PALETTE( shikon_22_gp ) { + 0, 2, 2, 2, + 24, 217, 47, 0, + 26, 2, 2, 2, + 49, 126, 0, 1, + 51, 2, 2, 2, + 73, 0,223, 64, + 76, 2, 2, 2, + 100, 126, 0, 59, + 102, 2, 2, 2, + 125, 0,219,219, + 127, 2, 2, 2, + 151, 0, 25,219, + 153, 2, 2, 2, + 175, 44,223, 0, + 179, 2, 2, 2, + 201, 55, 2, 32, + 203, 2, 2, 2, + 226, 199,223, 0, + 229, 2, 2, 2, + 252, 26, 0,219, + 255, 2, 2, 2}; + +// Gradient palette "shikon_23_gp", originally from +// http://soliton.vm.bytemark.co.uk/pub/cpt-city/gacruxa/shikon/tn/shikon-23.png.index.html +// converted for FastLED with gammas (2.6, 2.2, 2.5) +// Size: 164 bytes of program space. + +DEFINE_GRADIENT_PALETTE( shikon_23_gp ) { + 0, 2, 2, 2, + 8, 2, 2, 2, + 10, 126, 0, 1, + 24, 126, 0, 1, + 25, 2, 2, 2, + 37, 2, 2, 2, + 38, 199,223, 0, + 49, 199,223, 0, + 50, 2, 2, 2, + 63, 2, 2, 2, + 65, 44,223, 0, + 77, 44,223, 0, + 77, 2, 2, 2, + 88, 2, 2, 2, + 89, 0,223, 64, + 101, 0,223, 64, + 102, 2, 2, 2, + 113, 2, 2, 2, + 114, 0,219,219, + 128, 0,219,219, + 129, 2, 2, 2, + 140, 2, 2, 2, + 141, 0, 25,219, + 153, 0, 25,219, + 153, 2, 2, 2, + 165, 2, 2, 2, + 166, 126, 0, 59, + 178, 126, 0, 59, + 179, 2, 2, 2, + 191, 2, 2, 2, + 192, 55, 2, 32, + 204, 55, 2, 32, + 205, 2, 2, 2, + 216, 2, 2, 2, + 217, 217, 47, 0, + 228, 217, 47, 0, + 228, 2, 2, 2, + 242, 2, 2, 2, + 243, 26, 0,219, + 250, 26, 0,219, + 255, 2, 2, 2}; + + + +#if ENABLE_AUDIO +class PatternSMNoise : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMNoise : public LEDStripEffect +#endif +{ +private: +uint8_t mode {0}; // Which of the 17 effects(!) are we showing? + +static const int MAX_DIMENSION = ((MATRIX_WIDTH > MATRIX_HEIGHT) ? MATRIX_WIDTH : MATRIX_HEIGHT); + +// The 16 bit version of our coordinates +uint16_t noisex; +uint16_t noisey; +uint16_t noisez; + +// We're using the x/y dimensions to map to the x/y pixels on the matrix. We'll +// use the z-axis for "time". speed determines how fast time moves forward. Try +// 1 for a very slow moving effect, or 60 for something that ends up looking like +// water. +uint32_t noisespeedx = 1; +uint32_t noisespeedy = 1; +uint32_t noisespeedz = 1; + +// Scale determines how far apart the pixels in our noise matrix are. Try +// changing these values around to see how it affects the motion of the display. The +// higher the value of scale, the more "zoomed out" the noise will be. A value +// of 1 will be so zoomed in, you'll mostly see solid colors. +uint16_t noisescale = 30; // scale is set dynamically once we've started up + +// This is the array that we keep our computed noise values in +uint8_t noise[MAX_DIMENSION][MAX_DIMENSION]; + +uint8_t colorLoop = 0; + +CRGBPalette16 blackAndWhiteStripedPalette; + +// This function sets up a palette of black and white stripes, +// using code. Since the palette is effectively an array of +// sixteen CRGB colors, the various fill_* functions can be used +// to set them up. +void SetupBlackAndWhiteStripedPalette() +{ + // 'black out' all 16 palette entries... + fill_solid( blackAndWhiteStripedPalette, 16, CRGB::Black); + // and set every fourth one to white. + blackAndWhiteStripedPalette[0] = CRGB::White; + blackAndWhiteStripedPalette[4] = CRGB::White; + blackAndWhiteStripedPalette[8] = CRGB::White; + blackAndWhiteStripedPalette[12] = CRGB::White; + +} + +CRGBPalette16 blackAndBlueStripedPalette; + +// This function sets up a palette of black and blue stripes, +// using code. Since the palette is effectively an array of +// sixteen CRGB colors, the various fill_* functions can be used +// to set them up. +void SetupBlackAndBlueStripedPalette() +{ + // 'black out' all 16 palette entries... + fill_solid( blackAndBlueStripedPalette, 16, CRGB::Black); + + for(uint8_t i = 0; i < 6; i++) { + blackAndBlueStripedPalette[i] = CRGB::Blue; + } +} + +// Fill the x/y array of 8-bit noise values using the inoise8 function. +void fillnoise8() { + + // If we're runing at a low "speed", some 8-bit artifacts become visible + // from frame-to-frame. In order to reduce this, we can do some fast data-smoothing. + // The amount of data smoothing we're doing depends on "speed". + uint8_t dataSmoothing = 0; + uint16_t lowestNoise = noisespeedx < noisespeedy ? noisespeedx : noisespeedy; + lowestNoise = lowestNoise < noisespeedz ? lowestNoise : noisespeedz; + if( lowestNoise < 8) { + dataSmoothing = 200 - (lowestNoise * 4); + } + + for(int i = 0; i < MAX_DIMENSION; i++) { + int ioffset = noisescale * i; + for(int j = 0; j < MAX_DIMENSION; j++) { + int joffset = noisescale * j; + + uint8_t data = inoise8(noisex + ioffset, noisey + joffset, noisez); + + // The range of the inoise8 function is roughly 16-238. + // These two operations expand those values out to roughly 0..255 + // You can comment them out if you want the raw noise data. + data = qsub8(data,16); + data = qadd8(data,scale8(data,39)); + + if( dataSmoothing ) { + uint8_t olddata = noise[i][j]; + uint8_t newdata = scale8( olddata, dataSmoothing) + scale8( data, 256 - dataSmoothing); + data = newdata; + } + + noise[i][j] = data; + } + } + + noisex += noisespeedx; + noisey += noisespeedy; + noisez += noisespeedz; +} + +void mapNoiseToLEDsUsingPalette(CRGBPalette16 palette, uint8_t hueReduce = 0) +{ + static uint8_t ihue=0; + + for(int i = 0; i < MATRIX_WIDTH; i++) { + for(int j = 0; j < MATRIX_HEIGHT; j++) { + // We use the value at the (i,j) coordinate in the noise + // array for our brightness, and the flipped value from (j,i) + // for our pixel's index into the color palette. + + uint8_t index = noise[j][i]; + uint8_t bri = noise[i][j]; + + // if this palette is a 'loop', add a slowly-changing base value + if( colorLoop) { + index += ihue; + } + + // brighten up, as the color palette itself often contains the + // light/dark dynamic range desired + if( bri > 127 ) { + bri = 255; + } else { + bri = dim8_raw( bri * 2); + } + + if(hueReduce > 0) { + if(index < hueReduce) index = 0; + else index -= hueReduce; + } + + CRGB color = ColorFromPalette( palette, index, bri); + uint16_t n = g()->xy(i, j); + + g()->leds[n] = color; + } + } + ihue+=1; +} + +uint16_t drawNoise(CRGBPalette16 palette,uint8_t hueReduce = 0) { + // generate noise data + fillnoise8(); + + // convert the noise data to colors in the LED array + // using the current palette + mapNoiseToLEDsUsingPalette(palette, hueReduce); + + return 10; +} +//=============================================== +uint16_t LavaLampRainbow() { + noisespeedx = 1; + noisespeedy = 0; + noisespeedz = 0; + noisescale = 10; + colorLoop = 0; + return drawNoise(RainbowColors_p); +} +//=============================================== +uint16_t LavaLampRainbowStripe() { + noisespeedx = 2; + noisespeedy = 0; + noisespeedz = 0; + noisescale = 20; + colorLoop = 0; + return drawNoise(RainbowStripeColors_p); +} +//=============================================== +uint16_t Party() { + noisespeedx = 1; + noisespeedy = 0; + noisespeedz = 0; + noisescale = 50; + colorLoop = 0; + return drawNoise(PartyColors_p); +} +//=============================================== +uint16_t Forest() { + noisespeedx = 9; + noisespeedy = 0; + noisespeedz = 0; + noisescale = 120; + colorLoop = 0; + return drawNoise(ForestColors_p); +} +//=============================================== +uint16_t Cloud() { + noisespeedx = 9; + noisespeedy = 0; + noisespeedz = 0; + noisescale = 30; + colorLoop = 0; + return drawNoise(CloudColors_p); +} +//=============================================== +uint16_t Fire() { + noisespeedx = 8; // 24; + noisespeedy = 0; + noisespeedz = 8; + noisescale = 50; + colorLoop = 0; + return drawNoise(HeatColors_p, 60); +} +//=============================================== +uint16_t FireNoise() { + noisespeedx = 8; // 24; + noisespeedy = 0; + noisespeedz = 8; + noisescale = 50; + colorLoop = 0; + return drawNoise(HeatColors_p, 60); +} +//=============================================== +uint16_t Lava() { + noisespeedx = 2; + noisespeedy = 0; + noisespeedz = 2; + noisescale = 20; + colorLoop = 0; + return drawNoise(LavaColors_p); +} +//=============================================== +uint16_t Ocean() { + noisespeedx = 9; + noisespeedy = 0; + noisespeedz = 0; + noisescale = 90; + colorLoop = 0; + return drawNoise(OceanColors_p); +} +//=============================================== +uint16_t BlackAndWhite() { + SetupBlackAndWhiteStripedPalette(); + noisespeedx = 9; + noisespeedy = 0; + noisespeedz = 0; + noisescale = 30; + colorLoop = 0; + return drawNoise(blackAndWhiteStripedPalette); +} +//=============================================== +uint16_t BlackAndBlue() { + SetupBlackAndBlueStripedPalette(); + noisespeedx = 9; + noisespeedy = 0; + noisespeedz = 0; + noisescale = 30; + colorLoop = 0; + return drawNoise(blackAndBlueStripedPalette); +} +//=============================================== +uint16_t Temperature() { + noisespeedx = 1; + noisespeedy = 0; + noisespeedz = 1; + noisescale = 25; //20 + colorLoop = 0; + return drawNoise(temperature_gp); +} +//=============================================== +uint16_t Spectrum() { + noisespeedx = 1; + noisespeedy = 0; + noisespeedz = 1; + noisescale = 25; //20 + colorLoop = 0; + return drawNoise(Stripped_Spectrum_gp); +} +//=============================================== +uint16_t OceanBreeze() { + noisespeedx = 1; + noisespeedy = 0; + noisespeedz = 1; + noisescale = 25; //20 + colorLoop = 0; + return drawNoise(es_ocean_breeze_026_gp); +} +//=============================================== +uint16_t DeepSea() { + noisespeedx = 1; + noisespeedy = 1; + noisespeedz = 0; + noisescale = 30; //20 + colorLoop = 0; + return drawNoise(Deep_Sea_gp); +} +//=============================================== +uint16_t Aurora() { + noisespeedx = 0; + noisespeedy = 1; + noisespeedz = 0; + noisescale = 30; //20 + colorLoop = 0; + return drawNoise(ofaurora_gp); +} +//=============================================== +uint16_t Shikon() { + noisespeedx = 1; + noisespeedy = 1; + noisespeedz = 0; + noisescale = 10; //20 + colorLoop = 0; + return drawNoise(shikon_23_gp); + return drawNoise(shikon_22_gp); +} +//=============================================== +uint16_t ColorCube() { + noisespeedx = 1; + noisespeedy = 1; + noisespeedz = 0; + noisescale = 15; //20 + colorLoop = 0; + return drawNoise(colorcube_gp); +} + +public: + PatternSMNoise() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMNOISE, "Noise Patterns") + { + } + + PatternSMNoise(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + noisex = random16(); + noisey = random16(); + noisez = random16(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + EVERY_N_SECONDS(5) { + if (mode++ > 17) + mode = 0; + } + switch (mode){ + case 0: LavaLampRainbow(); break; + case 1: LavaLampRainbowStripe(); break; + case 2: Party(); break; + case 3: Forest(); break; + case 4: Cloud(); break; + case 5: Fire(); break; + case 6: FireNoise(); break; + case 7: Lava(); break; + case 8: Ocean(); break; + case 9: BlackAndWhite(); break; + case 10: BlackAndBlue(); break; + case 11: Temperature(); break; + case 12: Spectrum(); break; + case 13: OceanBreeze(); break; + case 14: DeepSea(); break; + case 15: Aurora(); break; + case 16: Shikon(); break; + case 17: ColorCube(); break; + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index aad071d7c..a66a337e0 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,7 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMFIREWORKS2, PatternSMFireworks2); + ADD_EFFECT(EFFECT_MATRIX_SMNOISE, PatternSMNoise); // ADD_EFFECT(EFFECT_MATRIX_SMWISP, PatternSMWisp); // ADD_EFFECT(EFFECT_MATRIX_SMFIRE2021, PatternSMFire2021); // ADD_EFFECT(EFFECT_MATRIX_SMAMBERRAIN, PatternSMAmberRain); From 0c13e7d752e9e29a6fe4aa322d59f8063859ba93 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Tue, 11 Jul 2023 18:50:24 -0500 Subject: [PATCH 019/168] More thoughs on noise. --- include/effects/matrix/PatternSMNoise.h | 52 +++++++++++++------------ 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/include/effects/matrix/PatternSMNoise.h b/include/effects/matrix/PatternSMNoise.h index c6985952d..8c820ca8b 100644 --- a/include/effects/matrix/PatternSMNoise.h +++ b/include/effects/matrix/PatternSMNoise.h @@ -1123,30 +1123,34 @@ uint16_t ColorCube() { #if ENABLE_AUDIO ProcessAudio(); #endif - EVERY_N_SECONDS(5) { - if (mode++ > 17) - mode = 0; - } - switch (mode){ - case 0: LavaLampRainbow(); break; - case 1: LavaLampRainbowStripe(); break; - case 2: Party(); break; - case 3: Forest(); break; - case 4: Cloud(); break; - case 5: Fire(); break; - case 6: FireNoise(); break; - case 7: Lava(); break; - case 8: Ocean(); break; - case 9: BlackAndWhite(); break; - case 10: BlackAndBlue(); break; - case 11: Temperature(); break; - case 12: Spectrum(); break; - case 13: OceanBreeze(); break; - case 14: DeepSea(); break; - case 15: Aurora(); break; - case 16: Shikon(); break; - case 17: ColorCube(); break; - } + // For Mesmerizer/Nightdriver, I'm not sure this is the best + // final presentation. It just zips through 17 effects without + // announcing them in any way. Should it interact with audio or + // the remote or splash labels on the display or ... ? + EVERY_N_SECONDS(5) { + if (mode++ > 17) + mode = 0; + } + switch (mode){ + case 0: LavaLampRainbow(); break; + case 1: LavaLampRainbowStripe(); break; + case 2: Party(); break; + case 3: Forest(); break; + case 4: Cloud(); break; + case 5: Fire(); break; + case 6: FireNoise(); break; + case 7: Lava(); break; + case 8: Ocean(); break; + case 9: BlackAndWhite(); break; + case 10: BlackAndBlue(); break; + case 11: Temperature(); break; + case 12: Spectrum(); break; + case 13: OceanBreeze(); break; + case 14: DeepSea(); break; + case 15: Aurora(); break; + case 16: Shikon(); break; + case 17: ColorCube(); break; + } } #if ENABLE_AUDIO From 6c1afba0ded8e6ead89e1f8da00e5d25f22c3971 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Tue, 11 Jul 2023 20:26:40 -0500 Subject: [PATCH 020/168] Add Fire2012 --- include/effectdependencies.h | 1 + include/effects.h | 7 +- include/effects/matrix/PatternSMFire2012.h | 123 +++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 130 insertions(+), 4 deletions(-) create mode 100644 include/effects/matrix/PatternSMFire2012.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 7784baa25..18a7d8c70 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -72,6 +72,7 @@ #include "effects/matrix/PatternSMStarDeep.h" #include "effects/matrix/PatternSMMagma.h" #include "effects/matrix/PatternSMAmberRain.h" + #include "effects/matrix/PatternSMFire2012.h" #include "effects/matrix/PatternSMFire2021.h" #include "effects/matrix/PatternSMWisp.h" #include "effects/matrix/PatternSMNoise.h" diff --git a/include/effects.h b/include/effects.h index 8287c8120..7d0c91ee8 100644 --- a/include/effects.h +++ b/include/effects.h @@ -118,9 +118,10 @@ #define EFFECT_MATRIX_SMSTARDEEP 145 #define EFFECT_MATRIX_SMMAGMA 146 #define EFFECT_MATRIX_SMAMBERRAIN 147 -#define EFFECT_MATRIX_SMFIRE2021 148 -#define EFFECT_MATRIX_SMWISP 149 -#define EFFECT_MATRIX_SMNOISE 150 +#define EFFECT_MATRIX_SMFIRE2012 148 +#define EFFECT_MATRIX_SMFIRE2021 149 +#define EFFECT_MATRIX_SMWISP 150 +#define EFFECT_MATRIX_SMNOISE 151 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMFire2012.h b/include/effects/matrix/PatternSMFire2012.h new file mode 100644 index 000000000..efed59902 --- /dev/null +++ b/include/effects/matrix/PatternSMFire2012.h @@ -0,0 +1,123 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/1138-fire2012 + +#if ENABLE_AUDIO +class PatternSMFire2012 : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMFire2012 : public LEDStripEffect +#endif +{ +private: + uint8_t Scale = 63; // 0-100. < 50= FirePalette + scale > 50, choose scale // Should be a Setting. + + // TProgmemRGBPalette16 *curPalette = &PartyColors_p; + // добавлено изменение текущей палитры (используется во многих эффектах ниже для бегунка Масштаб) +const TProgmemRGBPalette16 *palette_arr[9] = { + &PartyColors_p, + &OceanColors_p, + &LavaColors_p, + &HeatColors_p, + &WaterfallColors_p, + &CloudColors_p, + &ForestColors_p, + &RainbowColors_p, + &RainbowStripeColors_p}; +const TProgmemRGBPalette16 *curPalette = palette_arr[0]; + +#define NUM_LAYERSMAX 2 + uint8_t noise3d[NUM_LAYERSMAX][MATRIX_WIDTH][MATRIX_HEIGHT]; // двухслойная маска или хранилище свойств в размер всей матрицы + + static inline uint8_t wrapX(int8_t x){ + return (x + MATRIX_WIDTH) % MATRIX_WIDTH; + } + static inline uint8_t wrapY(int8_t y){ + return (y + MATRIX_HEIGHT) % MATRIX_HEIGHT; + } +public: + + PatternSMFire2012() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMFIRE2012, "Fire 2012") + { + } + + PatternSMFire2012(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + + if (Scale > 100) Scale = 100; // чтобы не было проблем при прошивке без очистки памяти + if (Scale > 50) + curPalette = firePalettes[(uint8_t)((Scale - 50)/50.0F * ((sizeof(firePalettes)/sizeof(TProgmemRGBPalette16 *))-0.01F))]; + else + curPalette = palette_arr[(uint8_t)(Scale/50.0F * ((sizeof(palette_arr)/sizeof(TProgmemRGBPalette16 *))-0.01F))]; + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + #if MATRIX_HEIGHT/6 > 6 + #define FIRE_BASE 6 +#else + #define FIRE_BASE MATRIX_HEIGHT/6+1 +#endif + // COOLING: How much does the air cool as it rises? + // Less cooling = taller flames. More cooling = shorter flames. + uint8_t cooling = 70; + // SPARKING: What chance (out of 255) is there that a new spark will be lit? + // Higher chance = more roaring fire. Lower chance = more flickery fire. + uint8_t sparking = 130; + // SMOOTHING; How much blending should be done between frames + // Lower = more blending and smoother flames. Higher = less blending and flickery flames + const uint8_t fireSmoothing = 80; + // Add entropy to random number generator; we use a lot of it. + random16_add_entropy(random(256)); + + // Loop for each column individually + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) { + // Step 1. Cool down every cell a little + for (uint8_t i = 0; i < MATRIX_HEIGHT; i++) { + noise3d[0][x][i] = qsub8(noise3d[0][x][i], random(0, ((cooling * 10) / MATRIX_HEIGHT) + 2)); + } + + // Step 2. Heat from each cell drifts 'up' and diffuses a little + for (uint8_t k = MATRIX_HEIGHT - 1; k > 0; k--) { // fixed by SottNick + noise3d[0][x][k] = (noise3d[0][x][k - 1] + noise3d[0][x][k - 1] + noise3d[0][x][wrapY(k - 2)]) / 3; // fixed by SottNick + } + + // Step 3. Randomly ignite new 'sparks' of heat near the bottom + if (random8() < sparking) { + uint8_t j = random8(FIRE_BASE); + noise3d[0][x][j] = qadd8(noise3d[0][x][j], random(160, 255)); + } + + // Step 4. Map from heat cells to LED colors + // Blend new data with previous frame. Average data between neighbouring pixels + // Nightdriver/Mesmerizer change: invert Y axis. + for (uint8_t y = 0; y < MATRIX_HEIGHT; y++) + nblend(g()->leds[g()->xy(x,MATRIX_HEIGHT - 1 - y)], ColorFromPalette(*curPalette, ((noise3d[0][x][y]*0.7) + (noise3d[0][wrapX(x+1)][y]*0.3))), fireSmoothing); + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index a66a337e0..809f703c8 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,8 +358,9 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMNOISE, PatternSMNoise); + // ADD_EFFECT(EFFECT_MATRIX_SMNOISE, PatternSMNoise); // ADD_EFFECT(EFFECT_MATRIX_SMWISP, PatternSMWisp); + ADD_EFFECT(EFFECT_MATRIX_SMFIRE2012, PatternSMFire2012); // ADD_EFFECT(EFFECT_MATRIX_SMFIRE2021, PatternSMFire2021); // ADD_EFFECT(EFFECT_MATRIX_SMAMBERRAIN, PatternSMAmberRain); // ADD_EFFECT(EFFECT_MATRIX_SMMAGMA, PatternSMMagma); From d0867884d77512eda1e4c205253ec0fdc8c42197 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Wed, 12 Jul 2023 06:46:19 -0500 Subject: [PATCH 021/168] I swear I've fixed this before... --- src/network.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/network.cpp b/src/network.cpp index d7a1d7fbf..a0e69f387 100644 --- a/src/network.cpp +++ b/src/network.cpp @@ -459,7 +459,7 @@ bool ReadWiFiConfig() WiFi_password = szBuffer; // Don't check in changes that would display the password in logs, etc. - debugW("Retrieved SSID and Password from NVS: %s, %s", WiFi_ssid, "********"); + debugW("Retrieved SSID and Password from NVS: %s, %s", WiFi_ssid.c_str(), "********"); nvs_close(nvsROHandle); return true; From 66dd4baa1b3f8d471d0ec972b12760f0d6924dbc Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Wed, 12 Jul 2023 06:47:45 -0500 Subject: [PATCH 022/168] Add Picasso3in1 effects. This is actually a really cool effects library. I've just spent WAY too long trying to make it automatically demonstrable in Nightdriver/Mesmerizer. It's the first effect I've tinkered with where it's entirely possible to bring down the watchdog timer. I've modified it to just jump between fixed settings on the primary three effects. This commit has a lot of the experimental work cruft that I'm about to delete because hours later, there's just no gold at the end of that rainbow. Sure, I'd LIKE to be able to demonstrate one line, two lines, three lines, ... but not when iterated over 33 effects times three moddes (one is the number of circles, one is the number of, uhm, light sabers, and is the number of LS's with heavy ghost trails - all three in 3D. But not at the risk of bringing down the board. :-( I couldn't find a way to support moving 33 light bars with each endpoint moving randomly in 3d space with linear interpolations AND with ghosting and keep it from blowing our frame budget. Bummer. Here's the work product. I'm going to rinse out the tears and blood in the next (?) commit. --- include/effectdependencies.h | 1 + include/effects.h | 1 + .../effects/matrix/PatternSMFPicasso3in1.h | 326 ++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 330 insertions(+), 1 deletion(-) create mode 100644 include/effects/matrix/PatternSMFPicasso3in1.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 18a7d8c70..9033659a0 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -76,6 +76,7 @@ #include "effects/matrix/PatternSMFire2021.h" #include "effects/matrix/PatternSMWisp.h" #include "effects/matrix/PatternSMNoise.h" + #include "effects/matrix/PatternSMFPicasso3in1.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index 7d0c91ee8..695385f28 100644 --- a/include/effects.h +++ b/include/effects.h @@ -122,6 +122,7 @@ #define EFFECT_MATRIX_SMFIRE2021 149 #define EFFECT_MATRIX_SMWISP 150 #define EFFECT_MATRIX_SMNOISE 151 +#define EFFECT_MATRIX_SMPICASSO3IN1 152 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMFPicasso3in1.h b/include/effects/matrix/PatternSMFPicasso3in1.h new file mode 100644 index 000000000..8781e4429 --- /dev/null +++ b/include/effects/matrix/PatternSMFPicasso3in1.h @@ -0,0 +1,326 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +#if ENABLE_AUDIO +class PatternSMPicasso3in1 : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMPicasso3in1 : public LEDStripEffect +#endif +{ +private: + // Suggested values for Mesmerizer w/ 1/2 HUB75 panel: 10, 36, 70 + uint8_t Scale = 36; // 1-100 is image type and count. THis should be a Setting 0-33 = P1, 34-68 = P2, 68-99 = Picasso3 + // P1 - Scale is number of independent lines drawn w/ trailers. 20 or so = Pink Floyd 'Pulse' laser show. + // P2 - 34 & up. Scale -33 == number of vertices on a connected polyline "wire" rotating in 3d. 38 up? SLOW! + // P3 - 68 & up. Scale -68 -2 == number of circles *68=2, 69=3, 70=4, etc. 80 up? SLOW +#define trackingOBJECT_MAX_COUNT (100U) // максимальное количество отслеживаемых объектов (очень влияет на расход памяти) +float trackingObjectPosX[trackingOBJECT_MAX_COUNT]; +float trackingObjectPosY[trackingOBJECT_MAX_COUNT]; +float trackingObjectSpeedX[trackingOBJECT_MAX_COUNT]; +float trackingObjectSpeedY[trackingOBJECT_MAX_COUNT]; +float trackingObjectShift[trackingOBJECT_MAX_COUNT]; +uint8_t trackingObjectHue[trackingOBJECT_MAX_COUNT]; +uint8_t trackingObjectState[trackingOBJECT_MAX_COUNT]; +bool trackingObjectIsShift[trackingOBJECT_MAX_COUNT]; +#define enlargedOBJECT_MAX_COUNT (MATRIX_WIDTH * 2) // максимальное количество сложных отслеживаемых объектов (меньше, чем trackingOBJECT_MAX_COUNT) +uint8_t enlargedObjectNUM; // используемое в эффекте количество объектов +long enlargedObjectTime[enlargedOBJECT_MAX_COUNT]; + + // функция отрисовки точки по координатам X Y + void drawPixelXYF(float x, float y, CRGB color) + { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) return; + if (x < 1 || x > (MATRIX_WIDTH - 2) || y < 1 || y > (MATRIX_HEIGHT - 2)) return; + // uint32_t thisPixel = g()->xy((uint8_t)x, (uint8_t)y); + // NightDriver's coordinate system is dfferent. Invert height and this all works! + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT-(uint8_t)y); + g()->leds[thisPixel] = color; + } + // функция отрисовки точки по координатам X Y + void drawPixelXY(int x, int y, CRGB color) + { + drawPixelXYF(x, y, color); + } +// ------------------------------ Дополнительные функции рисования ---------------------- +void DrawLine(int x1, int y1, int x2, int y2, CRGB color) +{ + int deltaX = abs(x2 - x1); + int deltaY = abs(y2 - y1); + int signX = x1 < x2 ? 1 : -1; + int signY = y1 < y2 ? 1 : -1; + int error = deltaX - deltaY; + + drawPixelXY(x2, y2, color); + while (x1 != x2 || y1 != y2) { + drawPixelXY(x1, y1, color); + int error2 = error * 2; + if (error2 > -deltaY) { + error -= deltaY; + x1 += signX; + } + if (error2 < deltaX) { + error += deltaX; + y1 += signY; + } + } +} + +void DrawLineF(float x1, float y1, float x2, float y2, CRGB color){ + float deltaX = fabs(x2 - x1); + float deltaY = fabs(y2 - y1); + float error = deltaX - deltaY; + + float signX = x1 < x2 ? 0.5 : -0.5; + float signY = y1 < y2 ? 0.5 : -0.5; + + while (x1 != x2 || y1 != y2) { // (true) - а я то думаю - "почему функция часто вызывает вылет по вачдогу?" А оно вон оно чё, Михалычь! + if ((signX > 0 && x1 > x2+signX) || (signX < 0 && x1 < x2+signX)) break; + if ((signY > 0 && y1 > y2+signY) || (signY < 0 && y1 < y2+signY)) break; + drawPixelXYF(x1, y1, color); // интересно, почему тут было обычное drawPixelXY() ??? + float error2 = error; + if (error2 > -deltaY) { + error -= deltaY; + x1 += signX; + } + if (error2 < deltaX) { + error += deltaX; + y1 += signY; + } + } +} + + // We use our own drawCircle() and drawPixel() because we KNOW we're going to draw near + // edges and the system versions scribble on memory when we do. Ours clamp. + void drawCircle(int x0, int y0, int radius, const CRGB &color) + { + int a = radius, b = 0; + int radiusError = 1 - a; + + if (radius == 0) { + drawPixelXY(x0, y0, color); + return; + } + + while (a >= b) { + drawPixelXY(a + x0, b + y0, color); + drawPixelXY(b + x0, a + y0, color); + drawPixelXY(-a + x0, b + y0, color); + drawPixelXY(-b + x0, a + y0, color); + drawPixelXY(-a + x0, -b + y0, color); + drawPixelXY(-b + x0, -a + y0, color); + drawPixelXY(a + x0, -b + y0, color); + drawPixelXY(b + x0, -a + y0, color); + b++; + if (radiusError < 0) + radiusError += 2 * b + 1; + else + { + a--; + radiusError += 2 * (b - a + 1); + } + } + } + + +void PicassoGenerate(bool reset){ + static int loadingFlag = true; + if (loadingFlag) + { + loadingFlag = false; + //setCurrentPalette(); + //FastLED.clear(); +// not for 3in1 +// enlargedObjectNUM = (modes[currentMode].Scale - 1U) / 99.0 * (enlargedOBJECT_MAX_COUNT - 1U) + 1U; + //enlargedObjectNUM = (modes[currentMode].Scale - 1U) % 11U / 10.0 * (enlargedOBJECT_MAX_COUNT - 1U) + 1U; + if (enlargedObjectNUM > enlargedOBJECT_MAX_COUNT) enlargedObjectNUM = enlargedOBJECT_MAX_COUNT; + if (enlargedObjectNUM < 2U) enlargedObjectNUM = 2U; + + double minSpeed = 0.2, maxSpeed = 0.8; + + for (uint8_t i = 0 ; i < enlargedObjectNUM ; i++) { + trackingObjectPosX[i] = random8(MATRIX_WIDTH); + trackingObjectPosY[i] = random8(MATRIX_HEIGHT); + + //curr->color = CHSV(random(1U, 255U), 255U, 255U); + trackingObjectHue[i] = random8(); + + trackingObjectSpeedY[i] = +((-maxSpeed / 3) + (maxSpeed * (float)random8(1, 100) / 100)); + trackingObjectSpeedY[i] += trackingObjectSpeedY[i] > 0 ? minSpeed : -minSpeed; + + trackingObjectShift[i] = +((-maxSpeed / 2) + (maxSpeed * (float)random8(1, 100) / 100)); + trackingObjectShift[i] += trackingObjectShift[i] > 0 ? minSpeed : -minSpeed; + + trackingObjectState[i] = trackingObjectHue[i]; + + } + } + for (uint8_t i = 0 ; i < enlargedObjectNUM ; i++) { + if (reset) { + trackingObjectState[i] = random8(); + trackingObjectSpeedX[i] = (trackingObjectState[i] - trackingObjectHue[i]) / 25; + } + if (trackingObjectState[i] != trackingObjectHue[i] && trackingObjectSpeedX[i]) { + trackingObjectHue[i] += trackingObjectSpeedX[i]; + } + } +} + +void PicassoPosition(){ + for (uint8_t i = 0 ; i < enlargedObjectNUM ; i++) { + if (trackingObjectPosX[i] + trackingObjectSpeedY[i] > MATRIX_WIDTH || trackingObjectPosX[i] + trackingObjectSpeedY[i] < 0) { + trackingObjectSpeedY[i] = -trackingObjectSpeedY[i]; + } + + if (trackingObjectPosY[i] + trackingObjectShift[i] > MATRIX_HEIGHT || trackingObjectPosY[i] + trackingObjectShift[i] < 0) { + trackingObjectShift[i] = -trackingObjectShift[i]; + } + + trackingObjectPosX[i] += trackingObjectSpeedY[i]; + trackingObjectPosY[i] += trackingObjectShift[i]; + }; +} + + + void PicassoRoutine1(){ + PicassoGenerate(false); + PicassoPosition(); + +// for (unsigned i = 0; i < numParticles - 2; i+=2) { +// Particle *p1 = (Particle *)&particles[i]; +// Particle *p2 = (Particle *)&particles[i + 1]; +// DrawLine(p1->position_x, p1->position_y, p2->position_x, p2->position_y, p1->color); +// } + for (uint8_t i = 0 ; i < enlargedObjectNUM - 2U ; i+=2) + DrawLine(trackingObjectPosX[i], trackingObjectPosY[i], trackingObjectPosX[i+1U], trackingObjectPosY[i+1U], CHSV(trackingObjectHue[i], 255U, 255U)); + //DrawLine(trackingObjectPosX[i], trackingObjectPosY[i], trackingObjectPosX[i+1U], trackingObjectPosY[i+1U], ColorFromPalette(*curPalette, trackingObjectHue[i])); + + + EVERY_N_MILLIS(20000){ + PicassoGenerate(true); + } + g()->BlurFrame(80); + +// g()->blurScreen(80); + } + void PicassoRoutine2(){ + PicassoGenerate(false); + PicassoPosition(); + g()->DimAll(180); + +// for (unsigned i = 0; i < numParticles - 1; i++) { +// Particle *p1 = (Particle *)&particles[i]; +// Particle *p2 = (Particle *)&particles[i + 1]; +// DrawLineF(p1->position_x, p1->position_y, p2->position_x, p2->position_y, p1->color); +// } + for (uint8_t i = 0 ; i < enlargedObjectNUM - 1U ; i++) + DrawLineF(trackingObjectPosX[i], trackingObjectPosY[i], trackingObjectPosX[i+1U], trackingObjectPosY[i+1U], CHSV(trackingObjectHue[i], 255U, 255U)); + //DrawLineF(trackingObjectPosX[i], trackingObjectPosY[i], trackingObjectPosX[i+1U], trackingObjectPosY[i+1U], ColorFromPalette(*curPalette, trackingObjectHue[i])); + + EVERY_N_MILLIS(20000){ + PicassoGenerate(true); + } + g()->BlurFrame(80); + + // blurScreen(80); + } + void PicassoRoutine3(){ + + PicassoGenerate(false); + PicassoPosition(); + g()->DimAll(180); + +// for (unsigned i = 0; i < numParticles - 2; i+=2) { +// Particle *p1 = (Particle *)&particles[i]; +// Particle *p2 = (Particle *)&particles[i + 1]; +// drawCircleF(std::fabs(p1->position_x - p2->position_x), std::fabs(p1->position_y - p2->position_y), std::fabs(p1->position_x - p1->position_y), p1->color); +// } + for (uint8_t i = 0 ; i < enlargedObjectNUM - 2U ; i+=2) + drawCircle(fabs(trackingObjectPosX[i] - trackingObjectPosX[i+1U]), fabs(trackingObjectPosY[i] - trackingObjectPosX[i+1U]), fabs(trackingObjectPosX[i] - trackingObjectPosY[i]), CHSV(trackingObjectHue[i], 255U, 255U)); + //drawCircleF(fabs(trackingObjectPosX[i] - trackingObjectPosX[i+1U]), fabs(trackingObjectPosY[i] - trackingObjectPosX[i+1U]), fabs(trackingObjectPosX[i] - trackingObjectPosY[i]), ColorFromPalette(*curPalette, trackingObjectHue[i])); + + EVERY_N_MILLIS(20000){ + PicassoGenerate(true); + } + g()->BlurFrame(80); + + // g()->blurScreen(80); + } + +public: + PatternSMPicasso3in1() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMPICASSO3IN1, "Picasso 3in1") + { + } + + PatternSMPicasso3in1(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + void RecalibrateDrawnObjects() { + if (Scale < 34U) // если масштаб до 34 + enlargedObjectNUM = (Scale - 1U) / 32.0 * (enlargedOBJECT_MAX_COUNT - 3U) + 3U; + else if (Scale >= 68U) // если масштаб больше 67 + enlargedObjectNUM = (Scale - 68U) / 32.0 * (enlargedOBJECT_MAX_COUNT - 3U) + 3U; + else // для масштабов посередине + enlargedObjectNUM = (Scale - 34U) / 33.0 * (enlargedOBJECT_MAX_COUNT - 1U) + 1U; + } + + virtual void Start() override + { + g()->Clear(); + RecalibrateDrawnObjects(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif +//Scale = 20; // PR1 +Scale = 45; // PR2 +// Scale = 85; // PR3 + + // Mesmerizer/NightDriver demo: just pick some preset and skip through them. + // Good way to demo off this module, but it's a bit much visually! + // robert + // An entry of 6 does so much work it trips the watchdog! + // An entry of 45 does so much work it trips the watchdog! + static int demo_values[] = {/* 1, 2, 3, 4, 5, 35, 36, 37, */ 68, 70, 71, 72}; + static int demo_idx = 0; + // BUGBUG(robertl): Just eyeballing this, I think the clock is running about double time... + EVERY_N_MILLIS(2000) { +// if (demo_idx++ == sizeof(demo_values) / sizeof(demo_values[0])) demo_idx = 0; +// Scale = demo_values[demo_idx]; + RecalibrateDrawnObjects(); + debugI("Index %d Scale %d", demo_idx, Scale); + // delay(10); + } + // end robert + + // Don't just let the renderer freewheel. + EVERY_N_MILLIS(10) { + if (Scale < 34U) // если масштаб до 34 + PicassoRoutine1(); + else if (Scale > 67U) // если масштаб больше 67 + PicassoRoutine3(); + else // для масштабов посередине + PicassoRoutine2(); + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 809f703c8..28927daba 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,9 +358,10 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif + ADD_EFFECT(EFFECT_MATRIX_SMPICASSO3IN1, PatternSMPicasso3in1); // ADD_EFFECT(EFFECT_MATRIX_SMNOISE, PatternSMNoise); // ADD_EFFECT(EFFECT_MATRIX_SMWISP, PatternSMWisp); - ADD_EFFECT(EFFECT_MATRIX_SMFIRE2012, PatternSMFire2012); + // ADD_EFFECT(EFFECT_MATRIX_SMFIRE2012, PatternSMFire2012); // ADD_EFFECT(EFFECT_MATRIX_SMFIRE2021, PatternSMFire2021); // ADD_EFFECT(EFFECT_MATRIX_SMAMBERRAIN, PatternSMAmberRain); // ADD_EFFECT(EFFECT_MATRIX_SMMAGMA, PatternSMMagma); From 859fa2b4ae93bbc4f05cddbe4b402b22267b2b70 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Wed, 12 Jul 2023 07:02:29 -0500 Subject: [PATCH 023/168] bulk cleanup --- .../effects/matrix/PatternSMFPicasso3in1.h | 69 +++++++------------ 1 file changed, 24 insertions(+), 45 deletions(-) diff --git a/include/effects/matrix/PatternSMFPicasso3in1.h b/include/effects/matrix/PatternSMFPicasso3in1.h index 8781e4429..0d33c901f 100644 --- a/include/effects/matrix/PatternSMFPicasso3in1.h +++ b/include/effects/matrix/PatternSMFPicasso3in1.h @@ -1,4 +1,5 @@ #pragma once +#undef trackingOBJECT_MAX_COUNT #include "effects/strip/musiceffect.h" #include "effectmanager.h" @@ -11,8 +12,8 @@ class PatternSMPicasso3in1 : public LEDStripEffect { private: // Suggested values for Mesmerizer w/ 1/2 HUB75 panel: 10, 36, 70 - uint8_t Scale = 36; // 1-100 is image type and count. THis should be a Setting 0-33 = P1, 34-68 = P2, 68-99 = Picasso3 - // P1 - Scale is number of independent lines drawn w/ trailers. 20 or so = Pink Floyd 'Pulse' laser show. + uint8_t Scale = 2; // 1-100 is image type and count. THis should be a Setting 0-33 = P1, 34-68 = P2, 68-99 = Picasso3 + // P1 - Scale is number of independent lines drawn w/ trailers. Safe=1-8 20 or so = Pink Floyd 'Pulse' laser show. // P2 - 34 & up. Scale -33 == number of vertices on a connected polyline "wire" rotating in 3d. 38 up? SLOW! // P3 - 68 & up. Scale -68 -2 == number of circles *68=2, 69=3, 70=4, etc. 80 up? SLOW #define trackingOBJECT_MAX_COUNT (100U) // максимальное количество отслеживаемых объектов (очень влияет на расход памяти) @@ -129,11 +130,6 @@ void PicassoGenerate(bool reset){ if (loadingFlag) { loadingFlag = false; - //setCurrentPalette(); - //FastLED.clear(); -// not for 3in1 -// enlargedObjectNUM = (modes[currentMode].Scale - 1U) / 99.0 * (enlargedOBJECT_MAX_COUNT - 1U) + 1U; - //enlargedObjectNUM = (modes[currentMode].Scale - 1U) % 11U / 10.0 * (enlargedOBJECT_MAX_COUNT - 1U) + 1U; if (enlargedObjectNUM > enlargedOBJECT_MAX_COUNT) enlargedObjectNUM = enlargedOBJECT_MAX_COUNT; if (enlargedObjectNUM < 2U) enlargedObjectNUM = 2U; @@ -187,65 +183,44 @@ void PicassoPosition(){ PicassoGenerate(false); PicassoPosition(); -// for (unsigned i = 0; i < numParticles - 2; i+=2) { -// Particle *p1 = (Particle *)&particles[i]; -// Particle *p2 = (Particle *)&particles[i + 1]; -// DrawLine(p1->position_x, p1->position_y, p2->position_x, p2->position_y, p1->color); -// } - for (uint8_t i = 0 ; i < enlargedObjectNUM - 2U ; i+=2) + for (uint8_t i = 0 ; i < enlargedObjectNUM - 2U ; i+=2) { DrawLine(trackingObjectPosX[i], trackingObjectPosY[i], trackingObjectPosX[i+1U], trackingObjectPosY[i+1U], CHSV(trackingObjectHue[i], 255U, 255U)); //DrawLine(trackingObjectPosX[i], trackingObjectPosY[i], trackingObjectPosX[i+1U], trackingObjectPosY[i+1U], ColorFromPalette(*curPalette, trackingObjectHue[i])); - - - EVERY_N_MILLIS(20000){ - PicassoGenerate(true); } - g()->BlurFrame(80); -// g()->blurScreen(80); + g()->BlurFrame(80); } + void PicassoRoutine2(){ - PicassoGenerate(false); + PicassoGenerate(false); PicassoPosition(); + g()->DimAll(180); -// for (unsigned i = 0; i < numParticles - 1; i++) { -// Particle *p1 = (Particle *)&particles[i]; -// Particle *p2 = (Particle *)&particles[i + 1]; -// DrawLineF(p1->position_x, p1->position_y, p2->position_x, p2->position_y, p1->color); -// } for (uint8_t i = 0 ; i < enlargedObjectNUM - 1U ; i++) DrawLineF(trackingObjectPosX[i], trackingObjectPosY[i], trackingObjectPosX[i+1U], trackingObjectPosY[i+1U], CHSV(trackingObjectHue[i], 255U, 255U)); - //DrawLineF(trackingObjectPosX[i], trackingObjectPosY[i], trackingObjectPosX[i+1U], trackingObjectPosY[i+1U], ColorFromPalette(*curPalette, trackingObjectHue[i])); EVERY_N_MILLIS(20000){ PicassoGenerate(true); } - g()->BlurFrame(80); - - // blurScreen(80); + g()->BlurFrame(80); } + + void PicassoRoutine3(){ PicassoGenerate(false); PicassoPosition(); g()->DimAll(180); -// for (unsigned i = 0; i < numParticles - 2; i+=2) { -// Particle *p1 = (Particle *)&particles[i]; -// Particle *p2 = (Particle *)&particles[i + 1]; -// drawCircleF(std::fabs(p1->position_x - p2->position_x), std::fabs(p1->position_y - p2->position_y), std::fabs(p1->position_x - p1->position_y), p1->color); -// } for (uint8_t i = 0 ; i < enlargedObjectNUM - 2U ; i+=2) drawCircle(fabs(trackingObjectPosX[i] - trackingObjectPosX[i+1U]), fabs(trackingObjectPosY[i] - trackingObjectPosX[i+1U]), fabs(trackingObjectPosX[i] - trackingObjectPosY[i]), CHSV(trackingObjectHue[i], 255U, 255U)); - //drawCircleF(fabs(trackingObjectPosX[i] - trackingObjectPosX[i+1U]), fabs(trackingObjectPosY[i] - trackingObjectPosX[i+1U]), fabs(trackingObjectPosX[i] - trackingObjectPosY[i]), ColorFromPalette(*curPalette, trackingObjectHue[i])); EVERY_N_MILLIS(20000){ PicassoGenerate(true); } - g()->BlurFrame(80); + g()->BlurFrame(80); - // g()->blurScreen(80); } public: @@ -265,6 +240,11 @@ void PicassoPosition(){ { } + // This has atomicity issues. It looks at a global (boooo) that may change the contents + // of the underlying enlarge/trackingFOO arrays while they're being traversed. It's just + // a bad diea to modify Scale while these are running, but there's too much cool code + // in this effect to just let it go to waste. + void RecalibrateDrawnObjects() { if (Scale < 34U) // если масштаб до 34 enlargedObjectNUM = (Scale - 1U) / 32.0 * (enlargedOBJECT_MAX_COUNT - 3U) + 3U; @@ -285,29 +265,28 @@ void PicassoPosition(){ #if ENABLE_AUDIO ProcessAudio(); #endif -//Scale = 20; // PR1 -Scale = 45; // PR2 -// Scale = 85; // PR3 // Mesmerizer/NightDriver demo: just pick some preset and skip through them. // Good way to demo off this module, but it's a bit much visually! // robert // An entry of 6 does so much work it trips the watchdog! // An entry of 45 does so much work it trips the watchdog! - static int demo_values[] = {/* 1, 2, 3, 4, 5, 35, 36, 37, */ 68, 70, 71, 72}; + static int demo_values[] = { 3, 35, 68 } ; static int demo_idx = 0; + // BUGBUG(robertl): Just eyeballing this, I think the clock is running about double time... EVERY_N_MILLIS(2000) { -// if (demo_idx++ == sizeof(demo_values) / sizeof(demo_values[0])) demo_idx = 0; -// Scale = demo_values[demo_idx]; - RecalibrateDrawnObjects(); + if (demo_idx++ == sizeof(demo_values) / sizeof(demo_values[0])) demo_idx = 0; + Scale = demo_values[demo_idx]; + // RecalibrateDrawnObjects(); debugI("Index %d Scale %d", demo_idx, Scale); // delay(10); } // end robert // Don't just let the renderer freewheel. - EVERY_N_MILLIS(10) { + // Unfortunately, this is a terrible way to implement usage governors. + EVERY_N_MILLIS(16) { if (Scale < 34U) // если масштаб до 34 PicassoRoutine1(); else if (Scale > 67U) // если масштаб больше 67 From f984569a503d183f04becbd4216d3dcca712701d Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Wed, 12 Jul 2023 07:04:31 -0500 Subject: [PATCH 024/168] automated bulk cleanup --- .../effects/matrix/PatternSMFPicasso3in1.h | 417 +++++++++--------- 1 file changed, 219 insertions(+), 198 deletions(-) diff --git a/include/effects/matrix/PatternSMFPicasso3in1.h b/include/effects/matrix/PatternSMFPicasso3in1.h index 0d33c901f..ab156b467 100644 --- a/include/effects/matrix/PatternSMFPicasso3in1.h +++ b/include/effects/matrix/PatternSMFPicasso3in1.h @@ -1,101 +1,116 @@ #pragma once #undef trackingOBJECT_MAX_COUNT -#include "effects/strip/musiceffect.h" #include "effectmanager.h" +#include "effects/strip/musiceffect.h" #if ENABLE_AUDIO -class PatternSMPicasso3in1 : public BeatEffectBase, public LEDStripEffect +class PatternSMPicasso3in1 : public BeatEffectBase, + public LEDStripEffect #else class PatternSMPicasso3in1 : public LEDStripEffect #endif { -private: - // Suggested values for Mesmerizer w/ 1/2 HUB75 panel: 10, 36, 70 - uint8_t Scale = 2; // 1-100 is image type and count. THis should be a Setting 0-33 = P1, 34-68 = P2, 68-99 = Picasso3 - // P1 - Scale is number of independent lines drawn w/ trailers. Safe=1-8 20 or so = Pink Floyd 'Pulse' laser show. - // P2 - 34 & up. Scale -33 == number of vertices on a connected polyline "wire" rotating in 3d. 38 up? SLOW! - // P3 - 68 & up. Scale -68 -2 == number of circles *68=2, 69=3, 70=4, etc. 80 up? SLOW -#define trackingOBJECT_MAX_COUNT (100U) // максимальное количество отслеживаемых объектов (очень влияет на расход памяти) -float trackingObjectPosX[trackingOBJECT_MAX_COUNT]; -float trackingObjectPosY[trackingOBJECT_MAX_COUNT]; -float trackingObjectSpeedX[trackingOBJECT_MAX_COUNT]; -float trackingObjectSpeedY[trackingOBJECT_MAX_COUNT]; -float trackingObjectShift[trackingOBJECT_MAX_COUNT]; -uint8_t trackingObjectHue[trackingOBJECT_MAX_COUNT]; -uint8_t trackingObjectState[trackingOBJECT_MAX_COUNT]; -bool trackingObjectIsShift[trackingOBJECT_MAX_COUNT]; -#define enlargedOBJECT_MAX_COUNT (MATRIX_WIDTH * 2) // максимальное количество сложных отслеживаемых объектов (меньше, чем trackingOBJECT_MAX_COUNT) -uint8_t enlargedObjectNUM; // используемое в эффекте количество объектов -long enlargedObjectTime[enlargedOBJECT_MAX_COUNT]; + private: + // Suggested values for Mesmerizer w/ 1/2 HUB75 panel: 10, 36, 70 + uint8_t Scale = + 2; // 1-100 is image type and count. THis should be a Setting 0-33 = P1, + // 34-68 = P2, 68-99 = Picasso3 P1 - Scale is number of independent + // lines drawn w/ trailers. Safe=1-8 20 or so = Pink Floyd 'Pulse' + // laser show. P2 - 34 & up. Scale -33 == number of vertices on a + // connected polyline "wire" rotating in 3d. 38 up? SLOW! P3 - 68 & + // up. Scale -68 -2 == number of circles *68=2, 69=3, 70=4, etc. 80 + // up? SLOW +#define trackingOBJECT_MAX_COUNT \ + (100U) // максимальное количество отслеживаемых объектов (очень влияет на + // расход памяти) + float trackingObjectPosX[trackingOBJECT_MAX_COUNT]; + float trackingObjectPosY[trackingOBJECT_MAX_COUNT]; + float trackingObjectSpeedX[trackingOBJECT_MAX_COUNT]; + float trackingObjectSpeedY[trackingOBJECT_MAX_COUNT]; + float trackingObjectShift[trackingOBJECT_MAX_COUNT]; + uint8_t trackingObjectHue[trackingOBJECT_MAX_COUNT]; + uint8_t trackingObjectState[trackingOBJECT_MAX_COUNT]; + bool trackingObjectIsShift[trackingOBJECT_MAX_COUNT]; +#define enlargedOBJECT_MAX_COUNT \ + (MATRIX_WIDTH * 2) // максимальное количество сложных отслеживаемых объектов + // (меньше, чем trackingOBJECT_MAX_COUNT) + uint8_t enlargedObjectNUM; // используемое в эффекте количество объектов + long enlargedObjectTime[enlargedOBJECT_MAX_COUNT]; // функция отрисовки точки по координатам X Y - void drawPixelXYF(float x, float y, CRGB color) - { - if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) return; - if (x < 1 || x > (MATRIX_WIDTH - 2) || y < 1 || y > (MATRIX_HEIGHT - 2)) return; - // uint32_t thisPixel = g()->xy((uint8_t)x, (uint8_t)y); - // NightDriver's coordinate system is dfferent. Invert height and this all works! - uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT-(uint8_t)y); - g()->leds[thisPixel] = color; - } - // функция отрисовки точки по координатам X Y - void drawPixelXY(int x, int y, CRGB color) - { - drawPixelXYF(x, y, color); + void drawPixelXYF(float x, float y, CRGB color) { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) + return; + if (x < 1 || x > (MATRIX_WIDTH - 2) || y < 1 || y > (MATRIX_HEIGHT - 2)) + return; + // uint32_t thisPixel = g()->xy((uint8_t)x, (uint8_t)y); + // NightDriver's coordinate system is dfferent. Invert height and this all + // works! + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT - (uint8_t)y); + g()->leds[thisPixel] = color; } -// ------------------------------ Дополнительные функции рисования ---------------------- -void DrawLine(int x1, int y1, int x2, int y2, CRGB color) -{ - int deltaX = abs(x2 - x1); - int deltaY = abs(y2 - y1); - int signX = x1 < x2 ? 1 : -1; - int signY = y1 < y2 ? 1 : -1; - int error = deltaX - deltaY; - - drawPixelXY(x2, y2, color); - while (x1 != x2 || y1 != y2) { + // функция отрисовки точки по координатам X Y + void drawPixelXY(int x, int y, CRGB color) { drawPixelXYF(x, y, color); } + // ------------------------------ Дополнительные функции рисования + // ---------------------- + void DrawLine(int x1, int y1, int x2, int y2, CRGB color) { + int deltaX = abs(x2 - x1); + int deltaY = abs(y2 - y1); + int signX = x1 < x2 ? 1 : -1; + int signY = y1 < y2 ? 1 : -1; + int error = deltaX - deltaY; + + drawPixelXY(x2, y2, color); + while (x1 != x2 || y1 != y2) { drawPixelXY(x1, y1, color); int error2 = error * 2; if (error2 > -deltaY) { - error -= deltaY; - x1 += signX; + error -= deltaY; + x1 += signX; } if (error2 < deltaX) { - error += deltaX; - y1 += signY; + error += deltaX; + y1 += signY; } + } } -} -void DrawLineF(float x1, float y1, float x2, float y2, CRGB color){ - float deltaX = fabs(x2 - x1); - float deltaY = fabs(y2 - y1); - float error = deltaX - deltaY; - - float signX = x1 < x2 ? 0.5 : -0.5; - float signY = y1 < y2 ? 0.5 : -0.5; - - while (x1 != x2 || y1 != y2) { // (true) - а я то думаю - "почему функция часто вызывает вылет по вачдогу?" А оно вон оно чё, Михалычь! - if ((signX > 0 && x1 > x2+signX) || (signX < 0 && x1 < x2+signX)) break; - if ((signY > 0 && y1 > y2+signY) || (signY < 0 && y1 < y2+signY)) break; - drawPixelXYF(x1, y1, color); // интересно, почему тут было обычное drawPixelXY() ??? + void DrawLineF(float x1, float y1, float x2, float y2, CRGB color) { + float deltaX = fabs(x2 - x1); + float deltaY = fabs(y2 - y1); + float error = deltaX - deltaY; + + float signX = x1 < x2 ? 0.5 : -0.5; + float signY = y1 < y2 ? 0.5 : -0.5; + + while (x1 != x2 || + y1 != + y2) { // (true) - а я то думаю - "почему функция часто вызывает + // вылет по вачдогу?" А оно вон оно чё, Михалычь! + if ((signX > 0 && x1 > x2 + signX) || (signX < 0 && x1 < x2 + signX)) + break; + if ((signY > 0 && y1 > y2 + signY) || (signY < 0 && y1 < y2 + signY)) + break; + drawPixelXYF( + x1, y1, + color); // интересно, почему тут было обычное drawPixelXY() ??? float error2 = error; if (error2 > -deltaY) { - error -= deltaY; - x1 += signX; + error -= deltaY; + x1 += signX; } if (error2 < deltaX) { - error += deltaX; - y1 += signY; + error += deltaX; + y1 += signY; } + } } -} - // We use our own drawCircle() and drawPixel() because we KNOW we're going to draw near - // edges and the system versions scribble on memory when we do. Ours clamp. - void drawCircle(int x0, int y0, int radius, const CRGB &color) - { + // We use our own drawCircle() and drawPixel() because we KNOW we're going to + // draw near edges and the system versions scribble on memory when we do. Ours + // clamp. + void drawCircle(int x0, int y0, int radius, const CRGB& color) { int a = radius, b = 0; int radiusError = 1 - a; @@ -104,7 +119,7 @@ void DrawLineF(float x1, float y1, float x2, float y2, CRGB color){ return; } - while (a >= b) { + while (a >= b) { drawPixelXY(a + x0, b + y0, color); drawPixelXY(b + x0, a + y0, color); drawPixelXY(-a + x0, b + y0, color); @@ -116,190 +131,196 @@ void DrawLineF(float x1, float y1, float x2, float y2, CRGB color){ b++; if (radiusError < 0) radiusError += 2 * b + 1; - else - { + else { a--; radiusError += 2 * (b - a + 1); } } } + void PicassoGenerate(bool reset) { + static int loadingFlag = true; + if (loadingFlag) { + loadingFlag = false; + if (enlargedObjectNUM > enlargedOBJECT_MAX_COUNT) + enlargedObjectNUM = enlargedOBJECT_MAX_COUNT; + if (enlargedObjectNUM < 2U) enlargedObjectNUM = 2U; -void PicassoGenerate(bool reset){ - static int loadingFlag = true; - if (loadingFlag) - { - loadingFlag = false; - if (enlargedObjectNUM > enlargedOBJECT_MAX_COUNT) enlargedObjectNUM = enlargedOBJECT_MAX_COUNT; - if (enlargedObjectNUM < 2U) enlargedObjectNUM = 2U; - - double minSpeed = 0.2, maxSpeed = 0.8; - - for (uint8_t i = 0 ; i < enlargedObjectNUM ; i++) { - trackingObjectPosX[i] = random8(MATRIX_WIDTH); - trackingObjectPosY[i] = random8(MATRIX_HEIGHT); + double minSpeed = 0.2, maxSpeed = 0.8; - //curr->color = CHSV(random(1U, 255U), 255U, 255U); - trackingObjectHue[i] = random8(); + for (uint8_t i = 0; i < enlargedObjectNUM; i++) { + trackingObjectPosX[i] = random8(MATRIX_WIDTH); + trackingObjectPosY[i] = random8(MATRIX_HEIGHT); - trackingObjectSpeedY[i] = +((-maxSpeed / 3) + (maxSpeed * (float)random8(1, 100) / 100)); - trackingObjectSpeedY[i] += trackingObjectSpeedY[i] > 0 ? minSpeed : -minSpeed; + // curr->color = CHSV(random(1U, 255U), 255U, 255U); + trackingObjectHue[i] = random8(); - trackingObjectShift[i] = +((-maxSpeed / 2) + (maxSpeed * (float)random8(1, 100) / 100)); - trackingObjectShift[i] += trackingObjectShift[i] > 0 ? minSpeed : -minSpeed; + trackingObjectSpeedY[i] = + +((-maxSpeed / 3) + (maxSpeed * (float)random8(1, 100) / 100)); + trackingObjectSpeedY[i] += + trackingObjectSpeedY[i] > 0 ? minSpeed : -minSpeed; - trackingObjectState[i] = trackingObjectHue[i]; + trackingObjectShift[i] = + +((-maxSpeed / 2) + (maxSpeed * (float)random8(1, 100) / 100)); + trackingObjectShift[i] += + trackingObjectShift[i] > 0 ? minSpeed : -minSpeed; + trackingObjectState[i] = trackingObjectHue[i]; + } } - } - for (uint8_t i = 0 ; i < enlargedObjectNUM ; i++) { + for (uint8_t i = 0; i < enlargedObjectNUM; i++) { if (reset) { trackingObjectState[i] = random8(); - trackingObjectSpeedX[i] = (trackingObjectState[i] - trackingObjectHue[i]) / 25; + trackingObjectSpeedX[i] = + (trackingObjectState[i] - trackingObjectHue[i]) / 25; } - if (trackingObjectState[i] != trackingObjectHue[i] && trackingObjectSpeedX[i]) { + if (trackingObjectState[i] != trackingObjectHue[i] && + trackingObjectSpeedX[i]) { trackingObjectHue[i] += trackingObjectSpeedX[i]; } - } -} - -void PicassoPosition(){ - for (uint8_t i = 0 ; i < enlargedObjectNUM ; i++) { - if (trackingObjectPosX[i] + trackingObjectSpeedY[i] > MATRIX_WIDTH || trackingObjectPosX[i] + trackingObjectSpeedY[i] < 0) { - trackingObjectSpeedY[i] = -trackingObjectSpeedY[i]; } + } - if (trackingObjectPosY[i] + trackingObjectShift[i] > MATRIX_HEIGHT || trackingObjectPosY[i] + trackingObjectShift[i] < 0) { - trackingObjectShift[i] = -trackingObjectShift[i]; - } - - trackingObjectPosX[i] += trackingObjectSpeedY[i]; - trackingObjectPosY[i] += trackingObjectShift[i]; - }; -} - + void PicassoPosition() { + for (uint8_t i = 0; i < enlargedObjectNUM; i++) { + if (trackingObjectPosX[i] + trackingObjectSpeedY[i] > MATRIX_WIDTH || + trackingObjectPosX[i] + trackingObjectSpeedY[i] < 0) { + trackingObjectSpeedY[i] = -trackingObjectSpeedY[i]; + } - void PicassoRoutine1(){ - PicassoGenerate(false); - PicassoPosition(); + if (trackingObjectPosY[i] + trackingObjectShift[i] > MATRIX_HEIGHT || + trackingObjectPosY[i] + trackingObjectShift[i] < 0) { + trackingObjectShift[i] = -trackingObjectShift[i]; + } - for (uint8_t i = 0 ; i < enlargedObjectNUM - 2U ; i+=2) { - DrawLine(trackingObjectPosX[i], trackingObjectPosY[i], trackingObjectPosX[i+1U], trackingObjectPosY[i+1U], CHSV(trackingObjectHue[i], 255U, 255U)); - //DrawLine(trackingObjectPosX[i], trackingObjectPosY[i], trackingObjectPosX[i+1U], trackingObjectPosY[i+1U], ColorFromPalette(*curPalette, trackingObjectHue[i])); + trackingObjectPosX[i] += trackingObjectSpeedY[i]; + trackingObjectPosY[i] += trackingObjectShift[i]; + }; } - g()->BlurFrame(80); + void PicassoRoutine1() { + PicassoGenerate(false); + PicassoPosition(); + + for (uint8_t i = 0; i < enlargedObjectNUM - 2U; i += 2) { + DrawLine(trackingObjectPosX[i], trackingObjectPosY[i], + trackingObjectPosX[i + 1U], trackingObjectPosY[i + 1U], + CHSV(trackingObjectHue[i], 255U, 255U)); + // DrawLine(trackingObjectPosX[i], trackingObjectPosY[i], + // trackingObjectPosX[i+1U], trackingObjectPosY[i+1U], + // ColorFromPalette(*curPalette, trackingObjectHue[i])); + } + + g()->BlurFrame(80); } - void PicassoRoutine2(){ - PicassoGenerate(false); - PicassoPosition(); + void PicassoRoutine2() { + PicassoGenerate(false); + PicassoPosition(); - g()->DimAll(180); + g()->DimAll(180); - for (uint8_t i = 0 ; i < enlargedObjectNUM - 1U ; i++) - DrawLineF(trackingObjectPosX[i], trackingObjectPosY[i], trackingObjectPosX[i+1U], trackingObjectPosY[i+1U], CHSV(trackingObjectHue[i], 255U, 255U)); + for (uint8_t i = 0; i < enlargedObjectNUM - 1U; i++) + DrawLineF(trackingObjectPosX[i], trackingObjectPosY[i], + trackingObjectPosX[i + 1U], trackingObjectPosY[i + 1U], + CHSV(trackingObjectHue[i], 255U, 255U)); - EVERY_N_MILLIS(20000){ - PicassoGenerate(true); - } - g()->BlurFrame(80); + EVERY_N_MILLIS(20000) { PicassoGenerate(true); } + g()->BlurFrame(80); } + void PicassoRoutine3() { + PicassoGenerate(false); + PicassoPosition(); + g()->DimAll(180); - void PicassoRoutine3(){ + for (uint8_t i = 0; i < enlargedObjectNUM - 2U; i += 2) + drawCircle(fabs(trackingObjectPosX[i] - trackingObjectPosX[i + 1U]), + fabs(trackingObjectPosY[i] - trackingObjectPosX[i + 1U]), + fabs(trackingObjectPosX[i] - trackingObjectPosY[i]), + CHSV(trackingObjectHue[i], 255U, 255U)); - PicassoGenerate(false); - PicassoPosition(); - g()->DimAll(180); - - for (uint8_t i = 0 ; i < enlargedObjectNUM - 2U ; i+=2) - drawCircle(fabs(trackingObjectPosX[i] - trackingObjectPosX[i+1U]), fabs(trackingObjectPosY[i] - trackingObjectPosX[i+1U]), fabs(trackingObjectPosX[i] - trackingObjectPosY[i]), CHSV(trackingObjectHue[i], 255U, 255U)); - - EVERY_N_MILLIS(20000){ - PicassoGenerate(true); + EVERY_N_MILLIS(20000) { PicassoGenerate(true); } + g()->BlurFrame(80); } - g()->BlurFrame(80); - } - -public: - PatternSMPicasso3in1() : + public: + PatternSMPicasso3in1() + : #if ENABLE_AUDIO - BeatEffectBase(1.50, 0.05), + BeatEffectBase(1.50, 0.05), #endif - LEDStripEffect(EFFECT_MATRIX_SMPICASSO3IN1, "Picasso 3in1") - { - } + LEDStripEffect(EFFECT_MATRIX_SMPICASSO3IN1, "Picasso 3in1") { + } - PatternSMPicasso3in1(const JsonObjectConst& jsonObject) : + PatternSMPicasso3in1(const JsonObjectConst& jsonObject) + : #if ENABLE_AUDIO - BeatEffectBase(1.50, 0.05), + BeatEffectBase(1.50, 0.05), #endif - LEDStripEffect(jsonObject) - { + LEDStripEffect(jsonObject) { } - // This has atomicity issues. It looks at a global (boooo) that may change the contents - // of the underlying enlarge/trackingFOO arrays while they're being traversed. It's just - // a bad diea to modify Scale while these are running, but there's too much cool code - // in this effect to just let it go to waste. + // This has atomicity issues. It looks at a global (boooo) that may change the + // contents of the underlying enlarge/trackingFOO arrays while they're being + // traversed. It's just a bad diea to modify Scale while these are running, + // but there's too much cool code in this effect to just let it go to waste. void RecalibrateDrawnObjects() { - if (Scale < 34U) // если масштаб до 34 - enlargedObjectNUM = (Scale - 1U) / 32.0 * (enlargedOBJECT_MAX_COUNT - 3U) + 3U; - else if (Scale >= 68U) // если масштаб больше 67 - enlargedObjectNUM = (Scale - 68U) / 32.0 * (enlargedOBJECT_MAX_COUNT - 3U) + 3U; - else // для масштабов посередине - enlargedObjectNUM = (Scale - 34U) / 33.0 * (enlargedOBJECT_MAX_COUNT - 1U) + 1U; + if (Scale < 34U) // если масштаб до 34 + enlargedObjectNUM = + (Scale - 1U) / 32.0 * (enlargedOBJECT_MAX_COUNT - 3U) + 3U; + else if (Scale >= 68U) // если масштаб больше 67 + enlargedObjectNUM = + (Scale - 68U) / 32.0 * (enlargedOBJECT_MAX_COUNT - 3U) + 3U; + else // для масштабов посередине + enlargedObjectNUM = + (Scale - 34U) / 33.0 * (enlargedOBJECT_MAX_COUNT - 1U) + 1U; } - virtual void Start() override - { + virtual void Start() override { g()->Clear(); RecalibrateDrawnObjects(); } - virtual void Draw() override - { + virtual void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif - // Mesmerizer/NightDriver demo: just pick some preset and skip through them. - // Good way to demo off this module, but it's a bit much visually! - // robert - // An entry of 6 does so much work it trips the watchdog! - // An entry of 45 does so much work it trips the watchdog! - static int demo_values[] = { 3, 35, 68 } ; - static int demo_idx = 0; - - // BUGBUG(robertl): Just eyeballing this, I think the clock is running about double time... - EVERY_N_MILLIS(2000) { - if (demo_idx++ == sizeof(demo_values) / sizeof(demo_values[0])) demo_idx = 0; - Scale = demo_values[demo_idx]; - // RecalibrateDrawnObjects(); - debugI("Index %d Scale %d", demo_idx, Scale); - // delay(10); - } - // end robert - - // Don't just let the renderer freewheel. - // Unfortunately, this is a terrible way to implement usage governors. - EVERY_N_MILLIS(16) { - if (Scale < 34U) // если масштаб до 34 - PicassoRoutine1(); - else if (Scale > 67U) // если масштаб больше 67 - PicassoRoutine3(); - else // для масштабов посередине - PicassoRoutine2(); + // Mesmerizer/NightDriver demo: just pick some preset and skip through them. + // Good way to demo off this module, but it's a bit much visually! + // robert + // An entry of 6 does so much work it trips the watchdog! + // An entry of 45 does so much work it trips the watchdog! + static int demo_values[] = {3, 35, 68}; + static int demo_idx = 0; + + // BUGBUG(robertl): Just eyeballing this, I think the clock is running about + // double time... + EVERY_N_MILLIS(2000) { + if (demo_idx++ == sizeof(demo_values) / sizeof(demo_values[0])) + demo_idx = 0; + Scale = demo_values[demo_idx]; + // RecalibrateDrawnObjects(); + debugI("Index %d Scale %d", demo_idx, Scale); + // delay(10); + } + // end robert + + // Don't just let the renderer freewheel. + // Unfortunately, this is a terrible way to implement usage governors. + EVERY_N_MILLIS(16) { + if (Scale < 34U) // если масштаб до 34 + PicassoRoutine1(); + else if (Scale > 67U) // если масштаб больше 67 + PicassoRoutine3(); + else // для масштабов посередине + PicassoRoutine2(); } } #if ENABLE_AUDIO - virtual void HandleBeat(bool bMajor, float elapsed, float span) override - { - - } + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} #endif }; From 0701892ef24cbfa718ec54f0f092ef34e83833c8 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Wed, 12 Jul 2023 07:05:53 -0500 Subject: [PATCH 025/168] Attribute for copyright --- include/effects/matrix/PatternSMFPicasso3in1.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/effects/matrix/PatternSMFPicasso3in1.h b/include/effects/matrix/PatternSMFPicasso3in1.h index ab156b467..ce6cdf886 100644 --- a/include/effects/matrix/PatternSMFPicasso3in1.h +++ b/include/effects/matrix/PatternSMFPicasso3in1.h @@ -3,6 +3,7 @@ #include "effectmanager.h" #include "effects/strip/musiceffect.h" +// Inspired by https://editor.soulmatelights.com/gallery/1177-picasso-3in1 #if ENABLE_AUDIO class PatternSMPicasso3in1 : public BeatEffectBase, From 19de22e8e0df2032a3459578d35419bf4e7ad6e3 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Wed, 12 Jul 2023 23:45:36 -0500 Subject: [PATCH 026/168] Add Snakes. Not monkey-fighting. No planes. Not Monday to Friday. --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/PatternSMSnakes.h | 279 +++++++++++++++++++++++ include/effects/matrix/PatternSMWhirls.h | 0 src/effects.cpp | 3 +- 5 files changed, 283 insertions(+), 1 deletion(-) create mode 100644 include/effects/matrix/PatternSMSnakes.h create mode 100644 include/effects/matrix/PatternSMWhirls.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 9033659a0..6635e4b14 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -77,6 +77,7 @@ #include "effects/matrix/PatternSMWisp.h" #include "effects/matrix/PatternSMNoise.h" #include "effects/matrix/PatternSMFPicasso3in1.h" + #include "effects/matrix/PatternSMSnakes.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index 695385f28..2a5cc59ca 100644 --- a/include/effects.h +++ b/include/effects.h @@ -123,6 +123,7 @@ #define EFFECT_MATRIX_SMWISP 150 #define EFFECT_MATRIX_SMNOISE 151 #define EFFECT_MATRIX_SMPICASSO3IN1 152 +#define EFFECT_MATRIX_SMSNAKES 153 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMSnakes.h b/include/effects/matrix/PatternSMSnakes.h new file mode 100644 index 000000000..e06f87ac4 --- /dev/null +++ b/include/effects/matrix/PatternSMSnakes.h @@ -0,0 +1,279 @@ +#pragma once + +// BUGBUG: go fix Picasso to not pollute. +#undef trackingOBJECT_MAX_COUNT +#undef enlargedOBJECT_MAX_COUNT + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/1118-snakes + +#if ENABLE_AUDIO +class PatternSMSnakes : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMSnakes : public LEDStripEffect +#endif +{ +private: + uint8_t Speed = 150; // 1-255 Setting + uint8_t Scale = 20; // 1-100 Setting + + const int HEIGHT = MATRIX_HEIGHT; + const int WIDTH = MATRIX_WIDTH; + + const int SNAKES_LENGTH = (8U); // длина червяка от 2 до 15 (+ 1 пиксель голова/хвостик), ограничена размером переменной для хранения трактории тела червяка + static constexpr int trackingOBJECT_MAX_COUNT = (100U); // максимальное количество отслеживаемых объектов (очень влияет на расход памяти) + + float speedfactor; // регулятор скорости в эффектах реального времени + + // Would have learning about structs really killed this programmer? Ugh! + float trackingObjectPosX[trackingOBJECT_MAX_COUNT]; + float trackingObjectPosY[trackingOBJECT_MAX_COUNT]; + float trackingObjectSpeedX[trackingOBJECT_MAX_COUNT]; + float trackingObjectSpeedY[trackingOBJECT_MAX_COUNT]; + float trackingObjectShift[trackingOBJECT_MAX_COUNT]; + uint8_t trackingObjectHue[trackingOBJECT_MAX_COUNT]; + uint8_t trackingObjectState[trackingOBJECT_MAX_COUNT]; + bool trackingObjectIsShift[trackingOBJECT_MAX_COUNT]; + + static constexpr int enlargedOBJECT_MAX_COUNT = MATRIX_WIDTH * 2; // максимальное количество сложных отслеживаемых объектов (меньше, чем trackingOBJECT_MAX_COUNT) + uint8_t enlargedObjectNUM; // используемое в эффекте количество объектов + long enlargedObjectTime[enlargedOBJECT_MAX_COUNT]; + +public: + PatternSMSnakes() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSNAKES, "Snakes") + { + } + + PatternSMSnakes(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + speedfactor = (float)Speed / 555.0f + 0.001f; + + enlargedObjectNUM = (Scale - 1U) / 99.0 * (enlargedOBJECT_MAX_COUNT - 1U) + 1U; + if (enlargedObjectNUM > enlargedOBJECT_MAX_COUNT) enlargedObjectNUM = enlargedOBJECT_MAX_COUNT; + for (uint8_t i = 0; i < enlargedObjectNUM; i++){ + enlargedObjectTime[i] = 0; + trackingObjectPosX[i] = random8(WIDTH); + trackingObjectPosY[i] = random8(HEIGHT); + trackingObjectSpeedX[i] = (255. + random8()) / 255.; + trackingObjectSpeedY[i] = 0; + //trackingObjectShift[i] = 0; + trackingObjectHue[i] = random8(); + trackingObjectState[i] = random8(4);// B00 направление головы змейки + // B10 B11 + // B01 + } +} + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + // g()->Clear(); // If you prefer your tails more crispy-edged. + fadeAllChannelsToBlackBy(32); // more rattly-tailed snakes. 16 makes really long tails + + for (uint8_t i = 0; i < enlargedObjectNUM; i++){ + trackingObjectSpeedY[i] += trackingObjectSpeedX[i] * speedfactor; + if (trackingObjectSpeedY[i] >= 1) + { + trackingObjectSpeedY[i] = trackingObjectSpeedY[i] - (int)trackingObjectSpeedY[i]; + if (random8(9U) == 0U) // вероятность поворота + if (random8(2U)){ // <- поворот налево + enlargedObjectTime[i] = (enlargedObjectTime[i] << 2) | B01; // младший бит = поворот + switch (trackingObjectState[i]) { + case B10: + trackingObjectState[i] = B01; + if (trackingObjectPosY[i] == 0U) + trackingObjectPosY[i] = HEIGHT - 1U; + else + trackingObjectPosY[i]--; + break; + case B11: + trackingObjectState[i] = B00; + if (trackingObjectPosY[i] >= HEIGHT - 1U) + trackingObjectPosY[i] = 0U; + else + trackingObjectPosY[i]++; + break; + case B00: + trackingObjectState[i] = B10; + if (trackingObjectPosX[i] == 0U) + trackingObjectPosX[i] = WIDTH - 1U; + else + trackingObjectPosX[i]--; + break; + case B01: + trackingObjectState[i] = B11; + if (trackingObjectPosX[i] >= WIDTH - 1U) + trackingObjectPosX[i] = 0U; + else + trackingObjectPosX[i]++; + break; + } + } + else{ // -> поворот направо + enlargedObjectTime[i] = (enlargedObjectTime[i] << 2) | B11; // младший бит = поворот, старший = направо + switch (trackingObjectState[i]) { + case B11: + trackingObjectState[i] = B01; + if (trackingObjectPosY[i] == 0U) + trackingObjectPosY[i] = HEIGHT - 1U; + else + trackingObjectPosY[i]--; + break; + case B10: + trackingObjectState[i] = B00; + if (trackingObjectPosY[i] >= HEIGHT - 1U) + trackingObjectPosY[i] = 0U; + else + trackingObjectPosY[i]++; + break; + case B01: + trackingObjectState[i] = B10; + if (trackingObjectPosX[i] == 0U) + trackingObjectPosX[i] = WIDTH - 1U; + else + trackingObjectPosX[i]--; + break; + case B00: + trackingObjectState[i] = B11; + if (trackingObjectPosX[i] >= WIDTH - 1U) + trackingObjectPosX[i] = 0U; + else + trackingObjectPosX[i]++; + break; + } + } + else { // двигаем без поворота + enlargedObjectTime[i] = (enlargedObjectTime[i] << 2); + switch (trackingObjectState[i]) { + case B01: + if (trackingObjectPosY[i] == 0U) + trackingObjectPosY[i] = HEIGHT - 1U; + else + trackingObjectPosY[i]--; + break; + case B00: + if (trackingObjectPosY[i] >= HEIGHT - 1U) + trackingObjectPosY[i] = 0U; + else + trackingObjectPosY[i]++; + break; + case B10: + if (trackingObjectPosX[i] == 0U) + trackingObjectPosX[i] = WIDTH - 1U; + else + trackingObjectPosX[i]--; + break; + case B11: + if (trackingObjectPosX[i] >= WIDTH - 1U) + trackingObjectPosX[i] = 0U; + else + trackingObjectPosX[i]++; + break; + } + + } + } + + int8_t dx, dy; + switch (trackingObjectState[i]) { + case B01: + dy = 1; + dx = 0; + break; + case B00: + dy = -1; + dx = 0; + break; + case B10: + dy = 0; + dx = 1; + break; + case B11: + dy = 0; + dx = -1; + break; + } + long temp = enlargedObjectTime[i]; + uint8_t x = trackingObjectPosX[i]; + uint8_t y = trackingObjectPosY[i]; + //CHSV color = CHSV(trackingObjectHue[i], 255U, 255U); + //drawPixelXY(x, y, color); + //drawPixelXYF(x, y, CHSV(trackingObjectHue[i], 255U, trackingObjectSpeedY[i] * 255)); // тут рисуется голова // слишком сложно для простого сложения цветов + g()->leds[g()->xy(x,y)] += CHSV(trackingObjectHue[i], 255U, trackingObjectSpeedY[i] * 255); // тут рисуется голова + + for (uint8_t m = 0; m < SNAKES_LENGTH; m++){ // 16 бит распаковываем, 14 ещё остаётся без дела в запасе, 2 на хвостик + x = (WIDTH + x + dx) % WIDTH; + y = (HEIGHT + y + dy) % HEIGHT; + //drawPixelXYF(x, y, CHSV(trackingObjectHue[i] + m*4U, 255U, 255U)); // тут рисуется тело // слишком сложно для простого сложения цветов + //leds[XY(x,y)] += CHSV(trackingObjectHue[i] + m*4U, 255U, 255U); // тут рисуется тело + g()->leds[g()->xy(x,y)] += CHSV(trackingObjectHue[i] + (m + trackingObjectSpeedY[i])*4U, 255U, 255U); // тут рисуется тело + + if (temp & B01){ // младший бит = поворот, старший = направо + temp = temp >> 1; + if (temp & B01){ // старший бит = направо + if (dx == 0){ + dx = 0 - dy; + dy = 0; + } + else{ + dy = dx; + dx = 0; + } + } + else{ // иначе налево + if (dx == 0){ + dx = dy; + dy = 0; + } + else{ + dy = 0 - dx; + dx = 0; + } + } + temp = temp >> 1; + } + else { // если без поворота + temp = temp >> 2; + } + } + x = (WIDTH + x + dx) % WIDTH; + y = (HEIGHT + y + dy) % HEIGHT; + g()->leds[g()->xy(x,y)] += CHSV(trackingObjectHue[i] + (SNAKES_LENGTH + trackingObjectSpeedY[i])*4U, 255U, (1 - trackingObjectSpeedY[i]) * 255); // хвостик + } +} + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + // Kinda dumb, but make the snakes and the board visibly respond. It would + // be nice to animate camera altitude pans or something, but changing all + // the paramaters at runtine just makes the code explode. Settle for changing + // the colors and speeds. + for (uint8_t i = 0; i < enlargedObjectNUM; i++){ + trackingObjectHue[i] = random8(); + } + Speed = 150 + random8(75)-72; // 1-255 Setting + speedfactor = (float)Speed / 555.0f + 0.001f; // The actually used class member. + } +#endif +}; + +#undef trackingOBJECT_MAX_COUNT diff --git a/include/effects/matrix/PatternSMWhirls.h b/include/effects/matrix/PatternSMWhirls.h new file mode 100644 index 000000000..e69de29bb diff --git a/src/effects.cpp b/src/effects.cpp index 28927daba..49625819a 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMPICASSO3IN1, PatternSMPicasso3in1); + ADD_EFFECT(EFFECT_MATRIX_SMSNAKES, PatternSMSnakes); + // ADD_EFFECT(EFFECT_MATRIX_SMPICASSO3IN1, PatternSMPicasso3in1); // ADD_EFFECT(EFFECT_MATRIX_SMNOISE, PatternSMNoise); // ADD_EFFECT(EFFECT_MATRIX_SMWISP, PatternSMWisp); // ADD_EFFECT(EFFECT_MATRIX_SMFIRE2012, PatternSMFire2012); From 9504935f285da3aa9687381977ff5de7e2079010 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Thu, 13 Jul 2023 19:13:55 -0500 Subject: [PATCH 027/168] Add Particles This has high fidelity to the original, but favors the left edge quite substantially. Next, I'm going to try to tame that "random" offset generation. --- include/effectdependencies.h | 10 +++ include/effects.h | 1 + include/effects/matrix/PatternSMParticles.h | 83 +++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 include/effects/matrix/PatternSMParticles.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 6635e4b14..0a10bf57b 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -57,8 +57,10 @@ // Externals // +#define BOOGER 0 #if USE_MATRIX #include "ledmatrixgfx.h" +#if BOOGER #include "effects/strip/misceffects.h" #include "effects/matrix/PatternBalls.h" #include "effects/matrix/PatternSMStrobeDiffusion.h" @@ -78,6 +80,9 @@ #include "effects/matrix/PatternSMNoise.h" #include "effects/matrix/PatternSMFPicasso3in1.h" #include "effects/matrix/PatternSMSnakes.h" +#endif + #include "effects/matrix/PatternSMParticles.h" +#if BOOGER #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" @@ -87,7 +92,9 @@ #include "effects/matrix/PatternSpiro.h" #include "effects/matrix/PatternCube.h" #include "effects/matrix/PatternCircuit.h" +#if ENABLE_WIFI #include "effects/matrix/PatternSubscribers.h" +#endif #include "effects/matrix/PatternAlienText.h" #include "effects/matrix/PatternRadar.h" #include "effects/matrix/PatternPongClock.h" @@ -98,8 +105,11 @@ #include "effects/matrix/PatternMisc.h" #include "effects/matrix/PatternNoiseSmearing.h" #include "effects/matrix/PatternQR.h" +#if ENABLE_WIFI #include "effects/matrix/PatternWeather.h" #endif +#endif // BOOGER +#endif #ifdef USESTRIP #include "ledstripgfx.h" diff --git a/include/effects.h b/include/effects.h index 2a5cc59ca..f85cca367 100644 --- a/include/effects.h +++ b/include/effects.h @@ -124,6 +124,7 @@ #define EFFECT_MATRIX_SMNOISE 151 #define EFFECT_MATRIX_SMPICASSO3IN1 152 #define EFFECT_MATRIX_SMSNAKES 153 +#define EFFECT_MATRIX_SMPARTICLES 154 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMParticles.h b/include/effects/matrix/PatternSMParticles.h new file mode 100644 index 000000000..d6c60a319 --- /dev/null +++ b/include/effects/matrix/PatternSMParticles.h @@ -0,0 +1,83 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" + +// Good freakin' grief. +#define now_weekMs 0 * 1000ul + millis() // - tmr + +#define FOR_i(x, y) for (int i = (x); i < (y); i++) +#define CUR_PRES preset[cfg_curPreset + +#if ENABLE_AUDIO +class PatternSMParticles : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMParticles : public LEDStripEffect +#endif +{ + private: + const int thisScale = 254; // 254 - максимальный, наверное, масштаб + const int CUR_PRES_speed = + 15; // 15 - скорость, на которой частицы пляшут туда-сюда + const int CUR_PRES_color = + 1; // 1 - цвет частиц, чтобы не заморачиваться с палитрами + + const int cfg_length = MATRIX_HEIGHT; + const int cfg_width = MATRIX_WIDTH; + const int Xnow_weekMs = 0 * 1000ul + millis(); // - tmr + + public: + PatternSMParticles() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMPARTICLES, "Particles") { + } + + PatternSMParticles(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { g()->Clear(); } + + void drawPixelXY(int8_t x, int8_t y, CRGB color) { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) + return; + uint32_t thisPixel = g()->xy(x, MATRIX_HEIGHT - y); + g()->leds[thisPixel] = color; + } // служебные функции + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + fadeAllChannelsToBlackBy(70); + byte amount = (thisScale >> 3) + 1; + for (int i = 0; i < amount; i++) { + int homeX = inoise16(i * 100000000ul + (now_weekMs << 3) * CUR_PRES_speed / 255); + homeX = map(homeX, 15000, 50000, 0, cfg_length); + int offsX = inoise8(i * 2500 + (now_weekMs >> 1) * CUR_PRES_speed / 255) - 128; + offsX = cfg_length / 2 * offsX / 128; + unsigned int thisX = homeX + offsX; + + int homeY = inoise16(i * 100000000ul + 2000000000ul + + (now_weekMs << 3) * CUR_PRES_speed / 255); + homeY = map(homeY, 15000, 50000, 0, cfg_width); + int offsY = inoise8(i * 2500 + 30000 + (now_weekMs >> 1) * CUR_PRES_speed / 255) - 128; + offsY = cfg_length / 2 * offsY / 128; + int thisY = homeY + offsY; + drawPixelXY(thisX, thisY, CRGB(CHSV(CUR_PRES_color, 255, 255))); + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 49625819a..8d92b3af3 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMSNAKES, PatternSMSnakes); + ADD_EFFECT(EFFECT_MATRIX_SMPARTICLES, PatternSMParticles); + // ADD_EFFECT(EFFECT_MATRIX_SMSNAKES, PatternSMSnakes); // ADD_EFFECT(EFFECT_MATRIX_SMPICASSO3IN1, PatternSMPicasso3in1); // ADD_EFFECT(EFFECT_MATRIX_SMNOISE, PatternSMNoise); // ADD_EFFECT(EFFECT_MATRIX_SMWISP, PatternSMWisp); From bfaada44be1e36b9f1181b85876bb17a2dca7e7f Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Thu, 13 Jul 2023 23:22:46 -0500 Subject: [PATCH 028/168] Finalize particles effect. Fix rectangular grids. --- include/effects/matrix/PatternSMParticles.h | 37 ++++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/include/effects/matrix/PatternSMParticles.h b/include/effects/matrix/PatternSMParticles.h index d6c60a319..40d0988bf 100644 --- a/include/effects/matrix/PatternSMParticles.h +++ b/include/effects/matrix/PatternSMParticles.h @@ -3,12 +3,31 @@ #include "effectmanager.h" #include "effects/strip/musiceffect.h" +// Derived from +// https://editor.soulmatelights.com/gallery/2358-particles +// +// I have stared and stared at this code. I'm not at all convinced +// this was designed as much as someone typed magic numbers that +// looked "good" on their screen geometry. +// +// 'now_weekMs' relies on millis() generating basically a raster dot +// that indexes into leds[] +// +// It generates wildly out-of-bounds accesses and _relies_ on +// drawPixels() to throw them away. Over half the drawn pixels are +// discarded in some geometries. I found the original had X and Y +// swapped in a few places. Fixing that REALLY helped our rectangular +// screens. The draw loop does a RIDICULOUS amount of math just to +// add +/1 randomly to pixels. (Or just keep them as floats, add whatever +// to them, and just snap to the integer grid on draw, which sould allow +// dithering....) +// +// I could (and probably should) have rewritten this in less time. + + // Good freakin' grief. #define now_weekMs 0 * 1000ul + millis() // - tmr -#define FOR_i(x, y) for (int i = (x); i < (y); i++) -#define CUR_PRES preset[cfg_curPreset - #if ENABLE_AUDIO class PatternSMParticles : public BeatEffectBase, public LEDStripEffect @@ -19,7 +38,7 @@ class PatternSMParticles : public LEDStripEffect private: const int thisScale = 254; // 254 - максимальный, наверное, масштаб const int CUR_PRES_speed = - 15; // 15 - скорость, на которой частицы пляшут туда-сюда + 25; // 15 - скорость, на которой частицы пляшут туда-сюда const int CUR_PRES_color = 1; // 1 - цвет частиц, чтобы не заморачиваться с палитрами @@ -57,26 +76,26 @@ class PatternSMParticles : public LEDStripEffect #if ENABLE_AUDIO ProcessAudio(); #endif + fadeAllChannelsToBlackBy(80); - fadeAllChannelsToBlackBy(70); + // This relies on 'now_weekMs' changing on every loop iteration. byte amount = (thisScale >> 3) + 1; for (int i = 0; i < amount; i++) { int homeX = inoise16(i * 100000000ul + (now_weekMs << 3) * CUR_PRES_speed / 255); - homeX = map(homeX, 15000, 50000, 0, cfg_length); + homeX = map(homeX, 15000, 50000, 0, cfg_width); int offsX = inoise8(i * 2500 + (now_weekMs >> 1) * CUR_PRES_speed / 255) - 128; - offsX = cfg_length / 2 * offsX / 128; + offsX = cfg_width / 2 * offsX / 128; unsigned int thisX = homeX + offsX; int homeY = inoise16(i * 100000000ul + 2000000000ul + (now_weekMs << 3) * CUR_PRES_speed / 255); - homeY = map(homeY, 15000, 50000, 0, cfg_width); + homeY = map(homeY, 15000, 50000, 0, cfg_length); int offsY = inoise8(i * 2500 + 30000 + (now_weekMs >> 1) * CUR_PRES_speed / 255) - 128; offsY = cfg_length / 2 * offsY / 128; int thisY = homeY + offsY; drawPixelXY(thisX, thisY, CRGB(CHSV(CUR_PRES_color, 255, 255))); } } - #if ENABLE_AUDIO virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} #endif From d0846b4eb19713f4df576145dc8baf478ce1cfa3 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Thu, 13 Jul 2023 23:33:53 -0500 Subject: [PATCH 029/168] Add Rainbow Swirl --- include/effectdependencies.h | 3 +- include/effects.h | 1 + .../effects/matrix/PatternSMRainbowSwirl.h | 60 +++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMRainbowSwirl.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 0a10bf57b..041f2d216 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -80,8 +80,9 @@ #include "effects/matrix/PatternSMNoise.h" #include "effects/matrix/PatternSMFPicasso3in1.h" #include "effects/matrix/PatternSMSnakes.h" -#endif #include "effects/matrix/PatternSMParticles.h" +#endif + #include "effects/matrix/PatternSMRainbowSwirl.h" #if BOOGER #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" diff --git a/include/effects.h b/include/effects.h index f85cca367..d7642bc54 100644 --- a/include/effects.h +++ b/include/effects.h @@ -125,6 +125,7 @@ #define EFFECT_MATRIX_SMPICASSO3IN1 152 #define EFFECT_MATRIX_SMSNAKES 153 #define EFFECT_MATRIX_SMPARTICLES 154 +#define EFFECT_MATRIX_SMRAINBOW_SWIRL 155 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMRainbowSwirl.h b/include/effects/matrix/PatternSMRainbowSwirl.h new file mode 100644 index 000000000..9fc19c7c1 --- /dev/null +++ b/include/effects/matrix/PatternSMRainbowSwirl.h @@ -0,0 +1,60 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/1245-rainbow-swirl +// Super simple code, but quite pleasant. + +#if ENABLE_AUDIO +class PatternSMRainbowSwirl : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMRainbowSwirl : public LEDStripEffect +#endif +{ +private: +public: + PatternSMRainbowSwirl() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMRAINBOW_SWIRL, "Rainbow Swirl") + { + } + + PatternSMRainbowSwirl(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + for (int x = 0; x < MATRIX_WIDTH; x++) { + for (int y = 0; y < MATRIX_HEIGHT; y++) { + // XY tells us the index of a given X/Y coordinate + int index = g()->xy(x, y); + int hue = x * 10 + y * 10; + hue += sin8(millis() / 50 + y * 5 + x * 7); + g()->leds[index] = CHSV(hue, 255, 255); + } + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 8d92b3af3..36060824e 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMPARTICLES, PatternSMParticles); + ADD_EFFECT(EFFECT_MATRIX_SMRAINBOW_SWIRL, PatternSMRainbowSwirl); + // ADD_EFFECT(EFFECT_MATRIX_SMPARTICLES, PatternSMParticles); // ADD_EFFECT(EFFECT_MATRIX_SMSNAKES, PatternSMSnakes); // ADD_EFFECT(EFFECT_MATRIX_SMPICASSO3IN1, PatternSMPicasso3in1); // ADD_EFFECT(EFFECT_MATRIX_SMNOISE, PatternSMNoise); From 6e93b2d003591fc28de400728ceefe8e9144db0c Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Thu, 13 Jul 2023 23:41:24 -0500 Subject: [PATCH 030/168] Add Rainbow Flow --- include/effectdependencies.h | 3 ++- include/effects.h | 1 + include/effects/matrix/PatternSMRainbowFlow.h | 0 src/effects.cpp | 3 ++- 4 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMRainbowFlow.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 041f2d216..a296064f0 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -82,8 +82,9 @@ #include "effects/matrix/PatternSMSnakes.h" #include "effects/matrix/PatternSMParticles.h" #endif - #include "effects/matrix/PatternSMRainbowSwirl.h" + #include "effects/matrix/PatternSMRainbowFlow.h" #if BOOGER + #include "effects/matrix/PatternSMRainbowSwirl.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" diff --git a/include/effects.h b/include/effects.h index d7642bc54..8d1bbc301 100644 --- a/include/effects.h +++ b/include/effects.h @@ -126,6 +126,7 @@ #define EFFECT_MATRIX_SMSNAKES 153 #define EFFECT_MATRIX_SMPARTICLES 154 #define EFFECT_MATRIX_SMRAINBOW_SWIRL 155 +#define EFFECT_MATRIX_SMRAINBOW_FLOW 156 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMRainbowFlow.h b/include/effects/matrix/PatternSMRainbowFlow.h new file mode 100644 index 000000000..e69de29bb diff --git a/src/effects.cpp b/src/effects.cpp index 36060824e..bde164b41 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMRAINBOW_SWIRL, PatternSMRainbowSwirl); + ADD_EFFECT(EFFECT_MATRIX_SMRAINBOW_FLOW, PatternSMRainbowFlow); + // ADD_EFFECT(EFFECT_MATRIX_SMRAINBOW_SWIRL, PatternSMRainbowSwirl); // ADD_EFFECT(EFFECT_MATRIX_SMPARTICLES, PatternSMParticles); // ADD_EFFECT(EFFECT_MATRIX_SMSNAKES, PatternSMSnakes); // ADD_EFFECT(EFFECT_MATRIX_SMPICASSO3IN1, PatternSMPicasso3in1); From 261cadecb2c3013e70158e4f9a01ca83ab285784 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Fri, 14 Jul 2023 00:00:50 -0500 Subject: [PATCH 031/168] Add Pastel Flutter --- include/effectdependencies.h | 1 + include/effects.h | 1 + .../effects/matrix/PatternSMPastelFlutter.h | 127 ++++++++++++++++++ include/effects/matrix/PatternSMRainbowFlow.h | 64 +++++++++ src/effects.cpp | 1 + 5 files changed, 194 insertions(+) create mode 100644 include/effects/matrix/PatternSMPastelFlutter.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index a296064f0..5cd08a133 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -83,6 +83,7 @@ #include "effects/matrix/PatternSMParticles.h" #endif #include "effects/matrix/PatternSMRainbowFlow.h" + #include "effects/matrix/PatternSMPastelFlutter.h" #if BOOGER #include "effects/matrix/PatternSMRainbowSwirl.h" #include "effects/matrix/PatternSerendipity.h" diff --git a/include/effects.h b/include/effects.h index 8d1bbc301..c958b2ef2 100644 --- a/include/effects.h +++ b/include/effects.h @@ -127,6 +127,7 @@ #define EFFECT_MATRIX_SMPARTICLES 154 #define EFFECT_MATRIX_SMRAINBOW_SWIRL 155 #define EFFECT_MATRIX_SMRAINBOW_FLOW 156 +#define EFFECT_MATRIX_SMPASTEL_FLUTTER 156 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMPastelFlutter.h b/include/effects/matrix/PatternSMPastelFlutter.h new file mode 100644 index 000000000..eb5b0d969 --- /dev/null +++ b/include/effects/matrix/PatternSMPastelFlutter.h @@ -0,0 +1,127 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/1242-pastel-flutter +// Funky math, but a nice effect. + +#if ENABLE_AUDIO +class PatternSMPastelFlutter : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMPastelFlutter : public LEDStripEffect +#endif +{ +private: + const uint8_t exp_gamma[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 7, 7, + 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 12, 12, + 12, 13, 13, 14, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, + 19, 20, 20, 21, 21, 22, 23, 23, 24, 24, 25, 26, 26, 27, 28, + 28, 29, 30, 30, 31, 32, 32, 33, 34, 35, 35, 36, 37, 38, 39, + 39, 40, 41, 42, 43, 44, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 82, 83, 84, 85, + 87, 89, 91, 92, 93, 95, 96, 98, 99, 100, 101, 102, 105, 106, 108, + 109, 111, 112, 114, 115, 117, 118, 120, 121, 123, 125, 126, 128, 130, 131, + 133, 135, 136, 138, 140, 142, 143, 145, 147, 149, 151, 152, 154, 156, 158, + 160, 162, 164, 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, 185, 187, + 190, 192, 194, 196, 198, 200, 202, 204, 207, 209, 211, 213, 216, 218, 220, + 222, 225, 227, 229, 232, 234, 236, 239, 241, 244, 246, 249, 251, 253, 254, + 255}; + + const uint8_t cos_wave[256] = { + 0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 5, 6, 6, 8, + 9, 10, 11, 12, 14, 15, 17, 18, 20, 22, 23, 25, 27, 29, 31, + 33, 35, 38, 40, 42, 45, 47, 49, 52, 54, 57, 60, 62, 65, 68, + 71, 73, 76, 79, 82, 85, 88, 91, 94, 97, 100, 103, 106, 109, 113, + 116, 119, 122, 125, 128, 131, 135, 138, 141, 144, 147, 150, 153, 156, 159, + 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 191, 194, 197, 199, 202, + 204, 207, 209, 212, 214, 216, 218, 221, 223, 225, 227, 229, 231, 232, 234, + 236, 238, 239, 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 252, + 253, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 253, + 253, 252, 252, 251, 250, 249, 248, 247, 246, 245, 243, 242, 241, 239, 238, + 236, 234, 232, 231, 229, 227, 225, 223, 221, 218, 216, 214, 212, 209, 207, + 204, 202, 199, 197, 194, 191, 189, 186, 183, 180, 177, 174, 171, 168, 165, + 162, 159, 156, 153, 150, 147, 144, 141, 138, 135, 131, 128, 125, 122, 119, + 116, 113, 109, 106, 103, 100, 97, 94, 91, 88, 85, 82, 79, 76, 73, + 71, 68, 65, 62, 60, 57, 54, 52, 49, 47, 45, 42, 40, 38, 35, + 33, 31, 29, 27, 25, 23, 22, 20, 18, 17, 15, 14, 12, 11, 10, + 9, 8, 6, 6, 5, 4, 3, 2, 2, 1, 1, 1, 0, 0, 0, + 0}; +public: + PatternSMPastelFlutter() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMPASTEL_FLUTTER, "Pastel Flutter") + { + } + + PatternSMPastelFlutter(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + uint16_t a= millis()/4; + uint16_t a3= a/3; + uint16_t a4= a/4; + + for (int x = 0; x < MATRIX_WIDTH; x++) { + for (int y = 0; y < MATRIX_HEIGHT; y++) { + int index = g()->xy(x, y); + + byte xt = cos_wave[a3&255]*(MATRIX_WIDTH-1)>>8; + byte yt = cos_wave[a4&255]*(MATRIX_HEIGHT-1)>>8; + byte xoffs=abs8(x-xt); byte yoffs=abs8(y-yt); + byte rad= sqrt16(xoffs*xoffs+yoffs*yoffs); + if (!rad) rad++; + byte r = 255-cos_wave[((rad<<5)-a)&255]/rad; + + xt = cos_wave[(a3+64)&255]*(MATRIX_WIDTH-1)>>8; + yt = cos_wave[(a4-32)&255]*(MATRIX_HEIGHT-1)>>8; + xoffs=abs8(x-xt); yoffs=abs8(y-yt); + rad= sqrt16(xoffs*xoffs+yoffs*yoffs); + if (!rad) rad++; + byte grn = 255-cos_wave[((rad<<5)-a+64)&255]/rad; + + xt = cos_wave[(a3-128)&255]*(MATRIX_WIDTH-1)>>8; + yt = cos_wave[(a4+32)&255]*(MATRIX_HEIGHT-1)>>8; + xoffs=abs8(x-xt); yoffs=abs8(y-yt); + rad= sqrt16(xoffs*xoffs+yoffs*yoffs); + if (!rad) rad++; + byte b = 255-cos_wave[((rad<<5)-a+128)&255]/rad; + + r = exp_gamma [exp_gamma [exp_gamma [r]]]; // :) + grn = exp_gamma [exp_gamma [exp_gamma [grn]]]; + b = exp_gamma [exp_gamma [exp_gamma [b]]]; + + g()->leds[index].setRGB(r,grn,b); + } + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/include/effects/matrix/PatternSMRainbowFlow.h b/include/effects/matrix/PatternSMRainbowFlow.h index e69de29bb..822753948 100644 --- a/include/effects/matrix/PatternSMRainbowFlow.h +++ b/include/effects/matrix/PatternSMRainbowFlow.h @@ -0,0 +1,64 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/1236-rainbow-flow +// Another super-simple one. + +#if ENABLE_AUDIO +class PatternSMRainbowFlow : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMRainbowFlow : public LEDStripEffect +#endif +{ +private: + byte hue=0; +public: + PatternSMRainbowFlow() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMRAINBOW_FLOW, "Rainbow Flow") + { + } + + PatternSMRainbowFlow(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + const float hl = NUM_LEDS/1.3; + +EVERY_N_MILLISECONDS(80) { hue++; } + int t = millis()/40; + for (int i = 0; i < NUM_LEDS; i++) { + int c = (abs(i - hl)/hl)*127; + c = sin8(c); + c = sin8(c/2+ t); + byte b = sin8(c+t/8); + + g()->leds[i] = CHSV(b+hue,255,255); + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index bde164b41..7f49956cf 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,6 +358,7 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif + ADD_EFFECT(EFFECT_MATRIX_SMPASTEL_FLUTTER, PatternSMPastelFlutter); ADD_EFFECT(EFFECT_MATRIX_SMRAINBOW_FLOW, PatternSMRainbowFlow); // ADD_EFFECT(EFFECT_MATRIX_SMRAINBOW_SWIRL, PatternSMRainbowSwirl); // ADD_EFFECT(EFFECT_MATRIX_SMPARTICLES, PatternSMParticles); From e78ba8cead7f0f2cf8c1bcf1279b48fddb2617a3 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 03:09:14 -0500 Subject: [PATCH 032/168] Add Sand --- include/effectdependencies.h | 1 + include/effects.h | 3 ++- include/effects/matrix/PatternSMSand.h | 0 src/effects.cpp | 3 ++- 4 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMSand.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 5cd08a133..0bb4111f8 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -84,6 +84,7 @@ #endif #include "effects/matrix/PatternSMRainbowFlow.h" #include "effects/matrix/PatternSMPastelFlutter.h" + #include "effects/matrix/PatternSMSand.h" #if BOOGER #include "effects/matrix/PatternSMRainbowSwirl.h" #include "effects/matrix/PatternSerendipity.h" diff --git a/include/effects.h b/include/effects.h index c958b2ef2..1a985cf17 100644 --- a/include/effects.h +++ b/include/effects.h @@ -127,7 +127,8 @@ #define EFFECT_MATRIX_SMPARTICLES 154 #define EFFECT_MATRIX_SMRAINBOW_SWIRL 155 #define EFFECT_MATRIX_SMRAINBOW_FLOW 156 -#define EFFECT_MATRIX_SMPASTEL_FLUTTER 156 +#define EFFECT_MATRIX_SMPASTEL_FLUTTER 157 +#define EFFECT_MATRIX_SMSAND 158 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMSand.h b/include/effects/matrix/PatternSMSand.h new file mode 100644 index 000000000..e69de29bb diff --git a/src/effects.cpp b/src/effects.cpp index 7f49956cf..0ffbabf63 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,8 +358,9 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif + ADD_EFFECT(EFFECT_MATRIX_SMSAND, PatternSMSand); ADD_EFFECT(EFFECT_MATRIX_SMPASTEL_FLUTTER, PatternSMPastelFlutter); - ADD_EFFECT(EFFECT_MATRIX_SMRAINBOW_FLOW, PatternSMRainbowFlow); + // ADD_EFFECT(EFFECT_MATRIX_SMRAINBOW_FLOW, PatternSMRainbowFlow); // ADD_EFFECT(EFFECT_MATRIX_SMRAINBOW_SWIRL, PatternSMRainbowSwirl); // ADD_EFFECT(EFFECT_MATRIX_SMPARTICLES, PatternSMParticles); // ADD_EFFECT(EFFECT_MATRIX_SMSNAKES, PatternSMSnakes); From 9b9551e3b71761994c53057555dd74462294ff6d Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 03:47:18 -0500 Subject: [PATCH 033/168] Add Smoke --- include/effectdependencies.h | 3 ++- include/effects.h | 1 + include/effects/matrix/PatternSMSmoke.h | 0 src/effects.cpp | 5 +++-- 4 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 include/effects/matrix/PatternSMSmoke.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 0bb4111f8..768a9f3a2 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -81,10 +81,11 @@ #include "effects/matrix/PatternSMFPicasso3in1.h" #include "effects/matrix/PatternSMSnakes.h" #include "effects/matrix/PatternSMParticles.h" -#endif #include "effects/matrix/PatternSMRainbowFlow.h" #include "effects/matrix/PatternSMPastelFlutter.h" #include "effects/matrix/PatternSMSand.h" +#endif + #include "effects/matrix/PatternSMSmoke.h" #if BOOGER #include "effects/matrix/PatternSMRainbowSwirl.h" #include "effects/matrix/PatternSerendipity.h" diff --git a/include/effects.h b/include/effects.h index 1a985cf17..bdf6c751e 100644 --- a/include/effects.h +++ b/include/effects.h @@ -129,6 +129,7 @@ #define EFFECT_MATRIX_SMRAINBOW_FLOW 156 #define EFFECT_MATRIX_SMPASTEL_FLUTTER 157 #define EFFECT_MATRIX_SMSAND 158 +#define EFFECT_MATRIX_SMSMOKE 159 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMSmoke.h b/include/effects/matrix/PatternSMSmoke.h new file mode 100644 index 000000000..e69de29bb diff --git a/src/effects.cpp b/src/effects.cpp index 0ffbabf63..3b0806882 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,8 +358,9 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMSAND, PatternSMSand); - ADD_EFFECT(EFFECT_MATRIX_SMPASTEL_FLUTTER, PatternSMPastelFlutter); + ADD_EFFECT(EFFECT_MATRIX_SMSAND, PatternSMSmoke); + // ADD_EFFECT(EFFECT_MATRIX_SMSAND, PatternSMSand); + // ADD_EFFECT(EFFECT_MATRIX_SMPASTEL_FLUTTER, PatternSMPastelFlutter); // ADD_EFFECT(EFFECT_MATRIX_SMRAINBOW_FLOW, PatternSMRainbowFlow); // ADD_EFFECT(EFFECT_MATRIX_SMRAINBOW_SWIRL, PatternSMRainbowSwirl); // ADD_EFFECT(EFFECT_MATRIX_SMPARTICLES, PatternSMParticles); From 3e3fc120c866611231aee3f680a5ecc7da93c9cc Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 04:08:20 -0500 Subject: [PATCH 034/168] Add Spiro --- include/effectdependencies.h | 3 ++- include/effects.h | 1 + include/effects/matrix/PatternSMSpiro.h | 0 src/effects.cpp | 3 ++- 4 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMSpiro.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 768a9f3a2..7b5da513a 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -85,8 +85,9 @@ #include "effects/matrix/PatternSMPastelFlutter.h" #include "effects/matrix/PatternSMSand.h" #endif - #include "effects/matrix/PatternSMSmoke.h" + #include "effects/matrix/PatternSMSpiro.h" #if BOOGER + #include "effects/matrix/PatternSMSmoke.h" #include "effects/matrix/PatternSMRainbowSwirl.h" #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" diff --git a/include/effects.h b/include/effects.h index bdf6c751e..b11d3bf11 100644 --- a/include/effects.h +++ b/include/effects.h @@ -130,6 +130,7 @@ #define EFFECT_MATRIX_SMPASTEL_FLUTTER 157 #define EFFECT_MATRIX_SMSAND 158 #define EFFECT_MATRIX_SMSMOKE 159 +#define EFFECT_MATRIX_SMSPIRO 160 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMSpiro.h b/include/effects/matrix/PatternSMSpiro.h new file mode 100644 index 000000000..e69de29bb diff --git a/src/effects.cpp b/src/effects.cpp index 3b0806882..a6d91df28 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMSAND, PatternSMSmoke); + ADD_EFFECT(EFFECT_MATRIX_SMSPIRO, PatternSMSpiro); + // ADD_EFFECT(EFFECT_MATRIX_SMSMOKE, PatternSMSmoke); // ADD_EFFECT(EFFECT_MATRIX_SMSAND, PatternSMSand); // ADD_EFFECT(EFFECT_MATRIX_SMPASTEL_FLUTTER, PatternSMPastelFlutter); // ADD_EFFECT(EFFECT_MATRIX_SMRAINBOW_FLOW, PatternSMRainbowFlow); From b96fd4c1098914fe597d9f44a8e5c82ffa4e7677 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 05:39:16 -0500 Subject: [PATCH 035/168] Add Aurora Borealis effect --- include/effectdependencies.h | 3 +- include/effects.h | 1 + include/effects/matrix/PatternSMAurora.h | 0 include/effects/matrix/PatternSMSand.h | 151 ++++++++++++++++++++ include/effects/matrix/PatternSMSmoke.h | 174 +++++++++++++++++++++++ include/effects/matrix/PatternSMSpiro.h | 168 ++++++++++++++++++++++ src/effects.cpp | 3 +- 7 files changed, 498 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMAurora.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 7b5da513a..23f7fd05b 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -84,8 +84,9 @@ #include "effects/matrix/PatternSMRainbowFlow.h" #include "effects/matrix/PatternSMPastelFlutter.h" #include "effects/matrix/PatternSMSand.h" -#endif #include "effects/matrix/PatternSMSpiro.h" +#endif + #include "effects/matrix/PatternSMAurora.h" #if BOOGER #include "effects/matrix/PatternSMSmoke.h" #include "effects/matrix/PatternSMRainbowSwirl.h" diff --git a/include/effects.h b/include/effects.h index b11d3bf11..cd33e904f 100644 --- a/include/effects.h +++ b/include/effects.h @@ -131,6 +131,7 @@ #define EFFECT_MATRIX_SMSAND 158 #define EFFECT_MATRIX_SMSMOKE 159 #define EFFECT_MATRIX_SMSPIRO 160 +#define EFFECT_MATRIX_SMAURORA 161 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMAurora.h b/include/effects/matrix/PatternSMAurora.h new file mode 100644 index 000000000..e69de29bb diff --git a/include/effects/matrix/PatternSMSand.h b/include/effects/matrix/PatternSMSand.h index e69de29bb..7a47d5f7a 100644 --- a/include/effects/matrix/PatternSMSand.h +++ b/include/effects/matrix/PatternSMSand.h @@ -0,0 +1,151 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/1127-sand +// This looks better on a square display than a landscape one, but it's +// stil cool enough to include, IMO. + +#if ENABLE_AUDIO +class PatternSMSand : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMSand : public LEDStripEffect +#endif +{ + private: + uint8_t Scale = 85; // 1-100 limit Should be a setting. % of screen height + + static constexpr int WIDTH = MATRIX_WIDTH; + static constexpr int HEIGHT = MATRIX_HEIGHT; + + // matrix size constants are calculated only here and do not change in effects + static constexpr uint8_t CENTER_X_MINOR = (MATRIX_WIDTH / 2) - ((MATRIX_WIDTH - 1) & 0x01); // the center of the matrix according to ICSU, shifted to the smaller side, if the width is even + static constexpr uint8_t CENTER_Y_MINOR = (MATRIX_HEIGHT / 2) - ((MATRIX_HEIGHT - 1) & 0x01); // center of the YGREK matrix, shifted down if the height is even + static constexpr uint8_t CENTER_X_MAJOR = MATRIX_WIDTH / 2 + (MATRIX_WIDTH % 2); // the center of the matrix according to IKSU, shifted to a larger side, if the width is even + static constexpr uint8_t CENTER_Y_MAJOR = MATRIX_HEIGHT / 2 + (MATRIX_HEIGHT % 2); // center of the YGREK matrix, shifted up if the height is even +#if ENABLE_AUDIO + static constexpr uint8_t top_reserve = 1; // I'm not sure that every place that needs it has it. +#else + static constexpr uint8_t top_reserve = 0; +#endif + + + uint8_t pcnt{0}; // какой-то счётчик какого-то прогресса + +public: + PatternSMSand() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSAND, "Sand") + { + } + + PatternSMSand(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + CRGB getPixColorXY(uint8_t x, uint8_t y) const + { + // Just don't think about what this does to prefetch and prediction... + return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; + } + + void drawPixelXY(int8_t x, int8_t y, CRGB color) const + { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) return; + uint32_t thisPixel = g()->xy(x, MATRIX_HEIGHT - top_reserve - y); + g()->leds[thisPixel] = color; + } // служебные функции + + + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + // if enough has already been poured, bang random grains of sand + uint8_t temp = map8(random8(), Scale * 2.55, 255U); + if (pcnt >= map8(temp, 2U, HEIGHT - 3U)) { + temp = HEIGHT + 1U - pcnt; + if (!random8(4U)) // sometimes sand crumbles up to half at once + if (random8(2U)) + temp = 2U; + else + temp = 3U; + for (uint8_t y = 1; y < pcnt; y++) + for (uint8_t x = 0; x < WIDTH; x++) + if (!random8(temp)) + g()->leds[g()->xy(x,y)] = CRGB::Black; + } + + pcnt = 0U; + // In this effect, 0, 0 is our lower left corner. + // Scroll down everything on the screen. + // Note Mesmerizer/NightDriver hack here to dodge the audio line on the top of + // the screen as scrolling that down is visually interesting, but wrong. + for (uint8_t y = 0; y < HEIGHT - top_reserve ; y++) // Skip audio line + for (uint8_t x = 0; x < WIDTH; x++) + if (auto me = getPixColorXY(x,y)) // checking for every grain of sand + if (!getPixColorXY(x,y-1)){ // if it's empty below us, we just fall + drawPixelXY(x,y-1, me); + drawPixelXY(x,y,CRGB::Black); + } + else if (x>0U && !getPixColorXY(x-1,y-1) && x0U && !getPixColorXY(x-1,y-1)){ // a a slope to the left + drawPixelXY(x-1,y-1, me); + drawPixelXY(x,y,CRGB::Black); + pcnt = y-1; + } + else if (xleds[g()->xy(temp,HEIGHT-1)] = CHSV(random8(), 255U, 255U); + // HEIGHT -1 is VU bar for ambient audio. + drawPixelXY(temp,HEIGHT-2, CHSV(random8(), 255U, 255U)); + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override { + // Force deletion (on the next Draw()) of the bottom row. It's simple, + // but it's enough to make the pyramid visibly respond to ambient sounds. + for (uint8_t x = 0; x < WIDTH; x++) { + drawPixelXY(x, 0, CRGB::Black); + } + } +#endif +}; diff --git a/include/effects/matrix/PatternSMSmoke.h b/include/effects/matrix/PatternSMSmoke.h index e69de29bb..ba86fcae9 100644 --- a/include/effects/matrix/PatternSMSmoke.h +++ b/include/effects/matrix/PatternSMSmoke.h @@ -0,0 +1,174 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/1116-smoke + +#if ENABLE_AUDIO +class PatternSMSmoke : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMSmoke : public LEDStripEffect +#endif +{ +private: + uint8_t Scale = 50; // 1-100. SettingA + + static constexpr int WIDTH = MATRIX_WIDTH; + static constexpr int HEIGHT = MATRIX_HEIGHT; + // matrix size constants are calculated only here and do not change in effects + const uint8_t CENTER_X_MINOR = (MATRIX_WIDTH / 2) - ((MATRIX_WIDTH - 1) & 0x01); // the center of the matrix according to ICSU, shifted to the smaller side, if the width is even + const uint8_t CENTER_Y_MINOR = (MATRIX_HEIGHT / 2) - ((MATRIX_HEIGHT - 1) & 0x01); // center of the YGREK matrix, shifted down if the height is even + const uint8_t CENTER_X_MAJOR = MATRIX_WIDTH / 2 + (MATRIX_WIDTH % 2); // the center of the matrix according to IKSU, shifted to a larger side, if the width is even + const uint8_t CENTER_Y_MAJOR = MATRIX_HEIGHT / 2 + (MATRIX_HEIGHT % 2); // center of the YGREK matrix, shifted up if the height is even + + static constexpr int NUM_LAYERSMAX = 2; + uint8_t hue, hue2; // постепенный сдвиг оттенка или какой-нибудь другой цикличный счётчик + uint8_t deltaHue, deltaHue2; // ещё пара таких же, когда нужно много + uint8_t noise3d[NUM_LAYERSMAX][WIDTH][HEIGHT]; // двухслойная маска или хранилище свойств в размер всей матрицы + uint32_t noise32_x[NUM_LAYERSMAX]; + uint32_t noise32_y[NUM_LAYERSMAX]; + uint32_t noise32_z[NUM_LAYERSMAX]; + uint32_t scale32_x[NUM_LAYERSMAX]; + uint32_t scale32_y[NUM_LAYERSMAX]; + uint8_t noisesmooth; + int8_t zD; + int8_t zF; + CRGB ledsbuff[NUM_LEDS]; // копия массива leds[] целиком + + + +void FillNoise(int8_t layer) { + for (uint8_t i = 0; i < WIDTH; i++) { + int32_t ioffset = scale32_x[layer] * (i - CENTER_X_MINOR); + for (uint8_t j = 0; j < HEIGHT; j++) { + int32_t joffset = scale32_y[layer] * (j - CENTER_Y_MINOR); + int8_t data = inoise16(noise32_x[layer] + ioffset, noise32_y[layer] + joffset, noise32_z[layer]) >> 8; + int8_t olddata = noise3d[layer][i][j]; + int8_t newdata = scale8( olddata, noisesmooth ) + scale8( data, 255 - noisesmooth ); + data = newdata; + noise3d[layer][i][j] = data; + } + } +} + +void MoveFractionalNoiseX(int8_t amplitude = 1, float shift = 0) { + for (uint8_t y = 0; y < HEIGHT; y++) { + int16_t amount = ((int16_t)noise3d[0][0][y] - 128) * 2 * amplitude + shift * 256 ; + int8_t delta = abs(amount) >> 8 ; + int8_t fraction = abs(amount) & 255; + for (uint8_t x = 0 ; x < WIDTH; x++) { + if (amount < 0) { + zD = x - delta; zF = zD - 1; + } else { + zD = x + delta; zF = zD + 1; + } + CRGB PixelA = CRGB::Black ; + if ((zD >= 0) && (zD < WIDTH)) PixelA = g()->leds[g()->xy(zD, y)]; + CRGB PixelB = CRGB::Black ; + if ((zF >= 0) && (zF < WIDTH)) PixelB = g()->leds[g()->xy(zF, y)]; + ledsbuff[g()->xy(x, y)] = (PixelA.nscale8(ease8InOutApprox(255 - fraction))) + (PixelB.nscale8(ease8InOutApprox(fraction))); // lerp8by8(PixelA, PixelB, fraction ); + } + } + memcpy(g()->leds, ledsbuff, sizeof(CRGB)* NUM_LEDS); +} + +void MoveFractionalNoiseY(int8_t amplitude = 1, float shift = 0) { + for (uint8_t x = 0; x < WIDTH; x++) { + int16_t amount = ((int16_t)noise3d[0][x][0] - 128) * 2 * amplitude + shift * 256 ; + int8_t delta = abs(amount) >> 8 ; + int8_t fraction = abs(amount) & 255; + for (uint8_t y = 0 ; y < HEIGHT; y++) { + if (amount < 0) { + zD = y - delta; zF = zD - 1; + } else { + zD = y + delta; zF = zD + 1; + } + CRGB PixelA = CRGB::Black ; + if ((zD >= 0) && (zD < HEIGHT)) PixelA = g()->leds[g()->xy(x, zD)]; + CRGB PixelB = CRGB::Black ; + if ((zF >= 0) && (zF < HEIGHT)) PixelB = g()->leds[g()->xy(x, zF)]; + ledsbuff[g()->xy(x, y)] = (PixelA.nscale8(ease8InOutApprox(255 - fraction))) + (PixelB.nscale8(ease8InOutApprox(fraction))); + } + } + memcpy(g()->leds, ledsbuff, sizeof(CRGB)* NUM_LEDS); +} + +public: + PatternSMSmoke() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSMOKE, "Smoke") + { + } + + PatternSMSmoke(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + deltaHue++; + CRGB color;//, color2; + + if (hue2 == Scale) + { + hue2 = 0U; + hue = random8(); + } + if (deltaHue & 0x01)//((deltaHue >> 2U) == 0U) // какой-то умножитель охота подключить к задержке смены цвета, но хз какой... + hue2++; + + hsv2rgb_spectrum(CHSV(hue, 255U, 127U), color); + + //deltaHue2--; + if (random8(WIDTH) != 0U) // встречная спираль движется не всегда синхронно основной + deltaHue2--; + + for (uint8_t y = 0; y < HEIGHT; y++) { + g()->leds[g()->xy((deltaHue + y + 1U)%WIDTH, HEIGHT - 1U - y)] += color; + g()->leds[g()->xy((deltaHue + y )%WIDTH, HEIGHT - 1U - y)] += color; //color2 + g()->leds[g()->xy((deltaHue2 + y )%WIDTH, y)] += color; + g()->leds[g()->xy((deltaHue2 + y + 1U)%WIDTH, y)] += color; //color2 + } + + // Noise + + // Movement speed in the noise array + //uint32_t mult = 500U * ((Scale - 1U) % 10U); + noise32_x[0] += 1500;//1000; + noise32_y[0] += 1500;//1000; + noise32_z[0] += 1500;//1000; + + // хрен знает что + //mult = 1000U * ((Speed - 1U) % 10U); + scale32_x[0] = 4000; + scale32_y[0] = 4000; + FillNoise(0); + + MoveFractionalNoiseX(3);//4 + MoveFractionalNoiseY(3);//4 + + g()->BlurFrame(20); // без размытия как-то пиксельно, наверное... + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/include/effects/matrix/PatternSMSpiro.h b/include/effects/matrix/PatternSMSpiro.h index e69de29bb..ea6e301a8 100644 --- a/include/effects/matrix/PatternSMSpiro.h +++ b/include/effects/matrix/PatternSMSpiro.h @@ -0,0 +1,168 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/1133-spiro +// Honestly, I wonder if I should have just used the Aurora base... + +#if ENABLE_AUDIO +class PatternSMSpiro : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMSpiro : public LEDStripEffect +#endif +{ +private: + uint8_t Speed = 46; // 1-255 is length Setting + uint8_t Scale = 3; // 1-100 is palette Setting + uint8_t hue; // постепенный сдвиг оттенка или какой-нибудь другой цикличный счётчик + + const int WIDTH = MATRIX_WIDTH; + +#if ENABLE_AUDIO + // Just lie to the whole project about height to keep it out of the VU meter. + // This is one of the rare effects where that top line actually matters. + const int HEIGHT = MATRIX_HEIGHT-1; +#else + const int HEIGHT = MATRIX_HEIGHT; +#endif + + // --------------------------- эффект спирали ---------------------- +/* + * Aurora: https://github.com/pixelmatix/aurora + * https://github.com/pixelmatix/aurora/blob/sm3.0-64x64/PatternSpiro.h + * Copyright (c) 2014 Jason Coon + * Неполная адаптация SottNick + */ + byte spirotheta1 = 0; + byte spirotheta2 = 0; +// byte spirohueoffset = 0; // будем использовать переменную сдвига оттенка hue из эффектов Радуга + + + const uint8_t spiroradiusx = WIDTH / 4;// - 1; + const uint8_t spiroradiusy = HEIGHT / 4;// - 1; + + const uint8_t spirocenterX = WIDTH / 2; + const uint8_t spirocenterY = HEIGHT / 2; + + const uint8_t spirominx = spirocenterX - spiroradiusx; + const uint8_t spiromaxx = spirocenterX + spiroradiusx - (WIDTH%2 == 0 ? 1:0);//+ 1; + const uint8_t spirominy = spirocenterY - spiroradiusy; + const uint8_t spiromaxy = spirocenterY + spiroradiusy - (HEIGHT%2 == 0 ? 1:0);//+ 1; + + uint8_t spirocount = 1; + uint8_t spirooffset = 256 / spirocount; + boolean spiroincrement = false; + boolean spirohandledChange = false; + + const TProgmemRGBPalette16 *curPalette = &PartyColors_p; + + +uint8_t mapsin8(uint8_t theta, uint8_t lowest = 0, uint8_t highest = 255) { + uint8_t beatsin = sin8(theta); + uint8_t rangewidth = highest - lowest; + uint8_t scaledbeat = scale8(beatsin, rangewidth); + uint8_t result = lowest + scaledbeat; + return result; +} + +uint8_t mapcos8(uint8_t theta, uint8_t lowest = 0, uint8_t highest = 255) { + uint8_t beatcos = cos8(theta); + uint8_t rangewidth = highest - lowest; + uint8_t scaledbeat = scale8(beatcos, rangewidth); + uint8_t result = lowest + scaledbeat; + return result; +} +public: + PatternSMSpiro() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSPIRO, "Spiro") + { + } + + PatternSMSpiro(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + g()->BlurFrame(20); // @Palpalych советует делать размытие + g()->DimAll(255U - Speed / 10); + + boolean change = false; + + for (uint8_t i = 0; i < spirocount; i++) { + uint8_t x = mapsin8(spirotheta1 + i * spirooffset, spirominx, spiromaxx); + uint8_t y = mapcos8(spirotheta1 + i * spirooffset, spirominy, spiromaxy); + + uint8_t x2 = mapsin8(spirotheta2 + i * spirooffset, x - spiroradiusx, x + spiroradiusx); + uint8_t y2 = mapcos8(spirotheta2 + i * spirooffset, y - spiroradiusy, y + spiroradiusy); + + + //CRGB color = ColorFromPalette( PartyColors_p, (hue + i * spirooffset), 128U); // вообще-то палитра должна постоянно меняться, но до адаптации этого руки уже не дошли + //CRGB color = ColorFromPalette(*curPalette, hue + i * spirooffset, 128U); // вот так уже прикручена к бегунку Масштаба. за + //leds[XY(x2, y2)] += color; +if (x2leds[g()->xy(x2, y2)] += (CRGB)ColorFromPalette(*curPalette, hue + i * spirooffset); + + if((x2 == spirocenterX && y2 == spirocenterY) || + (x2 == spirocenterX && y2 == spirocenterY)) change = true; + } + + spirotheta2 += 2; + +// EVERY_N_MILLIS(12) { маловата задержочка + spirotheta1 += 1; +// } + + EVERY_N_MILLIS(75) { + if (change && !spirohandledChange) { + spirohandledChange = true; + + if (spirocount >= WIDTH || spirocount == 1) spiroincrement = !spiroincrement; + + if (spiroincrement) { + if(spirocount >= 4) + spirocount *= 2; + else + spirocount += 1; + } + else { + if(spirocount > 4) + spirocount /= 2; + else + spirocount -= 1; + } + + spirooffset = 256 / spirocount; + } + + if(!change) spirohandledChange = false; + } + +// EVERY_N_MILLIS(33) { маловата задержочка + hue += 1; +// } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index a6d91df28..a3b9c4f93 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMSPIRO, PatternSMSpiro); + ADD_EFFECT(EFFECT_MATRIX_SMAURORA, PatternSMAurora); + //ADD_EFFECT(EFFECT_MATRIX_SMSPIRO, PatternSMSpiro); // ADD_EFFECT(EFFECT_MATRIX_SMSMOKE, PatternSMSmoke); // ADD_EFFECT(EFFECT_MATRIX_SMSAND, PatternSMSand); // ADD_EFFECT(EFFECT_MATRIX_SMPASTEL_FLUTTER, PatternSMPastelFlutter); From 5997552ade1d540bd4f56b2bcab15da040b200fe Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 05:57:13 -0500 Subject: [PATCH 036/168] Add Prismata --- include/effectdependencies.h | 3 +- include/effects.h | 1 + include/effects/matrix/PatternSMAurora.h | 85 ++++++++++++++++++++++ include/effects/matrix/PatternSMPrismata.h | 79 ++++++++++++++++++++ src/effects.cpp | 5 +- 5 files changed, 170 insertions(+), 3 deletions(-) create mode 100644 include/effects/matrix/PatternSMPrismata.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 23f7fd05b..3d2328b5e 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,8 +86,9 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMAurora.h" + #include "effects/matrix/PatternSMPrismata.h" #if BOOGER + #include "effects/matrix/PatternSMAurora.h" #include "effects/matrix/PatternSMSmoke.h" #include "effects/matrix/PatternSMRainbowSwirl.h" #include "effects/matrix/PatternSerendipity.h" diff --git a/include/effects.h b/include/effects.h index cd33e904f..b4f81ba06 100644 --- a/include/effects.h +++ b/include/effects.h @@ -132,6 +132,7 @@ #define EFFECT_MATRIX_SMSMOKE 159 #define EFFECT_MATRIX_SMSPIRO 160 #define EFFECT_MATRIX_SMAURORA 161 +#define EFFECT_MATRIX_SMPRISMATA 162 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMAurora.h b/include/effects/matrix/PatternSMAurora.h index e69de29bb..bbbf62fd8 100644 --- a/include/effects/matrix/PatternSMAurora.h +++ b/include/effects/matrix/PatternSMAurora.h @@ -0,0 +1,85 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/1244-aurora-borealis +// Could use some fine tuning on timings. speed doesn't work like the original. + +#if ENABLE_AUDIO +class PatternSMAurora : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMAurora : public LEDStripEffect +#endif +{ +private: + const int LED_COLS = MATRIX_WIDTH; + const int LED_ROWS = MATRIX_HEIGHT; + unsigned long timer{0}; + byte speed = 7; //Scale 0-255 + byte scale = 60; // Speed 0-255 + + float adjastHeight = fmap(LED_ROWS, 8, 32, 28, 12); + uint16_t adjScale = map(LED_COLS, 8, 64, 310, 63); + + static constexpr TProgmemRGBPalette16 GreenAuroraColors_p FL_PROGMEM = {0x000000, 0x003300, 0x006600, 0x009900, 0x00cc00, 0x00ff00, 0x33ff00, 0x66ff00, 0x99ff00, 0xccff00, 0xffff00, 0xffcc00, 0xff9900, 0xff6600, 0xff3300, 0xff0000}; + + float fmap(const float x, const float in_min, const float in_max, const float out_min, const float out_max) { + return (out_max - out_min) * (x - in_min) / (in_max - in_min) + out_min; + } + +public: + PatternSMAurora() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMAURORA, "Aurora Borealis") + { + } + + PatternSMAurora(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + uint16_t _scale = map(scale, 1, 255, 30, adjScale); + byte _speed = map(speed, 1, 255, 128, 16); + + EVERY_N_MILLIS(80) + for (byte x = 0; x < LED_COLS; x++) + { + for (byte y = 0; y < LED_ROWS; y++) + { + timer++; + g()->leds[g()->xy(x, y)] = + ColorFromPalette(GreenAuroraColors_p, + qsub8( + inoise8(timer % 2 + x * _scale, + y * 16 + timer % 16, + timer / _speed), + fabs((float)LED_ROWS / 2 - (float)y) * adjastHeight)); + } + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/include/effects/matrix/PatternSMPrismata.h b/include/effects/matrix/PatternSMPrismata.h new file mode 100644 index 000000000..75fecb323 --- /dev/null +++ b/include/effects/matrix/PatternSMPrismata.h @@ -0,0 +1,79 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/1110-prismata + +#if ENABLE_AUDIO +class PatternSMPrismata : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMPrismata : public LEDStripEffect +#endif +{ +private: + uint8_t Speed = 30U; // 1-255 + uint8_t Scale = 8; // 1-100 is palette + uint8_t hue; + + const TProgmemRGBPalette16 *curPalette = &PartyColors_p; + + void drawPixelXY(int8_t x, int8_t y, CRGB color) + { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) return; + // Mesmerizer flips the Y axis here. + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT -1 - (uint8_t)y); + g()->leds[thisPixel] = color; + } + + +public: + PatternSMPrismata() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMPRISMATA, "Prismata") + { + } + + PatternSMPrismata(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + g()->BlurFrame(20); // @Palpalych посоветовал делать размытие + g()->DimAll(255U - (Scale - 1U) % 11U * 3U); + + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) + { + //uint8_t y = beatsin8(x + 1, 0, HEIGHT-1); // это я попытался распотрошить данную функцию до исходного кода и вставить в неё регулятор скорости + // вместо 28 в оригинале было 280, умножения на .Speed не было, а вместо >>17 было (<<8)>>24. короче, оригинальная скорость достигается при бегунке .Speed=20 + uint8_t beat = (GET_MILLIS() * (accum88(x + 1)) * 28 * Speed) >> 17; + uint8_t y = scale8(sin8(beat), MATRIX_HEIGHT-1); + //и получилось!!! + + drawPixelXY(x, y, ColorFromPalette(*curPalette, x * 7 + hue)); + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index a3b9c4f93..bd760eb83 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,8 +358,9 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMAURORA, PatternSMAurora); - //ADD_EFFECT(EFFECT_MATRIX_SMSPIRO, PatternSMSpiro); + ADD_EFFECT(EFFECT_MATRIX_SMPRISMATA, PatternSMPrismata); + // ADD_EFFECT(EFFECT_MATRIX_SMAURORA, PatternSMAurora); + // ADD_EFFECT(EFFECT_MATRIX_SMSPIRO, PatternSMSpiro); // ADD_EFFECT(EFFECT_MATRIX_SMSMOKE, PatternSMSmoke); // ADD_EFFECT(EFFECT_MATRIX_SMSAND, PatternSMSand); // ADD_EFFECT(EFFECT_MATRIX_SMPASTEL_FLUTTER, PatternSMPastelFlutter); From ea3f3043a0c10366672558e13c2dc26ff1856efc Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 07:11:12 -0500 Subject: [PATCH 037/168] Add radial fire --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/PatternSMRadialFire.h | 80 ++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 include/effects/matrix/PatternSMRadialFire.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 3d2328b5e..12a319f5f 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,6 +86,7 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif + #include "effects/matrix/PatternSMRadialFire.h" #include "effects/matrix/PatternSMPrismata.h" #if BOOGER #include "effects/matrix/PatternSMAurora.h" diff --git a/include/effects.h b/include/effects.h index b4f81ba06..7b0df1657 100644 --- a/include/effects.h +++ b/include/effects.h @@ -133,6 +133,7 @@ #define EFFECT_MATRIX_SMSPIRO 160 #define EFFECT_MATRIX_SMAURORA 161 #define EFFECT_MATRIX_SMPRISMATA 162 +#define EFFECT_MATRIX_SMRADIALFIRE 163 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMRadialFire.h b/include/effects/matrix/PatternSMRadialFire.h new file mode 100644 index 000000000..e454395a9 --- /dev/null +++ b/include/effects/matrix/PatternSMRadialFire.h @@ -0,0 +1,80 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/1570-radialfire + +#if ENABLE_AUDIO +class PatternSMRadialFire : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMRadialFire : public LEDStripEffect +#endif +{ +private: + static constexpr int LED_COLS = MATRIX_WIDTH; + static constexpr int LED_ROWS = MATRIX_HEIGHT; + +#define C_X (LED_COLS / 2) +#define C_Y (LED_ROWS / 2) +byte XY_angle[LED_COLS][LED_ROWS]; +byte XY_radius[LED_COLS][LED_ROWS]; +public: + PatternSMRadialFire() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMRADIALFIRE, "Radial Fire") + { + } + + PatternSMRadialFire(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + for (int8_t x = -C_X; x < C_X + (LED_COLS % 2); x++) { + for (int8_t y = -C_Y; y < C_Y + (LED_ROWS % 2); y++) { + XY_angle[x + C_X][y + C_Y] = 128 * (atan2(y, x) / PI); + XY_radius[x + C_X][y + C_Y] = hypot(x, y); //thanks Sutaburosu + } + } + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + static byte scaleX = 16; + static byte scaleY = 1; + + static byte speed = 24; + static uint32_t t; + t += speed; + for (uint8_t x = 0; x < LED_COLS; x++) { + for (uint8_t y = 0; y < LED_ROWS; y++) { + byte angle = XY_angle[x][y]; + byte radius = XY_radius[x][y]; + int16_t Bri = inoise8(angle*scaleX, (radius * scaleY)-t ) - radius * (255 / LED_ROWS); + byte Col = Bri; + if (Bri < 0) Bri = 0; + if (Bri != 0) Bri = 256 - (Bri * 0.2); + nblend(g()->leds[g()->xy(x, y)], ColorFromPalette(HeatColors_p, Col, Bri), speed); + } + } +} + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index bd760eb83..1f2a601e5 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMPRISMATA, PatternSMPrismata); + ADD_EFFECT(EFFECT_MATRIX_SMRADIALFIRE, PatternSMRadialFire); + // ADD_EFFECT(EFFECT_MATRIX_SMPRISMATA, PatternSMPrismata); // ADD_EFFECT(EFFECT_MATRIX_SMAURORA, PatternSMAurora); // ADD_EFFECT(EFFECT_MATRIX_SMSPIRO, PatternSMSpiro); // ADD_EFFECT(EFFECT_MATRIX_SMSMOKE, PatternSMSmoke); From 7c206071fdb5172aafbfe2e0d87dbf082aba11c9 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 07:38:36 -0500 Subject: [PATCH 038/168] add maze2 --- include/effectdependencies.h | 3 +- include/effects.h | 1 + include/effects/matrix/PatternSMMaze2.h | 48 +++++++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMMaze2.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 12a319f5f..86c7b4bec 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,9 +86,10 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif + #include "effects/matrix/PatternSMMaze2.h" +#if BOOGER #include "effects/matrix/PatternSMRadialFire.h" #include "effects/matrix/PatternSMPrismata.h" -#if BOOGER #include "effects/matrix/PatternSMAurora.h" #include "effects/matrix/PatternSMSmoke.h" #include "effects/matrix/PatternSMRainbowSwirl.h" diff --git a/include/effects.h b/include/effects.h index 7b0df1657..89198fbef 100644 --- a/include/effects.h +++ b/include/effects.h @@ -134,6 +134,7 @@ #define EFFECT_MATRIX_SMAURORA 161 #define EFFECT_MATRIX_SMPRISMATA 162 #define EFFECT_MATRIX_SMRADIALFIRE 163 +#define EFFECT_MATRIX_SMMAZE2 164 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMMaze2.h b/include/effects/matrix/PatternSMMaze2.h new file mode 100644 index 000000000..dd53495a4 --- /dev/null +++ b/include/effects/matrix/PatternSMMaze2.h @@ -0,0 +1,48 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +#if ENABLE_AUDIO +class PatternSMMaze2 : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMMaze2 : public LEDStripEffect +#endif +{ +private: +public: + PatternSMMaze2() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMMAZE2, "Maze 2") + { + } + + PatternSMMaze2(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 1f2a601e5..1e007ae34 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMRADIALFIRE, PatternSMRadialFire); + ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMMaze2); + // ADD_EFFECT(EFFECT_MATRIX_SMRADIALFIRE, PatternSMRadialFire); // ADD_EFFECT(EFFECT_MATRIX_SMPRISMATA, PatternSMPrismata); // ADD_EFFECT(EFFECT_MATRIX_SMAURORA, PatternSMAurora); // ADD_EFFECT(EFFECT_MATRIX_SMSPIRO, PatternSMSpiro); From 09b8da657f83b9963248dee9d472f67b24b0be31 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 07:47:44 -0500 Subject: [PATCH 039/168] Add Mirage. --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/PatternSMMaze2.h | 212 +++++++++++++++++++++++ include/effects/matrix/PatternSMMirage.h | 108 ++++++++++++ src/effects.cpp | 1 + 5 files changed, 323 insertions(+) create mode 100644 include/effects/matrix/PatternSMMirage.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 86c7b4bec..a88d00183 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,6 +86,7 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif + #include "effects/matrix/PatternSMMirage.h" #include "effects/matrix/PatternSMMaze2.h" #if BOOGER #include "effects/matrix/PatternSMRadialFire.h" diff --git a/include/effects.h b/include/effects.h index 89198fbef..aaf40328e 100644 --- a/include/effects.h +++ b/include/effects.h @@ -135,6 +135,7 @@ #define EFFECT_MATRIX_SMPRISMATA 162 #define EFFECT_MATRIX_SMRADIALFIRE 163 #define EFFECT_MATRIX_SMMAZE2 164 +#define EFFECT_MATRIX_SMMIRAGE 165 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMMaze2.h b/include/effects/matrix/PatternSMMaze2.h index dd53495a4..e393e33a3 100644 --- a/include/effects/matrix/PatternSMMaze2.h +++ b/include/effects/matrix/PatternSMMaze2.h @@ -2,6 +2,8 @@ #include "effects/strip/musiceffect.h" #include "effectmanager.h" +// Derived from https://editor.soulmatelights.com/gallery/1956-maze +// We have another maze generator, but this is self-solving. #if ENABLE_AUDIO class PatternSMMaze2 : public BeatEffectBase, public LEDStripEffect @@ -10,6 +12,105 @@ class PatternSMMaze2 : public LEDStripEffect #endif { private: +static constexpr int LED_COLS = MATRIX_WIDTH; +static constexpr int LED_ROWS = MATRIX_HEIGHT; +#define M_HEIGHT LED_ROWS + !(LED_ROWS % 2) +#define M_WIDTH LED_COLS + !(LED_COLS % 2) +#define M_SHIFT_X !(LED_COLS % 2) +#define M_SHIFT_Y !(LED_ROWS % 2) +bool maze[M_WIDTH][M_HEIGHT]; +bool start = true; +byte posX, posY; +byte color; +byte Lookdir; +bool checkFlag; +bool tale = 0; +int SubPos; + +CRGB colorsmear(const CRGB & col1, + const CRGB & col2, byte l) { + CRGB temp = col1; + nblend(temp, col2, l); + return temp; +} + +void drawPixelXYF(float x, float y, CRGB col) { + byte ax = byte(x); + byte xsh = (x - ax) * 255; + byte ay = byte(y); + byte ysh = (y - ay) * 255; + CRGB colP1 = colorsmear(col, CRGB(0, 0, 0), xsh); + CRGB colP2 = colorsmear(CRGB(0, 0, 0), col, xsh); + CRGB col1 = colorsmear(colP1, CRGB(0, 0, 0), ysh); + CRGB col2 = colorsmear(colP2, CRGB(0, 0, 0), ysh); + CRGB col3 = colorsmear(CRGB(0, 0, 0), colP1, ysh); + CRGB col4 = colorsmear(CRGB(0, 0, 0), colP2, ysh); + + g()->leds[g()->xy(ax, ay)] += col1; + g()->leds[g()->xy(ax + 1, ay)] += col2; + g()->leds[g()->xy(ax, ay + 1)] += col3; + g()->leds[g()->xy(ax + 1, ay + 1)] += col4; +} + +void digMaze(int x, int y) { + int x1, y1; + int x2, y2; + int dx, dy; + int dir, count; + + dir = random(10) % 4; + count = 0; + while (count < 4) { + dx = 0; + dy = 0; + switch (dir) { + case 0: + dx = 1; + break; + case 1: + dy = 1; + break; + case 2: + dx = -1; + break; + default: + dy = -1; + break; + } + x1 = x + dx; + y1 = y + dy; + x2 = x1 + dx; + y2 = y1 + dy; + if (x2 > 0 && x2 < M_WIDTH && y2 > 0 && y2 < M_HEIGHT && + maze[x1][y1] && maze[x2][y2]) { + maze[x1][y1] = 0; + maze[x2][y2] = 0; + x = x2; + y = y2; + dir = random(10) % 4; + count = 0; + } else { + dir = (dir + 1) % 4; + count += 1; + } + } +} + +void generateMaze() { + for (byte y = 0; y < M_HEIGHT; y++) { + for (byte x = 0; x < M_WIDTH; x++) { + maze[x][y] = 1; + } + } + maze[1][1] = 0; + for (byte y = 1; y < M_HEIGHT; y += 2) { + for (byte x = 1; x < M_WIDTH; x += 2) { + digMaze(x, y); + } + } + maze[0][1] = 0; + maze[M_WIDTH - 2][M_HEIGHT - 1] = 0; +} public: PatternSMMaze2() : #if ENABLE_AUDIO @@ -37,6 +138,117 @@ class PatternSMMaze2 : public LEDStripEffect #if ENABLE_AUDIO ProcessAudio(); #endif + // Because we can restart, we don't move the start into Start() on this one. + if (start) { + start = 0; + color = random(); + generateMaze(); + posX = 0, posY = 1; + checkFlag = 1; + tale = random() % 2; + for (byte x = 0; x < LED_COLS; x++) { + for (byte y = 0; y < LED_ROWS; y++) { + g()->leds[g()->xy(x, y)] = (maze[x + M_SHIFT_X][y + M_SHIFT_Y]) ? CHSV(color, 200, 255) : CHSV(0, 0, 0); + } + } + } + if (!tale) { + for (byte x = 0; x < LED_COLS; x++) { + for (byte y = 0; y < LED_ROWS; y++) { + g()->leds[g()->xy(x, y)] = (maze[x + M_SHIFT_X][y + M_SHIFT_Y]) ? CHSV(color, 200, 255) : CHSV(0, 0, 0); + } + } + } + if (checkFlag) { + switch (Lookdir) { + case 0: + if (!maze[posX][posY - 1]) { + Lookdir = 1; + } + break; + case 1: + if (!maze[posX - 1][posY]) { + Lookdir = 2; + } + break; + case 2: + if (!maze[posX][posY + 1]) { + Lookdir = 3; + } + break; + case 3: + if (!maze[posX + 1][posY]) { + Lookdir = 0; + } + break; + } + while (true) { + bool et1 = 0; + switch (Lookdir) { + case 0: + if (maze[posX + 1][posY]) { + Lookdir = 3; + et1 = 1; + } + break; + case 1: + if (maze[posX][posY - 1]) { + Lookdir = 0; + et1 = 1; + } + break; + case 2: + if (maze[posX - 1][posY]) { + Lookdir = 1; + et1 = 1; + } + break; + case 3: + if (maze[posX][posY + 1]) { + Lookdir = 2; + et1 = 1; + } + break; + } + if (!et1) break; + } + checkFlag = 0; + } + SubPos += 64; + if (SubPos >= 255) { + SubPos = 0; + checkFlag = 1; + switch (Lookdir) { + case 0: + posX += 1; + break; + case 1: + posY -= 1; + break; + case 2: + posX -= 1; + break; + case 3: + posY += 1; + break; + } + } + switch (Lookdir) { + case 0: + drawPixelXYF(float(posX - M_SHIFT_X) + (float(SubPos) / 255.), (posY - M_SHIFT_Y), CHSV(0, 0, 255)); + break; + case 1: + drawPixelXYF((posX - M_SHIFT_X), float(posY - M_SHIFT_Y) - (float(SubPos) / 255.), CHSV(0, 0, 255)); + break; + case 2: + drawPixelXYF(float(posX - M_SHIFT_X) - (float(SubPos) / 255.), (posY - M_SHIFT_Y), CHSV(0, 0, 255)); + break; + case 3: + drawPixelXYF((posX - M_SHIFT_X), float(posY - M_SHIFT_Y) + (float(SubPos) / 255.), CHSV(0, 0, 255)); + break; + } + if ((posX == M_WIDTH - 2) & (posY == M_HEIGHT - 1)) + start = 1; } #if ENABLE_AUDIO diff --git a/include/effects/matrix/PatternSMMirage.h b/include/effects/matrix/PatternSMMirage.h new file mode 100644 index 000000000..24aee1d94 --- /dev/null +++ b/include/effects/matrix/PatternSMMirage.h @@ -0,0 +1,108 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" +// Derived from https://editor.soulmatelights.com/gallery/1516-mirage + +#if ENABLE_AUDIO +class PatternSMMirage : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMMirage : public LEDStripEffect +#endif +{ +private: + uint8_t speed = 128, hue = 70; +const uint8_t div = 4, val = 255; + static constexpr int LED_COLS = MATRIX_WIDTH; + static constexpr int LED_ROWS = MATRIX_HEIGHT; + + +byte buff[LED_COLS + 2][LED_ROWS + 2]; + +void blur() { + uint16_t sum; + for (byte x = 1; x < LED_COLS + 1; x++) { + for (byte y = 1; y < LED_ROWS + 1; y++) { + sum = buff[x][y]; + sum += buff[x + 1][y]; + sum += buff[x][y - 1]; + sum += buff[x][y + 1]; + sum += buff[x - 1][y]; + sum /= 5; + buff[x][y] = sum; + } + } +} + +void drawDot(float x, float y, byte a){ +uint8_t xx = (x - (int) x) * 255, yy = (y - (int) y) * 255, ix = 255 - xx, iy = 255 - yy; +#define WU_WEIGHT(a, b)((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) + uint8_t wu[4] = { + WU_WEIGHT(ix, iy), + WU_WEIGHT(xx, iy), + WU_WEIGHT(ix, yy), + WU_WEIGHT(xx, yy) + }; + // multiply the intensities by the colour, and saturating-add them to the pixels + for (uint8_t i = 0; i < 4; i++) { + int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); + byte clr = buff[xn][yn]; + clr = constrain(qadd8(clr, (a * wu[i]) >> 8), 0 , 255); + buff[xn][yn] = clr; + } +} +public: + PatternSMMirage() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMMIRAGE, "Mirage") + { + } + + PatternSMMirage(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + blur(); + float x1 = (float)beatsin88(15 * speed, div, (LED_COLS - 1) * div) / div; + float y1 = (float)beatsin88(20 * speed, div, (LED_ROWS) * div) / div; + float x2 = (float)beatsin88(16 * speed, div, (LED_COLS - 1) * div) / div; + float y2 = (float)beatsin88(14 * speed, div, (LED_ROWS) * div) / div; + float x3 = (float)beatsin88(12 * speed, div, (LED_COLS - 1) * div) / div; + float y3 = (float)beatsin88(16 * speed, div, (LED_ROWS) * div) / div; + drawDot(x1 , y1, val); + drawDot(x1 + 1, y1, val); + drawDot(x2 , y2, val); + drawDot(x2 + 1, y2, val); + drawDot(x3 , y3, val); + drawDot(x3+1,y3, val); + hue++; + for (byte x = 1; x < LED_COLS+1; x++) { + for (byte y = 1; y < LED_ROWS+1; y++) { + g()->leds[g()->xy(x-1, y-1)] = CHSV(hue , buff[x][y], 255); + } + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 1e007ae34..c2a855bc8 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,6 +358,7 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif + ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMMirage); ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMMaze2); // ADD_EFFECT(EFFECT_MATRIX_SMRADIALFIRE, PatternSMRadialFire); // ADD_EFFECT(EFFECT_MATRIX_SMPRISMATA, PatternSMPrismata); From e9442215a3f99716a238406468a49372f472a99a Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 07:56:00 -0500 Subject: [PATCH 040/168] Add radial wave --- include/effectdependencies.h | 3 +- include/effects.h | 1 + include/effects/matrix/PatternSMRadialWave.h | 82 ++++++++++++++++++++ src/effects.cpp | 5 +- 4 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 include/effects/matrix/PatternSMRadialWave.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index a88d00183..743d1c938 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,9 +86,10 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif + #include "effects/matrix/PatternSMRadialWave.h" +#if BOOGER #include "effects/matrix/PatternSMMirage.h" #include "effects/matrix/PatternSMMaze2.h" -#if BOOGER #include "effects/matrix/PatternSMRadialFire.h" #include "effects/matrix/PatternSMPrismata.h" #include "effects/matrix/PatternSMAurora.h" diff --git a/include/effects.h b/include/effects.h index aaf40328e..a22c0404e 100644 --- a/include/effects.h +++ b/include/effects.h @@ -136,6 +136,7 @@ #define EFFECT_MATRIX_SMRADIALFIRE 163 #define EFFECT_MATRIX_SMMAZE2 164 #define EFFECT_MATRIX_SMMIRAGE 165 +#define EFFECT_MATRIX_SMRADIALWAVE 166 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMRadialWave.h b/include/effects/matrix/PatternSMRadialWave.h new file mode 100644 index 000000000..291ed186a --- /dev/null +++ b/include/effects/matrix/PatternSMRadialWave.h @@ -0,0 +1,82 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" +// Derived from https://editor.soulmatelights.com/gallery/1090-radialwave + +#if ENABLE_AUDIO +class PatternSMRadialWave : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMRadialWave : public LEDStripEffect +#endif +{ +private: +//RadialWave +//Stepko and Sutaburosu +//22/05/22 +static constexpr int LED_COLS = MATRIX_WIDTH; +static constexpr int LED_ROWS = MATRIX_HEIGHT; + +bool setupm = 1; +const uint8_t C_X = LED_COLS / 2; +const uint8_t C_Y = LED_ROWS / 2; +const uint8_t mapp = 255 / LED_COLS; +struct { + uint8_t angle; + uint8_t radius; +} +rMap[LED_COLS][LED_ROWS]; +public: + PatternSMRadialWave() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMRADIALWAVE, "Radial Wave") + { + } + + PatternSMRadialWave(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + for (int8_t x = -C_X; x < C_X + (LED_COLS % 2); x++) { + for (int8_t y = -C_Y; y < C_Y + (LED_ROWS % 2); y++) { + rMap[x + C_X][y + C_Y].angle = 128 * (atan2(y, x) / PI); + rMap[x + C_X][y + C_Y].radius = hypot(x, y) * mapp; //thanks Sutaburosu + } + } + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + static byte speed = 1; + static uint32_t t; + t += speed; + for (uint8_t x = 0; x < LED_COLS; x++) { + for (uint8_t y = 0; y < LED_ROWS; y++) { + byte angle = rMap[x][y].angle; + byte radius = rMap[x][y].radius; + g()->leds[g()->xy(x, y)] = CHSV(t + radius, 255, sin8(t * 4 + sin8(t * 4 - radius) + angle * 3)); + } + } +// delay(16); + + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index c2a855bc8..22009fdf1 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,8 +358,9 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMMirage); - ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMMaze2); + ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMRadialWave); + // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMMirage); + // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMMaze2); // ADD_EFFECT(EFFECT_MATRIX_SMRADIALFIRE, PatternSMRadialFire); // ADD_EFFECT(EFFECT_MATRIX_SMPRISMATA, PatternSMPrismata); // ADD_EFFECT(EFFECT_MATRIX_SMAURORA, PatternSMAurora); From 44e553f6e088797651bee879c10d9bb74bdf82c9 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 08:04:17 -0500 Subject: [PATCH 041/168] Add Rainbow Tunnel --- include/effectdependencies.h | 3 +- include/effects.h | 1 + .../effects/matrix/PatternSMRainbowTunnel.h | 84 +++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMRainbowTunnel.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 743d1c938..aa530d720 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,8 +86,9 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMRadialWave.h" + #include "effects/matrix/PatternSMRainbowTunnel.h" #if BOOGER + #include "effects/matrix/PatternSMRadialWave.h" #include "effects/matrix/PatternSMMirage.h" #include "effects/matrix/PatternSMMaze2.h" #include "effects/matrix/PatternSMRadialFire.h" diff --git a/include/effects.h b/include/effects.h index a22c0404e..89001ff46 100644 --- a/include/effects.h +++ b/include/effects.h @@ -137,6 +137,7 @@ #define EFFECT_MATRIX_SMMAZE2 164 #define EFFECT_MATRIX_SMMIRAGE 165 #define EFFECT_MATRIX_SMRADIALWAVE 166 +#define EFFECT_MATRIX_SMRAINBOW_TUNNEL 167 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMRainbowTunnel.h b/include/effects/matrix/PatternSMRainbowTunnel.h new file mode 100644 index 000000000..260bede47 --- /dev/null +++ b/include/effects/matrix/PatternSMRainbowTunnel.h @@ -0,0 +1,84 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +#if ENABLE_AUDIO +class PatternSMRainbowTunnel : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMRainbowTunnel : public LEDStripEffect +#endif +{ +private: + //RadialRainbow +//Stepko and Sutaburosu +//23/12/21 + static constexpr int LED_COLS = MATRIX_WIDTH; + static constexpr int LED_ROWS = MATRIX_HEIGHT; + +bool setupm = 1; +const uint8_t C_X = LED_COLS / 2; +const uint8_t C_Y = LED_ROWS / 2; +const uint8_t mapp = 255 / LED_COLS; +struct { + uint8_t angle; + uint8_t radius; +} +rMap[LED_COLS][LED_ROWS]; +public: + PatternSMRainbowTunnel() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMRAINBOW_TUNNEL, "Rainbow Tunnel") + { + } + + PatternSMRainbowTunnel(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + for (int8_t x = -C_X; x < C_X + (LED_COLS % 2); x++) { + for (int8_t y = -C_Y; y < C_Y + (LED_ROWS % 2); y++) { + rMap[x + C_X][y + C_Y].angle = 128 * (atan2(y, x) / PI); + rMap[x + C_X][y + C_Y].radius = hypot(x, y) * mapp; //thanks Sutaburosu + } + } + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + static byte scaleX = 4; + static byte scaleY = 4; + + static byte speed = 2; + static uint16_t t; + t += speed; + for (uint8_t x = 0; x < LED_COLS; x++) { + for (uint8_t y = 0; y < LED_ROWS; y++) { + byte angle = rMap[x][y].angle; + byte radius = rMap[x][y].radius; + g()->leds[g()->xy(x, y)] = CHSV((angle*scaleX)-t+(radius*scaleY), 255, constrain(radius*2,0,255)); + } + } + + // delay(20); + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 22009fdf1..3de924a60 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMRadialWave); + ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMRainbowTunnel); + // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMRadialWave); // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMMirage); // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMMaze2); // ADD_EFFECT(EFFECT_MATRIX_SMRADIALFIRE, PatternSMRadialFire); From 69192669ec3f19a5aa327566c04007f16b661e4e Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 08:09:57 -0500 Subject: [PATCH 042/168] Add Hypnosis --- include/effectdependencies.h | 3 +- include/effects.h | 1 + include/effects/matrix/PatternSMHypnosis.h | 72 ++++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMHypnosis.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index aa530d720..67b508ffa 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,8 +86,9 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMRainbowTunnel.h" + #include "effects/matrix/PatternSMHypnosis.h" #if BOOGER + #include "effects/matrix/PatternSMRainbowTunnel.h" #include "effects/matrix/PatternSMRadialWave.h" #include "effects/matrix/PatternSMMirage.h" #include "effects/matrix/PatternSMMaze2.h" diff --git a/include/effects.h b/include/effects.h index 89001ff46..3cf6a7b20 100644 --- a/include/effects.h +++ b/include/effects.h @@ -138,6 +138,7 @@ #define EFFECT_MATRIX_SMMIRAGE 165 #define EFFECT_MATRIX_SMRADIALWAVE 166 #define EFFECT_MATRIX_SMRAINBOW_TUNNEL 167 +#define EFFECT_MATRIX_SMHYPNOSIS 168 // Starry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMHypnosis.h b/include/effects/matrix/PatternSMHypnosis.h new file mode 100644 index 000000000..8d4c2e94e --- /dev/null +++ b/include/effects/matrix/PatternSMHypnosis.h @@ -0,0 +1,72 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +#if ENABLE_AUDIO +class PatternSMHypnosis : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMHypnosis : public LEDStripEffect +#endif +{ +private: + static constexpr int LED_COLS = MATRIX_WIDTH; + static constexpr int LED_ROWS = MATRIX_HEIGHT; +const uint8_t C_X = LED_COLS / 2; +const uint8_t C_Y = LED_ROWS / 2; +const uint8_t mapp = 255 / LED_COLS; +struct{ + uint8_t angle; + uint8_t radius; +} rMap[LED_COLS][LED_ROWS]; +public: + PatternSMHypnosis() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMHYPNOSIS, "Hypnosis") + { + } + + PatternSMHypnosis(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + for (int8_t x = -C_X; x < C_X + (LED_COLS % 2); x++) { + for (int8_t y = -C_Y; y < C_Y + (LED_ROWS % 2); y++) { + rMap[x + C_X][y + C_Y].angle = 128 * (atan2(y, x) / PI); + rMap[x + C_X][y + C_Y].radius = hypot(x, y) * mapp; //thanks Sutaburosu + } + } + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + static uint16_t t; + t += 4; + for (uint8_t x = 0; x < LED_COLS; x++) { + for (uint8_t y = 0; y < LED_ROWS; y++) { + byte angle = rMap[x][y].angle; + byte radius = rMap[x][y].radius; + g()->leds[g()->xy(x, y)] = ColorFromPalette(RainbowStripeColors_p, t / 2 + radius + angle, sin8(angle + (radius * 2) - t)); + } + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 3de924a60..734fd9828 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMRainbowTunnel); + ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMHypnosis); + //ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMRainbowTunnel); // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMRadialWave); // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMMirage); // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMMaze2); From 45a3fd03f00f1b2812a89b31ecd7cfc4bf75d235 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 08:28:32 -0500 Subject: [PATCH 043/168] Add Walking Machine --- include/effectdependencies.h | 3 +- include/effects.h | 3 +- .../effects/matrix/PatternSMHWalkingMachine.h | 0 .../effects/matrix/PatternSMWalkingMachine.h | 138 ++++++++++++++++++ src/effects.cpp | 3 +- 5 files changed, 144 insertions(+), 3 deletions(-) create mode 100644 include/effects/matrix/PatternSMHWalkingMachine.h create mode 100644 include/effects/matrix/PatternSMWalkingMachine.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 67b508ffa..3a5193f44 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,8 +86,9 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMHypnosis.h" + #include "effects/matrix/PatternSMWalkingMachine.h" #if BOOGER + #include "effects/matrix/PatternSMHypnosis.h" #include "effects/matrix/PatternSMRainbowTunnel.h" #include "effects/matrix/PatternSMRadialWave.h" #include "effects/matrix/PatternSMMirage.h" diff --git a/include/effects.h b/include/effects.h index 3cf6a7b20..a37c492bc 100644 --- a/include/effects.h +++ b/include/effects.h @@ -139,8 +139,9 @@ #define EFFECT_MATRIX_SMRADIALWAVE 166 #define EFFECT_MATRIX_SMRAINBOW_TUNNEL 167 #define EFFECT_MATRIX_SMHYPNOSIS 168 +#define EFFECT_MATRIX_SMHWALKING_MACHINE 169 -// Starry Night star variations +999999rry Night star variations #define EFFECT_STAR 1 #define EFFECT_STAR_RANDOM_PALETTE_COLOR 2 #define EFFECT_STAR_LONG_LIFE_SPARKLE 3 diff --git a/include/effects/matrix/PatternSMHWalkingMachine.h b/include/effects/matrix/PatternSMHWalkingMachine.h new file mode 100644 index 000000000..e69de29bb diff --git a/include/effects/matrix/PatternSMWalkingMachine.h b/include/effects/matrix/PatternSMWalkingMachine.h new file mode 100644 index 000000000..23500178d --- /dev/null +++ b/include/effects/matrix/PatternSMWalkingMachine.h @@ -0,0 +1,138 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +#if ENABLE_AUDIO +class PatternSMWalkingMachine : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMWalkingMachine : public LEDStripEffect +#endif +{ +private: + //Walking machine +//St3p40 aka Stepko +//11.04.23 +//Not for small matrices +//Second name is "dreams in night" + static constexpr int LED_COLS = MATRIX_WIDTH; + static constexpr int LED_ROWS = MATRIX_HEIGHT; +void drawPixelXYF(float x, float y, + const CRGB & color) { + // extract the fractional parts and derive their inverses + uint8_t xx = (x - (int) x) * 255, yy = (y - (int) y) * 255, ix = 255 - xx, iy = 255 - yy; + // calculate the intensities for each affected pixel + #define WU_WEIGHT(a, b)((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) + uint8_t wu[4] = { + WU_WEIGHT(ix, iy), + WU_WEIGHT(xx, iy), + WU_WEIGHT(ix, yy), + WU_WEIGHT(xx, yy) + }; + // multiply the intensities by the colour, and saturating-add them to the pixels + for (uint8_t i = 0; i < 4; i++) { + int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); + CRGB clr = g()->leds[g()->xy(xn, yn)]; + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + g()->leds[g()->xy(xn, yn)] = clr; + } + #undef WU_WEIGHT +} + +void drawCircleF(float cx, float cy, float radius, CRGB col) { + uint8_t rad = radius; + for (int8_t y = -radius; y < radius; y += 1) { + for (int8_t x = -radius; x < radius; x += 1) { + if (x * x + y * y < radius * radius) + drawPixelXYF(cx + x, cy + y, col); + } + } +} + +static float fmap(const float x, + const float in_min, + const float in_max, + const float out_min, + const float out_max) { + return (out_max - out_min) * (x - in_min) / (in_max - in_min) + out_min; +} + +void drawLineF(float x1, float y1, float x2, float y2, + const CRGB & col1, + const CRGB & col2) { + float deltaX = fabs(x2 - x1); + float deltaY = fabs(y2 - y1); + float steps = 255 / max(deltaX, deltaY); + float error = deltaX - deltaY; + CRGB col = col1; + float signX = x1 < x2 ? 0.5 : -0.5; + float signY = y1 < y2 ? 0.5 : -0.5; + + while (x1 != x2 || y1 != y2) { + if ((signX > 0. && x1 > x2 + signX) || (signX < 0. && x1 < x2 + signX)) break; + if ((signY > 0. && y1 > y2 + signY) || (signY < 0. && y1 < y2 + signY)) break; + drawPixelXYF(x1/*+random(-10,10)*0.1 */, y1/*+random(-10,10)*0.1*/, nblend(col, col2, steps++)); + float error2 = error; + if (error2 > -deltaY) { + error -= deltaY; + x1 += signX; + } + if (error2 < deltaX) { + error += deltaX; + y1 += signY; + } + } +} +struct{ + float posX; + float posY; +} dot[7]; +public: + PatternSMWalkingMachine() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMWALKING_MACHINE, "Walking Machine") + { + } + + PatternSMWalkingMachine(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + g()->Clear(); + + for (byte i = 0; i < 7; i++) { + dot[i].posX = (beatsin16(4, (LED_COLS >> 3) << 8, (LED_COLS - (LED_COLS >> 3) - 1) << 8, i*8192, i*8192)) / 255.f; + dot[i].posY = (beatsin16(4, (LED_ROWS >> 3) << 8, (LED_ROWS - (LED_ROWS >> 3) - 1) << 8, i*4096, 16384+i*8192)) / 255.f; + } + for(uint8_t i = 0; i < 7; i++){ + drawCircleF(dot[i].posX, dot[i].posY, 4, CHSV(i*32,255,255)); + drawLineF(dot[i].posX, dot[i].posY, dot[(i+1)%7].posX, dot[(i+1)%7].posY, CHSV(i*32,255,255), CHSV(((i+1)%7)*32,255,255)); + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 734fd9828..5fbc93fd1 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMHypnosis); + ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMWalkingMachine); + // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMHypnosis); //ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMRainbowTunnel); // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMRadialWave); // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMMirage); From 94371bfbd7244d4b2e7b9dba3bf4a0a0615c8215 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 09:57:17 -0500 Subject: [PATCH 044/168] Add 37(!) efffects via TixyLand. --- include/effectdependencies.h | 4 +- include/effects.h | 6 +- .../effects/matrix/PatternSMHWalkingMachine.h | 0 include/effects/matrix/PatternSMTixyLand.h | 160 ++++++++++++++++++ .../effects/matrix/PatternSMWalkingMachine.h | 2 + include/effects/matrix/PatternSMXorCircles.h | 78 +++++++++ src/effects.cpp | 4 +- 7 files changed, 250 insertions(+), 4 deletions(-) delete mode 100644 include/effects/matrix/PatternSMHWalkingMachine.h create mode 100644 include/effects/matrix/PatternSMTixyLand.h create mode 100644 include/effects/matrix/PatternSMXorCircles.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 3a5193f44..0887e88b6 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,8 +86,10 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMWalkingMachine.h" + #include "effects/matrix/PatternSMTixyLand.h" #if BOOGER + #include "effects/matrix/PatternSMXorCircles.h" + #include "effects/matrix/PatternSMWalkingMachine.h" #include "effects/matrix/PatternSMHypnosis.h" #include "effects/matrix/PatternSMRainbowTunnel.h" #include "effects/matrix/PatternSMRadialWave.h" diff --git a/include/effects.h b/include/effects.h index a37c492bc..5f9761e7c 100644 --- a/include/effects.h +++ b/include/effects.h @@ -139,9 +139,11 @@ #define EFFECT_MATRIX_SMRADIALWAVE 166 #define EFFECT_MATRIX_SMRAINBOW_TUNNEL 167 #define EFFECT_MATRIX_SMHYPNOSIS 168 -#define EFFECT_MATRIX_SMHWALKING_MACHINE 169 +#define EFFECT_MATRIX_SMWALKING_MACHINE 169 +#define EFFECT_MATRIX_SMXOR_CIRCLES 170 +#define EFFECT_MATRIX_SMTIXY_LAND 171 -999999rry Night star variations +// 999999rry Night star variations #define EFFECT_STAR 1 #define EFFECT_STAR_RANDOM_PALETTE_COLOR 2 #define EFFECT_STAR_LONG_LIFE_SPARKLE 3 diff --git a/include/effects/matrix/PatternSMHWalkingMachine.h b/include/effects/matrix/PatternSMHWalkingMachine.h deleted file mode 100644 index e69de29bb..000000000 diff --git a/include/effects/matrix/PatternSMTixyLand.h b/include/effects/matrix/PatternSMTixyLand.h new file mode 100644 index 000000000..248615431 --- /dev/null +++ b/include/effects/matrix/PatternSMTixyLand.h @@ -0,0 +1,160 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/916-tixyland +// 37 (!) mathematically easy effects in one. Pick your favorites and extract them. +// It's the kitchen sink. Some are quite cool. + +#if ENABLE_AUDIO +class PatternSMTixyLand : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMTixyLand : public LEDStripEffect +#endif +{ +private: + static constexpr int LED_COLS = MATRIX_WIDTH; + static constexpr int LED_ROWS = MATRIX_HEIGHT; + // Sample code taken from: https://editor.soulmatelights.com/gallery/671-tixyland + +//https://tixy.land/?code=sin%28sin%28y%29%2Bx%2Bt%29*cos%28t%2By%29 +//https://tixy.land/?code=tan%28sqrt%28sin%28x%29*16*sin%28x%29*16%2Bcos%28y%29*16*cos%28y%29*16%29%2Bt%29 +//https://tixy.land/?code=sin%28x%2Bsin%28y%2F2%2Bt*5%29%29%2Bcos%28y%29 +//https://tixy.land/?code=sin%28sin%28x%2Bt%29%2By%2Bt*10%29-y%2F10 +//https://tixy.land/?code=sin%28sin%28y%2Bt%29%2Bx%2Bt*10%29-y%2F10 + +byte effect = 0; +uint8_t gHue = 0; + +float code(double t, double i, double x, double y) { + //put tixy.land formulas after return + //use fmod() against C++ modulo % + //float r = static_cast (rand()) / static_cast (RAND_MAX); // use against random() + + //some patterns from twitter https://twitter.com/search?q=tixy.land&s=09 & reddit. uncomment it + +//____________________________ +//float a = tan(-y/max(x-8,y-8,7-x,7-y)-t*4); //http://maettig.com/code/canvas/tixy.land-hd.html?code=tan%28-y%2Fmax%28x-8%2Cy-8%2C7-x%2C7-y%29-t*4%29 +//float a = max(x-8,y-8); //uncomment whole block, in arduino max() work only with 2 numbers instead javascript ( +//a = max(a,7-x); +//a = max (a,7-y); +//a = tan(-y/a-t*4); +//return a; +//_____________________________________________ +switch (effect){ +case 0:return x/y*(hypot(x+cos(t)-8,y-7)-6); break; // https://twitter.com/aemkei/status/1340044770257870851?s=20 // shady sphere// by @blu3_enjoy +case 1:return .1/(sin(y/4-t*6)-sin(x*2-t)); break; ////https://twitter.com/ntsutae/status/1336729037549436931?s=20 +case 2:return sin(hypot(x-=8,y-=8)+t+atan2(y,x)); break; //https://twitter.com/aemkei/status/1331340057727406081?s=20 +case 3:return abs(cos(atan2(y+2,x-8)*6+t*2)); break; //https://twitter.com/mgmalheiros/status/1328456054049476611?s=20 +case 4:return tan(cos(x)-t)*tan(sin(y)-t)/16; break; //https://twitter.com/SonezakiRinji/status/1328149756133052416?s=20 +case 5:return sin(y*sin(t/2)*2+t+i*6); break; +case 6:return abs(7 - x) < 9 ? cos(t + (x + y) * PI / 8) : 0; break; //https://twitter.com/HiraginoYuki/status/1327166558955663362 +case 7:return !((int)(x+t*50/(fmod(y*y,5.9)+1))&15)/(fmod(y*y,5.9)+1); break; +case 8:return sin(atan((y-7.5)/(x-7.5))+t*6); break; +case 9:return sin(atan((y)/(x))+t); break; +case 10:return 1-fmod(( (t+x+sin(t+x)/2) -y/30),1.0); break; +case 11:return (y-8)/3-tan(x/6+1.87)*sin(t*2); break; +case 12:return (y-8)/3-(sin(x/4+t*4)); break; +case 13:return fmod(i,4) - fmod(y,4)+sin(t); break; +case 14:return sin(x) - sin(x/2-2*t) - y/1.2+6; break; +case 15:return -.4/(hypot(x-fmod(t,10),y-fmod(t,8))-fmod(t,2)*9); break; +case 16:return sin(x/3*sin(t/3)*2)+cos(y/4*sin(t/2)*2); break; +case 17:return cos(sin((x*t*.1))*PI)+cos(sin(y*t*.1+(sqrt(abs(cos(x*t*.1)))))*PI); break; +case 18:return x/t/sqrt(55-(x-=8)*x-(y-=8)*y); break;//https://twitter.com/XorDev/status/1327059496951291905 +case 19:return sin(x*x*3*i/1e4-y/2+t*9); break; +case 20:return std::min(7-y+sin(x+sin(y+t*8))*6,0.0); break; //fire https://twitter.com/davemakes/status/1324226447351803905 +case 21:return x*y/64*sin(t+x*6-y*6); break; //https://twitter.com/maettig/status/1326162655061696513 +case 22:return 6-hypot(x-7.5,y-7.5)-sin(i/3-t); break;//https://twitter.com/maettig/status/1326162655061696513 +case 23:return 1-abs((x-6)*cos(t)+(y-6)*sin(t)); break; //https://twitter.com/maettig/status/1326163017533419529 +case 24:return atan((x-7.5)*(y-7.5))-2.5*sin(t); break; //https://twitter.com/maettig/status/1326163136559403015 +case 25:return sin(3*atan2(y-7.5,x-7.5)+t); break; //https://twitter.com/aemkei/status/1326637631409676291 +case 26:return sin(3 * atan2(y - 7.5 + sin(t) * 5, x - 7.5 + sin(t / 2) * 5) + t * 5); break; //i add move for //https://twitter.com/aemkei/status/1326637631409676291 +case 27:return sin(PI*2*atan((y-8)/(x-8))+5*t); break; +case 28:return sin((t/16)*i+x/y); break; +case 29:return sin(x/y-y/x+t); break; +case 30:return sin(t-sqrt(x*x+y*y)); break; +case 31:return sin(x+t)+sin(y+t)+sin(x+y+t)/3; break; +case 32:return 1-hypot(sin(t)*9-x,cos(t)*9-y)/9; break; +case 33:return 1-fmod((x*x-y+t*(fmod(1+x*x,5.0))*3.0),16.0)/16.0; break; +case 34:return sin(sin(y)+x+t)*cos(t+y); break; +case 35:return sin(x+sin(y/2+t*5))+cos(y); break; +case 36:return x>7-(sin(t*5+y*3)*6)?1:.2; break; // Ldir's DNA ))) https://twitter.com/ldir_ko/status/1326099121170771968 https://tixy.land/?code=x%3E7-%28sin%28t*5%2By*3%29*6%29%3F1%3A.2 +default: return 0; +} + //_____________________ + //float r = static_cast (rand()) / static_cast (RAND_MAX); // my fire )) https://twitter.com/ldir_ko/status/1325720180262113281 https://tixy.land/?code=%7Ei%2F200*%28y%2F40%2Frandom%28%29%29 + //return -i/200*(y/40/r); // my fire )) + //____________________________________ +} + +void processFrame(double t, double x, double y) { + EVERY_N_MILLISECONDS( 30 ) { gHue++; } + double i = (y * 16) + x; + double frame = constrain(code(t, i, x, y), -1, 1) * 255; + if (frame >= 0) { g()->leds[g()->xy(x, (LED_ROWS - 1 - y))]= CHSV(gHue,255,frame); } //change to XY(x, y) for non rotate display + else { g()->leds[g()->xy(x, (LED_ROWS - 1 - y))] = CHSV(gHue+55, 255, -frame); } //change to XY(x, y) for non rotate display +} +public: + PatternSMTixyLand() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMTIXY_LAND, "TixyLand") + { + } + + PatternSMTixyLand(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + void Label(int n) { + String result = str_sprintf("Tixy %d", n); + const char * pszText = result.c_str(); + + LEDMatrixGFX::backgroundLayer.setFont(gohufont11b); + int x = 10; + int y = 10; + LEDMatrixGFX::backgroundLayer.drawString(x-1, y, rgb24(0,0,0), pszText); + LEDMatrixGFX::backgroundLayer.drawString(x+1, y, rgb24(0,0,0), pszText); + LEDMatrixGFX::backgroundLayer.drawString(x, y-1, rgb24(0,0,0), pszText); + LEDMatrixGFX::backgroundLayer.drawString(x, y+1, rgb24(0,0,0), pszText); + LEDMatrixGFX::backgroundLayer.drawString(x, y, rgb24(255,255,255), pszText); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + double t = millis() / 1000.0; // some formulas is hardcoded and fps get down. this speedup it + for (byte x = 0; x < LED_COLS; x++) { + for (byte y = 0; y < LED_ROWS; y++) { + processFrame(t, x, y); + } + } + EVERY_N_SECONDS(10){ // 10 is too fast... + effect++; + if(effect>36) effect = 0; + Label(effect); // This will only last one frame. This is already too slow. + } + + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/include/effects/matrix/PatternSMWalkingMachine.h b/include/effects/matrix/PatternSMWalkingMachine.h index 23500178d..e9b1567cf 100644 --- a/include/effects/matrix/PatternSMWalkingMachine.h +++ b/include/effects/matrix/PatternSMWalkingMachine.h @@ -3,6 +3,8 @@ #include "effects/strip/musiceffect.h" #include "effectmanager.h" +// Derived from https://editor.soulmatelights.com/gallery/1990-walking-machine + #if ENABLE_AUDIO class PatternSMWalkingMachine : public BeatEffectBase, public LEDStripEffect #else diff --git a/include/effects/matrix/PatternSMXorCircles.h b/include/effects/matrix/PatternSMXorCircles.h new file mode 100644 index 000000000..a761d2071 --- /dev/null +++ b/include/effects/matrix/PatternSMXorCircles.h @@ -0,0 +1,78 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +#if ENABLE_AUDIO +class PatternSMXorCircles : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMXorCircles : public LEDStripEffect +#endif +{ +private: + static constexpr int LED_COLS = MATRIX_WIDTH; + static constexpr int LED_ROWS = MATRIX_HEIGHT; +/* + double log2(double num){ + double number=log(num)/log(2); + return (number); + } +*/ + #define log2(num) log(num)/log(2) +static constexpr uint8_t scale_x = log2(64/LED_COLS); +static constexpr uint8_t scale_y = log2(64/LED_ROWS); + +public: + PatternSMXorCircles() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMXOR_CIRCLES, "Xor Circles") + { + } + + PatternSMXorCircles(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + uint8_t x1sh = beatsin8(5, 0, LED_COLS); + uint8_t y1sh = beatsin8(6, 0, LED_ROWS); + uint8_t x2sh = beatsin8(7, 0, LED_COLS); + uint8_t y2sh = beatsin8(4, 0, LED_ROWS); + for (uint8_t y = 0; y < LED_ROWS; y++) { + for (uint8_t x = 0; x < LED_COLS; x++) { + int8_t cx = x-x1sh; + int8_t cy = y-y1sh; + uint8_t a = sqrt16((( cx * cx) + ( cy * cy))) << scale_x; + cx = x-x2sh; + cy = y-y2sh; + uint8_t v = sqrt16((( cx * cx) + ( cy * cy))) << scale_y; + g()->leds[g()->xy(x, y)] = (((a ^ v) >> 4) & 1) * 255; + } + } +} + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; + +#undef log2 diff --git a/src/effects.cpp b/src/effects.cpp index 5fbc93fd1..72a64664c 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,9 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMWalkingMachine); + ADD_EFFECT(EFFECT_MATRIX_SMTIXY_LAND, PatternSMTixyLand); + // ADD_EFFECT(EFFECT_MATRIX_SMXOR_CIRCLES, PatternSMXorCircles); + // ADD_EFFECT(EFFECT_MATRIX_SMWALKING_MACHINE, PatternSMWalkingMachine); // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMHypnosis); //ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMRainbowTunnel); // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMRadialWave); From 360727ae63a455702498d95bd968bfcb4ddce1aa Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 15:19:10 -0500 Subject: [PATCH 045/168] Add BoidExplosion! --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/Boid.h | 683 +++++++++--------- .../effects/matrix/PatternSMBoidExplosion.h | 217 ++++++ src/effects.cpp | 3 +- 5 files changed, 564 insertions(+), 341 deletions(-) create mode 100644 include/effects/matrix/PatternSMBoidExplosion.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 0887e88b6..a504b8dca 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,6 +86,7 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif + #include "effects/matrix/PatternSMBoidExplosion.h" #include "effects/matrix/PatternSMTixyLand.h" #if BOOGER #include "effects/matrix/PatternSMXorCircles.h" diff --git a/include/effects.h b/include/effects.h index 5f9761e7c..d5d4e80db 100644 --- a/include/effects.h +++ b/include/effects.h @@ -142,6 +142,7 @@ #define EFFECT_MATRIX_SMWALKING_MACHINE 169 #define EFFECT_MATRIX_SMXOR_CIRCLES 170 #define EFFECT_MATRIX_SMTIXY_LAND 171 +#define EFFECT_MATRIX_SMBOID_EXPLOSION 172 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/Boid.h b/include/effects/matrix/Boid.h index 42baa0d6f..4362a7e1f 100644 --- a/include/effects/matrix/Boid.h +++ b/include/effects/matrix/Boid.h @@ -1,340 +1,343 @@ -#pragma once - -//+-------------------------------------------------------------------------- -// -// File: Boids.h -// -// NightDriverStrip - (c) 2018 Plummer's Software LLC. All Rights Reserved. -// -// This file is part of the NightDriver software project. -// -// NightDriver is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// NightDriver is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with Nightdriver. It is normally found in copying.txt -// If not, see . -// -// -// Description: -// -// Effect code ported from Aurora to Mesmerizer's draw routines -// -// History: Jul-08-2022 Davepl Originally from Aurora -// -//--------------------------------------------------------------------------- - -/* - * Aurora: https://github.com/pixelmatix/aurora - * Copyright (c) 2014 Jason Coon - * - * Portions of this code are adapted from "Flocking" in "The Nature of Code" by Daniel Shiffman: http://natureofcode.com/ - * Copyright (c) 2014 Daniel Shiffman - * http://www.shiffman.net - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -// Flocking -// Daniel Shiffman -// The Nature of Code, Spring 2009 - -// Boid class -// Methods for Separation, Cohesion, Alignment added - -#pragma once - -#include "Vector.h" - -class Boid -{ - public: - - PVector location; - PVector velocity; - PVector acceleration; - float maxforce; // Maximum steering force - float maxspeed; // Maximum speed - - float desiredseparation = 4; - float neighbordist = 8; - uint8_t colorIndex = 0; - float mass; - - boolean enabled = true; - - Boid() {} - - Boid(float x, float y) { - acceleration = PVector(0, 0); - velocity = PVector(randomf(), randomf()); - location = PVector(x, y); - maxspeed = 1.5; - maxforce = 0.05; - } - - static float randomf() { - return map((float)random(0, 255), 0.0f, 255.0f, -.5f, .5f); - } - - void run(Boid boids [], uint8_t boidCount) { - flock(boids, boidCount); - update(); - // wrapAroundBorders(); - // render(); - } - - // Method to update location - void update() { - // Update velocity - velocity += acceleration; - // Limit speed - velocity.limit(maxspeed); - location += velocity; - // Reset acceleration to 0 each cycle - acceleration *= 0; - } - - void applyForce(PVector force) { - // We could add mass here if we want A = F / M - acceleration += force; - } - - void repelForce(PVector obstacle, float radius) { - //Force that drives boid away from obstacle. - - PVector futPos = location + velocity; //Calculate future position for more effective behavior. - PVector dist = obstacle - futPos; - float d = dist.mag(); - - if (d <= radius) { - PVector repelVec = location - obstacle; - repelVec.normalize(); - if (d != 0) { //Don't divide by zero. - // float scale = 1.0 / d; //The closer to the obstacle, the stronger the force. - repelVec.normalize(); - repelVec *= (maxforce * 7); - if (repelVec.mag() < 0) { //Don't let the boids turn around to avoid the obstacle. - repelVec.y = 0; - } - } - applyForce(repelVec); - } - } - - // We accumulate a new acceleration each time based on three rules - void flock(Boid boids [], uint8_t boidCount) { - PVector sep = separate(boids, boidCount); // Separation - PVector ali = align(boids, boidCount); // Alignment - PVector coh = cohesion(boids, boidCount); // Cohesion - // Arbitrarily weight these forces - sep *= 1.5; - ali *= 1.0; - coh *= 1.0; - // Add the force vectors to acceleration - applyForce(sep); - applyForce(ali); - applyForce(coh); - } - - // Separation - // Method checks for nearby boids and steers away - PVector separate(Boid boids [], uint8_t boidCount) { - PVector steer = PVector(0, 0); - int count = 0; - // For every boid in the system, check if it's too close - for (int i = 0; i < boidCount; i++) { - Boid other = boids[i]; - if (!other.enabled) - continue; - float d = location.dist(other.location); - // If the distance is greater than 0 and less than an arbitrary amount (0 when you are yourself) - if ((d > 0) && (d < desiredseparation)) { - // Calculate vector pointing away from neighbor - PVector diff = location - other.location; - diff.normalize(); - diff /= d; // Weight by distance - steer += diff; - count++; // Keep track of how many - } - } - // Average -- divide by how many - if (count > 0) { - steer /= (float) count; - } - - // As long as the vector is greater than 0 - if (steer.mag() > 0) { - // Implement Reynolds: Steering = Desired - Velocity - steer.normalize(); - steer *= maxspeed; - steer -= velocity; - steer.limit(maxforce); - } - return steer; - } - - // Alignment - // For every nearby boid in the system, calculate the average velocity - PVector align(Boid boids [], uint8_t boidCount) { - PVector sum = PVector(0, 0); - int count = 0; - for (int i = 0; i < boidCount; i++) { - Boid other = boids[i]; - if (!other.enabled) - continue; - float d = location.dist(other.location); - if ((d > 0) && (d < neighbordist)) { - sum += other.velocity; - count++; - } - } - if (count > 0) { - sum /= (float) count; - sum.normalize(); - sum *= maxspeed; - PVector steer = sum - velocity; - steer.limit(maxforce); - return steer; - } - else { - return PVector(0, 0); - } - } - - // Cohesion - // For the average location (i.e. center) of all nearby boids, calculate steering vector towards that location - PVector cohesion(Boid boids [], uint8_t boidCount) { - PVector sum = PVector(0, 0); // Start with empty vector to accumulate all locations - int count = 0; - for (int i = 0; i < boidCount; i++) { - Boid other = boids[i]; - if (!other.enabled) - continue; - float d = location.dist(other.location); - if ((d > 0) && (d < neighbordist)) { - sum += other.location; // Add location - count++; - } - } - if (count > 0) { - sum /= count; - return seek(sum); // Steer towards the location - } - else { - return PVector(0, 0); - } - } - - // A method that calculates and applies a steering force towards a target - // STEER = DESIRED MINUS VELOCITY - PVector seek(PVector target) { - PVector desired = target - location; // A vector pointing from the location to the target - // Normalize desired and scale to maximum speed - desired.normalize(); - desired *= maxspeed; - // Steering = Desired minus Velocity - PVector steer = desired - velocity; - steer.limit(maxforce); // Limit to maximum steering force - return steer; - } - - // A method that calculates a steering force towards a target - // STEER = DESIRED MINUS VELOCITY - void arrive(PVector target) { - PVector desired = target - location; // A vector pointing from the location to the target - float d = desired.mag(); - // Normalize desired and scale with arbitrary damping within 100 pixels - desired.normalize(); - if (d < 4) { - float m = ::map(d, 0, 100, 0, maxspeed); - desired *= m; - } - else { - desired *= maxspeed; - } - - // Steering = Desired minus Velocity - PVector steer = desired - velocity; - steer.limit(maxforce); // Limit to maximum steering force - applyForce(steer); - //Serial.println(d); - } - - void wrapAroundBorders() { - if (location.x < 0) location.x = MATRIX_WIDTH - 1; - if (location.y < 0) location.y = MATRIX_HEIGHT - 1; - if (location.x >= MATRIX_WIDTH) location.x = 0; - if (location.y >= MATRIX_HEIGHT) location.y = 0; - } - - void avoidBorders() { - PVector desired = velocity; - - if (location.x < 8) desired = PVector(maxspeed, velocity.y); - if (location.x >= MATRIX_WIDTH - 8) desired = PVector(-maxspeed, velocity.y); - if (location.y < 8) desired = PVector(velocity.x, maxspeed); - if (location.y >= MATRIX_HEIGHT - 8) desired = PVector(velocity.x, -maxspeed); - - if (desired != velocity) { - PVector steer = desired - velocity; - steer.limit(maxforce); - applyForce(steer); - } - - if (location.x < 0) location.x = 0; - if (location.y < 0) location.y = 0; - if (location.x >= MATRIX_WIDTH) location.x = MATRIX_WIDTH - 1; - if (location.y >= MATRIX_HEIGHT) location.y = MATRIX_HEIGHT - 1; - } - - bool bounceOffBorders(float bounce) { - bool bounced = false; - - if (location.x >= MATRIX_WIDTH) { - location.x = MATRIX_WIDTH - 1; - velocity.x *= -bounce; - bounced = true; - } - else if (location.x < 0) { - location.x = 0; - velocity.x *= -bounce; - bounced = true; - } - - if (location.y >= MATRIX_HEIGHT) { - location.y = MATRIX_HEIGHT - 1; - velocity.y *= -bounce; - bounced = true; - } - else if (location.y < 0) { - location.y = 0; - velocity.y *= -bounce; - bounced = true; - } - - return bounced; - } -}; +#pragma once + +//+-------------------------------------------------------------------------- +// +// File: Boids.h +// +// NightDriverStrip - (c) 2018 Plummer's Software LLC. All Rights Reserved. +// +// This file is part of the NightDriver software project. +// +// NightDriver is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// NightDriver is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Nightdriver. It is normally found in copying.txt +// If not, see . +// +// +// Description: +// +// Effect code ported from Aurora to Mesmerizer's draw routines +// +// History: Jul-08-2022 Davepl Originally from Aurora +// +//--------------------------------------------------------------------------- + +/* + * Aurora: https://github.com/pixelmatix/aurora + * Copyright (c) 2014 Jason Coon + * + * Portions of this code are adapted from "Flocking" in "The Nature of Code" by Daniel Shiffman: http://natureofcode.com/ + * Copyright (c) 2014 Daniel Shiffman + * http://www.shiffman.net + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +// Flocking +// Daniel Shiffman +// The Nature of Code, Spring 2009 + +// Boid class +// Methods for Separation, Cohesion, Alignment added + +#pragma once + +#include "Vector.h" + +class Boid +{ + public: + + PVector location; + PVector velocity; + PVector acceleration; + float maxforce; // Maximum steering force + float maxspeed; // Maximum speed + int hue; + + float desiredseparation = 4; + float neighbordist = 8; + uint8_t colorIndex = 0; + float mass; + + boolean enabled = true; + + Boid() {} + + Boid(float x, float y) { + acceleration = PVector(0, 0); + velocity = PVector(randomf(), randomf()); + location = PVector(x, y); + maxspeed = 1.5; + maxforce = 0.05; + mass = random(1.0,1.4); + hue = random(40,255); + } + + static float randomf() { + return map((float)random(0, 255), 0.0f, 255.0f, -.5f, .5f); + } + + void run(Boid boids [], uint8_t boidCount) { + flock(boids, boidCount); + update(); + // wrapAroundBorders(); + // render(); + } + + // Method to update location + void update() { + // Update velocity + velocity += acceleration; + // Limit speed + velocity.limit(maxspeed); + location += velocity; + // Reset acceleration to 0 each cycle + acceleration *= 0; + } + + void applyForce(PVector force) { + // We could add mass here if we want A = F / M + acceleration += force; + } + + void repelForce(PVector obstacle, float radius) { + //Force that drives boid away from obstacle. + + PVector futPos = location + velocity; //Calculate future position for more effective behavior. + PVector dist = obstacle - futPos; + float d = dist.mag(); + + if (d <= radius) { + PVector repelVec = location - obstacle; + repelVec.normalize(); + if (d != 0) { //Don't divide by zero. + // float scale = 1.0 / d; //The closer to the obstacle, the stronger the force. + repelVec.normalize(); + repelVec *= (maxforce * 7); + if (repelVec.mag() < 0) { //Don't let the boids turn around to avoid the obstacle. + repelVec.y = 0; + } + } + applyForce(repelVec); + } + } + + // We accumulate a new acceleration each time based on three rules + void flock(Boid boids [], uint8_t boidCount) { + PVector sep = separate(boids, boidCount); // Separation + PVector ali = align(boids, boidCount); // Alignment + PVector coh = cohesion(boids, boidCount); // Cohesion + // Arbitrarily weight these forces + sep *= 1.5; + ali *= 1.0; + coh *= 1.0; + // Add the force vectors to acceleration + applyForce(sep); + applyForce(ali); + applyForce(coh); + } + + // Separation + // Method checks for nearby boids and steers away + PVector separate(Boid boids [], uint8_t boidCount) { + PVector steer = PVector(0, 0); + int count = 0; + // For every boid in the system, check if it's too close + for (int i = 0; i < boidCount; i++) { + Boid other = boids[i]; + if (!other.enabled) + continue; + float d = location.dist(other.location); + // If the distance is greater than 0 and less than an arbitrary amount (0 when you are yourself) + if ((d > 0) && (d < desiredseparation)) { + // Calculate vector pointing away from neighbor + PVector diff = location - other.location; + diff.normalize(); + diff /= d; // Weight by distance + steer += diff; + count++; // Keep track of how many + } + } + // Average -- divide by how many + if (count > 0) { + steer /= (float) count; + } + + // As long as the vector is greater than 0 + if (steer.mag() > 0) { + // Implement Reynolds: Steering = Desired - Velocity + steer.normalize(); + steer *= maxspeed; + steer -= velocity; + steer.limit(maxforce); + } + return steer; + } + + // Alignment + // For every nearby boid in the system, calculate the average velocity + PVector align(Boid boids [], uint8_t boidCount) { + PVector sum = PVector(0, 0); + int count = 0; + for (int i = 0; i < boidCount; i++) { + Boid other = boids[i]; + if (!other.enabled) + continue; + float d = location.dist(other.location); + if ((d > 0) && (d < neighbordist)) { + sum += other.velocity; + count++; + } + } + if (count > 0) { + sum /= (float) count; + sum.normalize(); + sum *= maxspeed; + PVector steer = sum - velocity; + steer.limit(maxforce); + return steer; + } + else { + return PVector(0, 0); + } + } + + // Cohesion + // For the average location (i.e. center) of all nearby boids, calculate steering vector towards that location + PVector cohesion(Boid boids [], uint8_t boidCount) { + PVector sum = PVector(0, 0); // Start with empty vector to accumulate all locations + int count = 0; + for (int i = 0; i < boidCount; i++) { + Boid other = boids[i]; + if (!other.enabled) + continue; + float d = location.dist(other.location); + if ((d > 0) && (d < neighbordist)) { + sum += other.location; // Add location + count++; + } + } + if (count > 0) { + sum /= count; + return seek(sum); // Steer towards the location + } + else { + return PVector(0, 0); + } + } + + // A method that calculates and applies a steering force towards a target + // STEER = DESIRED MINUS VELOCITY + PVector seek(PVector target) { + PVector desired = target - location; // A vector pointing from the location to the target + // Normalize desired and scale to maximum speed + desired.normalize(); + desired *= maxspeed; + // Steering = Desired minus Velocity + PVector steer = desired - velocity; + steer.limit(maxforce); // Limit to maximum steering force + return steer; + } + + // A method that calculates a steering force towards a target + // STEER = DESIRED MINUS VELOCITY + void arrive(PVector target) { + PVector desired = target - location; // A vector pointing from the location to the target + float d = desired.mag(); + // Normalize desired and scale with arbitrary damping within 100 pixels + desired.normalize(); + if (d < 4) { + float m = ::map(d, 0, 100, 0, maxspeed); + desired *= m; + } + else { + desired *= maxspeed; + } + + // Steering = Desired minus Velocity + PVector steer = desired - velocity; + steer.limit(maxforce); // Limit to maximum steering force + applyForce(steer); + //Serial.println(d); + } + + void wrapAroundBorders() { + if (location.x < 0) location.x = MATRIX_WIDTH - 1; + if (location.y < 0) location.y = MATRIX_HEIGHT - 1; + if (location.x >= MATRIX_WIDTH) location.x = 0; + if (location.y >= MATRIX_HEIGHT) location.y = 0; + } + + void avoidBorders() { + PVector desired = velocity; + + if (location.x < 8) desired = PVector(maxspeed, velocity.y); + if (location.x >= MATRIX_WIDTH - 8) desired = PVector(-maxspeed, velocity.y); + if (location.y < 8) desired = PVector(velocity.x, maxspeed); + if (location.y >= MATRIX_HEIGHT - 8) desired = PVector(velocity.x, -maxspeed); + + if (desired != velocity) { + PVector steer = desired - velocity; + steer.limit(maxforce); + applyForce(steer); + } + + if (location.x < 0) location.x = 0; + if (location.y < 0) location.y = 0; + if (location.x >= MATRIX_WIDTH) location.x = MATRIX_WIDTH - 1; + if (location.y >= MATRIX_HEIGHT) location.y = MATRIX_HEIGHT - 1; + } + + bool bounceOffBorders(float bounce) { + bool bounced = false; + + if (location.x >= MATRIX_WIDTH) { + location.x = MATRIX_WIDTH - 1; + velocity.x *= -bounce; + bounced = true; + } + else if (location.x < 0) { + location.x = 0; + velocity.x *= -bounce; + bounced = true; + } + + if (location.y >= MATRIX_HEIGHT) { + location.y = MATRIX_HEIGHT - 1; + velocity.y *= -bounce; + bounced = true; + } + else if (location.y < 0) { + location.y = 0; + velocity.y *= -bounce; + bounced = true; + } + + return bounced; + } +}; diff --git a/include/effects/matrix/PatternSMBoidExplosion.h b/include/effects/matrix/PatternSMBoidExplosion.h new file mode 100644 index 000000000..7e92c705e --- /dev/null +++ b/include/effects/matrix/PatternSMBoidExplosion.h @@ -0,0 +1,217 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/matrix/Boid.h" +#include "effects/matrix/Vector.h" +#include "effects/strip/musiceffect.h" + +// Derived from https://editor.soulmatelights.com/gallery/2140-boidexplosion +// These are awesome explosion effects, but they're largely lost on +// the 64x32 displays. Included to show more Boid use. + +#if ENABLE_AUDIO +class PatternSMBoidExplosion : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMBoidExplosion : public LEDStripEffect +#endif +{ + private: + static constexpr int LED_COLS = MATRIX_WIDTH; + static constexpr int LED_ROWS = MATRIX_HEIGHT; + static constexpr int COLS = MATRIX_WIDTH; + static constexpr int ROWS = MATRIX_HEIGHT; + +#define NUM_PARTICLES 35 \ + // set this to the number of particles. the varialbe describes what it's + // supposed to be. it works with 50 but it's a little slow. on an esp32 it + // looks pretty nice at that number 15 is a safe number + static const int count = NUM_PARTICLES; + + Boid boids[NUM_PARTICLES]; // this makes the boids + + CRGBPalette16 currentPalette; + TBlendType currentBlending; + + CRGB getPixColorXY(uint8_t x, uint8_t y) { + return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; + } + + void drawPixelXY(int8_t x, int8_t y, CRGB color) { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) + return; + // Mesmerizer flips the Y axis here. + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT - 1 - (uint8_t)y); + g()->leds[thisPixel] = color; + } + + void drawPixelXYF(float x, float y, CRGB color) { + uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, + iy = 255 - yy; +// calculate the intensities for each affected pixel +#define WU_WEIGHT(a, b) ((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) + uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), + WU_WEIGHT(xx, yy)}; + // multiply the intensities by the colour, and saturating-add them to the + // pixels + for (uint8_t i = 0; i < 4; i++) { + int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); + CRGB clr = getPixColorXY(xn, yn); + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + drawPixelXY(xn, yn, clr); + } + } + + void ChangePalettePeriodically() { + uint8_t secondHand = (millis() / 1000) % 60; + static uint8_t lastSecond = 99; + + if (lastSecond != secondHand) { + lastSecond = secondHand; + if (secondHand == 0) { + currentPalette = HeatColors_p; + currentBlending = NOBLEND; + } + if (secondHand == 10) { + currentPalette = HeatColors_p; + currentBlending = LINEARBLEND; + } + if (secondHand == 15) { + currentPalette = LavaColors_p; + currentBlending = NOBLEND; + } + if (secondHand == 20) { + currentPalette = LavaColors_p; + currentBlending = LINEARBLEND; + } + if (secondHand == 25) { + currentPalette = ForestColors_p; + currentBlending = NOBLEND; + } + if (secondHand == 30) { + currentPalette = ForestColors_p; + currentBlending = LINEARBLEND; + } + if (secondHand == 35) { + currentPalette = OceanColors_p; + currentBlending = NOBLEND; + } + if (secondHand == 40) { + currentPalette = OceanColors_p; + currentBlending = LINEARBLEND; + } + if (secondHand == 45) { + currentPalette = CloudColors_p; + currentBlending = NOBLEND; + } + if (secondHand == 50) { + currentPalette = CloudColors_p; + currentBlending = LINEARBLEND; + } + } + } + + class Attractor { + public: + float mass; // Mass, tied to size + float G; // Gravitational Constant + PVector location; // Location + float coldiv; + Attractor() { + location = PVector( + ROWS / (float)2.0, + COLS / (float)coldiv); // PVector(ROWS / + // (float)random((float)1.1,(float)4.0), COLS / + // (float)random((float)1.1,(float)4.0)); + mass = 11.0F; // random(5.5,8); + G = 11.0F; //(float)random((float)1.5F,(float)2.9F);//random(.5,1.1); + coldiv = 1.5F; + } + void UpdateLocation() { + location = PVector(ROWS / (float)2.0, COLS / (float)coldiv); + coldiv -= 0.01; + G += 0.03; + mass += 0.03; + if (coldiv < 1.5) coldiv = 8.00; + if (G > 12.00F) G = 1.01F; + if (mass > 12.00F) mass = 1.01F; + } + PVector attract(Boid m) { + PVector force = location - m.location; // Calculate direction of force + float d = force.mag(); // Distance between objects + d = constrain(d, 7.0, + 10.0); // Limiting the distance to eliminate "extreme" + // results for very close or very far objects + force.normalize(); // Normalize vector (distance doesn't matter here, we + // just want this vector for direction) + float strength = (G * mass * m.mass) / + (d * d); // Calculate gravitional force magnitude + force *= strength; // Get force vector --> magnitude * direction + return force; + } + }; + + public: + PatternSMBoidExplosion() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMBOID_EXPLOSION, "Boid Explosion") { + } + + PatternSMBoidExplosion(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + Attractor attractor; + Attractor attractor2; + + virtual void Start() override { + g()->Clear(); + + int direction = random(0, 2); + if (direction == 0) direction = -1; + for (int i = 0; i < NUM_PARTICLES; i++) { + Boid boid = Boid(random(1, ROWS - 1), random(1, COLS - 1)); + boid.velocity.x = ((float)random(40, 50)) / 100.0; + boid.velocity.x *= direction; + boid.velocity.y = 0; + boid.colorIndex = i * 32; + boids[i] = boid; + boid.hue = i * 10; + } + attractor.location = PVector(ROWS / 2, COLS / 1.1); + attractor2.location = PVector(ROWS / 1.5, COLS / 4); + } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + ChangePalettePeriodically(); + for (int i = 0; i < NUM_PARTICLES; i++) { + Boid boid = boids[i]; + PVector force = attractor.attract(boid); + boid.applyForce(force); + boid.update(); + // Was 50. Once per 30Hz frame looks better. + EVERY_N_MILLISECONDS(16) { attractor.UpdateLocation(); } + drawPixelXYF( + boid.location.x, boid.location.y, + ColorFromPalette(currentPalette, boid.hue, 255, currentBlending)); + boids[i] = boid; + fadeToBlackBy(g()->leds, NUM_LEDS, 1); + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 72a64664c..27af182a2 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMTIXY_LAND, PatternSMTixyLand); + ADD_EFFECT(EFFECT_MATRIX_SMBOID_EXPOOSION, PatternSMBoidExplosion); + // ADD_EFFECT(EFFECT_MATRIX_SMTIXY_LAND, PatternSMTixyLand); // ADD_EFFECT(EFFECT_MATRIX_SMXOR_CIRCLES, PatternSMXorCircles); // ADD_EFFECT(EFFECT_MATRIX_SMWALKING_MACHINE, PatternSMWalkingMachine); // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMHypnosis); From bbf0b0fce5489958724e4bf18aff32d650af6109 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 16:19:36 -0500 Subject: [PATCH 046/168] Add (very cool) Supernova --- include/effectdependencies.h | 7 +- include/effects.h | 1 + include/effects/matrix/PatternSMSupernova.h | 177 ++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 185 insertions(+), 3 deletions(-) create mode 100644 include/effects/matrix/PatternSMSupernova.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index a504b8dca..1831474f7 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,9 +86,12 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMBoidExplosion.h" - #include "effects/matrix/PatternSMTixyLand.h" + + // A block of 3D-ish effects using Particle systems or Boids. + #include "effects/matrix/PatternSMSupernova.h" #if BOOGER + #include "effects/matrix/PatternSMBoidExplosion.h" + #include "effects/matrix/PatternSMTixyLand.h" // Dozens of simple effects #include "effects/matrix/PatternSMXorCircles.h" #include "effects/matrix/PatternSMWalkingMachine.h" #include "effects/matrix/PatternSMHypnosis.h" diff --git a/include/effects.h b/include/effects.h index d5d4e80db..8b1fb4c9d 100644 --- a/include/effects.h +++ b/include/effects.h @@ -143,6 +143,7 @@ #define EFFECT_MATRIX_SMXOR_CIRCLES 170 #define EFFECT_MATRIX_SMTIXY_LAND 171 #define EFFECT_MATRIX_SMBOID_EXPLOSION 172 +#define EFFECT_MATRIX_SMSUPERNOVA 173 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMSupernova.h b/include/effects/matrix/PatternSMSupernova.h new file mode 100644 index 000000000..0447109cc --- /dev/null +++ b/include/effects/matrix/PatternSMSupernova.h @@ -0,0 +1,177 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +#if ENABLE_AUDIO +class PatternSMSupernova : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMSupernova : public LEDStripEffect +#endif +{ +private: + // matrix size constants are calculated only here and do not change in effects + const uint8_t CENTER_X_MINOR = (MATRIX_WIDTH / 2) - ((MATRIX_WIDTH - 1) & 0x01); // the center of the matrix according to ICSU, shifted to the smaller side, if the width is even + const uint8_t CENTER_Y_MINOR = (MATRIX_HEIGHT / 2) - ((MATRIX_HEIGHT - 1) & 0x01); // center of the YGREK matrix, shifted down if the height is even + const uint8_t CENTER_X_MAJOR = MATRIX_WIDTH / 2 + (MATRIX_WIDTH % 2); // the center of the matrix according to IKSU, shifted to a larger side, if the width is even + const uint8_t CENTER_Y_MAJOR = MATRIX_HEIGHT / 2 + (MATRIX_HEIGHT % 2); // center of the YGREK matrix, shifted up if the height is even + uint8_t hue, hue2; // постепенный сдвиг оттенка или какой-нибудь другой цикличный счётчик + uint8_t step; // какой-нибудь счётчик кадров или последовательностей операций + uint8_t deltaValue; // просто повторно используемая переменная + #define enlargedOBJECT_MAX_COUNT (MATRIX_WIDTH * 2) // максимальное количество сложных отслеживаемых объектов (меньше, чем MAX_COUNT) + uint8_t enlargedObjectNUM; // используемое в эффекте количество объектов + long enlargedObjectTime[enlargedOBJECT_MAX_COUNT]; +#define MAX_COUNT (254U) // максимальное количество отслеживаемых объектов (очень влияет на расход памяти) + float PosX[MAX_COUNT]; + float PosY[MAX_COUNT]; + uint8_t Hue[MAX_COUNT]; + uint8_t State[MAX_COUNT]; + float SpeedX[MAX_COUNT]; +float SpeedY[MAX_COUNT]; + bool IsShift[MAX_COUNT]; // BUGBUG: Could be a Std::Bitfield<> + + + // неточный, зато более быстрый квадратный корень + float sqrt3(const float x) { + union { + int i; + float x; + } u; + + u.x = x; + u.i = (1<<29) + (u.i >> 1) - (1<<22); + return u.x; + } + + //-------- по мотивам Эффектов Particle System ------------------------- +// https://github.com/fuse314/arduino-particle-sys +// https://github.com/giladaya/arduino-particle-sys +// https://www.youtube.com/watch?v=S6novCRlHV8&t=51s +//#include +//при попытке вытащить из этой библиотеки только минимально необходимое выяснилось, что там очередной (третий) вариант реализации субпиксельной графики. +//ну его нафиг. лучше будет повторить визуал имеющимися в прошивке средствами. + +void particlesUpdate2(uint8_t i){ + //apply velocity + PosX[i] += SpeedX[i]; + PosY[i] += SpeedY[i]; + if(State[i] == 0 || PosX[i] <= -1 || PosX[i] >= MATRIX_WIDTH || PosY[i] <= -1 || PosY[i] >= MATRIX_HEIGHT) + IsShift[i] = false; +} + +// ============= ЭФФЕКТ ИСТОЧНИК =============== +// (c) SottNick +// выглядит как https://github.com/fuse314/arduino-particle-sys/blob/master/examples/StarfieldFastLED/StarfieldFastLED.ino +void starfield2Emit(uint8_t i){ + if (hue++ & 0x01) + hue2+=1;//counter++; + //source->update(g); хз зачем это было в оригинале - там только смерть source.isAlive высчитывается, вроде + PosX[i] = MATRIX_WIDTH * 0.5;//CENTER_X_MINOR;// * RENDERER_RESOLUTION; // particle->x = source->x; + PosY[i] = MATRIX_HEIGHT * 0.5;//CENTER_Y_MINOR;// * RENDERER_RESOLUTION; // // particle->y = source->y; + SpeedX[i] = (((float)random8()-127.)/512.); // random(_hVar)-_constVel; // particle->vx + SpeedY[i] = sqrt(0.0626-SpeedX[i]*SpeedX[i]); // sqrt(pow(_constVel,2)-pow(SpeedX[i],2)); // particle->vy зависит от particle->vx - не ошибка + if(random8(2U)) { SpeedY[i]=-SpeedY[i]; } + State[i] = random8(1, 250); // random8(minLife, maxLife);// particle->ttl + Hue[i] = hue2;// (counter/2)%255; // particle->hue + IsShift[i] = true; // particle->isAlive +} + + CRGB getPixColorXY(uint8_t x, uint8_t y) + { + return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; + //return g()->leds[g()->xy(x, y)]; + } + + void drawPixelXY(int8_t x, int8_t y, CRGB color) + { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) return; + // Mesmerizer flips the Y axis here. + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT -1 - (uint8_t)y); + g()->leds[thisPixel] = color; + } + +void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) +{ +// if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть как-нибудь учитывались тут // зато с этой строчкой пропадает нижний ряд + // extract the fractional parts and derive their inverses + uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; + // calculate the intensities for each affected pixel + #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) + uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), + WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; + // multiply the intensities by the colour, and saturating-add them to the pixels + for (uint8_t i = 0; i < 4; i++) { + int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); + CRGB clr = getPixColorXY(xn, yn); + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + drawPixelXY(xn, yn, clr); + } +} + + +public: + PatternSMSupernova() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSUPERNOVA, "Supernova") + { + } + + PatternSMSupernova(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + enlargedObjectNUM = 200; + + if (enlargedObjectNUM > MAX_COUNT) enlargedObjectNUM = 200U;//MAX_COUNT; + deltaValue = enlargedObjectNUM / (sqrt3(CENTER_X_MAJOR*CENTER_X_MAJOR + CENTER_Y_MAJOR*CENTER_Y_MAJOR) * 4U) + 1U; // 4 - это потому что за 1 цикл частица пролетает ровно четверть расстояния между 2мя соседними пикселями + for(int i = 0; iisAlive + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + step = -1;// deltaValue; //счётчик количества частиц в очереди на зарождение в этом цикле + g()->DimAll(200); + //go over particles and update matrix cells on the way + for(int i = 0; iisAlive + //particles[i].update(this->g); + particlesUpdate2(i); + + //generate RGB values for particle +// CRGB baseRGB = CHSV(Hue[i], 255,255); // particles[i].hue + CRGB baseRGB = ColorFromPalette(HeatColors_p,Hue[i],255,LINEARBLEND); + //baseRGB.fadeToBlackBy(255-State[i]); + baseRGB.nscale8(State[i]);//эквивалент + drawPixelXYF(PosX[i], PosY[i], baseRGB); + + } + } +} + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 27af182a2..c364a0864 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMBOID_EXPOOSION, PatternSMBoidExplosion); + ADD_EFFECT(EFFECT_MATRIX_SMSUPERNOVA, PatternSMSupernova); + // ADD_EFFECT(EFFECT_MATRIX_SMBOID_EXPLOSION, PatternSMBoidExplosion); // ADD_EFFECT(EFFECT_MATRIX_SMTIXY_LAND, PatternSMTixyLand); // ADD_EFFECT(EFFECT_MATRIX_SMXOR_CIRCLES, PatternSMXorCircles); // ADD_EFFECT(EFFECT_MATRIX_SMWALKING_MACHINE, PatternSMWalkingMachine); From 9c9459348062fb96fa4339466e1aa66685ba3adb Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 20:12:33 -0500 Subject: [PATCH 047/168] Add BlurringColors - very vibrant! --- include/effectdependencies.h | 3 +- include/effects.h | 1 + .../effects/matrix/PatternSMBlurringColors.h | 217 ++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 222 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMBlurringColors.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 1831474f7..44fb7772e 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -88,8 +88,9 @@ #endif // A block of 3D-ish effects using Particle systems or Boids. - #include "effects/matrix/PatternSMSupernova.h" + #include "effects/matrix/PatternSMBlurringColors.h" #if BOOGER + #include "effects/matrix/PatternSMSupernova.h" #include "effects/matrix/PatternSMBoidExplosion.h" #include "effects/matrix/PatternSMTixyLand.h" // Dozens of simple effects #include "effects/matrix/PatternSMXorCircles.h" diff --git a/include/effects.h b/include/effects.h index 8b1fb4c9d..b613b97be 100644 --- a/include/effects.h +++ b/include/effects.h @@ -144,6 +144,7 @@ #define EFFECT_MATRIX_SMTIXY_LAND 171 #define EFFECT_MATRIX_SMBOID_EXPLOSION 172 #define EFFECT_MATRIX_SMSUPERNOVA 173 +#define EFFECT_MATRIX_SMBLURRING_COLORS 174 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMBlurringColors.h b/include/effects/matrix/PatternSMBlurringColors.h new file mode 100644 index 000000000..6e201f8d0 --- /dev/null +++ b/include/effects/matrix/PatternSMBlurringColors.h @@ -0,0 +1,217 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" +#include "effects/matrix/Boid.h" +#include "effects/matrix/Vector.h" + +// Derived from https://editor.soulmatelights.com/gallery/2128-bluringcolors + +#if ENABLE_AUDIO +class PatternSMBlurringColors : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMBlurringColors : public LEDStripEffect +#endif +{ +private: + uint8_t Scale = 10; // 1-100 Setting + uint8_t Speed = 25; // 1-100. Odd or even only. Setting + + const int WIDTH = MATRIX_WIDTH; + const int HEIGHT = MATRIX_HEIGHT; + + // matrix size constants are calculated only here and do not change in effects + const uint8_t CENTER_X_MINOR = (MATRIX_WIDTH / 2) - ((MATRIX_WIDTH - 1) & 0x01); // the center of the matrix according to ICSU, shifted to the smaller side, if the width is even + const uint8_t CENTER_Y_MINOR = (MATRIX_HEIGHT / 2) - ((MATRIX_HEIGHT - 1) & 0x01); // center of the YGREK matrix, shifted down if the height is even + const uint8_t CENTER_X_MAJOR = MATRIX_WIDTH / 2 + (MATRIX_WIDTH % 2); // the center of the matrix according to IKSU, shifted to a larger side, if the width is even + const uint8_t CENTER_Y_MAJOR = MATRIX_HEIGHT / 2 + (MATRIX_HEIGHT % 2); // center of the YGREK matrix, shifted up if the height is even + +#define trackingOBJECT_MAX_COUNT (100U) // максимальное количество отслеживаемых объектов (очень влияет на расход памяти) +float trackingObjectPosX[trackingOBJECT_MAX_COUNT]; +float trackingObjectPosY[trackingOBJECT_MAX_COUNT]; +float trackingObjectSpeedX[trackingOBJECT_MAX_COUNT]; +float trackingObjectSpeedY[trackingOBJECT_MAX_COUNT]; +uint8_t trackingObjectHue[trackingOBJECT_MAX_COUNT]; +uint8_t trackingObjectState[trackingOBJECT_MAX_COUNT]; +bool trackingObjectIsShift[trackingOBJECT_MAX_COUNT]; // BugBug: cold be a Std::Biefield +#define enlargedOBJECT_MAX_COUNT (MATRIX_WIDTH * 2) // максимальное количество сложных отслеживаемых объектов (меньше, чем trackingOBJECT_MAX_COUNT) +uint8_t enlargedObjectNUM; // используемое в эффекте количество объектов + +float accel; +uint8_t hue, hue2; // постепенный сдвиг оттенка или какой-нибудь другой цикличный счётчик +uint8_t deltaValue; // просто повторно используемая переменная +uint8_t step; // какой-нибудь счётчик кадров или последовательностей операций + + + CRGB getPixColorXY(uint8_t x, uint8_t y) { + return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; + //return g()->leds[g()->xy(x, y)]; + } + + void drawPixelXY(int8_t x, int8_t y, CRGB color) { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) return; + // Mesmerizer flips the Y axis here. + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT -1 - (uint8_t)y); + g()->leds[thisPixel] = color; + } + +void drawPixelXYF(float x, float y, CRGB color) { +// if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть как-нибудь учитывались тут // зато с этой строчкой пропадает нижний ряд + // extract the fractional parts and derive their inverses + uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; + // calculate the intensities for each affected pixel + #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) + uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), + WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; + // multiply the intensities by the colour, and saturating-add them to the pixels + for (uint8_t i = 0; i < 4; i++) { + int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); + CRGB clr = getPixColorXY(xn, yn); + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + drawPixelXY(xn, yn, clr); + } +} + +static const uint8_t AVAILABLE_BOID_COUNT = 7U; +Boid boids[AVAILABLE_BOID_COUNT]; +void particlesUpdate2(uint8_t i){ + trackingObjectState[i]--; //ttl // ещё и сюда надо speedfactor вкорячить. удачи там! + + //apply velocity + trackingObjectPosX[i] += trackingObjectSpeedX[i] + accel; + trackingObjectPosY[i] += trackingObjectSpeedY[i]+ accel; + if(trackingObjectState[i] == 0 || trackingObjectPosX[i] <= -1 || trackingObjectPosX[i] >= WIDTH || trackingObjectPosY[i] <= -1 || trackingObjectPosY[i] >= HEIGHT) + trackingObjectIsShift[i] = false; +} + +// ============= ЭФФЕКТ ИСТОЧНИКИ =============== +// (c) SottNick +// такое себе зрелище +void fountainsDrift(uint8_t j){ + //float shift = random8() + boids[j].location.x += boids[j].velocity.x + accel; + boids[j].location.y += boids[j].velocity.y + accel; + if (boids[j].location.x + boids[j].velocity.x < 0){ + //boids[j].location.x = WIDTH - 1 + boids[j].location.x; + boids[j].location.x = -boids[j].location.x; + boids[j].velocity.x = -boids[j].velocity.x; + } + if (boids[j].location.x > WIDTH - 1){ + //boids[j].location.x = boids[j].location.x + 1 - WIDTH; + boids[j].location.x = WIDTH + WIDTH - 2 - boids[j].location.x; + boids[j].velocity.x = -boids[j].velocity.x; + } + if (boids[j].location.y < 0){ + //boids[j].location.y = HEIGHT - 1 + boids[j].location.y; + boids[j].location.y = -boids[j].location.y; + boids[j].velocity.y = -boids[j].velocity.y; + } + if (boids[j].location.y > HEIGHT - 1){ + //boids[j].location.y = boids[j].location.y + 1 - HEIGHT; + boids[j].location.y = HEIGHT + HEIGHT - 2 - boids[j].location.y; + boids[j].velocity.y = -boids[j].velocity.y; + } +} + +void fountainsEmit(uint8_t i){ + if (hue++ & 0x01) + hue2+=4; + + uint8_t j = random8(enlargedObjectNUM); + fountainsDrift(j); + trackingObjectPosX[i] = boids[j].location.x; + trackingObjectPosY[i] = boids[j].location.y; + + trackingObjectSpeedX[i] = ((float)random8()-127.)/512.; // random(_hVar)-_constVel; // particle->vx + trackingObjectSpeedY[i] = sqrt(0.0626-trackingObjectSpeedX[i]*trackingObjectSpeedX[i]); // sqrt(pow(_constVel,2)-pow(trackingObjectSpeedX[i],2)); // particle->vy зависит от particle->vx - не ошибка + if(random8(2U)) { trackingObjectSpeedY[i]=-trackingObjectSpeedY[i]; } + trackingObjectState[i] = random8(50, 250); // random8(minLife, maxLife);// particle->ttl + if (Speed & 0x01) + trackingObjectHue[i] = hue2;// (counter/2)%255; // particle->hue + else + trackingObjectHue[i] = boids[j].colorIndex;//random8(); + trackingObjectIsShift[i] = true; // particle->isAlive +} + + +public: + PatternSMBlurringColors() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMBLURRING_COLORS, "Blurring Colors") + { + } + + PatternSMBlurringColors(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + + enlargedObjectNUM = (Scale + 5U);// / 99.0 * (AVAILABLE_BOID_COUNT ) ; + if (enlargedObjectNUM > AVAILABLE_BOID_COUNT) enlargedObjectNUM = AVAILABLE_BOID_COUNT; + + //deltaValue = 10; // количество зарождающихся частиц за 1 цикл + deltaValue = trackingOBJECT_MAX_COUNT / (sqrt(CENTER_X_MAJOR*CENTER_X_MAJOR + CENTER_Y_MAJOR*CENTER_Y_MAJOR) * 4U) + 1U; // 4 - это потому что за 1 цикл частица пролетает ровно четверть расстояния между 2мя соседними пикселями + + for(int i = 0; iblur2d(g()->leds, MATRIX_WIDTH, 0, MATRIX_HEIGHT, 0, 27); + //go over particles and update matrix cells on the way + for(int i = 0; iemit(&particles[i], this->g); + fountainsEmit(i); + step--; + } + if (trackingObjectIsShift[i]){ // particle->isAlive + //particles[i].update(this->g); + particlesUpdate2(i); + + //generate RGB values for particle + CRGB baseRGB = CHSV(trackingObjectHue[i], 255,255); // particles[i].hue + + //baseRGB.fadeToBlackBy(255-trackingObjectState[i]); + baseRGB.nscale8(trackingObjectState[i]);//эквивалент + drawPixelXYF(trackingObjectPosX[i], trackingObjectPosY[i], baseRGB); + } + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index c364a0864..b2b0ad619 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMSUPERNOVA, PatternSMSupernova); + ADD_EFFECT(EFFECT_MATRIX_SMSUPERNOVA, PatternSMBlurringColors); + // ADD_EFFECT(EFFECT_MATRIX_SMSUPERNOVA, PatternSMSupernova); // ADD_EFFECT(EFFECT_MATRIX_SMBOID_EXPLOSION, PatternSMBoidExplosion); // ADD_EFFECT(EFFECT_MATRIX_SMTIXY_LAND, PatternSMTixyLand); // ADD_EFFECT(EFFECT_MATRIX_SMXOR_CIRCLES, PatternSMXorCircles); From 49aba26a06b1a6adaf372f2c5bf09e60693849c8 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Mon, 17 Jul 2023 23:34:31 -0500 Subject: [PATCH 048/168] Add Flow Fields - very cool --- include/effectdependencies.h | 3 +- include/effects.h | 1 + include/effects/matrix/PatternSMFlowFields.h | 128 +++++++++++++++++++ src/effects.cpp | 5 +- 4 files changed, 134 insertions(+), 3 deletions(-) create mode 100644 include/effects/matrix/PatternSMFlowFields.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 44fb7772e..0ad6056df 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -88,8 +88,9 @@ #endif // A block of 3D-ish effects using Particle systems or Boids. - #include "effects/matrix/PatternSMBlurringColors.h" + #include "effects/matrix/PatternSMFlowFields.h" #if BOOGER + #include "effects/matrix/PatternSMBlurringColors.h" #include "effects/matrix/PatternSMSupernova.h" #include "effects/matrix/PatternSMBoidExplosion.h" #include "effects/matrix/PatternSMTixyLand.h" // Dozens of simple effects diff --git a/include/effects.h b/include/effects.h index b613b97be..8f97a057b 100644 --- a/include/effects.h +++ b/include/effects.h @@ -145,6 +145,7 @@ #define EFFECT_MATRIX_SMBOID_EXPLOSION 172 #define EFFECT_MATRIX_SMSUPERNOVA 173 #define EFFECT_MATRIX_SMBLURRING_COLORS 174 +#define EFFECT_MATRIX_SMFLOW_FIELDS 175 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMFlowFields.h b/include/effects/matrix/PatternSMFlowFields.h new file mode 100644 index 000000000..feced62c6 --- /dev/null +++ b/include/effects/matrix/PatternSMFlowFields.h @@ -0,0 +1,128 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" +#include "effects/matrix/Boid.h" +#include "effects/matrix/Vector.h" + +// Derived from https://editor.soulmatelights.com/gallery/2132-flowfields +// This makes a very cool green vine that grows up the display. + +#if ENABLE_AUDIO +class PatternSMFlowFields : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMFlowFields : public LEDStripEffect +#endif +{ +private: + const int WIDTH = MATRIX_WIDTH; + const int HEIGHT = MATRIX_HEIGHT; + const int COLS = MATRIX_WIDTH; + const int ROWS = MATRIX_HEIGHT; + static const int NUM_PARTICLES = 40; //set this to the number of particles. the varialbe describes what it's supposed to be. it works with 50 but it's a little slow. on an esp32 it looks pretty nice at that number 15 is a safe number + + CRGB getPixColorXY(uint8_t x, uint8_t y) { + return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; + } + + void drawPixelXY(int8_t x, int8_t y, CRGB color) { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) return; + // Mesmerizer flips the Y axis here. + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT -1 - (uint8_t)y); + g()->leds[thisPixel] = color; + } + +void drawPixelXYF(float x, float y, CRGB color) { + // if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть как-нибудь учитывались тут // зато с этой строчкой пропадает нижний ряд + // extract the fractional parts and derive their inverses + uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; + // calculate the intensities for each affected pixel + #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) + std::array wu{WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), + WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; + for (uint8_t i = 0; i < 4; i++) { + int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); + CRGB clr = getPixColorXY(xn, yn); + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + drawPixelXY(xn, yn, clr); + } +} + +byte hue = 0; +std::array boids; //this makes the boids + +uint16_t x; +uint16_t y; +uint16_t z; + +uint16_t speed = 10; +uint16_t scale = 30; + +public: + PatternSMFlowFields() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMFLOW_FIELDS, "Flow Fields") + { + } + + PatternSMFlowFields(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + + x = random16(); + y = random16(); + z = random16(); + + for (auto &boid : boids) { + boid = Boid(random(COLS), 0); + } + } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + for (auto &boid : boids) { + int ioffset = scale * boid.location.x; + int joffset = scale * boid.location.y; + + byte angle = inoise8(x + ioffset, y + joffset, z); + + boid.velocity.x = (float) sin8(angle) * 0.0078125 - 1.0; + boid.velocity.y = -((float)cos8(angle) * 0.0078125 - 1.0); + boid.update(); + + drawPixelXYF(boid.location.x, boid.location.y, ColorFromPalette(ForestColors_p,boid.hue,255,LINEARBLEND)); + // NightDriver Bugfix: The original had COLS and ROWS swapped here, clamping to the wrong axis. + if (boid.location.x < 0 || boid.location.x >= COLS || + boid.location.y < 0 || boid.location.y >= ROWS) { + boid.location.x = random(COLS); + boid.location.y = 0; + } + } + fadeAllChannelsToBlackBy(15); + + x += speed; + y += speed; + z += speed; + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index b2b0ad619..7586787c1 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,14 +358,15 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMSUPERNOVA, PatternSMBlurringColors); + ADD_EFFECT(EFFECT_MATRIX_SMFLOW_FIELDS, PatternSMFlowFields); + // ADD_EFFECT(EFFECT_MATRIX_SMSUPERNOVA, PatternSMBlurringColors); // ADD_EFFECT(EFFECT_MATRIX_SMSUPERNOVA, PatternSMSupernova); // ADD_EFFECT(EFFECT_MATRIX_SMBOID_EXPLOSION, PatternSMBoidExplosion); // ADD_EFFECT(EFFECT_MATRIX_SMTIXY_LAND, PatternSMTixyLand); // ADD_EFFECT(EFFECT_MATRIX_SMXOR_CIRCLES, PatternSMXorCircles); // ADD_EFFECT(EFFECT_MATRIX_SMWALKING_MACHINE, PatternSMWalkingMachine); // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMHypnosis); - //ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMRainbowTunnel); + // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMRainbowTunnel); // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMRadialWave); // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMMirage); // ADD_EFFECT(EFFECT_MATRIX_SMMAZE2, PatternSMMaze2); From c1111fd5b80ede200f5ad265ab87a3f57011a80e Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Tue, 18 Jul 2023 00:46:17 -0500 Subject: [PATCH 049/168] Add Gamma effect --- include/effectdependencies.h | 3 ++- include/effects.h | 1 + include/effects/matrix/PatternSMGamma.h | 0 src/effects.cpp | 3 ++- 4 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMGamma.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 0ad6056df..ddc1ce181 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -88,8 +88,9 @@ #endif // A block of 3D-ish effects using Particle systems or Boids. - #include "effects/matrix/PatternSMFlowFields.h" + #include "effects/matrix/PatternSMFlocking.h" #if BOOGER + #include "effects/matrix/PatternSMFlowFields.h" #include "effects/matrix/PatternSMBlurringColors.h" #include "effects/matrix/PatternSMSupernova.h" #include "effects/matrix/PatternSMBoidExplosion.h" diff --git a/include/effects.h b/include/effects.h index 8f97a057b..6f333b9f0 100644 --- a/include/effects.h +++ b/include/effects.h @@ -146,6 +146,7 @@ #define EFFECT_MATRIX_SMSUPERNOVA 173 #define EFFECT_MATRIX_SMBLURRING_COLORS 174 #define EFFECT_MATRIX_SMFLOW_FIELDS 175 +#define EFFECT_MATRIX_SMFLOCKING 176 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMGamma.h b/include/effects/matrix/PatternSMGamma.h new file mode 100644 index 000000000..e69de29bb diff --git a/src/effects.cpp b/src/effects.cpp index 7586787c1..ca5e48671 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMFLOW_FIELDS, PatternSMFlowFields); + ADD_EFFECT(EFFECT_MATRIX_SMFLOCKING, PatternSMFlocking); + // ADD_EFFECT(EFFECT_MATRIX_SMFLOW_FIELDS, PatternSMFlowFields); // ADD_EFFECT(EFFECT_MATRIX_SMSUPERNOVA, PatternSMBlurringColors); // ADD_EFFECT(EFFECT_MATRIX_SMSUPERNOVA, PatternSMSupernova); // ADD_EFFECT(EFFECT_MATRIX_SMBOID_EXPLOSION, PatternSMBoidExplosion); From f3cc6059c97bca16d76e5d6d78c1b99348f51f57 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Tue, 18 Jul 2023 01:17:00 -0500 Subject: [PATCH 050/168] Add Starship Troopers --- include/effectdependencies.h | 6 +- include/effects.h | 3 +- include/effects/matrix/PatternSMGamma.h | 79 +++++++ .../matrix/PatternSMStarshipTroopers.h | 202 ++++++++++++++++++ src/effects.cpp | 3 +- 5 files changed, 289 insertions(+), 4 deletions(-) create mode 100644 include/effects/matrix/PatternSMStarshipTroopers.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index ddc1ce181..765f025f2 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,10 +86,12 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif + #include "effects/matrix/PatternSMStarshipTroopers.h" - // A block of 3D-ish effects using Particle systems or Boids. - #include "effects/matrix/PatternSMFlocking.h" #if BOOGER + #include "effects/matrix/PatternSMGamma.h" + // A Small block of 3D-ish effects using Particle systems or Boids. + #include "effects/matrix/PatternSMFlocking.h" #include "effects/matrix/PatternSMFlowFields.h" #include "effects/matrix/PatternSMBlurringColors.h" #include "effects/matrix/PatternSMSupernova.h" diff --git a/include/effects.h b/include/effects.h index 6f333b9f0..b499d882c 100644 --- a/include/effects.h +++ b/include/effects.h @@ -146,7 +146,8 @@ #define EFFECT_MATRIX_SMSUPERNOVA 173 #define EFFECT_MATRIX_SMBLURRING_COLORS 174 #define EFFECT_MATRIX_SMFLOW_FIELDS 175 -#define EFFECT_MATRIX_SMFLOCKING 176 +#define EFFECT_MATRIX_SMGAMMA 176 +#define EFFECT_MATRIX_SMSTARSHIP_TROOPERS 177 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMGamma.h b/include/effects/matrix/PatternSMGamma.h index e69de29bb..aa06f2b4b 100644 --- a/include/effects/matrix/PatternSMGamma.h +++ b/include/effects/matrix/PatternSMGamma.h @@ -0,0 +1,79 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" + +// Derived from https://editor.soulmatelights.com/gallery/2091-q24 +// Simple, but interesting rolling depth with a blue lens flare. + +#if ENABLE_AUDIO +class PatternSMGamma : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMGamma : public LEDStripEffect +#endif +{ + private: + public: + PatternSMGamma() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMGAMMA, "Gamma") { + } + + PatternSMGamma(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { g()->Clear(); } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + static const uint8_t exp_gamma[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, + 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, + 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, + 10, 11, 11, 12, 12, 12, 13, 13, 14, 14, 14, 15, 15, 16, + 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 23, 23, + 24, 24, 25, 26, 26, 27, 28, 28, 29, 30, 30, 31, 32, 32, + 33, 34, 35, 35, 36, 37, 38, 39, 39, 40, 41, 42, 43, 44, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 70, 71, 72, + 73, 74, 75, 77, 78, 79, 80, 82, 83, 84, 85, 87, 89, 91, + 92, 93, 95, 96, 98, 99, 100, 101, 102, 105, 106, 108, 109, 111, + 112, 114, 115, 117, 118, 120, 121, 123, 125, 126, 128, 130, 131, 133, + 135, 136, 138, 140, 142, 143, 145, 147, 149, 151, 152, 154, 156, 158, + 160, 162, 164, 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, 185, + 187, 190, 192, 194, 196, 198, 200, 202, 204, 207, 209, 211, 213, 216, + 218, 220, 222, 225, 227, 229, 232, 234, 236, 239, 241, 244, 246, 249, + 251, 253, 254, 255}; + + int a = millis() / 8; + for (int x = 0; x < MATRIX_WIDTH; x++) { + for (int y = 0; y < MATRIX_HEIGHT; y++) { + int index = g()->xy(x, y); + g()->leds[index].b = + exp_gamma[sin8((x - 8) * cos8((y + 20) * 4) / 4 + a)]; + g()->leds[index].g = + exp_gamma[(sin8(x * 16 + a / 3) + cos8(y * 8 + a / 2)) / 2]; + g()->leds[index].r = + exp_gamma[sin8(cos8(x * 8 + a / 3) + sin8(y * 8 + a / 4) + a)]; + } + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/include/effects/matrix/PatternSMStarshipTroopers.h b/include/effects/matrix/PatternSMStarshipTroopers.h new file mode 100644 index 000000000..fc60882bf --- /dev/null +++ b/include/effects/matrix/PatternSMStarshipTroopers.h @@ -0,0 +1,202 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/839-starship-troopers + + +static const TProgmemRGBPalette16 HolyLightsColors_p FL_PROGMEM = {0xff0000, 0xff4000, 0xff8000, 0xd6c000, 0xffff00, 0xc0ff00, 0x80ff00, 0x40ff00, 0x00ff00, 0x00c040, 0x008080, 0x0040c0, 0x0000ff, 0x4000c0, 0x800080, 0xc00040}; +static const TProgmemRGBPalette16 NeonColors_p FL_PROGMEM = {0x00b1d0, 0x0f93ec, 0x3572ff, 0x4157ff, 0x6162ff, 0x686cff, 0x7473ff, 0x8689e5, 0x9e9dc6, 0x9694ac, 0x979b9b, 0x888b8c, 0x767680, 0x596160, 0x6c736f, 0x7b7359}; +static const TProgmemRGBPalette16 PotassiumFireColors_p FL_PROGMEM = {CRGB::Black, 0x0f001a, 0x1e0034, 0x2d004e, 0x3c0068, CRGB::Indigo, 0x591694, 0x682da6, 0x7643b7, 0x855ac9, CRGB::MediumPurple, 0xa95ecd, 0xbe4bbe, 0xd439b0, 0xe926a1, CRGB::DeepPink}; //* Violet +static const TProgmemRGBPalette16 WaterfallColors_p FL_PROGMEM = {0x000000, 0x060707, 0x101110, 0x151717, 0x1C1D22, 0x242A28, 0x363B3A, 0x313634, 0x505552, 0x6B6C70, 0x98A4A1, 0xC1C2C1, 0xCACECF, 0xCDDEDD, 0xDEDFE0, 0xB2BAB9}; //* Orange + +#if ENABLE_AUDIO +class PatternSMStarshipTroopers : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMStarshipTroopers : public LEDStripEffect +#endif +{ +private: +static constexpr int WIDTH = MATRIX_WIDTH; +static constexpr int HEIGHT = MATRIX_HEIGHT; +static constexpr int LED_COLS = MATRIX_WIDTH; +const float SPEED_ADJ = (float)NUM_LEDS /256; +#define chance 2048 + +byte speed = 200; // 1-255 +const byte scale = 8; +const byte DIR_CHARGE = 2; // Chance to change direction 1-5 + + +CRGBPalette16 pal[5] = { + RainbowColors_p, + HolyLightsColors_p, + NeonColors_p, + PotassiumFireColors_p, + WaterfallColors_p +}; + +byte dir = 3; +byte palette = 0; +byte count = 0; +float x1, y1; +float speedFactor = fmap(speed, 1, 255, 0.25, 1); + +static double fmap(const double x, const double in_min, const double in_max, const double out_min, const double out_max){ + return (out_max - out_min) * (x - in_min) / (in_max - in_min) + out_min; +} +CRGB getPixel(uint8_t x, uint8_t y) + { + return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; + //return g()->leds[g()->xy(x, y)]; + } + + void drawPixel(int8_t x, int8_t y, CRGB color) + { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) return; + // Mesmerizer flips the Y axis here. + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT -1 - (uint8_t)y); + g()->leds[thisPixel] = color; + } + +void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) +{ +// if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть как-нибудь учитывались тут // зато с этой строчкой пропадает нижний ряд + // extract the fractional parts and derive their inverses + uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; + // calculate the intensities for each affected pixel + #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) + uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), + WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; + // multiply the intensities by the colour, and saturating-add them to the pixels + for (uint8_t i = 0; i < 4; i++) { + int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); + CRGB clr = getPixel(xn, yn); + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + drawPixel(xn, yn, clr); + } +} + +public: + PatternSMStarshipTroopers() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSTARSHIP_TROOPERS, "Starship Troopers") + { + } + + PatternSMStarshipTroopers(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + randomSeed(millis()); +// fadeToBlackBy(leds, NUM_LEDS, map(speed, 1, 255, 5, 10)); + switch (dir) { + case 0: // Up + for (byte x = 0; x < WIDTH; x++) { + if (x > WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} + for (float y = 0; y < HEIGHT; y+=speedFactor) { + getPixel(x, y) = (((int)y == HEIGHT - 1) ? CRGB::Black : getPixel(x, y + 1)); + } + } + break; + case 1: // Up - Right + for (float x = 0; x < WIDTH; x+=speedFactor) { + if ((uint8_t)x > WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} + for (byte y = 0; y < HEIGHT; y++) { + getPixel(x, y) = ((y == HEIGHT - 1 or (int)x == WIDTH - 1) ? CRGB::Black : getPixel(x + 1, y + 1)); + } + } + break; + case 2: // Right + for (float x = 0; x < WIDTH; x+=speedFactor) { + if ((uint8_t)x > WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} + for (byte y = HEIGHT - 1; y > 0; y--) { + getPixel(x, y) = (((int)x == WIDTH - 1) ? CRGB::Black : getPixel(x + 1, y)); + } + } + break; + case 3: // Down - Right + for (float x = 0; x < WIDTH; x+=speedFactor) { + if ((uint8_t)x > WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} + for (byte y = HEIGHT - 1; y > 0; y--) { + getPixel(x, y) = (((int)x == WIDTH - 1 or y == 0) ? CRGB::Black : getPixel(x + 1, y - 1)); + } + } + break; + case 4: // Down + for (byte x = 0; x < WIDTH; x++) { + if (x < WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} + for (float y = HEIGHT - 1; y > 0; y-=speedFactor) { + getPixel(x, y) = (((int)y == 0) ? CRGB::Black : getPixel(x, y - 1)); + } + } + break; + case 5: // Down - Left + for (float x = WIDTH - 1; x > 0; x-=speedFactor) { + if (!(uint8_t)x < WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} + for (byte y = HEIGHT - 1; y > 0; y--) { + getPixel(x, y) = ((y == 0 or (int)x == 0) ? CRGB::Black : getPixel(x - 1, y - 1)); + } + } + break; + case 6: // Left + for (float x = WIDTH - 1; x > 0; x-=speedFactor) { + if ((uint8_t)x < WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} + for (byte y = HEIGHT - 1; y > 0; y--) { + getPixel(x, y) = ((int)x == 0 ? CRGB::Black : getPixel(x - 1, y)); + } + } + break; + case 7: // Up - Left + for (float x = WIDTH -1; x >0; x-=speedFactor) { + if ((uint8_t)x < WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} + for (byte y = HEIGHT - 1; y > 0; y--) { + getPixel(x, y) = ((y == HEIGHT - 1 or (int)x == 0) ? CRGB::Black : getPixel(x - 1, y + 1)); + } + } + break; + } + + + for (byte i = 0; i < scale; i++) { + x1 = (float)beatsin88(3840*speedFactor + i*256, 0, (WIDTH-1) *4, 0, scale*i*256) /4; + y1 = (float)beatsin88(3072*speedFactor + i*256, 0, (HEIGHT-1) *4, 0, 0) /4; + if ((x1 >= 0 and x1 <= WIDTH-1) and (y1 >= 0 and y1 <= HEIGHT -1)) drawPixel(x1, y1, ColorFromPalette(pal[palette], beatsin88(256*12.*speedFactor + i*256, 0, 255), 255)); + } + + // blur2d(leds, LED_COLS, LED_ROWS, 64); + g()->blur2d(g()->leds, MATRIX_WIDTH, 0, MATRIX_HEIGHT, 0, 64); + + + dir = count%8; + palette = count%5; + +// delay(16); // ~60FPS + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index ca5e48671..d3328479a 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMFLOCKING, PatternSMFlocking); + ADD_EFFECT(EFFECT_MATRIX_SMGAMMA, PatternSMStarshipTroopers); + // ADD_EFFECT(EFFECT_MATRIX_SMGAMMA, PatternSMGamma); // ADD_EFFECT(EFFECT_MATRIX_SMFLOW_FIELDS, PatternSMFlowFields); // ADD_EFFECT(EFFECT_MATRIX_SMSUPERNOVA, PatternSMBlurringColors); // ADD_EFFECT(EFFECT_MATRIX_SMSUPERNOVA, PatternSMSupernova); From f03b0409957fe547a370bfe14c1f2c6d6ba6ec9e Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Tue, 18 Jul 2023 01:35:32 -0500 Subject: [PATCH 051/168] Add Holiday Lights (Christmas Tree + presents) --- include/effectdependencies.h | 3 +- include/effects.h | 1 + .../effects/matrix/PatternSMHolidayLights.h | 137 ++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMHolidayLights.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 765f025f2..09d0bdd50 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,9 +86,10 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMStarshipTroopers.h" + #include "effects/matrix/PatternSMHolidayLights.h" #if BOOGER + #include "effects/matrix/PatternSMStarshipTroopers.h" #include "effects/matrix/PatternSMGamma.h" // A Small block of 3D-ish effects using Particle systems or Boids. #include "effects/matrix/PatternSMFlocking.h" diff --git a/include/effects.h b/include/effects.h index b499d882c..bc745921a 100644 --- a/include/effects.h +++ b/include/effects.h @@ -148,6 +148,7 @@ #define EFFECT_MATRIX_SMFLOW_FIELDS 175 #define EFFECT_MATRIX_SMGAMMA 176 #define EFFECT_MATRIX_SMSTARSHIP_TROOPERS 177 +#define EFFECT_MATRIX_SMHOLIDAY_LIGHTS 177 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMHolidayLights.h b/include/effects/matrix/PatternSMHolidayLights.h new file mode 100644 index 000000000..e1f1b340b --- /dev/null +++ b/include/effects/matrix/PatternSMHolidayLights.h @@ -0,0 +1,137 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +#if ENABLE_AUDIO +class PatternSMHolidayLights : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMHolidayLights : public LEDStripEffect +#endif +{ +private: + //Holiday lights +//@stepko +//Merry Christmas and Happy New Year + +// updated by kostyamat (green with toys and any matrix size support) +#define WIDTH MATRIX_WIDTH +#define HEIGHT MATRIX_HEIGHT +#define speed (200/(HEIGHT-4)) +byte hue; +byte effId = 2; //1-3 + +const byte maxDim = max(WIDTH, HEIGHT); +const byte minDim = min(WIDTH, HEIGHT); +const byte width_adj = (WIDTH < HEIGHT ? (HEIGHT - WIDTH) /2 : 0); +const byte height_adj = (HEIGHT < WIDTH ? (WIDTH - HEIGHT) /2: 0); +const bool glitch = abs(WIDTH-HEIGHT) >= minDim/4; + +byte density = 50; // +byte fadingSpeed = 10; // +byte updateFromRGBWeight = 10; +const byte scaleToNumLeds = NUM_LEDS/256; + +CRGB RGBweight (uint16_t idx) { + return (g()->leds[idx].r + g()->leds[idx].g + g()->leds[idx].b); +} + +void confetti() { + uint16_t idx = random16(NUM_LEDS); + for (byte i=0; i < scaleToNumLeds; i++) + if ( random8() < density) + if (RGBweight(idx) < 10) g()->leds[idx] = random(48, 16777216); +} + +void drawPixelXYF_X(float x, uint16_t y, const CRGB &color) + { + //if (x<0 || y<0 || x>((float)WIDTH) || y>((float)HEIGHT)) return; + + // extract the fractional parts and derive their inverses + uint8_t xx = (x - (int)x) * 255, ix = 255 - xx; + // calculate the intensities for each affected pixel + uint8_t wu[2] = {ix, xx}; + // multiply the intensities by the colour, and saturating-add them to the pixels + for (int8_t i = 1; i >= 0; i--) { + int16_t xn = x + (i & 1); + CRGB clr = g()->leds[g()->xy(xn, HEIGHT-1-y)]; + if(xn>0 && xn<(int)WIDTH-1){ + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + } else if(xn==0 || xn==(int)WIDTH-1) { + clr.r = qadd8(clr.r, (color.r * 85) >> 8); + clr.g = qadd8(clr.g, (color.g * 85) >> 8); + clr.b = qadd8(clr.b, (color.b * 85) >> 8); + } + g()->leds[g()->xy(xn, HEIGHT-1-y)] = clr; + } + } + +byte y[HEIGHT]; +float x; + +void addGlitter(uint8_t chanceOfGlitter){ + if ( random8() < chanceOfGlitter) g()->leds[random16(NUM_LEDS)] = random(0, 16777215); +} + +void spruce() { + hue++; + // fadeToBlackBy(leds, NUM_LEDS, map(speed, 1, 255, 1, 10)); + fadeAllChannelsToBlackBy(map(speed, 1, 255, 1, 10)); + uint8_t z; + if (effId == 3) z = triwave8(hue); + else z = beatsin8(1, 1, 255); + for (uint8_t i = 0; i < minDim; i++) { + x = beatsin16(i * (map(speed, 1, 255, 3, 20)/*(NUM_LEDS/256)*/), + i * 2, + (minDim * 4 - 2) - (i * 2 + 2)); + if (effId == 2) + drawPixelXYF_X(x/4 + height_adj, i, random8(10) == 0 ? CHSV(random8(), random8(32, 255), 255) : CHSV(100, 255, map(speed, 1, 255, 128, 100))); + else + drawPixelXYF_X(x/4 + height_adj, i, CHSV(hue + i * z, 255, 255)); + } + if (!(WIDTH& 0x01)) + g()->leds[g()->xy(WIDTH/2 - ((millis()>>9) & 0x01 ? 1:0), minDim - 1 - ((millis()>>8) & 0x01 ? 1:0))] = CHSV(0, 255, 255); + else + g()->leds[g()->xy(WIDTH/2, minDim - 1)] = CHSV(0, (millis()>>9) & 0x01 ? 0 : 255, 255); + + if (glitch) confetti(); +} +public: + PatternSMHolidayLights() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMHOLIDAY_LIGHTS, "Holiday Lights") + { + } + + PatternSMHolidayLights(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + spruce(); + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index d3328479a..e4f798ffa 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMGAMMA, PatternSMStarshipTroopers); + ADD_EFFECT(EFFECT_MATRIX_SMGAMMA, PatternSMHolidayLights); + // ADD_EFFECT(EFFECT_MATRIX_SMGAMMA, PatternSMStarshipTroopers); // ADD_EFFECT(EFFECT_MATRIX_SMGAMMA, PatternSMGamma); // ADD_EFFECT(EFFECT_MATRIX_SMFLOW_FIELDS, PatternSMFlowFields); // ADD_EFFECT(EFFECT_MATRIX_SMSUPERNOVA, PatternSMBlurringColors); From 897bca93b5ff6564595160f324442a294eb1c1f1 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Fri, 21 Jul 2023 09:14:47 -0500 Subject: [PATCH 052/168] Add Google Nexus effect --- include/effectdependencies.h | 3 +- include/effects.h | 3 +- include/effects/matrix/PatternSMGoogleNexus.h | 214 ++++++++++++++++++ .../effects/matrix/PatternSMHolidayLights.h | 4 +- src/effects.cpp | 5 +- 5 files changed, 224 insertions(+), 5 deletions(-) create mode 100644 include/effects/matrix/PatternSMGoogleNexus.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 09d0bdd50..43d290492 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,9 +86,10 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMHolidayLights.h" + #include "effects/matrix/PatternSMGoogleNexus.h" #if BOOGER + #include "effects/matrix/PatternSMHolidayLights.h" #include "effects/matrix/PatternSMStarshipTroopers.h" #include "effects/matrix/PatternSMGamma.h" // A Small block of 3D-ish effects using Particle systems or Boids. diff --git a/include/effects.h b/include/effects.h index bc745921a..c11787692 100644 --- a/include/effects.h +++ b/include/effects.h @@ -148,7 +148,8 @@ #define EFFECT_MATRIX_SMFLOW_FIELDS 175 #define EFFECT_MATRIX_SMGAMMA 176 #define EFFECT_MATRIX_SMSTARSHIP_TROOPERS 177 -#define EFFECT_MATRIX_SMHOLIDAY_LIGHTS 177 +#define EFFECT_MATRIX_SMHOLIDAY_LIGHTS 178 +#define EFFECT_MATRIX_SMGOOGLE_NEXUS 179 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMGoogleNexus.h b/include/effects/matrix/PatternSMGoogleNexus.h new file mode 100644 index 000000000..b894761ea --- /dev/null +++ b/include/effects/matrix/PatternSMGoogleNexus.h @@ -0,0 +1,214 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Derived from https://editor.soulmatelights.com/gallery/729-google-nexus +// Clearly, this is not a Google product; it's rendition of the boot and life +// screen effect used on the first Google Nexus device, the Nexus S. + +#if ENABLE_AUDIO +class PatternSMGoogleNexus : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMGoogleNexus : public LEDStripEffect +#endif +{ +private: +#define GOOGLE_NEXUS (MATRIX_WIDTH) + + uint8_t speed = 180; // 0-255 + uint8_t scale = 60; // Number of drops. (ed.: relatively speaking.... 0-255) + // probably should be a function of WIDTH * HEIGHT. + + // These are clearly wrong...Just treat it like a square for now. + float dotPosX[MATRIX_WIDTH]; + float dotPosY[MATRIX_WIDTH]; + int8_t dotDirect[MATRIX_WIDTH]; // направление точки + CRGB dotColor[MATRIX_WIDTH]; // цвет точки + float dotAccel[MATRIX_WIDTH]; // персональное ускорение каждой точки + +double fmap(const double x, const double in_min, const double in_max, const double out_min, const double out_max){ + return (out_max - out_min) * (x - in_min) / (in_max - in_min) + out_min; +} + + +void drawPixelXYF_X(float x, uint16_t y, const CRGB &color) +{ + if (x<0 || y<0 || x>((float)MATRIX_WIDTH) || y>((float)MATRIX_HEIGHT)) return; + + // extract the fractional parts and derive their inverses + uint8_t xx = (x - (int)x) * 255, ix = 255 - xx; + // calculate the intensities for each affected pixel + uint8_t wu[2] = {ix, xx}; + // multiply the intensities by the colour, and saturating-add them to the pixels + for (int8_t i = 1; i >= 0; i--) { + int16_t xn = x + (i & 1); + CRGB clr = g()->leds[g()->xy(xn, y)]; + if(xn>0 && xn<(int)MATRIX_WIDTH-1){ + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + } else if(xn==0 || xn==(int)MATRIX_WIDTH-1) { + clr.r = qadd8(clr.r, (color.r * 85) >> 8); + clr.g = qadd8(clr.g, (color.g * 85) >> 8); + clr.b = qadd8(clr.b, (color.b * 85) >> 8); + } + g()->leds[g()->xy(xn, y)]= clr; + } +} + +void drawPixelXYF_Y(uint16_t x, float y, const CRGB &color) +{ + if (x<0 || y<0 || x>((float)MATRIX_WIDTH) || y>((float)MATRIX_HEIGHT)) return; + + // extract the fractional parts and derive their inverses + uint8_t yy = (y - (int)y) * 255, iy = 255 - yy; + // calculate the intensities for each affected pixel + uint8_t wu[2] = {iy, yy}; + // multiply the intensities by the colour, and saturating-add them to the pixels + for (int8_t i = 1; i >= 0; i--) { + int16_t yn = y + (i & 1); + CRGB clr = g()->leds[g()->xy(x, yn)]; + if(yn>0 && yn<(int)MATRIX_HEIGHT-1){ + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + } else if(yn==0 || yn==(int)MATRIX_HEIGHT-1) { + clr.r = qadd8(clr.r, (color.r * 85) >> 8); + clr.g = qadd8(clr.g, (color.g * 85) >> 8); + clr.b = qadd8(clr.b, (color.b * 85) >> 8); + } + g()->leds[g()->xy(x, yn)] = clr; + } +} + +void resetDot(uint8_t idx) { + randomSeed(micros()); + dotDirect[idx] = random8(0, 4); // set direction + dotColor[idx] = ColorFromPalette(RainbowColors_p, random(0, 9) * 31, 255); // color + dotAccel[idx] = (float)random(5, 10) / 70; // make particles slightly different acceleration + switch (dotDirect[idx]) + { + case 0: // вверх + dotPosX[idx] = random8(0, MATRIX_WIDTH); // Scatter drops across the width + dotPosY[idx] = 0; // and height + break; + case 1: // вниз + dotPosX[idx] = random8(0, MATRIX_WIDTH); // Scatter drops across the width + dotPosY[idx] = MATRIX_HEIGHT-1; // and height + break; + case 2: // вправо + dotPosX[idx] = 0; // Scatter drops across the width + dotPosY[idx] = random8(0, MATRIX_HEIGHT); // and height + break; + case 3: // влево + dotPosX[idx] = MATRIX_WIDTH-1; // Scatter drops across the width + dotPosY[idx] = random8(0, MATRIX_HEIGHT); // and height + break; + default: + break; + } +} + +public: + PatternSMGoogleNexus() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMGOOGLE_NEXUS, "Google Nexus") + { + } + + PatternSMGoogleNexus(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + for (byte i = 0; i < GOOGLE_NEXUS; i++) { + dotDirect[i] = random(0, 4); // Set direction + dotPosX[i] = random(0, MATRIX_WIDTH); // Scatter particles across width + dotPosY[i] = random(0, MATRIX_HEIGHT); // and height + dotColor[i] = ColorFromPalette(RainbowColors_p, random8(0, 9) * 31, 255); // dot color + dotAccel[i] = (float)random(5, 11) / 70; // make particles each slightly different speed + } + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + float speedfactor = fmap(speed, 1, 255, 0.1, .33); + fadeAllChannelsToBlackBy(map(speed, 1, 255, 11, 33)); + + for (byte i = 0; i < map(scale, 1, 255, 4, GOOGLE_NEXUS); i++) { + switch (dotDirect[i]) + { + case 0: // up + dotPosY[i] += (speedfactor + dotAccel[i]); + break; + case 1: // down + dotPosY[i] -= (speedfactor + dotAccel[i]); + break; + case 2: // right + dotPosX[i] += (speedfactor + dotAccel[i]); + break; + case 3: // left + dotPosX[i] -= (speedfactor + dotAccel[i]); + break; + default: + break; + } + + // // Make it seamless in Y. And move the blob to the beginning of the track + if (dotPosY[i] < 0) { + dotPosY[i] = (float)MATRIX_HEIGHT - 1.; + resetDot(i); + } + + if (dotPosY[i] > (MATRIX_HEIGHT - 1)) { + dotPosY[i] = 0; + resetDot(i); + } + + // / Make X seamless. + if (dotPosX[i] < 0) { + dotPosX[i] = (MATRIX_WIDTH - 1); + resetDot(i); + } + if (dotPosX[i] > (MATRIX_WIDTH - 1)) { + dotPosX[i] = 0; + resetDot(i); + } + + switch (dotDirect[i]) + { + case 0: // up + case 1: // down + drawPixelXYF_Y(dotPosX[i], dotPosY[i], dotColor[i]); + break; + case 2: // right + case 3: // left + drawPixelXYF_X(dotPosX[i], dotPosY[i], dotColor[i]); + break; + default: + break; + } + } + + + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/include/effects/matrix/PatternSMHolidayLights.h b/include/effects/matrix/PatternSMHolidayLights.h index e1f1b340b..2db69cad9 100644 --- a/include/effects/matrix/PatternSMHolidayLights.h +++ b/include/effects/matrix/PatternSMHolidayLights.h @@ -3,6 +3,8 @@ #include "effects/strip/musiceffect.h" #include "effectmanager.h" +// Derived from https://editor.soulmatelights.com/gallery/552-festive-lighting-green-with-toys + #if ENABLE_AUDIO class PatternSMHolidayLights : public BeatEffectBase, public LEDStripEffect #else @@ -10,7 +12,7 @@ class PatternSMHolidayLights : public LEDStripEffect #endif { private: - //Holiday lights +//Holiday lights //@stepko //Merry Christmas and Happy New Year diff --git a/src/effects.cpp b/src/effects.cpp index e4f798ffa..65bd21940 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,8 +358,9 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMGAMMA, PatternSMHolidayLights); - // ADD_EFFECT(EFFECT_MATRIX_SMGAMMA, PatternSMStarshipTroopers); + ADD_EFFECT(EFFECT_MATRIX_SMGOOGLE_NEXUS, PatternSMGoogleNexus); + // ADD_EFFECT(EFFECT_MATRIX_SMHOLIDAY_LIGHTS, PatternSMHolidayLights); + // ADD_EFFECT(EFFECT_MATRIX_SMSTARSHIP_TROOPERS, PatternSMStarshipTroopers); // ADD_EFFECT(EFFECT_MATRIX_SMGAMMA, PatternSMGamma); // ADD_EFFECT(EFFECT_MATRIX_SMFLOW_FIELDS, PatternSMFlowFields); // ADD_EFFECT(EFFECT_MATRIX_SMSUPERNOVA, PatternSMBlurringColors); From e3f2c183a3f25f3a8e1100ef640dc7bcb54bc41a Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Fri, 21 Jul 2023 14:15:06 -0500 Subject: [PATCH 053/168] rough in Flocking for Boids --- include/effectdependencies.h | 5 +++-- include/effects.h | 2 ++ include/effects/matrix/PatternSMFlocking.h | 0 include/effects/matrix/PatternSMGravityBalls.h | 0 src/effects.cpp | 4 +++- 5 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 include/effects/matrix/PatternSMFlocking.h create mode 100644 include/effects/matrix/PatternSMGravityBalls.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 43d290492..1d2c8edb2 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,9 +86,10 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMGoogleNexus.h" - + #include "effects/matrix/PatternSMFlocking.h" #if BOOGER + #include "effects/matrix/PatternSMGravityBalls.h" + #include "effects/matrix/PatternSMGoogleNexus.h" #include "effects/matrix/PatternSMHolidayLights.h" #include "effects/matrix/PatternSMStarshipTroopers.h" #include "effects/matrix/PatternSMGamma.h" diff --git a/include/effects.h b/include/effects.h index c11787692..90dbabb83 100644 --- a/include/effects.h +++ b/include/effects.h @@ -150,6 +150,8 @@ #define EFFECT_MATRIX_SMSTARSHIP_TROOPERS 177 #define EFFECT_MATRIX_SMHOLIDAY_LIGHTS 178 #define EFFECT_MATRIX_SMGOOGLE_NEXUS 179 +#define EFFECT_MATRIX_SMGRAVITY_BALLS 180 +#define EFFECT_MATRIX_SMFLOCKING 181 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMFlocking.h b/include/effects/matrix/PatternSMFlocking.h new file mode 100644 index 000000000..e69de29bb diff --git a/include/effects/matrix/PatternSMGravityBalls.h b/include/effects/matrix/PatternSMGravityBalls.h new file mode 100644 index 000000000..e69de29bb diff --git a/src/effects.cpp b/src/effects.cpp index 65bd21940..0ae538f75 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,9 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMGOOGLE_NEXUS, PatternSMGoogleNexus); + ADD_EFFECT(EFFECT_MATRIX_SMGRAVITY_BALLS, PatternSMFlocking); + // ADD_EFFECT(EFFECT_MATRIX_SMGRAVITY_BALLS, PatternSMGravityBalls); + // ADD_EFFECT(EFFECT_MATRIX_SMGOOGLE_NEXUS, PatternSMGoogleNexus); // ADD_EFFECT(EFFECT_MATRIX_SMHOLIDAY_LIGHTS, PatternSMHolidayLights); // ADD_EFFECT(EFFECT_MATRIX_SMSTARSHIP_TROOPERS, PatternSMStarshipTroopers); // ADD_EFFECT(EFFECT_MATRIX_SMGAMMA, PatternSMGamma); From 7246108b767003550fe3c238bb139414e9ec0119 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Fri, 21 Jul 2023 22:31:11 -0500 Subject: [PATCH 054/168] Add Bubbles --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/PatternSMBubbles.h | 0 src/effects.cpp | 2 ++ 4 files changed, 4 insertions(+) create mode 100644 include/effects/matrix/PatternSMBubbles.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 1d2c8edb2..a4a0be50c 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,6 +86,7 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif + #include "effects/matrix/PatternSMBubbles.h" #include "effects/matrix/PatternSMFlocking.h" #if BOOGER #include "effects/matrix/PatternSMGravityBalls.h" diff --git a/include/effects.h b/include/effects.h index 90dbabb83..fa8796256 100644 --- a/include/effects.h +++ b/include/effects.h @@ -152,6 +152,7 @@ #define EFFECT_MATRIX_SMGOOGLE_NEXUS 179 #define EFFECT_MATRIX_SMGRAVITY_BALLS 180 #define EFFECT_MATRIX_SMFLOCKING 181 +#define EFFECT_MATRIX_SMBUBBLES 182 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMBubbles.h b/include/effects/matrix/PatternSMBubbles.h new file mode 100644 index 000000000..e69de29bb diff --git a/src/effects.cpp b/src/effects.cpp index 0ae538f75..1442f346c 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,9 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif + ADD_EFFECT(EFFECT_MATRIX_SMGRAVITY_BALLS, PatternSMBubbles); ADD_EFFECT(EFFECT_MATRIX_SMGRAVITY_BALLS, PatternSMFlocking); + // ADD_EFFECT(EFFECT_MATRIX_SMGRAVITY_BALLS, PatternSMGravityBalls); // ADD_EFFECT(EFFECT_MATRIX_SMGOOGLE_NEXUS, PatternSMGoogleNexus); // ADD_EFFECT(EFFECT_MATRIX_SMHOLIDAY_LIGHTS, PatternSMHolidayLights); From cc04f0eb0c35738fc7d7533f392023e633a25496 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sat, 22 Jul 2023 22:11:41 -0500 Subject: [PATCH 055/168] Add flocking variant of update() to Boid --- include/effects/matrix/Boid.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/effects/matrix/Boid.h b/include/effects/matrix/Boid.h index 4362a7e1f..bc66e558d 100644 --- a/include/effects/matrix/Boid.h +++ b/include/effects/matrix/Boid.h @@ -120,6 +120,19 @@ class Boid acceleration *= 0; } + // Method to update location + void update(Boid boids [], uint8_t boidCount) { + // Update velocity + flock(boids, boidCount); + velocity += acceleration; + // Limit speed + velocity.limit(maxspeed); + + location += velocity; + // Reset acceleration to 0 each cycle + acceleration *= 0; + } + void applyForce(PVector force) { // We could add mass here if we want A = F / M acceleration += force; From b95b62deafbe3fb4a2d3a7312c172c606a8db4b6 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sat, 22 Jul 2023 23:19:08 -0500 Subject: [PATCH 056/168] Finalize Bubbles, Flocking, GravityBalls, Whirls" " --- include/effectdependencies.h | 4 +- include/effects/matrix/PatternSMBubbles.h | 154 ++++++++++++++++++ include/effects/matrix/PatternSMFlocking.h | 103 ++++++++++++ .../effects/matrix/PatternSMGravityBalls.h | 131 +++++++++++++++ include/effects/matrix/PatternSMWhirls.h | 0 src/effects.cpp | 4 +- 6 files changed, 392 insertions(+), 4 deletions(-) delete mode 100644 include/effects/matrix/PatternSMWhirls.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index a4a0be50c..a4ddb403f 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,8 +86,8 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMBubbles.h" - #include "effects/matrix/PatternSMFlocking.h" + #include "effects/matrix/PatternSMBubbles.h" // Boids + #include "effects/matrix/PatternSMFlocking.h" // Boids #if BOOGER #include "effects/matrix/PatternSMGravityBalls.h" #include "effects/matrix/PatternSMGoogleNexus.h" diff --git a/include/effects/matrix/PatternSMBubbles.h b/include/effects/matrix/PatternSMBubbles.h index e69de29bb..37cdbab0a 100644 --- a/include/effects/matrix/PatternSMBubbles.h +++ b/include/effects/matrix/PatternSMBubbles.h @@ -0,0 +1,154 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" +#include "effects/matrix/Boid.h" +#include "effects/matrix/Vector.h" + +// Inspired by https://editor.soulmatelights.com/gallery/2252-overcomplicatedbubbles +// The flocking code gives the bubbles a bit of a swarming effect + +#if ENABLE_AUDIO +class PatternSMBubbles : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMBubbles : public LEDStripEffect +#endif +{ +private: + static constexpr int NUM_PARTICLES = 80; + struct xboid { + float scale {1}; + float mass {1}; + int scaledir{1}; + int bbrightness{0}; + }; + Boid boids[NUM_PARTICLES]; + xboid xboids[NUM_PARTICLES]; + uint16_t x; + uint16_t y; + uint16_t z; + int speed = 1; + int count = NUM_PARTICLES; + + CRGB getPixColorXY(uint8_t x, uint8_t y) + { + return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; + //return g()->leds[g()->xy(x, y)]; + } + + void drawPixelXY(int8_t x, int8_t y, CRGB color) + { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) return; + // Mesmerizer flips the Y axis here. + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT -1 - (uint8_t)y); + g()->leds[thisPixel] = color; + } + +void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) +{ +// if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть как-нибудь учитывались тут // зато с этой строчкой пропадает нижний ряд + // extract the fractional parts and derive their inverses + uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; + // calculate the intensities for each affected pixel + #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) + uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), + WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; + // multiply the intensities by the colour, and saturating-add them to the pixels + for (uint8_t i = 0; i < 4; i++) { + int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); + CRGB clr = getPixColorXY(xn, yn); + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + drawPixelXY(xn, yn, clr); + } +} + + +public: + PatternSMBubbles() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMBUBBLES, "Bubbles") + { + } + + PatternSMBubbles(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + x = random16(); + y = random16(); + z = random16(); + + for (int i = 0; i < count; i++) { + boids[i] = Boid(random(MATRIX_WIDTH), 0); + boids[i].hue = random(40,255);; + xboids[i].mass = random(1.0,2.5); + xboids[i].scale = random(0.5,68.5); + } + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + EVERY_N_MILLISECONDS(2000) { + if (count <= 5 || count >= 79) { + speed = -speed; + } + count += speed; + } + + for (int i = 5; i < count; i++) { + Boid * boid = &boids[i]; + xboid* xboid = &xboids[i]; + xboid->scale += xboid->scaledir; + #if 0 + xboid->bbrightness = boid->location.y * 15; + if (xboid->bbrightness >= 255) xboid-> bbrightness = 255; + #else + xboid->bbrightness = map(boid->location.y, 0, MATRIX_HEIGHT, 65, 255); + #endif + if (xboid->scale > 200 || xboid->scale < 10){ + xboid->scaledir = -xboid->scaledir; + } + int ioffset = xboid->scale * boid->location.x; + int joffset = xboid->scale * boid->location.y; + float angle = inoise8(x + ioffset, y + joffset, z); + + boid->velocity.x = .2 * (float) sin8(angle) * 0.007 - 1.0; + boid->velocity.y = -((float)cos8(angle) * 0.006 - 1.0); + boid->update(); + + drawPixelXYF(boid->location.x, boid->location.y, ColorFromPalette(OceanColors_p,boid->hue*15,xboid->bbrightness,LINEARBLEND)); + + if (boid->location.x < 0 || boid->location.x >= MATRIX_WIDTH || + boid->location.y < 0 || boid->location.y >= MATRIX_HEIGHT) { + boid->location.x = random(MATRIX_WIDTH); + boid->location.y = 0; + } + } + fadeAllChannelsToBlackBy(105); + x += speed; + y += speed; + z += speed; + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/include/effects/matrix/PatternSMFlocking.h b/include/effects/matrix/PatternSMFlocking.h index e69de29bb..355959309 100644 --- a/include/effects/matrix/PatternSMFlocking.h +++ b/include/effects/matrix/PatternSMFlocking.h @@ -0,0 +1,103 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/matrix/Boid.h" +#include "effects/matrix/Vector.h" +#include "effects/strip/musiceffect.h" + +// Inspired by https://editor.soulmatelights.com/gallery/2254-flocking +// Almost a textbook Boid demo: Separation, Cohesion, Alignment. + +#if ENABLE_AUDIO +class PatternSMFlocking : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMFlocking : public LEDStripEffect +#endif +{ + private: + // With 10 they have just about enough time to spread after a collision on a 64x32. + static constexpr int NUM_PARTICLES = 10; + Boid boids[NUM_PARTICLES]; + + CRGB getPixColorXY(uint8_t x, uint8_t y) { + return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; + // return g()->leds[g()->xy(x, y)]; + } + + void drawPixelXY(int8_t x, int8_t y, CRGB color) { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) + return; + // Mesmerizer flips the Y axis here. + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT - 1 - (uint8_t)y); + g()->leds[thisPixel] = color; + } + + void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) + { + // if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть + // как-нибудь учитывались тут // зато с этой строчкой пропадает нижний ряд + // extract the fractional parts and derive their inverses + uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, + iy = 255 - yy; +// calculate the intensities for each affected pixel +#define WU_WEIGHT(a, b) ((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) + uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), + WU_WEIGHT(xx, yy)}; + // multiply the intensities by the colour, and saturating-add them to the + // pixels + for (uint8_t i = 0; i < 4; i++) { + int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); + CRGB clr = getPixColorXY(xn, yn); + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + drawPixelXY(xn, yn, clr); + } + } + + public: + PatternSMFlocking() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMFLOCKING, "Flocking") { + } + + PatternSMFlocking(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { + g()->Clear(); + for (int i = 0; i < NUM_PARTICLES; i++) { + boids[i] = Boid(random(MATRIX_WIDTH), 0); + } + } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + for (auto& boid : boids) { + boid.flock(boids, NUM_PARTICLES); + // boid.avoidBorders(); + boid.bounceOffBorders(.7); + boid.update(); + drawPixelXYF( + boid.location.x, boid.location.y, + ColorFromPalette(PartyColors_p, boid.hue * 15, 255, LINEARBLEND)); + } + // fadeToBlackBy(g()->leds, NUM_LEDS,75); + fadeAllChannelsToBlackBy(75); + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/include/effects/matrix/PatternSMGravityBalls.h b/include/effects/matrix/PatternSMGravityBalls.h index e69de29bb..23ab05e9b 100644 --- a/include/effects/matrix/PatternSMGravityBalls.h +++ b/include/effects/matrix/PatternSMGravityBalls.h @@ -0,0 +1,131 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +#if ENABLE_AUDIO +class PatternSMGravityBalls : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMGravityBalls : public LEDStripEffect +#endif + +// Derived from https://editor.soulmatelights.com/gallery/1895-agressivebouncingballs + +{ +private: + +static const uint8_t COUNT = 7; +float posx[COUNT]; +float posy[COUNT]; +CRGB color; +float velx[COUNT], vely[COUNT]; +float accel[COUNT]; +byte init = 1; + +void drawPixelXYF(float x, float y, CRGB color) { + if (x < 0 || y < 0 || x > ((float) MATRIX_WIDTH - 1) || y > ((float) MATRIX_HEIGHT - 1)) return; + uint8_t xx = (x - (int) x) * 255, yy = (y - (int) y) * 255, ix = 255 - xx, iy = 255 - yy; + // calculate the intensities for each affected pixel + #define WU_WEIGHT(a, b)((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) + uint8_t wu[4] = { + WU_WEIGHT(ix, iy), + WU_WEIGHT(xx, iy), + WU_WEIGHT(ix, yy), + WU_WEIGHT(xx, yy) + }; + // multiply the intensities by the colour, and saturating-add them to the pixels + for (uint8_t i = 0; i < 4; i++) { + int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); + CRGB clr = g()->leds[g()->xy(xn, yn)]; + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + g()->leds[g()->xy(xn, yn)] = clr; + } +} + +float newpos(){ + return random(0.1F,22.0F); +} + +float newvel(){ + return random(0.1F,1.0F); +} + +public: + PatternSMGravityBalls() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMGRAVITY_BALLS, "Gravity Balls") + { + } + + PatternSMGravityBalls(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + for (int i = 0; i < COUNT;i++){ + velx[i] = (beatsin16(random(1,2) + vely[i],0,MATRIX_WIDTH,MATRIX_HEIGHT)/MATRIX_HEIGHT)+0.1F; + vely[i] = (beatsin16(5 + vely[i],0,MATRIX_WIDTH,MATRIX_HEIGHT)/MATRIX_HEIGHT)+0.5F; + posx[i] = random (1.01F,float(MATRIX_HEIGHT)); + posy[i] = random (1.0F,float(MATRIX_WIDTH)); + accel[i] = random(0.1F,1.0F); + } + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + for (int i = 0; i < COUNT; i++){ + if (posx[i] < 1 || posx[i] > MATRIX_WIDTH -2 ) { + velx[i] = -velx[i]; + if (velx[i] * velx[i] > 5){ + velx[i] = newvel(); + } + if (posx[i] < 0 || posx[i] > MATRIX_WIDTH){ + posx[i] = newpos(); + } + //initvalues(); + } + if (posy[i] < 1 || posy[i] > MATRIX_HEIGHT -2 ){ + vely[i] = -vely[i]; + if (vely[i] * vely[i] > 10){ + vely[i] = newvel(); + } + if (posy[i] < 0 || posy[i] > MATRIX_HEIGHT){ + posy[i] = newpos(); + } + //initvalues(); + } + vely[i] += 0.1F; +posx[i] = posx[i] - velx[i] + accel[i]; //accel[i] ;// posx[i] = posx[i] + velx[i] * accel[i]; + //posy[i] = posy[i] + vely[i] * accel[i]; +posy[i] = posy[i] - vely[i] - accel[i]; + drawPixelXYF(posx[i],posy[i],ColorFromPalette(CloudColors_p,i*80,255,LINEARBLEND)); + + } + +blur2d(g()->leds,MATRIX_WIDTH,MATRIX_HEIGHT,15); +// fadeToBlackBy(g()->leds,NUM_LEDS,20); +fadeAllChannelsToBlackBy(20); + + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/include/effects/matrix/PatternSMWhirls.h b/include/effects/matrix/PatternSMWhirls.h deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/effects.cpp b/src/effects.cpp index 1442f346c..aa7c5c258 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,8 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMGRAVITY_BALLS, PatternSMBubbles); - ADD_EFFECT(EFFECT_MATRIX_SMGRAVITY_BALLS, PatternSMFlocking); +// ADD_EFFECT(EFFECT_MATRIX_SMBUBBLES, PatternSMBubbles); + ADD_EFFECT(EFFECT_MATRIX_SMFLOCKING, PatternSMFlocking); // ADD_EFFECT(EFFECT_MATRIX_SMGRAVITY_BALLS, PatternSMGravityBalls); // ADD_EFFECT(EFFECT_MATRIX_SMGOOGLE_NEXUS, PatternSMGoogleNexus); From 3254ed50d883b97f0f349eb9462c7bd6bc801cb5 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sat, 22 Jul 2023 23:29:19 -0500 Subject: [PATCH 057/168] Add Pattern Trick --- include/effectdependencies.h | 5 +- include/effects.h | 1 + .../effects/matrix/PatternSMPatternTrick.h | 56 +++++++++++++++++++ src/effects.cpp | 6 +- 4 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 include/effects/matrix/PatternSMPatternTrick.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index a4ddb403f..b75a1610c 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,8 +86,7 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMBubbles.h" // Boids - #include "effects/matrix/PatternSMFlocking.h" // Boids + #include "effects/matrix/PatternSMPatternTrick.h" #if BOOGER #include "effects/matrix/PatternSMGravityBalls.h" #include "effects/matrix/PatternSMGoogleNexus.h" @@ -95,6 +94,8 @@ #include "effects/matrix/PatternSMStarshipTroopers.h" #include "effects/matrix/PatternSMGamma.h" // A Small block of 3D-ish effects using Particle systems or Boids. + #include "effects/matrix/PatternSMBubbles.h" // Boids + #include "effects/matrix/PatternSMFlocking.h" // Boids #include "effects/matrix/PatternSMFlocking.h" #include "effects/matrix/PatternSMFlowFields.h" #include "effects/matrix/PatternSMBlurringColors.h" diff --git a/include/effects.h b/include/effects.h index fa8796256..b681bffce 100644 --- a/include/effects.h +++ b/include/effects.h @@ -153,6 +153,7 @@ #define EFFECT_MATRIX_SMGRAVITY_BALLS 180 #define EFFECT_MATRIX_SMFLOCKING 181 #define EFFECT_MATRIX_SMBUBBLES 182 +#define EFFECT_MATRIX_SMPATTERN_TRICK 183 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMPatternTrick.h b/include/effects/matrix/PatternSMPatternTrick.h new file mode 100644 index 000000000..6dd1c909b --- /dev/null +++ b/include/effects/matrix/PatternSMPatternTrick.h @@ -0,0 +1,56 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" +// Inspired by https://editor.soulmatelights.com/gallery/2105-pattern-trick + +#if ENABLE_AUDIO +class PatternSMPatternTrick : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMPatternTrick : public LEDStripEffect +#endif +{ + private: + public: + PatternSMPatternTrick() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMPATTERN_TRICK, "PatternTrick") { + } + + PatternSMPatternTrick(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { g()->Clear(); } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + int a = millis() / 10; + + for (int x = 0; x < MATRIX_WIDTH; x++) { + for (int y = 0; y < MATRIX_HEIGHT; y++) { + if (!(((x + sin8(a / 2) / 24) % MATRIX_WIDTH * 6 ^ + (y + cos8(a / 3) / 8) % MATRIX_HEIGHT * 6) % + 5)) + g()->leds[g()->xy(x, y)].setHue( + sin8(x * 4 + cos8(y * 2 + a / 4) + a / 3)); + else + g()->leds[g()->xy(x, y)] = 0; + } + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index aa7c5c258..ae34666ec 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,9 +358,9 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif -// ADD_EFFECT(EFFECT_MATRIX_SMBUBBLES, PatternSMBubbles); - ADD_EFFECT(EFFECT_MATRIX_SMFLOCKING, PatternSMFlocking); - + ADD_EFFECT(EFFECT_MATRIX_SMPATTERN_TRICK, PatternSMPatternTrick); + // ADD_EFFECT(EFFECT_MATRIX_SMBUBBLES, PatternSMBubbles); + // ADD_EFFECT(EFFECT_MATRIX_SMFLOCKING, PatternSMFlocking); // ADD_EFFECT(EFFECT_MATRIX_SMGRAVITY_BALLS, PatternSMGravityBalls); // ADD_EFFECT(EFFECT_MATRIX_SMGOOGLE_NEXUS, PatternSMGoogleNexus); // ADD_EFFECT(EFFECT_MATRIX_SMHOLIDAY_LIGHTS, PatternSMHolidayLights); From b6904ea559d9e8e7d46fb69639d9184ed869623e Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 01:20:02 -0500 Subject: [PATCH 058/168] Add SinDots, SunRadiation --- include/effectdependencies.h | 4 +- include/effects.h | 2 + include/effects/matrix/PatternSMSinDots.h | 56 ++++++++++ .../effects/matrix/PatternSMSunRadiation.h | 102 ++++++++++++++++++ src/effects.cpp | 4 +- 5 files changed, 166 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMSinDots.h create mode 100644 include/effects/matrix/PatternSMSunRadiation.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index b75a1610c..e97388c05 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,8 +86,10 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMPatternTrick.h" + #include "effects/matrix/PatternSMSinDots.h" + #include "effects/matrix/PatternSMSunRadiation.h" #if BOOGER + #include "effects/matrix/PatternSMPatternTrick.h" #include "effects/matrix/PatternSMGravityBalls.h" #include "effects/matrix/PatternSMGoogleNexus.h" #include "effects/matrix/PatternSMHolidayLights.h" diff --git a/include/effects.h b/include/effects.h index b681bffce..20d02afc7 100644 --- a/include/effects.h +++ b/include/effects.h @@ -154,6 +154,8 @@ #define EFFECT_MATRIX_SMFLOCKING 181 #define EFFECT_MATRIX_SMBUBBLES 182 #define EFFECT_MATRIX_SMPATTERN_TRICK 183 +#define EFFECT_MATRIX_SMSUN_RADIATION 184 +#define EFFECT_MATRIX_SMSIN_DOTS 185 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMSinDots.h b/include/effects/matrix/PatternSMSinDots.h new file mode 100644 index 000000000..72f47f0d2 --- /dev/null +++ b/include/effects/matrix/PatternSMSinDots.h @@ -0,0 +1,56 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" +// Derived from https://wokwi.com/projects/288857088376963592 + +#if ENABLE_AUDIO +class PatternSMSinDots : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMSinDots : public LEDStripEffect +#endif +{ + private: + public: + PatternSMSinDots() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSIN_DOTS, "Sin Dots") { + } + + PatternSMSinDots(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { g()->Clear(); } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + int8_t i, t, u; + t = millis() / 15; + u = t * 2; + int size = std::min(MATRIX_WIDTH, MATRIX_HEIGHT) - 1; // always a square. + // This might look better with the FP-based setPixelXYF that we + // have floating (ha!) around elsewhere in this code. Maybe later. + // The large final argument to blur2d helps a lot. + for (i = size; i--;) + g()->leds[g()->xy((sin8(t + i * size) >> 3) + (size / 2), + sin8(u + i * size) >> 3)] + .setHue(i * (size - 1)); + g()->blur2d(g()->leds, MATRIX_WIDTH, 0, MATRIX_HEIGHT, 0, 128); + fadeAllChannelsToBlackBy(60); + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/include/effects/matrix/PatternSMSunRadiation.h b/include/effects/matrix/PatternSMSunRadiation.h new file mode 100644 index 000000000..1222ab10d --- /dev/null +++ b/include/effects/matrix/PatternSMSunRadiation.h @@ -0,0 +1,102 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" + +#if ENABLE_AUDIO +class PatternSMSunRadiation : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMSunRadiation : public LEDStripEffect +#endif +{ + private: + static constexpr int LED_ROWS = MATRIX_HEIGHT; + static constexpr int LED_COLS = MATRIX_WIDTH; + // sun radiation + // fastled 16x16 matrix demo (work for any size too) + // Yaroslaw Turbin 19.01.2020 + // https://vk.com/ldirko + // https://www.reddit.com/user/ldirko/ + + // https://wokwi.com/arduino/projects/288134661735973389 + CRGB chsvLut[256]; + byte bump[(LED_COLS + 2) * (LED_ROWS + 2)]; + + void generateCHSVlut() { + for (int j = 0; j < 256; j++) + chsvLut[j] = HeatColor(j / 1.4); // 256 pallette color + } + + void generatebump() { + int t = millis() / 4; + int index = 0; + for (byte j = 0; j < (LED_ROWS + 2); j++) { + for (byte i = 0; i < (LED_COLS + 2); i++) { + byte col = (inoise8_raw(i * 25, j * 25, t)) / 2; + bump[index++] = col; + } + } + } + + void Bumpmap() { + int yindex = LED_COLS + 3; + int8_t vly = -(LED_ROWS / 2 + 1); + for (byte y = 0; y < LED_ROWS; y++) { + ++vly; + int8_t vlx = -(LED_COLS / 2 + 1); + for (byte x = 0; x < LED_COLS; x++) { + ++vlx; + int8_t nx = bump[x + yindex + 1] - bump[x + yindex - 1]; + int8_t ny = bump[x + yindex + (LED_COLS + 2)] - + bump[x + yindex - (LED_COLS + 2)]; + // Mesmerizer: changed scales to 4 from 7 to take up more of our larger + // screen w/o repeats. + const int8_t scaleX = 4; + const int8_t scaleY = 4; + byte difx = abs8(vlx * scaleX - nx); + byte dify = abs8(vly * scaleY - ny); + int temp = difx * difx + dify * dify; + int col = 255 - temp / 8; // 8 its a size of effect + + if (col < 0) col = 0; + g()->leds[g()->xy(x, y)] = chsvLut[col]; // thx satubarosu )) + } + yindex += (LED_COLS + 2); + } + } + + public: + PatternSMSunRadiation() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSUN_RADIATION, "Sun Radiation") { + } + + PatternSMSunRadiation(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { + g()->Clear(); + generateCHSVlut(); + } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + generatebump(); + Bumpmap(); + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index ae34666ec..e31f2f006 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,9 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMPATTERN_TRICK, PatternSMPatternTrick); + ADD_EFFECT(EFFECT_MATRIX_SMSIN_DOTS, PatternSMSinDots); + // ADD_EFFECT(EFFECT_MATRIX_SMPATTERN_TRICK, PatternSMSunRadiation); + // ADD_EFFECT(EFFECT_MATRIX_SMPATTERN_TRICK, PatternSMPatternTrick); // ADD_EFFECT(EFFECT_MATRIX_SMBUBBLES, PatternSMBubbles); // ADD_EFFECT(EFFECT_MATRIX_SMFLOCKING, PatternSMFlocking); // ADD_EFFECT(EFFECT_MATRIX_SMGRAVITY_BALLS, PatternSMGravityBalls); From a28301ac6127547314a4c1987f04ae9fc37e4987 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 01:36:24 -0500 Subject: [PATCH 059/168] Add Flying --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/PatternSMFlying.h | 71 ++++++++++++++++++++++++ src/effects.cpp | 1 + 4 files changed, 74 insertions(+) create mode 100644 include/effects/matrix/PatternSMFlying.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index e97388c05..8427e173d 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,6 +86,7 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif + #include "effects/matrix/PatternSMFlying.h" #include "effects/matrix/PatternSMSinDots.h" #include "effects/matrix/PatternSMSunRadiation.h" #if BOOGER diff --git a/include/effects.h b/include/effects.h index 20d02afc7..8ed946ed1 100644 --- a/include/effects.h +++ b/include/effects.h @@ -156,6 +156,7 @@ #define EFFECT_MATRIX_SMPATTERN_TRICK 183 #define EFFECT_MATRIX_SMSUN_RADIATION 184 #define EFFECT_MATRIX_SMSIN_DOTS 185 +#define EFFECT_MATRIX_SMFLYING 186 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMFlying.h b/include/effects/matrix/PatternSMFlying.h new file mode 100644 index 000000000..3bdf56840 --- /dev/null +++ b/include/effects/matrix/PatternSMFlying.h @@ -0,0 +1,71 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" +// Derived from https://www.soulmatelights.com/gallery/434-f-lying + +#if ENABLE_AUDIO +class PatternSMFlying : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMFlying : public LEDStripEffect +#endif +{ + private: + public: + PatternSMFlying() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMFLYING, "Flying") { + } + + PatternSMFlying(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { g()->Clear(); } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + static byte hue = 0; + EVERY_N_MILLISECONDS(30) { hue++; } // 30 - speed of hue change +#define speed -5 // global speed of dots move + + byte x1 = beatsin8(18 + speed, 0, (MATRIX_WIDTH - 1)); + byte x2 = beatsin8(23 + speed, 0, (MATRIX_WIDTH - 1)); + byte x3 = beatsin8(27 + speed, 0, (MATRIX_WIDTH - 1)); + byte x4 = beatsin8(31 + speed, 0, (MATRIX_WIDTH - 1)); + byte x5 = beatsin8(33 + speed, 0, (MATRIX_WIDTH - 1)); + + byte y1 = beatsin8(20 + speed, 0, (MATRIX_HEIGHT - 1)); + byte y2 = beatsin8(26 + speed, 0, (MATRIX_HEIGHT - 1)); + byte y3 = beatsin8(15 + speed, 0, (MATRIX_HEIGHT - 1)); + byte y4 = beatsin8(27 + speed, 0, (MATRIX_HEIGHT - 1)); + byte y5 = beatsin8(30 + speed, 0, (MATRIX_HEIGHT - 1)); + + CRGB color = CHSV(hue, 255, 255); + + fadeAllChannelsToBlackBy(80); + + g()->drawLine(x1, y1, x2, y2, color); + g()->drawLine(x2, y2, x3, y3, color); + g()->drawLine(x3, y3, x1, y1, color); + g()->drawLine(x4, y4, x1, y1, color); + g()->drawLine(x4, y4, x2, y2, color); + g()->drawLine(x4, y4, x3, y3, color); + + g()->blur2d(g()->leds, MATRIX_WIDTH-1, 0, MATRIX_HEIGHT-1, 0, 8); + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index e31f2f006..5fc668f07 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,6 +358,7 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif + ADD_EFFECT(EFFECT_MATRIX_SMFLYING, PatternSMFlying); ADD_EFFECT(EFFECT_MATRIX_SMSIN_DOTS, PatternSMSinDots); // ADD_EFFECT(EFFECT_MATRIX_SMPATTERN_TRICK, PatternSMSunRadiation); // ADD_EFFECT(EFFECT_MATRIX_SMPATTERN_TRICK, PatternSMPatternTrick); From 0adf9c5a97b11ebd3403ce5dc283b53e9aa0d6eb Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 01:36:40 -0500 Subject: [PATCH 060/168] Add Flying --- include/effects/matrix/PatternSMFlying.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/effects/matrix/PatternSMFlying.h b/include/effects/matrix/PatternSMFlying.h index 3bdf56840..446e09a77 100644 --- a/include/effects/matrix/PatternSMFlying.h +++ b/include/effects/matrix/PatternSMFlying.h @@ -62,7 +62,7 @@ class PatternSMFlying : public LEDStripEffect g()->drawLine(x4, y4, x2, y2, color); g()->drawLine(x4, y4, x3, y3, color); - g()->blur2d(g()->leds, MATRIX_WIDTH-1, 0, MATRIX_HEIGHT-1, 0, 8); + g()->blur2d(g()->leds, MATRIX_WIDTH - 1, 0, MATRIX_HEIGHT - 1, 0, 8); } #if ENABLE_AUDIO From e806c3c7ab2ef03cf2049a480975529956b25592 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 02:57:04 -0500 Subject: [PATCH 061/168] Add Meta Balls --- include/effectdependencies.h | 3 +- include/effects.h | 1 + include/effects/matrix/PatternSMMetaBalls.h | 76 +++++++++++++++++++++ src/effects.cpp | 5 +- 4 files changed, 82 insertions(+), 3 deletions(-) create mode 100644 include/effects/matrix/PatternSMMetaBalls.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 8427e173d..b501e2571 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,10 +86,11 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif + #include "effects/matrix/PatternSMMetaBalls.h" +#if BOOGER #include "effects/matrix/PatternSMFlying.h" #include "effects/matrix/PatternSMSinDots.h" #include "effects/matrix/PatternSMSunRadiation.h" -#if BOOGER #include "effects/matrix/PatternSMPatternTrick.h" #include "effects/matrix/PatternSMGravityBalls.h" #include "effects/matrix/PatternSMGoogleNexus.h" diff --git a/include/effects.h b/include/effects.h index 8ed946ed1..15f65673b 100644 --- a/include/effects.h +++ b/include/effects.h @@ -157,6 +157,7 @@ #define EFFECT_MATRIX_SMSUN_RADIATION 184 #define EFFECT_MATRIX_SMSIN_DOTS 185 #define EFFECT_MATRIX_SMFLYING 186 +#define EFFECT_MATRIX_SMMETA_BALLS 187 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMMetaBalls.h b/include/effects/matrix/PatternSMMetaBalls.h new file mode 100644 index 000000000..31fb10c33 --- /dev/null +++ b/include/effects/matrix/PatternSMMetaBalls.h @@ -0,0 +1,76 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" + +// Derived from https://wokwi.com/projects/289218075224441356 +// N Glowing balls in orbit around each other around a rotating plane. + +#if ENABLE_AUDIO +class PatternSMMetaBalls : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMMetaBalls : public LEDStripEffect +#endif +{ + private: + uint8_t bx[5]; + uint8_t by[5]; + + byte dist(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2) { + int a = y2 - y1; + int b = x2 - x1; + a *= a; + b *= b; + // byte dist = 220 / (sqrt16(a + b) + 1); + // Avoid a div/0 crash. + byte dist = 220 / (sqrt16(a + b + 1)); + return dist; + } + + public: + PatternSMMetaBalls() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMMETA_BALLS, "MetaBalls") { + } + + PatternSMMetaBalls(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { g()->Clear(); } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + for (uint8_t a = 0; a < 5; a++) { + bx[a] = beatsin8(15 + a * 2, 0, MATRIX_WIDTH - 1, 0, a * 32); + by[a] = beatsin8(18 + a * 2, 0, MATRIX_HEIGHT - 1, 0, a * 32); + } + for (int i = 0; i < MATRIX_WIDTH - 1; i++) { + for (int j = 0; j < MATRIX_HEIGHT - 1; j++) { + byte sum = dist(i, j, bx[0], by[0]); + for (uint8_t a = 1; a < 5; a++) { + sum = qadd8(sum, dist(i, j, bx[a], by[a])); + } + g()->leds[g()->xy(i, j)] = + ColorFromPalette(HeatColors_p, sum + 220, 254, LINEARBLEND); + } + } + + g()->blur2d(g()->leds, MATRIX_WIDTH - 1, 0, MATRIX_HEIGHT - 1, 0, 32); + fadeAllChannelsToBlackBy(10); + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 5fc668f07..09f01b424 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,8 +358,9 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMFLYING, PatternSMFlying); - ADD_EFFECT(EFFECT_MATRIX_SMSIN_DOTS, PatternSMSinDots); + ADD_EFFECT(EFFECT_MATRIX_SMFLYING, PatternSMMetaBalls); + // ADD_EFFECT(EFFECT_MATRIX_SMFLYING, PatternSMFlying); + // ADD_EFFECT(EFFECT_MATRIX_SMSIN_DOTS, PatternSMSinDots); // ADD_EFFECT(EFFECT_MATRIX_SMPATTERN_TRICK, PatternSMSunRadiation); // ADD_EFFECT(EFFECT_MATRIX_SMPATTERN_TRICK, PatternSMPatternTrick); // ADD_EFFECT(EFFECT_MATRIX_SMBUBBLES, PatternSMBubbles); From 058af3a84435dd170b3f571fe12e64d9b8535363 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 03:16:44 -0500 Subject: [PATCH 062/168] Add Twister --- include/effectdependencies.h | 3 +- include/effects.h | 1 + include/effects/matrix/PatternSMTwister.h | 97 +++++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMTwister.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index b501e2571..a8c6c42e2 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,8 +86,9 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMMetaBalls.h" + #include "effects/matrix/PatternSMTwister.h" #if BOOGER + #include "effects/matrix/PatternSMMetaBalls.h" #include "effects/matrix/PatternSMFlying.h" #include "effects/matrix/PatternSMSinDots.h" #include "effects/matrix/PatternSMSunRadiation.h" diff --git a/include/effects.h b/include/effects.h index 15f65673b..8c34aaf79 100644 --- a/include/effects.h +++ b/include/effects.h @@ -158,6 +158,7 @@ #define EFFECT_MATRIX_SMSIN_DOTS 185 #define EFFECT_MATRIX_SMFLYING 186 #define EFFECT_MATRIX_SMMETA_BALLS 187 +#define EFFECT_MATRIX_SMTWISTER 188 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMTwister.h b/include/effects/matrix/PatternSMTwister.h new file mode 100644 index 000000000..daf475ad3 --- /dev/null +++ b/include/effects/matrix/PatternSMTwister.h @@ -0,0 +1,97 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" + +// Derived from https://wokwi.com/projects/297732081748804105 +// High color barber-pole with varying Y-height stripes. +// Quite hypnotic. + +#if ENABLE_AUDIO +class PatternSMTwister : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMTwister : public LEDStripEffect +#endif +{ + private: + void mydrawLine(byte x, byte x1, byte y, CHSV color, bool dot, bool grad, + byte numline, byte side, byte sinOff, + uint16_t a) { // my ugly hori line draw function ))) + + byte steps = abs8(x1 - x) + 1; + + for (uint16_t i = 1; i <= steps; i++) { + byte dx = lerp8by8(x1, x, i * 255 / steps); + uint16_t index = g()->xy(dx, y); + g()->leds[index] = color; + if (grad) + g()->leds[index] %= + (sin8(numline * 8 + side * 64 + a + sinOff) + i * 255 / steps) / + 2; // for draw gradient line + } + if (dot) { // add white point at the ends of line + g()->leds[g()->xy(x, y)] = CRGB::Black; + g()->leds[g()->xy(x1, y)] = CRGB::Black; + } + } + + public: + PatternSMTwister() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMTWISTER, "Twister") { + } + + PatternSMTwister(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { g()->Clear(); } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + uint16_t a = millis() / 10; + LEDS.clear(); + + for (uint16_t i = 0; i < MATRIX_HEIGHT; i++) { + byte sinOff = sin8(i * 8 / PI + cos8(a / 2 + i) / 4 + a / 3); + + byte x1 = sin8(sinOff + a) * (MATRIX_WIDTH) / 255; + byte x2 = sin8(sinOff + a + 64) * (MATRIX_WIDTH) / 255; + byte x3 = sin8(sinOff + a + 128) * (MATRIX_WIDTH) / 255; + byte x4 = sin8(sinOff + a + 192) * (MATRIX_WIDTH) / 255; + x1 = x1 >= MATRIX_WIDTH ? (MATRIX_WIDTH - 1) : x1; + x2 = x2 >= MATRIX_WIDTH ? (MATRIX_WIDTH - 1) : x2; + x3 = x3 >= MATRIX_WIDTH ? (MATRIX_WIDTH - 1) : x3; + x4 = x4 >= MATRIX_WIDTH ? (MATRIX_WIDTH - 1) : x4; + + byte hueColor = sin8(a / 20); + if (x1 < x2) + mydrawLine(x1, x2, i, CHSV(hueColor, 255, 255), 1, 1, i, 0, sinOff, a); + if (x2 < x3) + mydrawLine(x2, x3, i, CHSV(hueColor + 64, 255, 255), 1, 1, i, 1, sinOff, + a); + if (x3 < x4) + mydrawLine(x3, x4, i, CHSV(hueColor + 128, 255, 255), 1, 1, i, 2, + sinOff, a); + if (x4 < x1) + mydrawLine(x4, x1, i, CHSV(hueColor + 192, 255, 255), 1, 1, i, 3, + sinOff, a); + } + + fadeAllChannelsToBlackBy(60); + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 09f01b424..5441fa029 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMFLYING, PatternSMMetaBalls); + ADD_EFFECT(EFFECT_MATRIX_SMTWISTER, PatternSMTwister); + // ADD_EFFECT(EFFECT_MATRIX_SMFLYING, PatternSMMetaBalls); // ADD_EFFECT(EFFECT_MATRIX_SMFLYING, PatternSMFlying); // ADD_EFFECT(EFFECT_MATRIX_SMSIN_DOTS, PatternSMSinDots); // ADD_EFFECT(EFFECT_MATRIX_SMPATTERN_TRICK, PatternSMSunRadiation); From 8d61ff95824ba5fcee742a9f84a8d41b556ed271 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 03:39:19 -0500 Subject: [PATCH 063/168] Add Twist --- include/effectdependencies.h | 1 + include/effects.h | 1 + include/effects/matrix/PatternSMTwist.h | 76 +++++++++++++++++++++++++ src/effects.cpp | 1 + 4 files changed, 79 insertions(+) create mode 100644 include/effects/matrix/PatternSMTwist.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index a8c6c42e2..e66707ea3 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,6 +86,7 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif + #include "effects/matrix/PatternSMTwist.h" #include "effects/matrix/PatternSMTwister.h" #if BOOGER #include "effects/matrix/PatternSMMetaBalls.h" diff --git a/include/effects.h b/include/effects.h index 8c34aaf79..2226388a0 100644 --- a/include/effects.h +++ b/include/effects.h @@ -159,6 +159,7 @@ #define EFFECT_MATRIX_SMFLYING 186 #define EFFECT_MATRIX_SMMETA_BALLS 187 #define EFFECT_MATRIX_SMTWISTER 188 +#define EFFECT_MATRIX_SMTWIST 189 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMTwist.h b/include/effects/matrix/PatternSMTwist.h new file mode 100644 index 000000000..51f10f2f9 --- /dev/null +++ b/include/effects/matrix/PatternSMTwist.h @@ -0,0 +1,76 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" +// Derived from https://editor.soulmatelights.com/gallery/2110-twist +// Honestly, it looks better on their emulator...probably something +// to improve here. +// +// A fine color-waving matrix of oscillating grids. + +#if ENABLE_AUDIO +class PatternSMTwist : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMTwist : public LEDStripEffect +#endif +{ + private: + const int BRIGHTNESS = 255; + byte hue = 0; + + void patt1(uint8_t i, uint8_t j, uint8_t color1, uint8_t color2) { + // leds[XY(i, j)] = CHSV(0, 255, 0); + g()->leds[g()->xy(i + 1, j)] = CHSV(color1, 255, BRIGHTNESS); + g()->leds[g()->xy(i + 1, j + 1)] = CHSV(color1, 255, BRIGHTNESS); + g()->leds[g()->xy(i, j + 1)] = CHSV(color2, 255, BRIGHTNESS); + } + + void patt2(uint8_t i, uint8_t j, uint8_t color1, uint8_t color2) { + // leds[XY(i, j)] = CHSV(0, 255, 0); + g()->leds[g()->xy(i + 1, j)] = CHSV(color1, 255, BRIGHTNESS); + g()->leds[g()->xy(i + 1, j + 1)] = CHSV(color2, 255, BRIGHTNESS); + g()->leds[g()->xy(i, j + 1)] = CHSV(color2, 255, BRIGHTNESS); + } + + public: + PatternSMTwist() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMTWIST, "Twist") { + } + + PatternSMTwist(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { g()->Clear(); } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + EVERY_N_MILLISECONDS(50) { hue++; } + + for (byte i = 0; i < MATRIX_WIDTH; i += 4) { + for (byte j = 0; j < MATRIX_HEIGHT; j += 4) { + patt1(i, j, 64 + j + hue, i + hue); + patt1(i + 2, j + 2, 64 + j + hue, i + hue); + patt2(i, j + 2, 64 + j + hue, i + hue); + patt2(i + 2, j, 64 + j + hue, i + hue); + } + } + // Without an aggressive fade, they all run together into squares. + fadeAllChannelsToBlackBy(200); + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 5441fa029..eb4c88ff2 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,6 +358,7 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif + ADD_EFFECT(EFFECT_MATRIX_SMTWISTER, PatternSMTwist); ADD_EFFECT(EFFECT_MATRIX_SMTWISTER, PatternSMTwister); // ADD_EFFECT(EFFECT_MATRIX_SMFLYING, PatternSMMetaBalls); // ADD_EFFECT(EFFECT_MATRIX_SMFLYING, PatternSMFlying); From db8d1c7c9110d39d36886d2cd3fe4e512d607da9 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 04:03:04 -0500 Subject: [PATCH 064/168] Add Spiro Pulse --- include/effectdependencies.h | 3 +- include/effects.h | 1 + include/effects/matrix/PatternSMSpiroPulse.h | 115 +++++++++++++++++++ src/effects.cpp | 5 +- 4 files changed, 121 insertions(+), 3 deletions(-) create mode 100644 include/effects/matrix/PatternSMSpiroPulse.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index e66707ea3..9c746d03a 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,9 +86,10 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif + #include "effects/matrix/PatternSMSpiroPulse.h" +#if BOOGER #include "effects/matrix/PatternSMTwist.h" #include "effects/matrix/PatternSMTwister.h" -#if BOOGER #include "effects/matrix/PatternSMMetaBalls.h" #include "effects/matrix/PatternSMFlying.h" #include "effects/matrix/PatternSMSinDots.h" diff --git a/include/effects.h b/include/effects.h index 2226388a0..58486f842 100644 --- a/include/effects.h +++ b/include/effects.h @@ -160,6 +160,7 @@ #define EFFECT_MATRIX_SMMETA_BALLS 187 #define EFFECT_MATRIX_SMTWISTER 188 #define EFFECT_MATRIX_SMTWIST 189 +#define EFFECT_MATRIX_SMSPIRO_PULSE 190 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMSpiroPulse.h b/include/effects/matrix/PatternSMSpiroPulse.h new file mode 100644 index 000000000..268568842 --- /dev/null +++ b/include/effects/matrix/PatternSMSpiroPulse.h @@ -0,0 +1,115 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" +// Derived from https://editor.soulmatelights.com/gallery/2164-spiro +// A spirograph that evolves the number of spines, becomign a yen-yang. +// +// This is one of relatively few that would look better at a higher refresh. + +#if ENABLE_AUDIO +class PatternSMSpiroPulse : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMSpiroPulse : public LEDStripEffect +#endif +{ + private: + static constexpr int CenterX = ((MATRIX_WIDTH / 2) - 0.5); + static constexpr int CenterY = ((MATRIX_HEIGHT / 2) - 0.5); + bool incenter; + byte AM = 1; + float Angle; + bool change = true; + + CRGB getPixColorXY(uint8_t x, uint8_t y) { + return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; + // return g()->leds[g()->xy(x, y)]; + } + + void drawPixelXY(int8_t x, int8_t y, CRGB color) { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) + return; + // Mesmerizer flips the Y axis here. + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT - 1 - (uint8_t)y); + g()->leds[thisPixel] = color; + } + + void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) + { + // if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть + // как-нибудь учитывались тут // зато с этой строчкой пропадает нижний ряд + // extract the fractional parts and derive their inverses + uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, + iy = 255 - yy; +// calculate the intensities for each affected pixel +#define WU_WEIGHT(a, b) ((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) + uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), + WU_WEIGHT(xx, yy)}; +#undef WU_WEIGHT + // multiply the intensities by the colour, and saturating-add them to the + // pixels + for (uint8_t i = 0; i < 4; i++) { + int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); + CRGB clr = getPixColorXY(xn, yn); + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + drawPixelXY(xn, yn, clr); + } + } + + public: + PatternSMSpiroPulse() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSPIRO_PULSE, "Spiro Pulse") { + } + + PatternSMSpiroPulse(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { g()->Clear(); } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + // fadeToBlackBy(leds, NUM_LEDS, 8); + fadeAllChannelsToBlackBy(8); + + float t = (float)millis() / 500.0f; + float CalcRad = (sin(t / 2) + 1); + if (CalcRad <= 0.001) { + if (!incenter) { + AM += ((change * 2) - 1); + Angle = 6.28318531 / AM; + if (AM <= 1) + change = true; + else if (AM >= (MATRIX_WIDTH + MATRIX_HEIGHT) / 2) + change = false; + } + incenter = 1; + } else + incenter = 0; + // Originally /3. Let's go all the way to the edges. + float radX = CalcRad * CenterY / 2; + float radY = CalcRad * CenterY / 2; + for (byte i = 0; i < AM; i++) { + drawPixelXYF((CenterX + sin(t + (Angle * i)) * radX), + (CenterY + cos(t + (Angle * i)) * radY), + ColorFromPalette(HeatColors_p, t * 10 + ((256 / AM) * i))); + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index eb4c88ff2..0de1b1f0a 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,8 +358,9 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMTWISTER, PatternSMTwist); - ADD_EFFECT(EFFECT_MATRIX_SMTWISTER, PatternSMTwister); + ADD_EFFECT(EFFECT_MATRIX_SMSPIRO_PULSE, PatternSMSpiroPulse); + // ADD_EFFECT(EFFECT_MATRIX_SMTWIST, PatternSMTwist); + // ADD_EFFECT(EFFECT_MATRIX_SMTWISTER, PatternSMTwister); // ADD_EFFECT(EFFECT_MATRIX_SMFLYING, PatternSMMetaBalls); // ADD_EFFECT(EFFECT_MATRIX_SMFLYING, PatternSMFlying); // ADD_EFFECT(EFFECT_MATRIX_SMSIN_DOTS, PatternSMSinDots); From fe3422180bab01fbbaba84b6ce0245fe9c48c8d6 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 04:36:03 -0500 Subject: [PATCH 065/168] Add Color Popcorn --- include/effectdependencies.h | 3 +- include/effects.h | 1 + .../effects/matrix/PatternSMColorPopcorn.h | 158 ++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 163 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMColorPopcorn.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 9c746d03a..24c12dcfe 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,8 +86,9 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMSpiroPulse.h" + #include "effects/matrix/PatternSMColorPopcorn.h" #if BOOGER + #include "effects/matrix/PatternSMSpiroPulse.h" #include "effects/matrix/PatternSMTwist.h" #include "effects/matrix/PatternSMTwister.h" #include "effects/matrix/PatternSMMetaBalls.h" diff --git a/include/effects.h b/include/effects.h index 58486f842..bf454356f 100644 --- a/include/effects.h +++ b/include/effects.h @@ -161,6 +161,7 @@ #define EFFECT_MATRIX_SMTWISTER 188 #define EFFECT_MATRIX_SMTWIST 189 #define EFFECT_MATRIX_SMSPIRO_PULSE 190 +#define EFFECT_MATRIX_SMCOLOR_POPCORN 191 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMColorPopcorn.h b/include/effects/matrix/PatternSMColorPopcorn.h new file mode 100644 index 000000000..5bc47bf42 --- /dev/null +++ b/include/effects/matrix/PatternSMColorPopcorn.h @@ -0,0 +1,158 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" +// Derived from +// https://editor.soulmatelights.com/gallery/2269-aaron-gotwalts-unknown-pleasure +// +// Colored, accelerated, gravity popcorn balls. + +#if ENABLE_AUDIO +class PatternSMColorPopcorn : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMColorPopcorn : public LEDStripEffect +#endif +{ + private: + CRGBPalette16 currentPalette = RainbowColors_p; + + uint8_t gravity = 16; +#define NUM_ROCKETS 8 + + typedef struct { + int32_t x, y, xd, yd; + } Rocket; + + Rocket rockets[NUM_ROCKETS]; + + void restart_rocket(uint8_t r) { + // rockets[r].x = random16() >> 4; + rockets[r].xd = random8() + 32; + if (rockets[r].x > (MATRIX_WIDTH / 2 * 256)) { + // leap towards the centre of the screen + rockets[r].xd = -rockets[r].xd; + } + // controls the leap height + rockets[r].yd = random8() * 5 + (MATRIX_HEIGHT - 1) * 1; + } + + void move() { + for (uint8_t r = 0; r < NUM_ROCKETS; r++) { + // add the X & Y velocities to the positions + rockets[r].x += rockets[r].xd; + rockets[r].y += rockets[r].yd; + + // bounce off the floor? + if (rockets[r].y < 0) { + rockets[r].yd = (-rockets[r].yd * 240) >> 8; + rockets[r].y = rockets[r].yd; + // settled on the floor? + if (rockets[r].y <= 200) { // if you change gravity, this will probably + // need changing too + restart_rocket(r); + } + } + + // bounce off the sides of the screen? + if (rockets[r].x < 0 || rockets[r].x > MATRIX_WIDTH * 256) { + rockets[r].xd = (-rockets[r].xd * 248) >> 8; + // force back onto the screen, otherwise they eventually sneak away + if (rockets[r].x < 0) { + rockets[r].x = rockets[r].xd; + rockets[r].yd += rockets[r].xd; + } else { + rockets[r].x = (MATRIX_WIDTH * 256) - rockets[r].xd; + } + } + + // gravity + rockets[r].yd -= gravity; + + // viscosity + rockets[r].xd = (rockets[r].xd * 224) >> 8; + rockets[r].yd = (rockets[r].yd * 224) >> 8; + } + } + + uint8_t wu_weight(uint8_t a, uint8_t b) { + // This idea came from Xiaolin Wu. + return ((a * b) + (a + b)) >> 8; + } + + void paint() { + // fill_solid(g()->leds, N_LEDS, CRGB::Black); + for (uint8_t r = 0; r < NUM_ROCKETS; r++) { + CRGB rgb = ColorFromPalette(currentPalette, r * (256 / NUM_ROCKETS), 255, + LINEARBLEND); + + // make the acme pink, because why not + if (-1 > rockets[r].yd < 1) rgb = CRGB::White; + + // extract the fractional parts and derive their inverses + uint8_t xx = rockets[r].x & 0xff; + uint8_t yy = rockets[r].y & 0xff; + uint8_t ix = 255 - xx; + uint8_t iy = 255 - yy; + uint8_t wu[4] = {wu_weight(ix, iy), wu_weight(xx, iy), wu_weight(ix, yy), + wu_weight(xx, yy)}; + + // multiply the intensities by the colour, and saturating-add them to the + // pixels + for (uint8_t i = 0; i < 4; i++) { + uint8_t x = (rockets[r].x >> 8) + (i & 1); + uint8_t y = (rockets[r].y >> 8) + ((i >> 1) & 1); + // Mesmerizer has swapped Y axis. + int32_t index = g()->xy(x, MATRIX_HEIGHT - 1 - y); + if (index < NUM_LEDS) { + g()->leds[index].r = qadd8(g()->leds[index].r, rgb.r * wu[i] >> 8); + g()->leds[index].g = qadd8(g()->leds[index].g, rgb.g * wu[i] >> 8); + g()->leds[index].b = qadd8(g()->leds[index].b, rgb.b * wu[i] >> 8); + } // else warn... + } + } + } + + bool isSetup = false; + + public: + PatternSMColorPopcorn() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMCOLOR_POPCORN, "Color Popcorn") { + } + + PatternSMColorPopcorn(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { + g()->Clear(); + for (uint8_t r = 0; r < NUM_ROCKETS; r++) { + rockets[r].x = random8() * MATRIX_WIDTH - 1; + rockets[r].y = random8() * MATRIX_HEIGHT - 1; + } + } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + fadeToBlackBy(g()->leds, NUM_LEDS, 60); + + EVERY_N_MILLISECONDS(16) { + move(); + paint(); + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 0de1b1f0a..5e1804eb7 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMSPIRO_PULSE, PatternSMSpiroPulse); + ADD_EFFECT(EFFECT_MATRIX_SMCOLOR_POPCORN, PatternSMColorPopcorn); + //ADD_EFFECT(EFFECT_MATRIX_SMSPIRO_PULSE, PatternSMSpiroPulse); // ADD_EFFECT(EFFECT_MATRIX_SMTWIST, PatternSMTwist); // ADD_EFFECT(EFFECT_MATRIX_SMTWISTER, PatternSMTwister); // ADD_EFFECT(EFFECT_MATRIX_SMFLYING, PatternSMMetaBalls); From 1f15ff1b087c72d7d5a843cc79f16c69218cd9e0 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 04:46:26 -0500 Subject: [PATCH 066/168] Add PSP Cloud --- include/effectdependencies.h | 3 +- include/effects.h | 1 + include/effects/matrix/PatternSMPSPCloud.h | 68 ++++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMPSPCloud.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 24c12dcfe..2e4aa4c34 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,8 +86,9 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMColorPopcorn.h" + #include "effects/matrix/PatternSMPSPCloud.h" #if BOOGER + #include "effects/matrix/PatternSMColorPopcorn.h" #include "effects/matrix/PatternSMSpiroPulse.h" #include "effects/matrix/PatternSMTwist.h" #include "effects/matrix/PatternSMTwister.h" diff --git a/include/effects.h b/include/effects.h index bf454356f..fb4f6751e 100644 --- a/include/effects.h +++ b/include/effects.h @@ -162,6 +162,7 @@ #define EFFECT_MATRIX_SMTWIST 189 #define EFFECT_MATRIX_SMSPIRO_PULSE 190 #define EFFECT_MATRIX_SMCOLOR_POPCORN 191 +#define EFFECT_MATRIX_SMPSP_CLOUD 192 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMPSPCloud.h b/include/effects/matrix/PatternSMPSPCloud.h new file mode 100644 index 000000000..e16e01a78 --- /dev/null +++ b/include/effects/matrix/PatternSMPSPCloud.h @@ -0,0 +1,68 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" + +// Derived from https://editor.soulmatelights.com/gallery/2265-stepkos-psp +// +// Horizontally scrolling cloud. + +#if ENABLE_AUDIO +class PatternSMPSPCloud : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMPSPCloud : public LEDStripEffect +#endif +{ + private: + uint8_t col = 150; + int xadj = (256 / MATRIX_HEIGHT) << 8; + + public: + PatternSMPSPCloud() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMPSP_CLOUD, "PSP Cloud") { + } + + PatternSMPSPCloud(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { g()->Clear(); } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + uint32_t t = millis() << 5; + for (uint8_t x = 0; x < MATRIX_WIDTH; x++) { + uint16_t h1 = + map(inoise16(x * xadj + t), 0, 65535, 0, MATRIX_HEIGHT << 8); + uint16_t h2 = map(inoise16(0, 35550, x * xadj + t), 0, 65535, 0, + MATRIX_HEIGHT << 8); + uint8_t bh1 = uint8_t(h1 >> 8); + uint8_t bh2 = uint8_t(h2 >> 8); + for (uint8_t y = 0; y < MATRIX_HEIGHT; y++) { + g()->leds[g()->xy(x, y)] = + CHSV(col, map(y + x, 0, MATRIX_HEIGHT + MATRIX_WIDTH - 1, 255, 32), + map(x - (MATRIX_HEIGHT - 1 - y), 0, MATRIX_WIDTH - 1, 196, + 255)) + + CHSV(0, 0, (y < bh1) ? map(y, 0, bh1, 64, 256) : 0) + + CHSV(0, 0, (y < bh2) ? map(y, 0, bh2, 64, 256) : 0); + } + g()->leds[g()->xy(x, bh1)] += CHSV(0, 0, (h1 % 256)); + g()->leds[g()->xy(x, bh2)] += CHSV(0, 0, (h2 % 256)); + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 5e1804eb7..3e19d7472 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMCOLOR_POPCORN, PatternSMColorPopcorn); + ADD_EFFECT(EFFECT_MATRIX_SMPSP_CLOUD, PatternSMPSPCloud); + // ADD_EFFECT(EFFECT_MATRIX_SMCOLOR_POPCORN, PatternSMColorPopcorn); //ADD_EFFECT(EFFECT_MATRIX_SMSPIRO_PULSE, PatternSMSpiroPulse); // ADD_EFFECT(EFFECT_MATRIX_SMTWIST, PatternSMTwist); // ADD_EFFECT(EFFECT_MATRIX_SMTWISTER, PatternSMTwister); From 3d812cdfcc55a484d16f7b03a9bd8fa263086d80 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 04:58:42 -0500 Subject: [PATCH 067/168] Add Eye Tunnel --- include/effectdependencies.h | 3 +- include/effects.h | 1 + include/effects/matrix/PatternSMEyeTunnel.h | 142 ++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 147 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMEyeTunnel.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 2e4aa4c34..83db5f20c 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,8 +86,9 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMPSPCloud.h" + #include "effects/matrix/PatternSMEyeTunnel.h" #if BOOGER + #include "effects/matrix/PatternSMPSPCloud.h" #include "effects/matrix/PatternSMColorPopcorn.h" #include "effects/matrix/PatternSMSpiroPulse.h" #include "effects/matrix/PatternSMTwist.h" diff --git a/include/effects.h b/include/effects.h index fb4f6751e..88bf124be 100644 --- a/include/effects.h +++ b/include/effects.h @@ -163,6 +163,7 @@ #define EFFECT_MATRIX_SMSPIRO_PULSE 190 #define EFFECT_MATRIX_SMCOLOR_POPCORN 191 #define EFFECT_MATRIX_SMPSP_CLOUD 192 +#define EFFECT_MATRIX_SMEYE_TUNNEL 193 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMEyeTunnel.h b/include/effects/matrix/PatternSMEyeTunnel.h new file mode 100644 index 000000000..cbb08af66 --- /dev/null +++ b/include/effects/matrix/PatternSMEyeTunnel.h @@ -0,0 +1,142 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" + +// Derived from https://editor.soulmatelights.com/gallery/2238-something +// +// Infinite depth eyeball tunnel. + +#if ENABLE_AUDIO +class PatternSMEyeTunnel : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMEyeTunnel : public LEDStripEffect +#endif +{ + private: + void wu_pixel(int16_t x, int16_t y, CRGB* col) { + // extract the fractional parts and derive their inverses + uint8_t xx = x & 0xff, yy = y & 0xff, ix = 255 - xx, iy = 255 - yy; +// calculate the intensities for each affected pixel +#define WU_WEIGHT(a, b) ((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) + uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), + WU_WEIGHT(xx, yy)}; +#undef WU_WEIGHT + // multiply the intensities by the colour, and saturating-add them to the + // pixels + for (uint8_t i = 0; i < 4; i++) { + int16_t local_x = (x >> 8) + (i & 1); + int16_t local_y = (y >> 8) + ((i >> 1) & 1); + int16_t xy = g()->xy(local_x, local_y); + if (xy < 0 || xy > NUM_LEDS) continue; + g()->leds[xy].r = qadd8(g()->leds[xy].r, col->r * wu[i] >> 8); + g()->leds[xy].g = qadd8(g()->leds[xy].g, col->g * wu[i] >> 8); + g()->leds[xy].b = qadd8(g()->leds[xy].b, col->b * wu[i] >> 8); + } + } + + // from: https://github.com/FastLED/FastLED/pull/202 + CRGB ColorFromPaletteExtended(const CRGBPalette16& pal, uint16_t index, + uint8_t brightness, TBlendType blendType) { + // Extract the four most significant bits of the index as a palette index. + uint8_t index_4bit = (index >> 12); + // Calculate the 8-bit offset from the palette index. + uint8_t offset = (uint8_t)(index >> 4); + // Get the palette entry from the 4-bit index + const CRGB* entry = &(pal[0]) + index_4bit; + uint8_t red1 = entry->red; + uint8_t green1 = entry->green; + uint8_t blue1 = entry->blue; + + uint8_t blend = offset && (blendType != NOBLEND); + if (blend) { + if (index_4bit == 15) { + entry = &(pal[0]); + } else { + entry++; + } + + // Calculate the scaling factor and scaled values for the lower palette + // value. + uint8_t f1 = 255 - offset; + red1 = scale8_LEAVING_R1_DIRTY(red1, f1); + green1 = scale8_LEAVING_R1_DIRTY(green1, f1); + blue1 = scale8_LEAVING_R1_DIRTY(blue1, f1); + + // Calculate the scaled values for the neighbouring palette value. + uint8_t red2 = entry->red; + uint8_t green2 = entry->green; + uint8_t blue2 = entry->blue; + red2 = scale8_LEAVING_R1_DIRTY(red2, offset); + green2 = scale8_LEAVING_R1_DIRTY(green2, offset); + blue2 = scale8_LEAVING_R1_DIRTY(blue2, offset); + cleanup_R1(); + + // These sums can't overflow, so no qadd8 needed. + red1 += red2; + green1 += green2; + blue1 += blue2; + } + if (brightness != 255) { + // nscale8x3_video(red1, green1, blue1, brightness); + nscale8x3(red1, green1, blue1, brightness); + } + + return CRGB(red1, green1, blue1); + } + + public: + PatternSMEyeTunnel() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMEYE_TUNNEL, "Eye Tunnel") { + } + + PatternSMEyeTunnel(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { g()->Clear(); } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + g()->Clear(); + float ms = millis() / 750.f; + const float kHalfWidth = MATRIX_WIDTH / 2; + const float kHalfHeight = MATRIX_HEIGHT / 2; + + const float density = 1.1175f + 0.0275f * sinf(ms * 1.09f); + for (float y = 0; y <= kHalfHeight + 2; y += density) + for (float x = 0; x <= kHalfWidth + 2; x += density) { + float hyp = hypotf(x, y) * -3.f; + float fx = sinf(ms + hyp / 8.f) * 84.f; + float fy = cosf(ms * .78f + hyp / 8.f) * 224.f; + CRGB col = ColorFromPaletteExtended( + HeatColors_p, (ms * 24.f + hyp * 4.f) * 256.f, 255, LINEARBLEND); + wu_pixel(256 * (x + kHalfWidth) + fx, 256 * (y + kHalfHeight) + fy, + &col); + if (x) + wu_pixel(256 * (-x + kHalfWidth) + fx, 256 * (y + kHalfHeight) + fy, + &col); + if (y) + wu_pixel(256 * (x + kHalfWidth) + fx, 256 * (-y + kHalfHeight) + fy, + &col); + if (x && y) + wu_pixel(256 * (-x + kHalfWidth) + fx, 256 * (-y + kHalfHeight) + fy, + &col); + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 3e19d7472..921b604db 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMPSP_CLOUD, PatternSMPSPCloud); + ADD_EFFECT(EFFECT_MATRIX_SMEYE_TUNNEL, PatternSMEyeTunnel); + // ADD_EFFECT(EFFECT_MATRIX_SMPSP_CLOUD, PatternSMPSPCloud); // ADD_EFFECT(EFFECT_MATRIX_SMCOLOR_POPCORN, PatternSMColorPopcorn); //ADD_EFFECT(EFFECT_MATRIX_SMSPIRO_PULSE, PatternSMSpiroPulse); // ADD_EFFECT(EFFECT_MATRIX_SMTWIST, PatternSMTwist); From 93d1d984b342fae5a3646fa53459009152447c38 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 07:35:02 -0500 Subject: [PATCH 068/168] Add Lightning --- include/effectdependencies.h | 3 +- include/effects.h | 1 + include/effects/matrix/PatternSMLightning.h | 93 +++++++++++++++++++++ src/effects.cpp | 3 +- 4 files changed, 98 insertions(+), 2 deletions(-) create mode 100644 include/effects/matrix/PatternSMLightning.h diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 83db5f20c..2b664fdca 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -86,8 +86,9 @@ #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" #endif - #include "effects/matrix/PatternSMEyeTunnel.h" + #include "effects/matrix/PatternSMLightning.h" #if BOOGER + #include "effects/matrix/PatternSMEyeTunnel.h" #include "effects/matrix/PatternSMPSPCloud.h" #include "effects/matrix/PatternSMColorPopcorn.h" #include "effects/matrix/PatternSMSpiroPulse.h" diff --git a/include/effects.h b/include/effects.h index 88bf124be..ad8c03005 100644 --- a/include/effects.h +++ b/include/effects.h @@ -164,6 +164,7 @@ #define EFFECT_MATRIX_SMCOLOR_POPCORN 191 #define EFFECT_MATRIX_SMPSP_CLOUD 192 #define EFFECT_MATRIX_SMEYE_TUNNEL 193 +#define EFFECT_MATRIX_SMLIGHTNING 194 // 999999rry Night star variations #define EFFECT_STAR 1 diff --git a/include/effects/matrix/PatternSMLightning.h b/include/effects/matrix/PatternSMLightning.h new file mode 100644 index 000000000..d539ab769 --- /dev/null +++ b/include/effects/matrix/PatternSMLightning.h @@ -0,0 +1,93 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" + +// Adapted from https://editor.soulmatelights.com/gallery/1004-amazing-lightning +// +// Probably best with a diffuser. + +#if ENABLE_AUDIO +class PatternSMLightning : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMLightning : public LEDStripEffect +#endif +{ + private: + uint8_t call = 0; // time + uint8_t aux0 = 127; // root position + uint8_t aux1 = 4; // how many lines + + // all based on perlin noise - nice! + int RANDOM(const uint8_t i, const int y) { + return inoise8_raw(aux0 * 77 + (i + 1) * 199, y * 33) * 2; + } + + public: + PatternSMLightning() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMLIGHTNING, "Lightning") { + } + + PatternSMLightning(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { g()->Clear(); } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + uint8_t matrixWidth = MATRIX_WIDTH; + uint8_t matrixHeight = MATRIX_HEIGHT; + + g()->Clear(); + + call += aux1; + if (call > 250) { + call = 0; + if (aux1 > 1) { + aux1 = 1; + } else { + aux1 = 4; + aux0 = map8(random8(), 64, 192); + fill_solid(g()->leds, matrixWidth * matrixHeight, CRGB::Black); + } + } + + if (call == 0 || call == 20 || call == 50 && aux1 == 1) { // draw main line + int y = matrixHeight; + int16_t x0 = aux0 - RANDOM(0, y); + for (; y >= 0; y--) { + auto x = x0 + RANDOM(0, y); + g()->leds[g()->xy(x * matrixWidth / 255, y)] = CRGB::White; + } + + } else if (aux1 != 1) { // draw only parts of 'searching' lines + for (int i = 0; i < aux1; i++) { + int y = matrixHeight; + int16_t x0 = + aux0 - RANDOM(i, y); // substract the first offset so that all + // lines come from the same place (aux0) + y = map8(255 - call, 0, matrixHeight); + auto x = x0 + RANDOM(i, y); + g()->leds[g()->xy(x * matrixWidth / 255, y)] = CRGB::Gray; + } + } + + nscale8(g()->leds, matrixWidth * matrixHeight, 250); + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/src/effects.cpp b/src/effects.cpp index 921b604db..0a6fb9c57 100644 --- a/src/effects.cpp +++ b/src/effects.cpp @@ -358,7 +358,8 @@ void LoadEffectFactories() ADD_EFFECT(EFFECT_MATRIX_PULSAR, PatternPulsar); #endif - ADD_EFFECT(EFFECT_MATRIX_SMEYE_TUNNEL, PatternSMEyeTunnel); + ADD_EFFECT(EFFECT_MATRIX_SMLIGHTNING, PatternSMLightning); + // ADD_EFFECT(EFFECT_MATRIX_SMEYE_TUNNEL, PatternSMEyeTunnel); // ADD_EFFECT(EFFECT_MATRIX_SMPSP_CLOUD, PatternSMPSPCloud); // ADD_EFFECT(EFFECT_MATRIX_SMCOLOR_POPCORN, PatternSMColorPopcorn); //ADD_EFFECT(EFFECT_MATRIX_SMSPIRO_PULSE, PatternSMSpiroPulse); From 0daa80005881c27a6a55c2fd04258cc549e07242 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 08:02:48 -0500 Subject: [PATCH 069/168] Compile slightly more --- include/effectdependencies.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 2b664fdca..7d6100189 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -60,9 +60,9 @@ #define BOOGER 0 #if USE_MATRIX #include "ledmatrixgfx.h" -#if BOOGER #include "effects/strip/misceffects.h" #include "effects/matrix/PatternBalls.h" +#if BOOGER #include "effects/matrix/PatternSMStrobeDiffusion.h" #include "effects/matrix/PatternSMOneRing.h" #include "effects/matrix/PatternSMLumenjerPalette.h" @@ -87,7 +87,6 @@ #include "effects/matrix/PatternSMSpiro.h" #endif #include "effects/matrix/PatternSMLightning.h" -#if BOOGER #include "effects/matrix/PatternSMEyeTunnel.h" #include "effects/matrix/PatternSMPSPCloud.h" #include "effects/matrix/PatternSMColorPopcorn.h" @@ -95,13 +94,18 @@ #include "effects/matrix/PatternSMTwist.h" #include "effects/matrix/PatternSMTwister.h" #include "effects/matrix/PatternSMMetaBalls.h" +#if BOOGER #include "effects/matrix/PatternSMFlying.h" +#endif + #include "effects/matrix/PatternSMSinDots.h" #include "effects/matrix/PatternSMSunRadiation.h" #include "effects/matrix/PatternSMPatternTrick.h" #include "effects/matrix/PatternSMGravityBalls.h" #include "effects/matrix/PatternSMGoogleNexus.h" +#if BOOGER #include "effects/matrix/PatternSMHolidayLights.h" +#endif #include "effects/matrix/PatternSMStarshipTroopers.h" #include "effects/matrix/PatternSMGamma.h" // A Small block of 3D-ish effects using Particle systems or Boids. @@ -116,6 +120,7 @@ #include "effects/matrix/PatternSMXorCircles.h" #include "effects/matrix/PatternSMWalkingMachine.h" #include "effects/matrix/PatternSMHypnosis.h" +#if BOOGER #include "effects/matrix/PatternSMRainbowTunnel.h" #include "effects/matrix/PatternSMRadialWave.h" #include "effects/matrix/PatternSMMirage.h" From a008c8e8c4d3828382c20ba45b0bb5ec239a34c2 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 08:08:17 -0500 Subject: [PATCH 070/168] Compile somewhat more. --- include/effectdependencies.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 7d6100189..6a87bb6c4 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -62,7 +62,7 @@ #include "ledmatrixgfx.h" #include "effects/strip/misceffects.h" #include "effects/matrix/PatternBalls.h" -#if BOOGER +#if 1 #include "effects/matrix/PatternSMStrobeDiffusion.h" #include "effects/matrix/PatternSMOneRing.h" #include "effects/matrix/PatternSMLumenjerPalette.h" @@ -72,11 +72,13 @@ #include "effects/matrix/PatternSMSinusoidSin16.h" #include "effects/matrix/PatternSMFireworks.h" #include "effects/matrix/PatternSMStarDeep.h" +#if BOOGER #include "effects/matrix/PatternSMMagma.h" #include "effects/matrix/PatternSMAmberRain.h" #include "effects/matrix/PatternSMFire2012.h" #include "effects/matrix/PatternSMFire2021.h" #include "effects/matrix/PatternSMWisp.h" +#endif #include "effects/matrix/PatternSMNoise.h" #include "effects/matrix/PatternSMFPicasso3in1.h" #include "effects/matrix/PatternSMSnakes.h" @@ -105,8 +107,8 @@ #include "effects/matrix/PatternSMGoogleNexus.h" #if BOOGER #include "effects/matrix/PatternSMHolidayLights.h" -#endif #include "effects/matrix/PatternSMStarshipTroopers.h" +#endif #include "effects/matrix/PatternSMGamma.h" // A Small block of 3D-ish effects using Particle systems or Boids. #include "effects/matrix/PatternSMBubbles.h" // Boids @@ -122,6 +124,7 @@ #include "effects/matrix/PatternSMHypnosis.h" #if BOOGER #include "effects/matrix/PatternSMRainbowTunnel.h" +#endif #include "effects/matrix/PatternSMRadialWave.h" #include "effects/matrix/PatternSMMirage.h" #include "effects/matrix/PatternSMMaze2.h" @@ -130,6 +133,7 @@ #include "effects/matrix/PatternSMAurora.h" #include "effects/matrix/PatternSMSmoke.h" #include "effects/matrix/PatternSMRainbowSwirl.h" +#if BOOGER #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" From dfe3b14a8598a5ca77370d4b22b673cefbab0129 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 08:46:02 -0500 Subject: [PATCH 071/168] Fixes to compile more globally --- include/effects/matrix/PatternSMFlying.h | 2 +- .../effects/matrix/PatternSMHolidayLights.h | 198 +++++----- include/effects/matrix/PatternSMRadialFire.h | 83 +++-- .../effects/matrix/PatternSMRainbowTunnel.h | 93 +++-- .../matrix/PatternSMStarshipTroopers.h | 339 ++++++++++-------- 5 files changed, 380 insertions(+), 335 deletions(-) diff --git a/include/effects/matrix/PatternSMFlying.h b/include/effects/matrix/PatternSMFlying.h index 446e09a77..2f1825820 100644 --- a/include/effects/matrix/PatternSMFlying.h +++ b/include/effects/matrix/PatternSMFlying.h @@ -37,7 +37,7 @@ class PatternSMFlying : public LEDStripEffect #endif static byte hue = 0; EVERY_N_MILLISECONDS(30) { hue++; } // 30 - speed of hue change -#define speed -5 // global speed of dots move + static constexpr int speed = -5; // global speed of dots move byte x1 = beatsin8(18 + speed, 0, (MATRIX_WIDTH - 1)); byte x2 = beatsin8(23 + speed, 0, (MATRIX_WIDTH - 1)); diff --git a/include/effects/matrix/PatternSMHolidayLights.h b/include/effects/matrix/PatternSMHolidayLights.h index 2db69cad9..0ad204670 100644 --- a/include/effects/matrix/PatternSMHolidayLights.h +++ b/include/effects/matrix/PatternSMHolidayLights.h @@ -1,129 +1,136 @@ #pragma once -#include "effects/strip/musiceffect.h" #include "effectmanager.h" +#include "effects/strip/musiceffect.h" -// Derived from https://editor.soulmatelights.com/gallery/552-festive-lighting-green-with-toys +// Derived from +// https://editor.soulmatelights.com/gallery/552-festive-lighting-green-with-toys #if ENABLE_AUDIO -class PatternSMHolidayLights : public BeatEffectBase, public LEDStripEffect +class PatternSMHolidayLights : public BeatEffectBase, + public LEDStripEffect #else class PatternSMHolidayLights : public LEDStripEffect #endif { -private: -//Holiday lights -//@stepko -//Merry Christmas and Happy New Year - -// updated by kostyamat (green with toys and any matrix size support) -#define WIDTH MATRIX_WIDTH -#define HEIGHT MATRIX_HEIGHT -#define speed (200/(HEIGHT-4)) -byte hue; -byte effId = 2; //1-3 - -const byte maxDim = max(WIDTH, HEIGHT); -const byte minDim = min(WIDTH, HEIGHT); -const byte width_adj = (WIDTH < HEIGHT ? (HEIGHT - WIDTH) /2 : 0); -const byte height_adj = (HEIGHT < WIDTH ? (WIDTH - HEIGHT) /2: 0); -const bool glitch = abs(WIDTH-HEIGHT) >= minDim/4; - -byte density = 50; // -byte fadingSpeed = 10; // -byte updateFromRGBWeight = 10; -const byte scaleToNumLeds = NUM_LEDS/256; - -CRGB RGBweight (uint16_t idx) { - return (g()->leds[idx].r + g()->leds[idx].g + g()->leds[idx].b); -} - -void confetti() { + private: + // Holiday lights + //@stepko + // Merry Christmas and Happy New Year + + // updated by kostyamat (green with toys and any matrix size support) + static constexpr int WIDTH = MATRIX_WIDTH; + static constexpr int HEIGHT = MATRIX_HEIGHT; + static constexpr int speed = (200 / (HEIGHT - 4)); + byte hue; + byte effId = 2; // 1-3 + + const byte maxDim = max(WIDTH, HEIGHT); + const byte minDim = min(WIDTH, HEIGHT); + const byte width_adj = (WIDTH < HEIGHT ? (HEIGHT - WIDTH) / 2 : 0); + const byte height_adj = (HEIGHT < WIDTH ? (WIDTH - HEIGHT) / 2 : 0); + const bool glitch = abs(WIDTH - HEIGHT) >= minDim / 4; + + byte density = 50; // + byte fadingSpeed = 10; // + byte updateFromRGBWeight = 10; + const byte scaleToNumLeds = NUM_LEDS / 256; + + CRGB RGBweight(uint16_t idx) { + return (g()->leds[idx].r + g()->leds[idx].g + g()->leds[idx].b); + } + + void confetti() { uint16_t idx = random16(NUM_LEDS); - for (byte i=0; i < scaleToNumLeds; i++) - if ( random8() < density) + for (byte i = 0; i < scaleToNumLeds; i++) + if (random8() < density) if (RGBweight(idx) < 10) g()->leds[idx] = random(48, 16777216); -} - -void drawPixelXYF_X(float x, uint16_t y, const CRGB &color) - { - //if (x<0 || y<0 || x>((float)WIDTH) || y>((float)HEIGHT)) return; - - // extract the fractional parts and derive their inverses - uint8_t xx = (x - (int)x) * 255, ix = 255 - xx; - // calculate the intensities for each affected pixel - uint8_t wu[2] = {ix, xx}; - // multiply the intensities by the colour, and saturating-add them to the pixels - for (int8_t i = 1; i >= 0; i--) { + } + + void drawPixelXYF_X(float x, uint16_t y, const CRGB& color) { + // if (x<0 || y<0 || x>((float)WIDTH) || y>((float)HEIGHT)) return; + + // extract the fractional parts and derive their inverses + uint8_t xx = (x - (int)x) * 255, ix = 255 - xx; + // calculate the intensities for each affected pixel + uint8_t wu[2] = {ix, xx}; + // multiply the intensities by the colour, and saturating-add them to the + // pixels + for (int8_t i = 1; i >= 0; i--) { int16_t xn = x + (i & 1); - CRGB clr = g()->leds[g()->xy(xn, HEIGHT-1-y)]; - if(xn>0 && xn<(int)WIDTH-1){ + CRGB clr = g()->leds[g()->xy(xn, HEIGHT - 1 - y)]; + if (xn > 0 && xn < (int)WIDTH - 1) { clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); - } else if(xn==0 || xn==(int)WIDTH-1) { + } else if (xn == 0 || xn == (int)WIDTH - 1) { clr.r = qadd8(clr.r, (color.r * 85) >> 8); clr.g = qadd8(clr.g, (color.g * 85) >> 8); clr.b = qadd8(clr.b, (color.b * 85) >> 8); } - g()->leds[g()->xy(xn, HEIGHT-1-y)] = clr; + g()->leds[g()->xy(xn, HEIGHT - 1 - y)] = clr; + } } + + byte y[HEIGHT]; + float x; + + void addGlitter(uint8_t chanceOfGlitter) { + if (random8() < chanceOfGlitter) + g()->leds[random16(NUM_LEDS)] = random(0, 16777215); } -byte y[HEIGHT]; -float x; - -void addGlitter(uint8_t chanceOfGlitter){ - if ( random8() < chanceOfGlitter) g()->leds[random16(NUM_LEDS)] = random(0, 16777215); -} - -void spruce() { - hue++; - // fadeToBlackBy(leds, NUM_LEDS, map(speed, 1, 255, 1, 10)); - fadeAllChannelsToBlackBy(map(speed, 1, 255, 1, 10)); - uint8_t z; - if (effId == 3) z = triwave8(hue); - else z = beatsin8(1, 1, 255); - for (uint8_t i = 0; i < minDim; i++) { - x = beatsin16(i * (map(speed, 1, 255, 3, 20)/*(NUM_LEDS/256)*/), - i * 2, - (minDim * 4 - 2) - (i * 2 + 2)); - if (effId == 2) - drawPixelXYF_X(x/4 + height_adj, i, random8(10) == 0 ? CHSV(random8(), random8(32, 255), 255) : CHSV(100, 255, map(speed, 1, 255, 128, 100))); + void spruce() { + hue++; + // fadeToBlackBy(leds, NUM_LEDS, map(speed, 1, 255, 1, 10)); + fadeAllChannelsToBlackBy(map(speed, 1, 255, 1, 10)); + uint8_t z; + if (effId == 3) + z = triwave8(hue); else - drawPixelXYF_X(x/4 + height_adj, i, CHSV(hue + i * z, 255, 255)); + z = beatsin8(1, 1, 255); + for (uint8_t i = 0; i < minDim; i++) { + x = beatsin16(i * (map(speed, 1, 255, 3, 20) /*(NUM_LEDS/256)*/), i * 2, + (minDim * 4 - 2) - (i * 2 + 2)); + if (effId == 2) + drawPixelXYF_X(x / 4 + height_adj, i, + random8(10) == 0 + ? CHSV(random8(), random8(32, 255), 255) + : CHSV(100, 255, map(speed, 1, 255, 128, 100))); + else + drawPixelXYF_X(x / 4 + height_adj, i, CHSV(hue + i * z, 255, 255)); + } + if (!(WIDTH & 0x01)) + g()->leds[g()->xy(WIDTH / 2 - ((millis() >> 9) & 0x01 ? 1 : 0), + minDim - 1 - ((millis() >> 8) & 0x01 ? 1 : 0))] = + CHSV(0, 255, 255); + else + g()->leds[g()->xy(WIDTH / 2, minDim - 1)] = + CHSV(0, (millis() >> 9) & 0x01 ? 0 : 255, 255); + + if (glitch) confetti(); } - if (!(WIDTH& 0x01)) - g()->leds[g()->xy(WIDTH/2 - ((millis()>>9) & 0x01 ? 1:0), minDim - 1 - ((millis()>>8) & 0x01 ? 1:0))] = CHSV(0, 255, 255); - else - g()->leds[g()->xy(WIDTH/2, minDim - 1)] = CHSV(0, (millis()>>9) & 0x01 ? 0 : 255, 255); - - if (glitch) confetti(); -} -public: - PatternSMHolidayLights() : + + public: + PatternSMHolidayLights() + : #if ENABLE_AUDIO - BeatEffectBase(1.50, 0.05), + BeatEffectBase(1.50, 0.05), #endif - LEDStripEffect(EFFECT_MATRIX_SMHOLIDAY_LIGHTS, "Holiday Lights") - { - } + LEDStripEffect(EFFECT_MATRIX_SMHOLIDAY_LIGHTS, "Holiday Lights") { + } - PatternSMHolidayLights(const JsonObjectConst& jsonObject) : + PatternSMHolidayLights(const JsonObjectConst& jsonObject) + : #if ENABLE_AUDIO - BeatEffectBase(1.50, 0.05), + BeatEffectBase(1.50, 0.05), #endif - LEDStripEffect(jsonObject) - { + LEDStripEffect(jsonObject) { } - virtual void Start() override - { - g()->Clear(); - } + virtual void Start() override { g()->Clear(); } - virtual void Draw() override - { + virtual void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif @@ -131,9 +138,6 @@ void spruce() { } #if ENABLE_AUDIO - virtual void HandleBeat(bool bMajor, float elapsed, float span) override - { - - } + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} #endif }; diff --git a/include/effects/matrix/PatternSMRadialFire.h b/include/effects/matrix/PatternSMRadialFire.h index e454395a9..1b0d7fac4 100644 --- a/include/effects/matrix/PatternSMRadialFire.h +++ b/include/effects/matrix/PatternSMRadialFire.h @@ -1,80 +1,79 @@ #pragma once -#include "effects/strip/musiceffect.h" #include "effectmanager.h" +#include "effects/strip/musiceffect.h" // Derived from https://editor.soulmatelights.com/gallery/1570-radialfire #if ENABLE_AUDIO -class PatternSMRadialFire : public BeatEffectBase, public LEDStripEffect +class PatternSMRadialFire : public BeatEffectBase, + public LEDStripEffect #else class PatternSMRadialFire : public LEDStripEffect #endif { -private: - static constexpr int LED_COLS = MATRIX_WIDTH; - static constexpr int LED_ROWS = MATRIX_HEIGHT; + private: + static constexpr int LED_COLS = MATRIX_WIDTH; + static constexpr int LED_ROWS = MATRIX_HEIGHT; #define C_X (LED_COLS / 2) #define C_Y (LED_ROWS / 2) -byte XY_angle[LED_COLS][LED_ROWS]; -byte XY_radius[LED_COLS][LED_ROWS]; -public: - PatternSMRadialFire() : + byte XY_angle[LED_COLS][LED_ROWS]; + byte XY_radius[LED_COLS][LED_ROWS]; + + public: + PatternSMRadialFire() + : #if ENABLE_AUDIO - BeatEffectBase(1.50, 0.05), + BeatEffectBase(1.50, 0.05), #endif - LEDStripEffect(EFFECT_MATRIX_SMRADIALFIRE, "Radial Fire") - { - } + LEDStripEffect(EFFECT_MATRIX_SMRADIALFIRE, "Radial Fire") { + } - PatternSMRadialFire(const JsonObjectConst& jsonObject) : + PatternSMRadialFire(const JsonObjectConst& jsonObject) + : #if ENABLE_AUDIO - BeatEffectBase(1.50, 0.05), + BeatEffectBase(1.50, 0.05), #endif - LEDStripEffect(jsonObject) - { + LEDStripEffect(jsonObject) { } - virtual void Start() override - { + virtual void Start() override { g()->Clear(); - for (int8_t x = -C_X; x < C_X + (LED_COLS % 2); x++) { + for (int8_t x = -C_X; x < C_X + (LED_COLS % 2); x++) { for (int8_t y = -C_Y; y < C_Y + (LED_ROWS % 2); y++) { XY_angle[x + C_X][y + C_Y] = 128 * (atan2(y, x) / PI); - XY_radius[x + C_X][y + C_Y] = hypot(x, y); //thanks Sutaburosu + XY_radius[x + C_X][y + C_Y] = hypot(x, y); // thanks Sutaburosu } } } - virtual void Draw() override - { + virtual void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif - static byte scaleX = 16; - static byte scaleY = 1; + static byte scaleX = 16; + static byte scaleY = 1; - static byte speed = 24; - static uint32_t t; - t += speed; - for (uint8_t x = 0; x < LED_COLS; x++) { - for (uint8_t y = 0; y < LED_ROWS; y++) { - byte angle = XY_angle[x][y]; - byte radius = XY_radius[x][y]; - int16_t Bri = inoise8(angle*scaleX, (radius * scaleY)-t ) - radius * (255 / LED_ROWS); - byte Col = Bri; - if (Bri < 0) Bri = 0; - if (Bri != 0) Bri = 256 - (Bri * 0.2); - nblend(g()->leds[g()->xy(x, y)], ColorFromPalette(HeatColors_p, Col, Bri), speed); + static byte speed = 24; + static uint32_t t; + t += speed; + for (uint8_t x = 0; x < LED_COLS; x++) { + for (uint8_t y = 0; y < LED_ROWS; y++) { + byte angle = XY_angle[x][y]; + byte radius = XY_radius[x][y]; + int16_t Bri = inoise8(angle * scaleX, (radius * scaleY) - t) - + radius * (255 / LED_ROWS); + byte Col = Bri; + if (Bri < 0) Bri = 0; + if (Bri != 0) Bri = 256 - (Bri * 0.2); + nblend(g()->leds[g()->xy(x, y)], + ColorFromPalette(HeatColors_p, Col, Bri), speed); + } } } -} #if ENABLE_AUDIO - virtual void HandleBeat(bool bMajor, float elapsed, float span) override - { - - } + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} #endif }; diff --git a/include/effects/matrix/PatternSMRainbowTunnel.h b/include/effects/matrix/PatternSMRainbowTunnel.h index 260bede47..c0c9ce7b2 100644 --- a/include/effects/matrix/PatternSMRainbowTunnel.h +++ b/include/effects/matrix/PatternSMRainbowTunnel.h @@ -1,84 +1,83 @@ #pragma once -#include "effects/strip/musiceffect.h" #include "effectmanager.h" +#include "effects/strip/musiceffect.h" #if ENABLE_AUDIO -class PatternSMRainbowTunnel : public BeatEffectBase, public LEDStripEffect +class PatternSMRainbowTunnel : public BeatEffectBase, + public LEDStripEffect #else class PatternSMRainbowTunnel : public LEDStripEffect #endif { -private: - //RadialRainbow -//Stepko and Sutaburosu -//23/12/21 + private: + // RadialRainbow + // Stepko and Sutaburosu + // 23/12/21 static constexpr int LED_COLS = MATRIX_WIDTH; static constexpr int LED_ROWS = MATRIX_HEIGHT; -bool setupm = 1; -const uint8_t C_X = LED_COLS / 2; -const uint8_t C_Y = LED_ROWS / 2; -const uint8_t mapp = 255 / LED_COLS; -struct { - uint8_t angle; - uint8_t radius; -} -rMap[LED_COLS][LED_ROWS]; -public: - PatternSMRainbowTunnel() : + bool setupm = 1; + const uint8_t C_X = LED_COLS / 2; + const uint8_t C_Y = LED_ROWS / 2; + const uint8_t mapp = 255 / LED_COLS; + struct { + uint8_t angle; + uint8_t radius; + } rMap[LED_COLS][LED_ROWS]; + + public: + PatternSMRainbowTunnel() + : #if ENABLE_AUDIO - BeatEffectBase(1.50, 0.05), + BeatEffectBase(1.50, 0.05), #endif - LEDStripEffect(EFFECT_MATRIX_SMRAINBOW_TUNNEL, "Rainbow Tunnel") - { - } + LEDStripEffect(EFFECT_MATRIX_SMRAINBOW_TUNNEL, "Rainbow Tunnel") { + } - PatternSMRainbowTunnel(const JsonObjectConst& jsonObject) : + PatternSMRainbowTunnel(const JsonObjectConst& jsonObject) + : #if ENABLE_AUDIO - BeatEffectBase(1.50, 0.05), + BeatEffectBase(1.50, 0.05), #endif - LEDStripEffect(jsonObject) - { + LEDStripEffect(jsonObject) { } - virtual void Start() override - { + virtual void Start() override { g()->Clear(); - for (int8_t x = -C_X; x < C_X + (LED_COLS % 2); x++) { + for (int8_t x = -C_X; x < C_X + (LED_COLS % 2); x++) { for (int8_t y = -C_Y; y < C_Y + (LED_ROWS % 2); y++) { rMap[x + C_X][y + C_Y].angle = 128 * (atan2(y, x) / PI); - rMap[x + C_X][y + C_Y].radius = hypot(x, y) * mapp; //thanks Sutaburosu + rMap[x + C_X][y + C_Y].radius = hypot(x, y) * mapp; // thanks + // Sutaburosu } } } - virtual void Draw() override - { + virtual void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif - static byte scaleX = 4; - static byte scaleY = 4; + static byte scaleX = 4; + static byte scaleY = 4; - static byte speed = 2; - static uint16_t t; - t += speed; - for (uint8_t x = 0; x < LED_COLS; x++) { - for (uint8_t y = 0; y < LED_ROWS; y++) { - byte angle = rMap[x][y].angle; - byte radius = rMap[x][y].radius; - g()->leds[g()->xy(x, y)] = CHSV((angle*scaleX)-t+(radius*scaleY), 255, constrain(radius*2,0,255)); + static byte speed = 2; + static uint16_t t; + t += speed; + for (uint8_t x = 0; x < LED_COLS; x++) { + for (uint8_t y = 0; y < LED_ROWS; y++) { + byte angle = rMap[x][y].angle; + byte radius = rMap[x][y].radius; + g()->leds[g()->xy(x, y)] = + CHSV((angle * scaleX) - t + (radius * scaleY), 255, + constrain(radius * 2, 0, 255)); + } } - } - // delay(20); + // delay(20); } #if ENABLE_AUDIO - virtual void HandleBeat(bool bMajor, float elapsed, float span) override - { - - } + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} #endif }; diff --git a/include/effects/matrix/PatternSMStarshipTroopers.h b/include/effects/matrix/PatternSMStarshipTroopers.h index fc60882bf..c0c87d83c 100644 --- a/include/effects/matrix/PatternSMStarshipTroopers.h +++ b/include/effects/matrix/PatternSMStarshipTroopers.h @@ -1,202 +1,245 @@ #pragma once -#include "effects/strip/musiceffect.h" #include "effectmanager.h" +#include "effects/strip/musiceffect.h" // Derived from https://editor.soulmatelights.com/gallery/839-starship-troopers - -static const TProgmemRGBPalette16 HolyLightsColors_p FL_PROGMEM = {0xff0000, 0xff4000, 0xff8000, 0xd6c000, 0xffff00, 0xc0ff00, 0x80ff00, 0x40ff00, 0x00ff00, 0x00c040, 0x008080, 0x0040c0, 0x0000ff, 0x4000c0, 0x800080, 0xc00040}; -static const TProgmemRGBPalette16 NeonColors_p FL_PROGMEM = {0x00b1d0, 0x0f93ec, 0x3572ff, 0x4157ff, 0x6162ff, 0x686cff, 0x7473ff, 0x8689e5, 0x9e9dc6, 0x9694ac, 0x979b9b, 0x888b8c, 0x767680, 0x596160, 0x6c736f, 0x7b7359}; -static const TProgmemRGBPalette16 PotassiumFireColors_p FL_PROGMEM = {CRGB::Black, 0x0f001a, 0x1e0034, 0x2d004e, 0x3c0068, CRGB::Indigo, 0x591694, 0x682da6, 0x7643b7, 0x855ac9, CRGB::MediumPurple, 0xa95ecd, 0xbe4bbe, 0xd439b0, 0xe926a1, CRGB::DeepPink}; //* Violet -static const TProgmemRGBPalette16 WaterfallColors_p FL_PROGMEM = {0x000000, 0x060707, 0x101110, 0x151717, 0x1C1D22, 0x242A28, 0x363B3A, 0x313634, 0x505552, 0x6B6C70, 0x98A4A1, 0xC1C2C1, 0xCACECF, 0xCDDEDD, 0xDEDFE0, 0xB2BAB9}; //* Orange - #if ENABLE_AUDIO -class PatternSMStarshipTroopers : public BeatEffectBase, public LEDStripEffect +class PatternSMStarshipTroopers : public BeatEffectBase, + public LEDStripEffect #else class PatternSMStarshipTroopers : public LEDStripEffect #endif { -private: -static constexpr int WIDTH = MATRIX_WIDTH; -static constexpr int HEIGHT = MATRIX_HEIGHT; -static constexpr int LED_COLS = MATRIX_WIDTH; -const float SPEED_ADJ = (float)NUM_LEDS /256; + private: + static constexpr int WIDTH = MATRIX_WIDTH; + static constexpr int HEIGHT = MATRIX_HEIGHT; + static constexpr int LED_COLS = MATRIX_WIDTH; + static constexpr TProgmemRGBPalette16 HolyLightsColors_p FL_PROGMEM = { + 0xff0000, 0xff4000, 0xff8000, 0xd6c000, 0xffff00, 0xc0ff00, + 0x80ff00, 0x40ff00, 0x00ff00, 0x00c040, 0x008080, 0x0040c0, + 0x0000ff, 0x4000c0, 0x800080, 0xc00040}; + static constexpr TProgmemRGBPalette16 NeonColors_p FL_PROGMEM = { + 0x00b1d0, 0x0f93ec, 0x3572ff, 0x4157ff, 0x6162ff, 0x686cff, + 0x7473ff, 0x8689e5, 0x9e9dc6, 0x9694ac, 0x979b9b, 0x888b8c, + 0x767680, 0x596160, 0x6c736f, 0x7b7359}; + static constexpr TProgmemRGBPalette16 PotassiumFireColors_p FL_PROGMEM = { + CRGB::Black, 0x0f001a, 0x1e0034, 0x2d004e, 0x3c0068, + CRGB::Indigo, 0x591694, 0x682da6, 0x7643b7, 0x855ac9, + CRGB::MediumPurple, 0xa95ecd, 0xbe4bbe, 0xd439b0, 0xe926a1, + CRGB::DeepPink}; //* Violet + static constexpr TProgmemRGBPalette16 WaterfallColors_p FL_PROGMEM = { + 0x000000, 0x060707, 0x101110, 0x151717, 0x1C1D22, 0x242A28, + 0x363B3A, 0x313634, 0x505552, 0x6B6C70, 0x98A4A1, 0xC1C2C1, + 0xCACECF, 0xCDDEDD, 0xDEDFE0, 0xB2BAB9}; //* Orange + const float SPEED_ADJ = (float)NUM_LEDS / 256; #define chance 2048 -byte speed = 200; // 1-255 -const byte scale = 8; -const byte DIR_CHARGE = 2; // Chance to change direction 1-5 + byte speed = 200; // 1-255 + const byte scale = 8; + const byte DIR_CHARGE = 2; // Chance to change direction 1-5 + CRGBPalette16 pal[5] = {RainbowColors_p, HolyLightsColors_p, NeonColors_p, + PotassiumFireColors_p, WaterfallColors_p}; -CRGBPalette16 pal[5] = { - RainbowColors_p, - HolyLightsColors_p, - NeonColors_p, - PotassiumFireColors_p, - WaterfallColors_p -}; - -byte dir = 3; -byte palette = 0; -byte count = 0; -float x1, y1; -float speedFactor = fmap(speed, 1, 255, 0.25, 1); + byte dir = 3; + byte palette = 0; + byte count = 0; + float x1, y1; + float speedFactor = fmap(speed, 1, 255, 0.25, 1); -static double fmap(const double x, const double in_min, const double in_max, const double out_min, const double out_max){ + static double fmap(const double x, const double in_min, const double in_max, + const double out_min, const double out_max) { return (out_max - out_min) * (x - in_min) / (in_max - in_min) + out_min; -} -CRGB getPixel(uint8_t x, uint8_t y) - { + } + CRGB getPixel(uint8_t x, uint8_t y) { return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; - //return g()->leds[g()->xy(x, y)]; + // return g()->leds[g()->xy(x, y)]; } - void drawPixel(int8_t x, int8_t y, CRGB color) - { - if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) return; + void drawPixel(int8_t x, int8_t y, CRGB color) { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) + return; // Mesmerizer flips the Y axis here. - uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT -1 - (uint8_t)y); + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT - 1 - (uint8_t)y); g()->leds[thisPixel] = color; } -void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) -{ -// if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть как-нибудь учитывались тут // зато с этой строчкой пропадает нижний ряд - // extract the fractional parts and derive their inverses - uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; - // calculate the intensities for each affected pixel - #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) - uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), - WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; - // multiply the intensities by the colour, and saturating-add them to the pixels - for (uint8_t i = 0; i < 4; i++) { - int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); - CRGB clr = getPixel(xn, yn); - clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); - clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); - clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); - drawPixel(xn, yn, clr); + void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) + { + // if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть + // как-нибудь учитывались тут // зато с этой строчкой пропадает нижний ряд + // extract the fractional parts and derive their inverses + uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, + iy = 255 - yy; +// calculate the intensities for each affected pixel +#define WU_WEIGHT(a, b) ((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) + uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), + WU_WEIGHT(xx, yy)}; + // multiply the intensities by the colour, and saturating-add them to the + // pixels + for (uint8_t i = 0; i < 4; i++) { + int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); + CRGB clr = getPixel(xn, yn); + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + drawPixel(xn, yn, clr); + } } -} -public: - PatternSMStarshipTroopers() : + public: + PatternSMStarshipTroopers() + : #if ENABLE_AUDIO - BeatEffectBase(1.50, 0.05), + BeatEffectBase(1.50, 0.05), #endif - LEDStripEffect(EFFECT_MATRIX_SMSTARSHIP_TROOPERS, "Starship Troopers") - { - } + LEDStripEffect(EFFECT_MATRIX_SMSTARSHIP_TROOPERS, "Starship Troopers") { + } - PatternSMStarshipTroopers(const JsonObjectConst& jsonObject) : + PatternSMStarshipTroopers(const JsonObjectConst& jsonObject) + : #if ENABLE_AUDIO - BeatEffectBase(1.50, 0.05), + BeatEffectBase(1.50, 0.05), #endif - LEDStripEffect(jsonObject) - { + LEDStripEffect(jsonObject) { } - virtual void Start() override - { - g()->Clear(); - } + virtual void Start() override { g()->Clear(); } - virtual void Draw() override - { + virtual void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif - randomSeed(millis()); -// fadeToBlackBy(leds, NUM_LEDS, map(speed, 1, 255, 5, 10)); - switch (dir) { - case 0: // Up - for (byte x = 0; x < WIDTH; x++) { - if (x > WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} - for (float y = 0; y < HEIGHT; y+=speedFactor) { - getPixel(x, y) = (((int)y == HEIGHT - 1) ? CRGB::Black : getPixel(x, y + 1)); + randomSeed(millis()); + // fadeToBlackBy(leds, NUM_LEDS, map(speed, 1, 255, 5, 10)); + switch (dir) { + case 0: // Up + for (byte x = 0; x < WIDTH; x++) { + if (x > WIDTH / 2 and random(chance) < DIR_CHARGE) { + count++; + break; + } + for (float y = 0; y < HEIGHT; y += speedFactor) { + getPixel(x, y) = + (((int)y == HEIGHT - 1) ? CRGB::Black : getPixel(x, y + 1)); + } } - } - break; - case 1: // Up - Right - for (float x = 0; x < WIDTH; x+=speedFactor) { - if ((uint8_t)x > WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} - for (byte y = 0; y < HEIGHT; y++) { - getPixel(x, y) = ((y == HEIGHT - 1 or (int)x == WIDTH - 1) ? CRGB::Black : getPixel(x + 1, y + 1)); + break; + case 1: // Up - Right + for (float x = 0; x < WIDTH; x += speedFactor) { + if ((uint8_t)x > WIDTH / 2 and random(chance) < DIR_CHARGE) { + count++; + break; + } + for (byte y = 0; y < HEIGHT; y++) { + getPixel(x, y) = ((y == HEIGHT - 1 or (int) x == WIDTH - 1) + ? CRGB::Black + : getPixel(x + 1, y + 1)); + } } - } - break; - case 2: // Right - for (float x = 0; x < WIDTH; x+=speedFactor) { - if ((uint8_t)x > WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} - for (byte y = HEIGHT - 1; y > 0; y--) { - getPixel(x, y) = (((int)x == WIDTH - 1) ? CRGB::Black : getPixel(x + 1, y)); + break; + case 2: // Right + for (float x = 0; x < WIDTH; x += speedFactor) { + if ((uint8_t)x > WIDTH / 2 and random(chance) < DIR_CHARGE) { + count++; + break; + } + for (byte y = HEIGHT - 1; y > 0; y--) { + getPixel(x, y) = + (((int)x == WIDTH - 1) ? CRGB::Black : getPixel(x + 1, y)); + } } - } - break; - case 3: // Down - Right - for (float x = 0; x < WIDTH; x+=speedFactor) { - if ((uint8_t)x > WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} - for (byte y = HEIGHT - 1; y > 0; y--) { - getPixel(x, y) = (((int)x == WIDTH - 1 or y == 0) ? CRGB::Black : getPixel(x + 1, y - 1)); + break; + case 3: // Down - Right + for (float x = 0; x < WIDTH; x += speedFactor) { + if ((uint8_t)x > WIDTH / 2 and random(chance) < DIR_CHARGE) { + count++; + break; + } + for (byte y = HEIGHT - 1; y > 0; y--) { + getPixel(x, y) = + (((int)x == WIDTH - 1 or y == 0) ? CRGB::Black + : getPixel(x + 1, y - 1)); + } } - } - break; - case 4: // Down - for (byte x = 0; x < WIDTH; x++) { - if (x < WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} - for (float y = HEIGHT - 1; y > 0; y-=speedFactor) { - getPixel(x, y) = (((int)y == 0) ? CRGB::Black : getPixel(x, y - 1)); + break; + case 4: // Down + for (byte x = 0; x < WIDTH; x++) { + if (x < WIDTH / 2 and random(chance) < DIR_CHARGE) { + count++; + break; + } + for (float y = HEIGHT - 1; y > 0; y -= speedFactor) { + getPixel(x, y) = (((int)y == 0) ? CRGB::Black : getPixel(x, y - 1)); + } } - } - break; - case 5: // Down - Left - for (float x = WIDTH - 1; x > 0; x-=speedFactor) { - if (!(uint8_t)x < WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} - for (byte y = HEIGHT - 1; y > 0; y--) { - getPixel(x, y) = ((y == 0 or (int)x == 0) ? CRGB::Black : getPixel(x - 1, y - 1)); + break; + case 5: // Down - Left + for (float x = WIDTH - 1; x > 0; x -= speedFactor) { + if (!(uint8_t)x < WIDTH / 2 and random(chance) < DIR_CHARGE) { + count++; + break; + } + for (byte y = HEIGHT - 1; y > 0; y--) { + getPixel(x, y) = + ((y == 0 or (int) x == 0) ? CRGB::Black + : getPixel(x - 1, y - 1)); + } } - } - break; - case 6: // Left - for (float x = WIDTH - 1; x > 0; x-=speedFactor) { - if ((uint8_t)x < WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} - for (byte y = HEIGHT - 1; y > 0; y--) { - getPixel(x, y) = ((int)x == 0 ? CRGB::Black : getPixel(x - 1, y)); + break; + case 6: // Left + for (float x = WIDTH - 1; x > 0; x -= speedFactor) { + if ((uint8_t)x < WIDTH / 2 and random(chance) < DIR_CHARGE) { + count++; + break; + } + for (byte y = HEIGHT - 1; y > 0; y--) { + getPixel(x, y) = ((int)x == 0 ? CRGB::Black : getPixel(x - 1, y)); + } } - } - break; - case 7: // Up - Left - for (float x = WIDTH -1; x >0; x-=speedFactor) { - if ((uint8_t)x < WIDTH/2 and random(chance) < DIR_CHARGE) {count++; break;} - for (byte y = HEIGHT - 1; y > 0; y--) { - getPixel(x, y) = ((y == HEIGHT - 1 or (int)x == 0) ? CRGB::Black : getPixel(x - 1, y + 1)); + break; + case 7: // Up - Left + for (float x = WIDTH - 1; x > 0; x -= speedFactor) { + if ((uint8_t)x < WIDTH / 2 and random(chance) < DIR_CHARGE) { + count++; + break; + } + for (byte y = HEIGHT - 1; y > 0; y--) { + getPixel(x, y) = + ((y == HEIGHT - 1 or (int) x == 0) ? CRGB::Black + : getPixel(x - 1, y + 1)); + } } - } - break; - } - - - for (byte i = 0; i < scale; i++) { - x1 = (float)beatsin88(3840*speedFactor + i*256, 0, (WIDTH-1) *4, 0, scale*i*256) /4; - y1 = (float)beatsin88(3072*speedFactor + i*256, 0, (HEIGHT-1) *4, 0, 0) /4; - if ((x1 >= 0 and x1 <= WIDTH-1) and (y1 >= 0 and y1 <= HEIGHT -1)) drawPixel(x1, y1, ColorFromPalette(pal[palette], beatsin88(256*12.*speedFactor + i*256, 0, 255), 255)); - } + break; + } - // blur2d(leds, LED_COLS, LED_ROWS, 64); - g()->blur2d(g()->leds, MATRIX_WIDTH, 0, MATRIX_HEIGHT, 0, 64); + for (byte i = 0; i < scale; i++) { + x1 = (float)beatsin88(3840 * speedFactor + i * 256, 0, (WIDTH - 1) * 4, 0, + scale * i * 256) / + 4; + y1 = (float)beatsin88(3072 * speedFactor + i * 256, 0, (HEIGHT - 1) * 4, + 0, 0) / + 4; + if ((x1 >= 0 and x1 <= WIDTH - 1) and (y1 >= 0 and y1 <= HEIGHT - 1)) + drawPixel( + x1, y1, + ColorFromPalette( + pal[palette], + beatsin88(256 * 12. * speedFactor + i * 256, 0, 255), 255)); + } + // blur2d(leds, LED_COLS, LED_ROWS, 64); + g()->blur2d(g()->leds, MATRIX_WIDTH, 0, MATRIX_HEIGHT, 0, 64); - dir = count%8; - palette = count%5; + dir = count % 8; + palette = count % 5; -// delay(16); // ~60FPS + // delay(16); // ~60FPS } #if ENABLE_AUDIO - virtual void HandleBeat(bool bMajor, float elapsed, float span) override - { - - } + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} #endif }; From 952e4696a55fb742422ea14c18a26c7d2513c07c Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 09:04:45 -0500 Subject: [PATCH 072/168] Allow more global compilation --- include/effectdependencies.h | 22 +++++----------------- include/effects/matrix/PatternSMFire2012.h | 2 +- include/effects/matrix/PatternSMMagma.h | 2 +- 3 files changed, 7 insertions(+), 19 deletions(-) diff --git a/include/effectdependencies.h b/include/effectdependencies.h index 6a87bb6c4..b5b523dc6 100644 --- a/include/effectdependencies.h +++ b/include/effectdependencies.h @@ -57,28 +57,25 @@ // Externals // -#define BOOGER 0 #if USE_MATRIX #include "ledmatrixgfx.h" #include "effects/strip/misceffects.h" #include "effects/matrix/PatternBalls.h" -#if 1 + #include "effects/matrix/PatternSMStrobeDiffusion.h" #include "effects/matrix/PatternSMOneRing.h" #include "effects/matrix/PatternSMLumenjerPalette.h" #include "effects/matrix/PatternSMSquaresAndDots.h" #include "effects/matrix/PatternSMTraffic.h" #include "effects/matrix/PatternSM2DDPR.h" - #include "effects/matrix/PatternSMSinusoidSin16.h" + #include "effects/matrix/PatternSMFireworks.h" #include "effects/matrix/PatternSMStarDeep.h" -#if BOOGER #include "effects/matrix/PatternSMMagma.h" #include "effects/matrix/PatternSMAmberRain.h" #include "effects/matrix/PatternSMFire2012.h" #include "effects/matrix/PatternSMFire2021.h" - #include "effects/matrix/PatternSMWisp.h" -#endif +// #include "effects/matrix/PatternSMWisp.h" #include "effects/matrix/PatternSMNoise.h" #include "effects/matrix/PatternSMFPicasso3in1.h" #include "effects/matrix/PatternSMSnakes.h" @@ -87,7 +84,6 @@ #include "effects/matrix/PatternSMPastelFlutter.h" #include "effects/matrix/PatternSMSand.h" #include "effects/matrix/PatternSMSpiro.h" -#endif #include "effects/matrix/PatternSMLightning.h" #include "effects/matrix/PatternSMEyeTunnel.h" #include "effects/matrix/PatternSMPSPCloud.h" @@ -96,19 +92,14 @@ #include "effects/matrix/PatternSMTwist.h" #include "effects/matrix/PatternSMTwister.h" #include "effects/matrix/PatternSMMetaBalls.h" -#if BOOGER #include "effects/matrix/PatternSMFlying.h" -#endif - #include "effects/matrix/PatternSMSinDots.h" #include "effects/matrix/PatternSMSunRadiation.h" #include "effects/matrix/PatternSMPatternTrick.h" #include "effects/matrix/PatternSMGravityBalls.h" #include "effects/matrix/PatternSMGoogleNexus.h" -#if BOOGER #include "effects/matrix/PatternSMHolidayLights.h" #include "effects/matrix/PatternSMStarshipTroopers.h" -#endif #include "effects/matrix/PatternSMGamma.h" // A Small block of 3D-ish effects using Particle systems or Boids. #include "effects/matrix/PatternSMBubbles.h" // Boids @@ -122,9 +113,7 @@ #include "effects/matrix/PatternSMXorCircles.h" #include "effects/matrix/PatternSMWalkingMachine.h" #include "effects/matrix/PatternSMHypnosis.h" -#if BOOGER #include "effects/matrix/PatternSMRainbowTunnel.h" -#endif #include "effects/matrix/PatternSMRadialWave.h" #include "effects/matrix/PatternSMMirage.h" #include "effects/matrix/PatternSMMaze2.h" @@ -133,7 +122,6 @@ #include "effects/matrix/PatternSMAurora.h" #include "effects/matrix/PatternSMSmoke.h" #include "effects/matrix/PatternSMRainbowSwirl.h" -#if BOOGER #include "effects/matrix/PatternSerendipity.h" #include "effects/matrix/PatternSwirl.h" #include "effects/matrix/PatternPulse.h" @@ -159,8 +147,8 @@ #if ENABLE_WIFI #include "effects/matrix/PatternWeather.h" #endif -#endif // BOOGER -#endif +#endif // USE_MATRIX + #ifdef USESTRIP #include "ledstripgfx.h" diff --git a/include/effects/matrix/PatternSMFire2012.h b/include/effects/matrix/PatternSMFire2012.h index efed59902..bb183d675 100644 --- a/include/effects/matrix/PatternSMFire2012.h +++ b/include/effects/matrix/PatternSMFire2012.h @@ -28,7 +28,7 @@ const TProgmemRGBPalette16 *palette_arr[9] = { &RainbowStripeColors_p}; const TProgmemRGBPalette16 *curPalette = palette_arr[0]; -#define NUM_LAYERSMAX 2 +static constexpr int NUM_LAYERSMAX = 2; uint8_t noise3d[NUM_LAYERSMAX][MATRIX_WIDTH][MATRIX_HEIGHT]; // двухслойная маска или хранилище свойств в размер всей матрицы static inline uint8_t wrapX(int8_t x){ diff --git a/include/effects/matrix/PatternSMMagma.h b/include/effects/matrix/PatternSMMagma.h index 5a7b1cee2..b802c64d7 100644 --- a/include/effects/matrix/PatternSMMagma.h +++ b/include/effects/matrix/PatternSMMagma.h @@ -33,7 +33,7 @@ uint8_t deltaValue; // просто повтор uint16_t ff_x, ff_y, ff_z; // большие счётчики const TProgmemRGBPalette16 *curPalette = &PartyColors_p; -#define NUM_LAYERSMAX 2 +static constexpr int NUM_LAYERSMAX = 2; uint8_t noise3d[NUM_LAYERSMAX][MATRIX_WIDTH][MATRIX_HEIGHT]; // двухслойная маска или хранилище свойств в размер всей матрицы uint8_t line[MATRIX_WIDTH]; // свойство пикселей в размер строки матрицы uint8_t shiftHue[MATRIX_HEIGHT]; // свойство пикселей в размер столбца матрицы From 469e24808063a42bc40c2bd10adad9690e0de142 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 23 Jul 2023 22:27:09 -0500 Subject: [PATCH 073/168] Make WU_WEIGHT file-local to eliminate conflicts for multiple compilation. --- include/effects/matrix/PatternSMBAurora.h | 66 ++++++++++ .../effects/matrix/PatternSMBlurringColors.h | 5 +- .../effects/matrix/PatternSMBoidExplosion.h | 8 +- include/effects/matrix/PatternSMBubbles.h | 4 +- include/effects/matrix/PatternSMEyeTunnel.h | 5 +- .../effects/matrix/PatternSMFlocking-later.h | 123 ++++++++++++++++++ include/effects/matrix/PatternSMFlocking.h | 5 +- include/effects/matrix/PatternSMFlowFields.h | 4 +- .../effects/matrix/PatternSMGravityBalls.h | 5 +- include/effects/matrix/PatternSMMagma.h | 5 +- include/effects/matrix/PatternSMMirage.h | 8 +- .../effects/matrix/PatternSMParticlesFRIED.h | 92 +++++++++++++ .../effects/matrix/PatternSMParticlesFRIED2.h | 110 ++++++++++++++++ include/effects/matrix/PatternSMSpiroPulse.h | 3 + .../matrix/PatternSMStarshipTroopers.h | 5 +- include/effects/matrix/PatternSMSupernova.h | 5 +- .../effects/matrix/PatternSMWalkingMachine.h | 4 +- 17 files changed, 442 insertions(+), 15 deletions(-) create mode 100644 include/effects/matrix/PatternSMBAurora.h create mode 100644 include/effects/matrix/PatternSMFlocking-later.h create mode 100644 include/effects/matrix/PatternSMParticlesFRIED.h create mode 100644 include/effects/matrix/PatternSMParticlesFRIED2.h diff --git a/include/effects/matrix/PatternSMBAurora.h b/include/effects/matrix/PatternSMBAurora.h new file mode 100644 index 000000000..bbf4085c2 --- /dev/null +++ b/include/effects/matrix/PatternSMBAurora.h @@ -0,0 +1,66 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +#if ENABLE_AUDIO +class PatternSMStrobeDiffusion : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMStrobeDiffusion : public LEDStripEffect +#endif +{ +private: +public: + PatternSMStrobeDiffusion() : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSTROBE_DIFFUSION, "Strobe Diffusion") + { + } + + PatternSMStrobeDiffusion(const JsonObjectConst& jsonObject) : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + g()->Clear(); + } + + virtual void Draw() override + { +#if ENABLE_AUDIO + ProcessAudio(); +#endif +#if 0 + uint16_t _scale = map(scale, 1, 255, 30, adjScale); + byte _speed = map(speed, 1, 255, 128, 16); + for (byte x = 0; x < LED_COLS; x++) + { + for (byte y = 0; y < LED_ROWS; y++) + { + timer++; + leds[XY(x, y)] = + ColorFromPalette(GreenAuroraColors_p, + qsub8( + inoise8(timer % 2 + x * _scale, + y * 16 + timer % 16, + timer / _speed), + fabs((float)LED_ROWS / 2 - (float)y) * adjastHeight)); + } + } +#endif + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } +#endif +}; diff --git a/include/effects/matrix/PatternSMBlurringColors.h b/include/effects/matrix/PatternSMBlurringColors.h index 6e201f8d0..23e0bcdea 100644 --- a/include/effects/matrix/PatternSMBlurringColors.h +++ b/include/effects/matrix/PatternSMBlurringColors.h @@ -55,12 +55,15 @@ uint8_t step; // какой-нибудь с g()->leds[thisPixel] = color; } +#undef WU_WEIGHT +static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * (b) + (a) + (b)) >> 8);} + void drawPixelXYF(float x, float y, CRGB color) { // if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть как-нибудь учитывались тут // зато с этой строчкой пропадает нижний ряд // extract the fractional parts and derive their inverses uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; // calculate the intensities for each affected pixel - #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) + // #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; // multiply the intensities by the colour, and saturating-add them to the pixels diff --git a/include/effects/matrix/PatternSMBoidExplosion.h b/include/effects/matrix/PatternSMBoidExplosion.h index 7e92c705e..befa2f77f 100644 --- a/include/effects/matrix/PatternSMBoidExplosion.h +++ b/include/effects/matrix/PatternSMBoidExplosion.h @@ -45,12 +45,14 @@ class PatternSMBoidExplosion : public LEDStripEffect g()->leds[thisPixel] = color; } +#undef WU_WEIGHT +static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * (b) + (a) + (b)) >> 8);} + void drawPixelXYF(float x, float y, CRGB color) { uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; -// calculate the intensities for each affected pixel -#define WU_WEIGHT(a, b) ((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) - uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), + // calculate the intensities for each affected pixel + static const uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; // multiply the intensities by the colour, and saturating-add them to the // pixels diff --git a/include/effects/matrix/PatternSMBubbles.h b/include/effects/matrix/PatternSMBubbles.h index 37cdbab0a..9f4b856fd 100644 --- a/include/effects/matrix/PatternSMBubbles.h +++ b/include/effects/matrix/PatternSMBubbles.h @@ -43,6 +43,8 @@ class PatternSMBubbles : public LEDStripEffect uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT -1 - (uint8_t)y); g()->leds[thisPixel] = color; } +#undef WU_WEIGHT +static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * (b) + (a) + (b)) >> 8);} void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) { @@ -50,7 +52,7 @@ void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) // extract the fractional parts and derive their inverses uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; // calculate the intensities for each affected pixel - #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) + // #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; // multiply the intensities by the colour, and saturating-add them to the pixels diff --git a/include/effects/matrix/PatternSMEyeTunnel.h b/include/effects/matrix/PatternSMEyeTunnel.h index cbb08af66..c8d03a00b 100644 --- a/include/effects/matrix/PatternSMEyeTunnel.h +++ b/include/effects/matrix/PatternSMEyeTunnel.h @@ -15,11 +15,14 @@ class PatternSMEyeTunnel : public LEDStripEffect #endif { private: + #undef WU_WEIGHT + static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * (b) + (a) + (b)) >> 8);} + void wu_pixel(int16_t x, int16_t y, CRGB* col) { // extract the fractional parts and derive their inverses uint8_t xx = x & 0xff, yy = y & 0xff, ix = 255 - xx, iy = 255 - yy; // calculate the intensities for each affected pixel -#define WU_WEIGHT(a, b) ((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) +// #define WU_WEIGHT(a, b) ((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; #undef WU_WEIGHT diff --git a/include/effects/matrix/PatternSMFlocking-later.h b/include/effects/matrix/PatternSMFlocking-later.h new file mode 100644 index 000000000..fd82871c5 --- /dev/null +++ b/include/effects/matrix/PatternSMFlocking-later.h @@ -0,0 +1,123 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/matrix/Boid.h" +#include "effects/matrix/Vector.h" +#include "effects/strip/musiceffect.h" + +// Derived from https://editor.soulmatelights.com/gallery/2132-F +// This makes a very cool green vine that grows up the display. + +#if ENABLE_AUDIO +class PatternSMFlocking : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMFlocking : public LEDStripEffect +#endif +{ + private: + const int WIDTH = MATRIX_WIDTH; + const int HEIGHT = MATRIX_HEIGHT; + const int COLS = MATRIX_WIDTH; + const int ROWS = MATRIX_HEIGHT; + static const int NUM_PARTICLES = + 20; // set this to the number of particles. the varialbe describes what + // it's supposed to be. it works with 50 but it's a little slow. on + // an esp32 it looks pretty nice at that number 15 is a safe number + + CRGB getPixColorXY(uint8_t x, uint8_t y) { + return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; + } + + void drawPixelXY(int8_t x, int8_t y, CRGB color) { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) + return; + // Mesmerizer flips the Y axis here. + uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT - 1 - (uint8_t)y); + g()->leds[thisPixel] = color; + } + +#undef WU_WEIGHT +static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * (b) + (a) + (b)) >> 8);} + + void drawPixelXYF(float x, float y, CRGB color) { + // if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть + // как-нибудь учитывались тут // зато с этой строчкой пропадает нижний ряд + // extract the fractional parts and derive their inverses + uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, + iy = 255 - yy; +// calculate the intensities for each affected pixel +// #define WU_WEIGHT(a, b) ((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) + std::array wu{WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), + WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; + for (uint8_t i = 0; i < 4; i++) { + int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); + CRGB clr = getPixColorXY(xn, yn); + clr.r = qadd8(clr.r, (color.r * wu[i]) >> 8); + clr.g = qadd8(clr.g, (color.g * wu[i]) >> 8); + clr.b = qadd8(clr.b, (color.b * wu[i]) >> 8); + drawPixelXY(xn, yn, clr); + } + } + + byte hue = 0; + std::array boids; // this makes the boids + + uint16_t x; + uint16_t y; + uint16_t z; + + uint16_t speed = 10; + uint16_t scale = 30; + + public: + PatternSMFlocking() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMFLOCKING, "Flocking") { + } + + PatternSMFlocking(const JsonObjectConst &jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { + g()->Clear(); + + x = random16(); + y = random16(); + z = random16(); + + for (auto &boid : boids) { + boid = Boid(random(COLS), 0); + } + } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + for (auto &boid : boids) { + boid.avoidBorders(); + boid.update(boids, NUM_PARTICLES); + + drawPixelXYF( + boid.location.x, boid.location.y, + ColorFromPalette(PartyColors_p, boid.hue * 15, 255, LINEARBLEND)); + } + fadeAllChannelsToBlackBy(75); + x += speed; + y += speed; + z += speed; + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/include/effects/matrix/PatternSMFlocking.h b/include/effects/matrix/PatternSMFlocking.h index 355959309..e803a3008 100644 --- a/include/effects/matrix/PatternSMFlocking.h +++ b/include/effects/matrix/PatternSMFlocking.h @@ -33,6 +33,9 @@ class PatternSMFlocking : public LEDStripEffect g()->leds[thisPixel] = color; } +#undef WU_WEIGHT +static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * (b) + (a) + (b)) >> 8);} + void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) { // if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть @@ -41,7 +44,7 @@ class PatternSMFlocking : public LEDStripEffect uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; // calculate the intensities for each affected pixel -#define WU_WEIGHT(a, b) ((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) +// #define WU_WEIGHT(a, b) ((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; // multiply the intensities by the colour, and saturating-add them to the diff --git a/include/effects/matrix/PatternSMFlowFields.h b/include/effects/matrix/PatternSMFlowFields.h index feced62c6..c4a4c081a 100644 --- a/include/effects/matrix/PatternSMFlowFields.h +++ b/include/effects/matrix/PatternSMFlowFields.h @@ -31,13 +31,15 @@ class PatternSMFlowFields : public LEDStripEffect uint32_t thisPixel = g()->xy((uint8_t)x, MATRIX_HEIGHT -1 - (uint8_t)y); g()->leds[thisPixel] = color; } +#undef WU_WEIGHT +static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * (b) + (a) + (b)) >> 8);} void drawPixelXYF(float x, float y, CRGB color) { // if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть как-нибудь учитывались тут // зато с этой строчкой пропадает нижний ряд // extract the fractional parts and derive their inverses uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; // calculate the intensities for each affected pixel - #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) + // #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) std::array wu{WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; for (uint8_t i = 0; i < 4; i++) { diff --git a/include/effects/matrix/PatternSMGravityBalls.h b/include/effects/matrix/PatternSMGravityBalls.h index 23ab05e9b..d65d6f31b 100644 --- a/include/effects/matrix/PatternSMGravityBalls.h +++ b/include/effects/matrix/PatternSMGravityBalls.h @@ -22,11 +22,14 @@ float velx[COUNT], vely[COUNT]; float accel[COUNT]; byte init = 1; +#undef WU_WEIGHT +static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * (b) + (a) + (b)) >> 8);} + void drawPixelXYF(float x, float y, CRGB color) { if (x < 0 || y < 0 || x > ((float) MATRIX_WIDTH - 1) || y > ((float) MATRIX_HEIGHT - 1)) return; uint8_t xx = (x - (int) x) * 255, yy = (y - (int) y) * 255, ix = 255 - xx, iy = 255 - yy; // calculate the intensities for each affected pixel - #define WU_WEIGHT(a, b)((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) + // #define WU_WEIGHT(a, b)((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) uint8_t wu[4] = { WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), diff --git a/include/effects/matrix/PatternSMMagma.h b/include/effects/matrix/PatternSMMagma.h index b802c64d7..d3ada8891 100644 --- a/include/effects/matrix/PatternSMMagma.h +++ b/include/effects/matrix/PatternSMMagma.h @@ -175,6 +175,9 @@ uint32_t getPixColor(uint32_t thisSegm) g()->leds[thisPixel] = color; } +#undef WU_WEIGHT +static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * (b) + (a) + (b)) >> 8);} + //по мотивам //https://gist.github.com/sutaburosu/32a203c2efa2bb584f4b846a91066583 void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) @@ -183,7 +186,7 @@ void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) // extract the fractional parts and derive their inverses uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; // calculate the intensities for each affected pixel - #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) + // #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; // multiply the intensities by the colour, and saturating-add them to the pixels diff --git a/include/effects/matrix/PatternSMMirage.h b/include/effects/matrix/PatternSMMirage.h index 24aee1d94..1feb6f3a3 100644 --- a/include/effects/matrix/PatternSMMirage.h +++ b/include/effects/matrix/PatternSMMirage.h @@ -34,15 +34,19 @@ void blur() { } } -void drawDot(float x, float y, byte a){ +#undef WU_WEIGHT +//static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * (b) + (a) + (b)) >> 8);} + +void drawDot(float x, float y, byte a) { uint8_t xx = (x - (int) x) * 255, yy = (y - (int) y) * 255, ix = 255 - xx, iy = 255 - yy; -#define WU_WEIGHT(a, b)((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) + #define WU_WEIGHT(a, b)((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) uint8_t wu[4] = { WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy) }; +#undef WU_WEIGHT // multiply the intensities by the colour, and saturating-add them to the pixels for (uint8_t i = 0; i < 4; i++) { int16_t xn = x + (i & 1), yn = y + ((i >> 1) & 1); diff --git a/include/effects/matrix/PatternSMParticlesFRIED.h b/include/effects/matrix/PatternSMParticlesFRIED.h new file mode 100644 index 000000000..2f04a7da9 --- /dev/null +++ b/include/effects/matrix/PatternSMParticlesFRIED.h @@ -0,0 +1,92 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" +// Inspired by https://editor.soulmatelights.com/gallery/2358-particles + +#if ENABLE_AUDIO +class PatternSMParticles : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMParticles : public LEDStripEffect +#endif +{ + private: + const int thisScale = 254; // 254 - максимальный, наверное, масштаб + const int CUR_PRES_speed = + 15; // 15 - скорость, на которой частицы пляшут туда-сюда + const int CUR_PRES_color = + 255; // 1 - цвет частиц, чтобы не заморачиваться с палитрами + + const int cfg_length = MATRIX_HEIGHT; + const int cfg_width = MATRIX_WIDTH; + const int now_weekMs = 0 * 1000ul + millis(); // - tmr + + public: + PatternSMParticles() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMPARTICLES, "Particles") { + } + + PatternSMParticles(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { g()->Clear(); } + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + /// for (int i = 0; i < cfg_length * cfg_width; i++) { + // g()->leds[i].fadeToBlackBy(70); + // } + // fadeAllChannelsToBlackBy(70); + uint16_t rndVal = 0; + byte amount = (thisScale >> 3) + 1; +#if 0 + for (int x = 0; x < MATRIX_WIDTH; x++) + for (int y = 0; y < MATRIX_HEIGHT; y++) + g()->leds[g()->xy(x, y)] = RGB(255,255,255); +#endif + for (int y = 0; y < MATRIX_HEIGHT; y++) + g()->leds[g()->xy(y, y)] = CRGB(0, 0, 255); + + for (int i = 0; i < amount; i++) { + rndVal = rndVal * 2053 + 13849; // random2053 алгоритм + int homeX = + inoise16(i * 100000000ul + (now_weekMs << 3) * CUR_PRES_speed / 255); + homeX = map(homeX, 15000, 50000, 0, cfg_length); + int offsX = + inoise8(i * 2500 + (now_weekMs >> 1) * CUR_PRES_speed / 255) - 128; + offsX = cfg_length / 2 * offsX / 128; + int thisX = homeX + offsX; + + int homeY = inoise16(i * 100000000ul + 2000000000ul + + (now_weekMs << 3) * CUR_PRES_speed / 255); + homeY = map(homeY, 15000, 50000, 0, cfg_width); + int offsY = + inoise8(i * 2500 + 30000 + (now_weekMs >> 1) * CUR_PRES_speed / 255) - + 128; + offsY = cfg_length / 2 * offsY / 128; + int thisY = homeY + offsY; + // debugI(" %d: %d %d %d %d", i, thisX, thisY, homeX, homeY); + if ((thisX > 0) && (thisY > 0)) { + // g()->leds[g()->xy(thisX, MATRIX_HEIGHT-thisY)] = + // CRGB(CHSV(CUR_PRES_color, 255, 255)); + g()->leds[g()->xy(thisX, MATRIX_HEIGHT - thisY)] = CRGB(20, 255, 0); + } + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/include/effects/matrix/PatternSMParticlesFRIED2.h b/include/effects/matrix/PatternSMParticlesFRIED2.h new file mode 100644 index 000000000..edeb9d5a0 --- /dev/null +++ b/include/effects/matrix/PatternSMParticlesFRIED2.h @@ -0,0 +1,110 @@ +#pragma once + +#include "effectmanager.h" +#include "effects/strip/musiceffect.h" + +//#define cfg_deviceType 2 // 1 - это лента, 2 - это матрица +//#define thisScale 254 // 254 - максимальный, наверное, масштаб +//#define CUR_PRES_speed 15 // 15 - скорость, на которой частицы пляшут +//туда-сюда #define CUR_PRES_color 1 // 1 - цвет частиц, чтобы не +//заморачиваться с палитрами + +#define cfg_length MATRIX_HEIGHT +#define cfg_width MATRIX_WIDTH +#define now_weekMs 0 * 1000ul + millis() // - tmr + +//#define getPix XY +//#define CUR_PRES_fromPal false + +#define FOR_i(x, y) for (int i = (x); i < (y); i++) +#define CUR_PRES preset[cfg_curPreset + +#if ENABLE_AUDIO +class PatternSMParticles : public BeatEffectBase, + public LEDStripEffect +#else +class PatternSMParticles : public LEDStripEffect +#endif +{ + private: + const int thisScale = 254; // 254 - максимальный, наверное, масштаб + const int CUR_PRES_speed = + 15; // 15 - скорость, на которой частицы пляшут туда-сюда + const int CUR_PRES_color = + 1; // 1 - цвет частиц, чтобы не заморачиваться с палитрами + + const int Xcfg_length = MATRIX_HEIGHT; + const int Xcfg_width = MATRIX_WIDTH; + const int Xnow_weekMs = 0 * 1000ul + millis(); // - tmr + + public: + PatternSMParticles() + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMPARTICLES, "Particles") { + } + + PatternSMParticles(const JsonObjectConst& jsonObject) + : +#if ENABLE_AUDIO + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) { + } + + virtual void Start() override { g()->Clear(); } + + void drawPixelXY(int8_t x, int8_t y, CRGB color) { + if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) + return; + uint32_t thisPixel = g()->xy((uint8_t)x, (uint8_t)y); // * SEGMENTS; + // for (uint8_t i = 0; i < SEGMENTS; i++) + //{ + g()->leds[thisPixel] = color; + //} + } // служебные функции + + virtual void Draw() override { +#if ENABLE_AUDIO + ProcessAudio(); +#endif + + // FOR_i(0, cfg_length * cfg_width) leds[i].fadeToBlackBy(70); + fadeAllChannelsToBlackBy(70); + + { + uint16_t rndVal = 0; + byte amount = (thisScale >> 3) + 1; + // amount = 8; + FOR_i(0, amount) { + rndVal = rndVal * 2053 + 13849; // random2053 алгоритм + int homeX = inoise16(i * 100000000ul + + (now_weekMs << 3) * CUR_PRES_speed / 255); + homeX = map(homeX, 15000, 50000, 0, cfg_length); + int offsX = + inoise8(i * 2500 + (now_weekMs >> 1) * CUR_PRES_speed / 255) - 128; + offsX = cfg_length / 2 * offsX / 128; + unsigned int thisX = homeX + offsX; + + int homeY = inoise16(i * 100000000ul + 2000000000ul + + (now_weekMs << 3) * CUR_PRES_speed / 255); + homeY = map(homeY, 15000, 50000, 0, cfg_width); + int offsY = inoise8(i * 2500 + 30000 + + (now_weekMs >> 1) * CUR_PRES_speed / 255) - + 128; + offsY = cfg_length / 2 * offsY / 128; + int thisY = homeY + offsY; + drawPixelXY(thisX, thisY, 255); + // setPix(thisX, thisY, + // CRGB(CHSV(CUR_PRES_color, 255, 255)) + // ); + } + } + } + +#if ENABLE_AUDIO + virtual void HandleBeat(bool bMajor, float elapsed, float span) override {} +#endif +}; diff --git a/include/effects/matrix/PatternSMSpiroPulse.h b/include/effects/matrix/PatternSMSpiroPulse.h index 268568842..a15baeb18 100644 --- a/include/effects/matrix/PatternSMSpiroPulse.h +++ b/include/effects/matrix/PatternSMSpiroPulse.h @@ -35,6 +35,9 @@ class PatternSMSpiroPulse : public LEDStripEffect g()->leds[thisPixel] = color; } + #undef WU_WEIGHT + static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * (b) + (a) + (b)) >> 8);} + void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) { // if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть diff --git a/include/effects/matrix/PatternSMStarshipTroopers.h b/include/effects/matrix/PatternSMStarshipTroopers.h index c0c87d83c..01d2dc9a3 100644 --- a/include/effects/matrix/PatternSMStarshipTroopers.h +++ b/include/effects/matrix/PatternSMStarshipTroopers.h @@ -66,6 +66,9 @@ class PatternSMStarshipTroopers : public LEDStripEffect g()->leds[thisPixel] = color; } +#undef WU_WEIGHT +static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * (b) + (a) + (b)) >> 8);} + void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) { // if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть @@ -74,7 +77,7 @@ class PatternSMStarshipTroopers : public LEDStripEffect uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; // calculate the intensities for each affected pixel -#define WU_WEIGHT(a, b) ((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) +// #define WU_WEIGHT(a, b) ((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; // multiply the intensities by the colour, and saturating-add them to the diff --git a/include/effects/matrix/PatternSMSupernova.h b/include/effects/matrix/PatternSMSupernova.h index 0447109cc..192e51a86 100644 --- a/include/effects/matrix/PatternSMSupernova.h +++ b/include/effects/matrix/PatternSMSupernova.h @@ -90,13 +90,16 @@ void starfield2Emit(uint8_t i){ g()->leds[thisPixel] = color; } +#undef WU_WEIGHT +static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * (b) + (a) + (b)) >> 8);} + void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) { // if (x<0 || y<0) return; //не похоже, чтобы отрицательные значения хоть как-нибудь учитывались тут // зато с этой строчкой пропадает нижний ряд // extract the fractional parts and derive their inverses uint8_t xx = (x - (int)x) * 255, yy = (y - (int)y) * 255, ix = 255 - xx, iy = 255 - yy; // calculate the intensities for each affected pixel - #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) + // #define WU_WEIGHT(a,b) ((uint8_t) (((a)*(b)+(a)+(b))>>8)) uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; // multiply the intensities by the colour, and saturating-add them to the pixels diff --git a/include/effects/matrix/PatternSMWalkingMachine.h b/include/effects/matrix/PatternSMWalkingMachine.h index e9b1567cf..82456b82a 100644 --- a/include/effects/matrix/PatternSMWalkingMachine.h +++ b/include/effects/matrix/PatternSMWalkingMachine.h @@ -19,12 +19,14 @@ class PatternSMWalkingMachine : public LEDStripEffect //Second name is "dreams in night" static constexpr int LED_COLS = MATRIX_WIDTH; static constexpr int LED_ROWS = MATRIX_HEIGHT; + #undef WU_WEIGHT +static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * (b) + (a) + (b)) >> 8);} + void drawPixelXYF(float x, float y, const CRGB & color) { // extract the fractional parts and derive their inverses uint8_t xx = (x - (int) x) * 255, yy = (y - (int) y) * 255, ix = 255 - xx, iy = 255 - yy; // calculate the intensities for each affected pixel - #define WU_WEIGHT(a, b)((uint8_t)(((a) * (b) + (a) + (b)) >> 8)) uint8_t wu[4] = { WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), From f03b87d6f16ab25c22b3fd2c596cdac42db38b7e Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sat, 29 Jul 2023 10:07:52 -0500 Subject: [PATCH 074/168] Clean up virtual/override --- include/effects/matrix/PatternSM2DDPR.h | 4 ++-- include/effects/matrix/PatternSMAmberRain.h | 4 ++-- include/effects/matrix/PatternSMAurora.h | 4 ++-- include/effects/matrix/PatternSMBAurora.h | 4 ++-- include/effects/matrix/PatternSMBlurringColors.h | 4 ++-- include/effects/matrix/PatternSMBoidExplosion.h | 4 ++-- include/effects/matrix/PatternSMBubbles.h | 4 ++-- include/effects/matrix/PatternSMColorPopcorn.h | 4 ++-- include/effects/matrix/PatternSMEyeTunnel.h | 4 ++-- include/effects/matrix/PatternSMFPicasso3in1.h | 4 ++-- include/effects/matrix/PatternSMFire2012.h | 4 ++-- include/effects/matrix/PatternSMFire2021.h | 4 ++-- include/effects/matrix/PatternSMFireworks.h | 4 ++-- include/effects/matrix/PatternSMFlocking-later.h | 4 ++-- include/effects/matrix/PatternSMFlocking.h | 4 ++-- include/effects/matrix/PatternSMFlowFields.h | 4 ++-- include/effects/matrix/PatternSMFlying.h | 4 ++-- include/effects/matrix/PatternSMGamma.h | 4 ++-- include/effects/matrix/PatternSMGoogleNexus.h | 4 ++-- include/effects/matrix/PatternSMGravityBalls.h | 4 ++-- include/effects/matrix/PatternSMHolidayLights.h | 4 ++-- include/effects/matrix/PatternSMHypnosis.h | 4 ++-- include/effects/matrix/PatternSMLightning.h | 4 ++-- include/effects/matrix/PatternSMLumenjerPalette.h | 4 ++-- include/effects/matrix/PatternSMMagma.h | 4 ++-- include/effects/matrix/PatternSMMaze2.h | 4 ++-- include/effects/matrix/PatternSMMetaBalls.h | 4 ++-- include/effects/matrix/PatternSMMirage.h | 4 ++-- include/effects/matrix/PatternSMNoise.h | 4 ++-- include/effects/matrix/PatternSMOneRing.h | 4 ++-- include/effects/matrix/PatternSMPSPCloud.h | 4 ++-- include/effects/matrix/PatternSMParticles.h | 4 ++-- include/effects/matrix/PatternSMParticlesFRIED.h | 4 ++-- include/effects/matrix/PatternSMParticlesFRIED2.h | 4 ++-- include/effects/matrix/PatternSMPastelFlutter.h | 4 ++-- include/effects/matrix/PatternSMPatternTrick.h | 4 ++-- include/effects/matrix/PatternSMPrismata.h | 4 ++-- include/effects/matrix/PatternSMRadialFire.h | 4 ++-- include/effects/matrix/PatternSMRadialWave.h | 4 ++-- include/effects/matrix/PatternSMRainbowFlow.h | 4 ++-- include/effects/matrix/PatternSMRainbowSwirl.h | 4 ++-- include/effects/matrix/PatternSMRainbowTunnel.h | 4 ++-- include/effects/matrix/PatternSMSand.h | 4 ++-- include/effects/matrix/PatternSMSinDots.h | 4 ++-- include/effects/matrix/PatternSMSinusoidSin16.h | 4 ++-- include/effects/matrix/PatternSMSmoke.h | 4 ++-- include/effects/matrix/PatternSMSnakes.h | 4 ++-- include/effects/matrix/PatternSMSpiro.h | 4 ++-- include/effects/matrix/PatternSMSpiroPulse.h | 4 ++-- include/effects/matrix/PatternSMSquaresAndDots.h | 4 ++-- include/effects/matrix/PatternSMStarDeep.h | 4 ++-- include/effects/matrix/PatternSMStarshipTroopers.h | 4 ++-- include/effects/matrix/PatternSMStrobeDiffusion.h | 4 ++-- include/effects/matrix/PatternSMSunRadiation.h | 4 ++-- include/effects/matrix/PatternSMSupernova.h | 4 ++-- include/effects/matrix/PatternSMTixyLand.h | 4 ++-- include/effects/matrix/PatternSMTraffic.h | 4 ++-- include/effects/matrix/PatternSMTwist.h | 4 ++-- include/effects/matrix/PatternSMTwister.h | 4 ++-- include/effects/matrix/PatternSMWalkingMachine.h | 4 ++-- include/effects/matrix/PatternSMWisp.h | 4 ++-- include/effects/matrix/PatternSMXorCircles.h | 4 ++-- 62 files changed, 124 insertions(+), 124 deletions(-) diff --git a/include/effects/matrix/PatternSM2DDPR.h b/include/effects/matrix/PatternSM2DDPR.h index 0b9a020b2..1a8eeafdd 100644 --- a/include/effects/matrix/PatternSM2DDPR.h +++ b/include/effects/matrix/PatternSM2DDPR.h @@ -42,7 +42,7 @@ class PatternSM2DDPR : public LEDStripEffect { } - virtual void Start() override + void Start() override { } @@ -65,7 +65,7 @@ class PatternSM2DDPR : public LEDStripEffect return dist; } - virtual void Draw() override + void Draw() override { effTimer =sin8 (millis()/6000)/10; diff --git a/include/effects/matrix/PatternSMAmberRain.h b/include/effects/matrix/PatternSMAmberRain.h index a13db5c83..3e7a71485 100644 --- a/include/effects/matrix/PatternSMAmberRain.h +++ b/include/effects/matrix/PatternSMAmberRain.h @@ -95,7 +95,7 @@ class PatternSMAmberRain : public LEDStripEffect { } - virtual void Start() override + void Start() override { g()->Clear(); for (int i = 0; i < NUMBER_OF_CIRCLES; i++) { @@ -103,7 +103,7 @@ class PatternSMAmberRain : public LEDStripEffect } } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMAurora.h b/include/effects/matrix/PatternSMAurora.h index bbbf62fd8..5feaa7016 100644 --- a/include/effects/matrix/PatternSMAurora.h +++ b/include/effects/matrix/PatternSMAurora.h @@ -45,12 +45,12 @@ class PatternSMAurora : public LEDStripEffect { } - virtual void Start() override + void Start() override { g()->Clear(); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMBAurora.h b/include/effects/matrix/PatternSMBAurora.h index bbf4085c2..830c27bb5 100644 --- a/include/effects/matrix/PatternSMBAurora.h +++ b/include/effects/matrix/PatternSMBAurora.h @@ -27,12 +27,12 @@ class PatternSMStrobeDiffusion : public LEDStripEffect { } - virtual void Start() override + void Start() override { g()->Clear(); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMBlurringColors.h b/include/effects/matrix/PatternSMBlurringColors.h index 23e0bcdea..7fb15511f 100644 --- a/include/effects/matrix/PatternSMBlurringColors.h +++ b/include/effects/matrix/PatternSMBlurringColors.h @@ -156,7 +156,7 @@ void fountainsEmit(uint8_t i){ { } - virtual void Start() override + void Start() override { g()->Clear(); @@ -182,7 +182,7 @@ void fountainsEmit(uint8_t i){ } } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMBoidExplosion.h b/include/effects/matrix/PatternSMBoidExplosion.h index befa2f77f..3c1bf56ad 100644 --- a/include/effects/matrix/PatternSMBoidExplosion.h +++ b/include/effects/matrix/PatternSMBoidExplosion.h @@ -175,7 +175,7 @@ static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * ( Attractor attractor; Attractor attractor2; - virtual void Start() override { + void Start() override { g()->Clear(); int direction = random(0, 2); @@ -193,7 +193,7 @@ static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * ( attractor2.location = PVector(ROWS / 1.5, COLS / 4); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMBubbles.h b/include/effects/matrix/PatternSMBubbles.h index 9f4b856fd..346e43e39 100644 --- a/include/effects/matrix/PatternSMBubbles.h +++ b/include/effects/matrix/PatternSMBubbles.h @@ -84,7 +84,7 @@ void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) { } - virtual void Start() override + void Start() override { g()->Clear(); x = random16(); @@ -99,7 +99,7 @@ void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) } } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMColorPopcorn.h b/include/effects/matrix/PatternSMColorPopcorn.h index 5bc47bf42..67eba82f7 100644 --- a/include/effects/matrix/PatternSMColorPopcorn.h +++ b/include/effects/matrix/PatternSMColorPopcorn.h @@ -132,7 +132,7 @@ class PatternSMColorPopcorn : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { + void Start() override { g()->Clear(); for (uint8_t r = 0; r < NUM_ROCKETS; r++) { rockets[r].x = random8() * MATRIX_WIDTH - 1; @@ -140,7 +140,7 @@ class PatternSMColorPopcorn : public LEDStripEffect } } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMEyeTunnel.h b/include/effects/matrix/PatternSMEyeTunnel.h index c8d03a00b..78e9f623f 100644 --- a/include/effects/matrix/PatternSMEyeTunnel.h +++ b/include/effects/matrix/PatternSMEyeTunnel.h @@ -106,9 +106,9 @@ class PatternSMEyeTunnel : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMFPicasso3in1.h b/include/effects/matrix/PatternSMFPicasso3in1.h index ce6cdf886..c84ec456f 100644 --- a/include/effects/matrix/PatternSMFPicasso3in1.h +++ b/include/effects/matrix/PatternSMFPicasso3in1.h @@ -279,12 +279,12 @@ class PatternSMPicasso3in1 : public LEDStripEffect (Scale - 34U) / 33.0 * (enlargedOBJECT_MAX_COUNT - 1U) + 1U; } - virtual void Start() override { + void Start() override { g()->Clear(); RecalibrateDrawnObjects(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMFire2012.h b/include/effects/matrix/PatternSMFire2012.h index bb183d675..e64cbba55 100644 --- a/include/effects/matrix/PatternSMFire2012.h +++ b/include/effects/matrix/PatternSMFire2012.h @@ -55,7 +55,7 @@ static constexpr int NUM_LAYERSMAX = 2; { } - virtual void Start() override + void Start() override { g()->Clear(); @@ -66,7 +66,7 @@ static constexpr int NUM_LAYERSMAX = 2; curPalette = palette_arr[(uint8_t)(Scale/50.0F * ((sizeof(palette_arr)/sizeof(TProgmemRGBPalette16 *))-0.01F))]; } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMFire2021.h b/include/effects/matrix/PatternSMFire2021.h index 9f5e27746..6545794af 100644 --- a/include/effects/matrix/PatternSMFire2021.h +++ b/include/effects/matrix/PatternSMFire2021.h @@ -40,7 +40,7 @@ class PatternSMFire2021 : public LEDStripEffect { } - virtual void Start() override + void Start() override { g()->Clear(); if (Scale > 100U) Scale = 100U; // чтобы не было проблем при прошивке без очистки памяти @@ -58,7 +58,7 @@ class PatternSMFire2021 : public LEDStripEffect pcnt = map(step, 1U, 255U, 20U, 128U); // nblend 3th param } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMFireworks.h b/include/effects/matrix/PatternSMFireworks.h index 106718854..52e9230d3 100644 --- a/include/effects/matrix/PatternSMFireworks.h +++ b/include/effects/matrix/PatternSMFireworks.h @@ -46,7 +46,7 @@ class PatternSMFireworks : public LEDStripEffect { } - virtual void Start() override + void Start() override { g()->Clear(); } @@ -179,7 +179,7 @@ class PatternSMFireworks : public LEDStripEffect } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMFlocking-later.h b/include/effects/matrix/PatternSMFlocking-later.h index fd82871c5..9de5cd929 100644 --- a/include/effects/matrix/PatternSMFlocking-later.h +++ b/include/effects/matrix/PatternSMFlocking-later.h @@ -87,7 +87,7 @@ static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * ( LEDStripEffect(jsonObject) { } - virtual void Start() override { + void Start() override { g()->Clear(); x = random16(); @@ -99,7 +99,7 @@ static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * ( } } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMFlocking.h b/include/effects/matrix/PatternSMFlocking.h index e803a3008..0acbdcc66 100644 --- a/include/effects/matrix/PatternSMFlocking.h +++ b/include/effects/matrix/PatternSMFlocking.h @@ -76,14 +76,14 @@ static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * ( LEDStripEffect(jsonObject) { } - virtual void Start() override { + void Start() override { g()->Clear(); for (int i = 0; i < NUM_PARTICLES; i++) { boids[i] = Boid(random(MATRIX_WIDTH), 0); } } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMFlowFields.h b/include/effects/matrix/PatternSMFlowFields.h index c4a4c081a..bbcc58e32 100644 --- a/include/effects/matrix/PatternSMFlowFields.h +++ b/include/effects/matrix/PatternSMFlowFields.h @@ -79,7 +79,7 @@ uint16_t scale = 30; { } - virtual void Start() override + void Start() override { g()->Clear(); @@ -92,7 +92,7 @@ uint16_t scale = 30; } } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMFlying.h b/include/effects/matrix/PatternSMFlying.h index 2f1825820..e452a82c0 100644 --- a/include/effects/matrix/PatternSMFlying.h +++ b/include/effects/matrix/PatternSMFlying.h @@ -29,9 +29,9 @@ class PatternSMFlying : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMGamma.h b/include/effects/matrix/PatternSMGamma.h index aa06f2b4b..f1000f394 100644 --- a/include/effects/matrix/PatternSMGamma.h +++ b/include/effects/matrix/PatternSMGamma.h @@ -31,9 +31,9 @@ class PatternSMGamma : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMGoogleNexus.h b/include/effects/matrix/PatternSMGoogleNexus.h index b894761ea..9fbb1eb65 100644 --- a/include/effects/matrix/PatternSMGoogleNexus.h +++ b/include/effects/matrix/PatternSMGoogleNexus.h @@ -127,7 +127,7 @@ void resetDot(uint8_t idx) { { } - virtual void Start() override + void Start() override { g()->Clear(); for (byte i = 0; i < GOOGLE_NEXUS; i++) { @@ -139,7 +139,7 @@ void resetDot(uint8_t idx) { } } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMGravityBalls.h b/include/effects/matrix/PatternSMGravityBalls.h index d65d6f31b..1cd772c80 100644 --- a/include/effects/matrix/PatternSMGravityBalls.h +++ b/include/effects/matrix/PatternSMGravityBalls.h @@ -72,7 +72,7 @@ float newvel(){ { } - virtual void Start() override + void Start() override { g()->Clear(); for (int i = 0; i < COUNT;i++){ @@ -84,7 +84,7 @@ float newvel(){ } } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMHolidayLights.h b/include/effects/matrix/PatternSMHolidayLights.h index 0ad204670..fa6316097 100644 --- a/include/effects/matrix/PatternSMHolidayLights.h +++ b/include/effects/matrix/PatternSMHolidayLights.h @@ -128,9 +128,9 @@ class PatternSMHolidayLights : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMHypnosis.h b/include/effects/matrix/PatternSMHypnosis.h index 8d4c2e94e..47b9e6de2 100644 --- a/include/effects/matrix/PatternSMHypnosis.h +++ b/include/effects/matrix/PatternSMHypnosis.h @@ -36,7 +36,7 @@ struct{ { } - virtual void Start() override + void Start() override { g()->Clear(); for (int8_t x = -C_X; x < C_X + (LED_COLS % 2); x++) { @@ -47,7 +47,7 @@ struct{ } } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMLightning.h b/include/effects/matrix/PatternSMLightning.h index d539ab769..5effbf73a 100644 --- a/include/effects/matrix/PatternSMLightning.h +++ b/include/effects/matrix/PatternSMLightning.h @@ -41,9 +41,9 @@ class PatternSMLightning : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMLumenjerPalette.h b/include/effects/matrix/PatternSMLumenjerPalette.h index b69994884..6f58d156c 100644 --- a/include/effects/matrix/PatternSMLumenjerPalette.h +++ b/include/effects/matrix/PatternSMLumenjerPalette.h @@ -80,7 +80,7 @@ const TProgmemRGBPalette16 *curPalette = palette_arr[0]; { } - virtual void Start() override + void Start() override { g()->Clear(); #if 1 @@ -91,7 +91,7 @@ const TProgmemRGBPalette16 *curPalette = palette_arr[0]; #endif } - virtual void Draw() override + void Draw() override { nscale8(g()->leds, NUM_LEDS, DIMSPEED); diff --git a/include/effects/matrix/PatternSMMagma.h b/include/effects/matrix/PatternSMMagma.h index d3ada8891..a1bfa55a4 100644 --- a/include/effects/matrix/PatternSMMagma.h +++ b/include/effects/matrix/PatternSMMagma.h @@ -60,7 +60,7 @@ uint8_t shiftValue[MATRIX_HEIGHT]; { } - virtual void Start() override + void Start() override { g()->Clear(); @@ -202,7 +202,7 @@ void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) } } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMMaze2.h b/include/effects/matrix/PatternSMMaze2.h index e393e33a3..2b6d3942a 100644 --- a/include/effects/matrix/PatternSMMaze2.h +++ b/include/effects/matrix/PatternSMMaze2.h @@ -128,12 +128,12 @@ void generateMaze() { { } - virtual void Start() override + void Start() override { g()->Clear(); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMMetaBalls.h b/include/effects/matrix/PatternSMMetaBalls.h index 31fb10c33..bfd1f1e38 100644 --- a/include/effects/matrix/PatternSMMetaBalls.h +++ b/include/effects/matrix/PatternSMMetaBalls.h @@ -45,9 +45,9 @@ class PatternSMMetaBalls : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMMirage.h b/include/effects/matrix/PatternSMMirage.h index 1feb6f3a3..48beffaba 100644 --- a/include/effects/matrix/PatternSMMirage.h +++ b/include/effects/matrix/PatternSMMirage.h @@ -72,12 +72,12 @@ uint8_t xx = (x - (int) x) * 255, yy = (y - (int) y) * 255, ix = 255 - xx, iy = { } - virtual void Start() override + void Start() override { g()->Clear(); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMNoise.h b/include/effects/matrix/PatternSMNoise.h index 8c820ca8b..df1803814 100644 --- a/include/effects/matrix/PatternSMNoise.h +++ b/include/effects/matrix/PatternSMNoise.h @@ -1110,7 +1110,7 @@ uint16_t ColorCube() { { } - virtual void Start() override + void Start() override { g()->Clear(); noisex = random16(); @@ -1118,7 +1118,7 @@ uint16_t ColorCube() { noisez = random16(); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMOneRing.h b/include/effects/matrix/PatternSMOneRing.h index ccbebe25f..17085e206 100644 --- a/include/effects/matrix/PatternSMOneRing.h +++ b/include/effects/matrix/PatternSMOneRing.h @@ -32,7 +32,7 @@ class PatternSMOneRing : public LEDStripEffect { } - virtual void Start() override + void Start() override { } @@ -59,7 +59,7 @@ class PatternSMOneRing : public LEDStripEffect g()->leds[g()->xy(x, y)].setRGB(bri, bri, 0); } - virtual void Draw() override + void Draw() override { double t = millis() / 1000.0; // some formulas is hardcoded and fps get down. this speedup it for (byte x = 0; x < MATRIX_WIDTH; x++) { diff --git a/include/effects/matrix/PatternSMPSPCloud.h b/include/effects/matrix/PatternSMPSPCloud.h index e16e01a78..32503cf91 100644 --- a/include/effects/matrix/PatternSMPSPCloud.h +++ b/include/effects/matrix/PatternSMPSPCloud.h @@ -35,9 +35,9 @@ class PatternSMPSPCloud : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMParticles.h b/include/effects/matrix/PatternSMParticles.h index 40d0988bf..a8bb93917 100644 --- a/include/effects/matrix/PatternSMParticles.h +++ b/include/effects/matrix/PatternSMParticles.h @@ -63,7 +63,7 @@ class PatternSMParticles : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } void drawPixelXY(int8_t x, int8_t y, CRGB color) { if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) @@ -72,7 +72,7 @@ class PatternSMParticles : public LEDStripEffect g()->leds[thisPixel] = color; } // служебные функции - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMParticlesFRIED.h b/include/effects/matrix/PatternSMParticlesFRIED.h index 2f04a7da9..73311104a 100644 --- a/include/effects/matrix/PatternSMParticlesFRIED.h +++ b/include/effects/matrix/PatternSMParticlesFRIED.h @@ -39,9 +39,9 @@ class PatternSMParticles : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMParticlesFRIED2.h b/include/effects/matrix/PatternSMParticlesFRIED2.h index edeb9d5a0..15b1d0222 100644 --- a/include/effects/matrix/PatternSMParticlesFRIED2.h +++ b/include/effects/matrix/PatternSMParticlesFRIED2.h @@ -54,7 +54,7 @@ class PatternSMParticles : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } void drawPixelXY(int8_t x, int8_t y, CRGB color) { if (x < 0 || x > (MATRIX_WIDTH - 1) || y < 0 || y > (MATRIX_HEIGHT - 1)) @@ -66,7 +66,7 @@ class PatternSMParticles : public LEDStripEffect //} } // служебные функции - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMPastelFlutter.h b/include/effects/matrix/PatternSMPastelFlutter.h index eb5b0d969..15943b743 100644 --- a/include/effects/matrix/PatternSMPastelFlutter.h +++ b/include/effects/matrix/PatternSMPastelFlutter.h @@ -69,12 +69,12 @@ class PatternSMPastelFlutter : public LEDStripEffect { } - virtual void Start() override + void Start() override { g()->Clear(); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMPatternTrick.h b/include/effects/matrix/PatternSMPatternTrick.h index 6dd1c909b..59cd1e375 100644 --- a/include/effects/matrix/PatternSMPatternTrick.h +++ b/include/effects/matrix/PatternSMPatternTrick.h @@ -29,9 +29,9 @@ class PatternSMPatternTrick : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMPrismata.h b/include/effects/matrix/PatternSMPrismata.h index 75fecb323..2c99e89e1 100644 --- a/include/effects/matrix/PatternSMPrismata.h +++ b/include/effects/matrix/PatternSMPrismata.h @@ -44,12 +44,12 @@ class PatternSMPrismata : public LEDStripEffect { } - virtual void Start() override + void Start() override { g()->Clear(); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMRadialFire.h b/include/effects/matrix/PatternSMRadialFire.h index 1b0d7fac4..e1d885bd4 100644 --- a/include/effects/matrix/PatternSMRadialFire.h +++ b/include/effects/matrix/PatternSMRadialFire.h @@ -38,7 +38,7 @@ class PatternSMRadialFire : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { + void Start() override { g()->Clear(); for (int8_t x = -C_X; x < C_X + (LED_COLS % 2); x++) { for (int8_t y = -C_Y; y < C_Y + (LED_ROWS % 2); y++) { @@ -48,7 +48,7 @@ class PatternSMRadialFire : public LEDStripEffect } } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMRadialWave.h b/include/effects/matrix/PatternSMRadialWave.h index 291ed186a..f5db5784e 100644 --- a/include/effects/matrix/PatternSMRadialWave.h +++ b/include/effects/matrix/PatternSMRadialWave.h @@ -43,7 +43,7 @@ rMap[LED_COLS][LED_ROWS]; { } - virtual void Start() override + void Start() override { g()->Clear(); for (int8_t x = -C_X; x < C_X + (LED_COLS % 2); x++) { @@ -54,7 +54,7 @@ rMap[LED_COLS][LED_ROWS]; } } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMRainbowFlow.h b/include/effects/matrix/PatternSMRainbowFlow.h index 822753948..e57f118bc 100644 --- a/include/effects/matrix/PatternSMRainbowFlow.h +++ b/include/effects/matrix/PatternSMRainbowFlow.h @@ -31,12 +31,12 @@ class PatternSMRainbowFlow : public LEDStripEffect { } - virtual void Start() override + void Start() override { g()->Clear(); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMRainbowSwirl.h b/include/effects/matrix/PatternSMRainbowSwirl.h index 9fc19c7c1..e8954bfac 100644 --- a/include/effects/matrix/PatternSMRainbowSwirl.h +++ b/include/effects/matrix/PatternSMRainbowSwirl.h @@ -30,12 +30,12 @@ class PatternSMRainbowSwirl : public LEDStripEffect { } - virtual void Start() override + void Start() override { g()->Clear(); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMRainbowTunnel.h b/include/effects/matrix/PatternSMRainbowTunnel.h index c0c9ce7b2..1392874ef 100644 --- a/include/effects/matrix/PatternSMRainbowTunnel.h +++ b/include/effects/matrix/PatternSMRainbowTunnel.h @@ -43,7 +43,7 @@ class PatternSMRainbowTunnel : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { + void Start() override { g()->Clear(); for (int8_t x = -C_X; x < C_X + (LED_COLS % 2); x++) { for (int8_t y = -C_Y; y < C_Y + (LED_ROWS % 2); y++) { @@ -54,7 +54,7 @@ class PatternSMRainbowTunnel : public LEDStripEffect } } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMSand.h b/include/effects/matrix/PatternSMSand.h index 7a47d5f7a..a7ea0996e 100644 --- a/include/effects/matrix/PatternSMSand.h +++ b/include/effects/matrix/PatternSMSand.h @@ -50,7 +50,7 @@ class PatternSMSand : public LEDStripEffect { } - virtual void Start() override + void Start() override { g()->Clear(); } @@ -70,7 +70,7 @@ class PatternSMSand : public LEDStripEffect - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMSinDots.h b/include/effects/matrix/PatternSMSinDots.h index 72f47f0d2..66918b5a1 100644 --- a/include/effects/matrix/PatternSMSinDots.h +++ b/include/effects/matrix/PatternSMSinDots.h @@ -29,9 +29,9 @@ class PatternSMSinDots : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMSinusoidSin16.h b/include/effects/matrix/PatternSMSinusoidSin16.h index 76d8249a3..76da218bb 100644 --- a/include/effects/matrix/PatternSMSinusoidSin16.h +++ b/include/effects/matrix/PatternSMSinusoidSin16.h @@ -59,7 +59,7 @@ class PatternSMSinusoidSin16 : public LEDStripEffect { } - virtual void Start() override + void Start() override { g()->Clear(); //deltaHue = (Scale - 1U) % ... + 1U; @@ -82,7 +82,7 @@ class PatternSMSinusoidSin16 : public LEDStripEffect // 2nd upd by Stepko https://wokwi.com/arduino/projects/287675911209222664 // 3rd proper by SottNick - virtual void Draw() override + void Draw() override { float e_s3_size = 3. * Scale / 100.0 + 2; // amplitude of the curves diff --git a/include/effects/matrix/PatternSMSmoke.h b/include/effects/matrix/PatternSMSmoke.h index ba86fcae9..6398c4ba6 100644 --- a/include/effects/matrix/PatternSMSmoke.h +++ b/include/effects/matrix/PatternSMSmoke.h @@ -111,12 +111,12 @@ void MoveFractionalNoiseY(int8_t amplitude = 1, float shift = 0) { { } - virtual void Start() override + void Start() override { g()->Clear(); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMSnakes.h b/include/effects/matrix/PatternSMSnakes.h index e06f87ac4..3d1a4fc8b 100644 --- a/include/effects/matrix/PatternSMSnakes.h +++ b/include/effects/matrix/PatternSMSnakes.h @@ -58,7 +58,7 @@ class PatternSMSnakes : public LEDStripEffect { } - virtual void Start() override + void Start() override { g()->Clear(); speedfactor = (float)Speed / 555.0f + 0.001f; @@ -79,7 +79,7 @@ class PatternSMSnakes : public LEDStripEffect } } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMSpiro.h b/include/effects/matrix/PatternSMSpiro.h index ea6e301a8..76ad9a6f3 100644 --- a/include/effects/matrix/PatternSMSpiro.h +++ b/include/effects/matrix/PatternSMSpiro.h @@ -90,12 +90,12 @@ uint8_t mapcos8(uint8_t theta, uint8_t lowest = 0, uint8_t highest = 255) { { } - virtual void Start() override + void Start() override { g()->Clear(); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMSpiroPulse.h b/include/effects/matrix/PatternSMSpiroPulse.h index a15baeb18..c64e6fdf0 100644 --- a/include/effects/matrix/PatternSMSpiroPulse.h +++ b/include/effects/matrix/PatternSMSpiroPulse.h @@ -79,9 +79,9 @@ class PatternSMSpiroPulse : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMSquaresAndDots.h b/include/effects/matrix/PatternSMSquaresAndDots.h index f0913f161..e1218bc5b 100644 --- a/include/effects/matrix/PatternSMSquaresAndDots.h +++ b/include/effects/matrix/PatternSMSquaresAndDots.h @@ -56,7 +56,7 @@ class PatternSMSquaresAndDots : public LEDStripEffect } } - virtual void Start() override + void Start() override { g()->Clear(); for (byte x = 0; x < MATRIX_WIDTH / 3 + 1; x++) { @@ -66,7 +66,7 @@ class PatternSMSquaresAndDots : public LEDStripEffect } } - virtual void Draw() override + void Draw() override { EVERY_N_MILLISECONDS(300) { printSpr((random8(MATRIX_WIDTH) % (MATRIX_WIDTH / 3 + 1)) * 3, (random8(MATRIX_HEIGHT) % (MATRIX_HEIGHT / 3 + 1)) * 3, random8(2)); diff --git a/include/effects/matrix/PatternSMStarDeep.h b/include/effects/matrix/PatternSMStarDeep.h index 15b0d75b9..a92d561a8 100644 --- a/include/effects/matrix/PatternSMStarDeep.h +++ b/include/effects/matrix/PatternSMStarDeep.h @@ -56,7 +56,7 @@ class PatternSMStarDeep : public LEDStripEffect { } - virtual void Start() override + void Start() override { g()->Clear(); @@ -143,7 +143,7 @@ class PatternSMStarDeep : public LEDStripEffect } } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMStarshipTroopers.h b/include/effects/matrix/PatternSMStarshipTroopers.h index 01d2dc9a3..0dc3a6f61 100644 --- a/include/effects/matrix/PatternSMStarshipTroopers.h +++ b/include/effects/matrix/PatternSMStarshipTroopers.h @@ -109,9 +109,9 @@ static inline uint8_t WU_WEIGHT(uint8_t a, uint8_t b) {return (uint8_t)(((a) * ( LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMStrobeDiffusion.h b/include/effects/matrix/PatternSMStrobeDiffusion.h index 55bf33706..705986f7a 100644 --- a/include/effects/matrix/PatternSMStrobeDiffusion.h +++ b/include/effects/matrix/PatternSMStrobeDiffusion.h @@ -49,7 +49,7 @@ class PatternSMStrobeDiffusion : public LEDStripEffect { } - virtual void Start() override + void Start() override { // FPSdelay = 25U; // LOW_DELAY; // hue2 = 1; @@ -99,7 +99,7 @@ class PatternSMStrobeDiffusion : public LEDStripEffect return g()->leds[g()->xy(x, y)]; } - virtual void Draw() override + void Draw() override { const uint8_t SIZE = 3U; const uint8_t DELTA = 1U; // центровка по вертикали diff --git a/include/effects/matrix/PatternSMSunRadiation.h b/include/effects/matrix/PatternSMSunRadiation.h index 1222ab10d..8581163c3 100644 --- a/include/effects/matrix/PatternSMSunRadiation.h +++ b/include/effects/matrix/PatternSMSunRadiation.h @@ -83,12 +83,12 @@ class PatternSMSunRadiation : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { + void Start() override { g()->Clear(); generateCHSVlut(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMSupernova.h b/include/effects/matrix/PatternSMSupernova.h index 192e51a86..79f5c5d6d 100644 --- a/include/effects/matrix/PatternSMSupernova.h +++ b/include/effects/matrix/PatternSMSupernova.h @@ -131,7 +131,7 @@ void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) { } - virtual void Start() override + void Start() override { g()->Clear(); enlargedObjectNUM = 200; @@ -142,7 +142,7 @@ void drawPixelXYF(float x, float y, CRGB color) //, uint8_t darklevel = 0U) IsShift[i] = false; // particle->isAlive } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMTixyLand.h b/include/effects/matrix/PatternSMTixyLand.h index 248615431..1f1f916f8 100644 --- a/include/effects/matrix/PatternSMTixyLand.h +++ b/include/effects/matrix/PatternSMTixyLand.h @@ -112,7 +112,7 @@ void processFrame(double t, double x, double y) { { } - virtual void Start() override + void Start() override { g()->Clear(); } @@ -131,7 +131,7 @@ void processFrame(double t, double x, double y) { LEDMatrixGFX::backgroundLayer.drawString(x, y, rgb24(255,255,255), pszText); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMTraffic.h b/include/effects/matrix/PatternSMTraffic.h index 6446694a5..81a6d0511 100644 --- a/include/effects/matrix/PatternSMTraffic.h +++ b/include/effects/matrix/PatternSMTraffic.h @@ -58,7 +58,7 @@ class PatternSMTraffic : public LEDStripEffect { } - virtual void Start() override + void Start() override { g()->Clear(); deltaValue = 255U - Speed + 1U; @@ -132,7 +132,7 @@ class PatternSMTraffic : public LEDStripEffect } } - virtual void Draw() override + void Draw() override { if (step >= deltaValue) { step = 0U; diff --git a/include/effects/matrix/PatternSMTwist.h b/include/effects/matrix/PatternSMTwist.h index 51f10f2f9..3c641ed4c 100644 --- a/include/effects/matrix/PatternSMTwist.h +++ b/include/effects/matrix/PatternSMTwist.h @@ -50,9 +50,9 @@ class PatternSMTwist : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMTwister.h b/include/effects/matrix/PatternSMTwister.h index daf475ad3..4c8a87a26 100644 --- a/include/effects/matrix/PatternSMTwister.h +++ b/include/effects/matrix/PatternSMTwister.h @@ -53,9 +53,9 @@ class PatternSMTwister : public LEDStripEffect LEDStripEffect(jsonObject) { } - virtual void Start() override { g()->Clear(); } + void Start() override { g()->Clear(); } - virtual void Draw() override { + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); #endif diff --git a/include/effects/matrix/PatternSMWalkingMachine.h b/include/effects/matrix/PatternSMWalkingMachine.h index 82456b82a..ff5390157 100644 --- a/include/effects/matrix/PatternSMWalkingMachine.h +++ b/include/effects/matrix/PatternSMWalkingMachine.h @@ -110,12 +110,12 @@ struct{ { } - virtual void Start() override + void Start() override { g()->Clear(); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMWisp.h b/include/effects/matrix/PatternSMWisp.h index 555ad523b..9868a665f 100644 --- a/include/effects/matrix/PatternSMWisp.h +++ b/include/effects/matrix/PatternSMWisp.h @@ -114,12 +114,12 @@ void FillNoise(int8_t layer) { } } - virtual void Start() override + void Start() override { g()->Clear(); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); diff --git a/include/effects/matrix/PatternSMXorCircles.h b/include/effects/matrix/PatternSMXorCircles.h index a761d2071..eb23026d6 100644 --- a/include/effects/matrix/PatternSMXorCircles.h +++ b/include/effects/matrix/PatternSMXorCircles.h @@ -39,12 +39,12 @@ static constexpr uint8_t scale_y = log2(64/LED_ROWS); { } - virtual void Start() override + void Start() override { g()->Clear(); } - virtual void Draw() override + void Draw() override { #if ENABLE_AUDIO ProcessAudio(); From 193eceb6d4d88eebbf44c8b668f202c954e5860f Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sat, 29 Jul 2023 10:33:11 -0500 Subject: [PATCH 075/168] misc cleanups --- include/effects/matrix/PatternSMBlurringColors.h | 3 ++- include/effects/matrix/PatternSMBoidExplosion.h | 2 +- include/effects/matrix/PatternSMBubbles.h | 3 +-- include/effects/matrix/PatternSMColorPopcorn.h | 4 ++-- include/effects/matrix/PatternSMFireworks.h | 2 +- include/effects/matrix/PatternSMFlocking-later.h | 2 +- include/effects/matrix/PatternSMFlocking.h | 2 +- include/effects/matrix/PatternSMFlowFields.h | 2 +- include/effects/matrix/PatternSMMagma.h | 2 +- include/effects/matrix/PatternSMSand.h | 2 +- include/effects/matrix/PatternSMSpiroPulse.h | 2 +- include/effects/matrix/PatternSMStarshipTroopers.h | 2 +- include/effects/matrix/PatternSMStrobeDiffusion.h | 2 +- include/effects/matrix/PatternSMSupernova.h | 2 +- include/effects/matrix/PatternSMTraffic.h | 6 +++--- 15 files changed, 19 insertions(+), 19 deletions(-) diff --git a/include/effects/matrix/PatternSMBlurringColors.h b/include/effects/matrix/PatternSMBlurringColors.h index 7fb15511f..a06dcba1c 100644 --- a/include/effects/matrix/PatternSMBlurringColors.h +++ b/include/effects/matrix/PatternSMBlurringColors.h @@ -43,7 +43,8 @@ uint8_t deltaValue; // просто повтор uint8_t step; // какой-нибудь счётчик кадров или последовательностей операций - CRGB getPixColorXY(uint8_t x, uint8_t y) { + [[nodiscard]] CRGB getPixColorXY(uint8_t x, uint8_t y) const + { return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; //return g()->leds[g()->xy(x, y)]; } diff --git a/include/effects/matrix/PatternSMBoidExplosion.h b/include/effects/matrix/PatternSMBoidExplosion.h index 3c1bf56ad..a9946b3b8 100644 --- a/include/effects/matrix/PatternSMBoidExplosion.h +++ b/include/effects/matrix/PatternSMBoidExplosion.h @@ -33,7 +33,7 @@ class PatternSMBoidExplosion : public LEDStripEffect CRGBPalette16 currentPalette; TBlendType currentBlending; - CRGB getPixColorXY(uint8_t x, uint8_t y) { + [[nodiscard]] CRGB getPixColorXY(uint8_t x, uint8_t y) const { return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; } diff --git a/include/effects/matrix/PatternSMBubbles.h b/include/effects/matrix/PatternSMBubbles.h index 346e43e39..1fcd15398 100644 --- a/include/effects/matrix/PatternSMBubbles.h +++ b/include/effects/matrix/PatternSMBubbles.h @@ -30,8 +30,7 @@ class PatternSMBubbles : public LEDStripEffect int speed = 1; int count = NUM_PARTICLES; - CRGB getPixColorXY(uint8_t x, uint8_t y) - { + [[nodiscard]] CRGB getPixColorXY(uint8_t x, uint8_t y) const { return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; //return g()->leds[g()->xy(x, y)]; } diff --git a/include/effects/matrix/PatternSMColorPopcorn.h b/include/effects/matrix/PatternSMColorPopcorn.h index 67eba82f7..adc1afe97 100644 --- a/include/effects/matrix/PatternSMColorPopcorn.h +++ b/include/effects/matrix/PatternSMColorPopcorn.h @@ -20,9 +20,9 @@ class PatternSMColorPopcorn : public LEDStripEffect uint8_t gravity = 16; #define NUM_ROCKETS 8 - typedef struct { + using Rocket = struct { int32_t x, y, xd, yd; - } Rocket; + }; Rocket rockets[NUM_ROCKETS]; diff --git a/include/effects/matrix/PatternSMFireworks.h b/include/effects/matrix/PatternSMFireworks.h index 52e9230d3..841e176f1 100644 --- a/include/effects/matrix/PatternSMFireworks.h +++ b/include/effects/matrix/PatternSMFireworks.h @@ -2,7 +2,7 @@ #include "effects/strip/musiceffect.h" #include "effectmanager.h" -#include +#include // Inspired from https://editor.soulmatelights.com/gallery/1165-fireworks-by-shaitan diff --git a/include/effects/matrix/PatternSMFlocking-later.h b/include/effects/matrix/PatternSMFlocking-later.h index 9de5cd929..b70f39f95 100644 --- a/include/effects/matrix/PatternSMFlocking-later.h +++ b/include/effects/matrix/PatternSMFlocking-later.h @@ -25,7 +25,7 @@ class PatternSMFlocking : public LEDStripEffect // it's supposed to be. it works with 50 but it's a little slow. on // an esp32 it looks pretty nice at that number 15 is a safe number - CRGB getPixColorXY(uint8_t x, uint8_t y) { + [[nodiscard]] CRGB getPixColorXY(uint8_t x, uint8_t y) const { return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; } diff --git a/include/effects/matrix/PatternSMFlocking.h b/include/effects/matrix/PatternSMFlocking.h index 0acbdcc66..1d0f43083 100644 --- a/include/effects/matrix/PatternSMFlocking.h +++ b/include/effects/matrix/PatternSMFlocking.h @@ -20,7 +20,7 @@ class PatternSMFlocking : public LEDStripEffect static constexpr int NUM_PARTICLES = 10; Boid boids[NUM_PARTICLES]; - CRGB getPixColorXY(uint8_t x, uint8_t y) { + [[nodiscard]] CRGB getPixColorXY(uint8_t x, uint8_t y) const { return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; // return g()->leds[g()->xy(x, y)]; } diff --git a/include/effects/matrix/PatternSMFlowFields.h b/include/effects/matrix/PatternSMFlowFields.h index bbcc58e32..62e7daf78 100644 --- a/include/effects/matrix/PatternSMFlowFields.h +++ b/include/effects/matrix/PatternSMFlowFields.h @@ -21,7 +21,7 @@ class PatternSMFlowFields : public LEDStripEffect const int ROWS = MATRIX_HEIGHT; static const int NUM_PARTICLES = 40; //set this to the number of particles. the varialbe describes what it's supposed to be. it works with 50 but it's a little slow. on an esp32 it looks pretty nice at that number 15 is a safe number - CRGB getPixColorXY(uint8_t x, uint8_t y) { + [[nodiscard]] CRGB getPixColorXY(uint8_t x, uint8_t y) const { return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; } diff --git a/include/effects/matrix/PatternSMMagma.h b/include/effects/matrix/PatternSMMagma.h index a1bfa55a4..716401d66 100644 --- a/include/effects/matrix/PatternSMMagma.h +++ b/include/effects/matrix/PatternSMMagma.h @@ -150,7 +150,7 @@ void LeapersRestart_leaper(uint8_t l) { #if 1 // функция получения цвета пикселя по его номеру -uint32_t getPixColor(uint32_t thisSegm) +uint32_t getPixColor(uint32_t thisSegm) const { uint32_t thisPixel = thisSegm;// * SEGMENTS; if (thisPixel > NUM_LEDS - 1) return 0; diff --git a/include/effects/matrix/PatternSMSand.h b/include/effects/matrix/PatternSMSand.h index a7ea0996e..4a58cf084 100644 --- a/include/effects/matrix/PatternSMSand.h +++ b/include/effects/matrix/PatternSMSand.h @@ -55,7 +55,7 @@ class PatternSMSand : public LEDStripEffect g()->Clear(); } - CRGB getPixColorXY(uint8_t x, uint8_t y) const + [[nodiscard]] CRGB getPixColorXY(uint8_t x, uint8_t y) const { // Just don't think about what this does to prefetch and prediction... return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; diff --git a/include/effects/matrix/PatternSMSpiroPulse.h b/include/effects/matrix/PatternSMSpiroPulse.h index c64e6fdf0..778f8632e 100644 --- a/include/effects/matrix/PatternSMSpiroPulse.h +++ b/include/effects/matrix/PatternSMSpiroPulse.h @@ -22,7 +22,7 @@ class PatternSMSpiroPulse : public LEDStripEffect float Angle; bool change = true; - CRGB getPixColorXY(uint8_t x, uint8_t y) { + [[nodiscard]] CRGB getPixColorXY(uint8_t x, uint8_t y) const { return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; // return g()->leds[g()->xy(x, y)]; } diff --git a/include/effects/matrix/PatternSMStarshipTroopers.h b/include/effects/matrix/PatternSMStarshipTroopers.h index 0dc3a6f61..37fb44aa0 100644 --- a/include/effects/matrix/PatternSMStarshipTroopers.h +++ b/include/effects/matrix/PatternSMStarshipTroopers.h @@ -53,7 +53,7 @@ class PatternSMStarshipTroopers : public LEDStripEffect const double out_min, const double out_max) { return (out_max - out_min) * (x - in_min) / (in_max - in_min) + out_min; } - CRGB getPixel(uint8_t x, uint8_t y) { + [[nodiscard]] CRGB getPixel(uint8_t x, uint8_t y) const { return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; // return g()->leds[g()->xy(x, y)]; } diff --git a/include/effects/matrix/PatternSMStrobeDiffusion.h b/include/effects/matrix/PatternSMStrobeDiffusion.h index 705986f7a..f378243e5 100644 --- a/include/effects/matrix/PatternSMStrobeDiffusion.h +++ b/include/effects/matrix/PatternSMStrobeDiffusion.h @@ -93,7 +93,7 @@ class PatternSMStrobeDiffusion : public LEDStripEffect } // функция получения цвета пикселя в матрице по его координатам - CRGB getPixColorXY(uint8_t x, uint8_t y) + [[nodiscard]] CRGB getPixColorXY(uint8_t x, uint8_t y) const { // Just don't think about what this does to prefetch and prediction... return g()->leds[g()->xy(x, y)]; diff --git a/include/effects/matrix/PatternSMSupernova.h b/include/effects/matrix/PatternSMSupernova.h index 79f5c5d6d..6177696f5 100644 --- a/include/effects/matrix/PatternSMSupernova.h +++ b/include/effects/matrix/PatternSMSupernova.h @@ -76,7 +76,7 @@ void starfield2Emit(uint8_t i){ IsShift[i] = true; // particle->isAlive } - CRGB getPixColorXY(uint8_t x, uint8_t y) + [[nodiscard]] CRGB getPixColorXY(uint8_t x, uint8_t y) const { return g()->leds[g()->xy(x, MATRIX_HEIGHT - 1 - y)]; //return g()->leds[g()->xy(x, y)]; diff --git a/include/effects/matrix/PatternSMTraffic.h b/include/effects/matrix/PatternSMTraffic.h index 81a6d0511..d0ade3af7 100644 --- a/include/effects/matrix/PatternSMTraffic.h +++ b/include/effects/matrix/PatternSMTraffic.h @@ -2,7 +2,7 @@ #include "effects/strip/musiceffect.h" #include "effectmanager.h" -#include +#include // Derived from https://editor.soulmatelights.com/gallery/1404-traffic @@ -70,7 +70,7 @@ class PatternSMTraffic : public LEDStripEffect } // функция получения цвета пикселя по его номеру - CRGB getPixColor(uint32_t thisSegm) + CRGB getPixColor(uint32_t thisSegm) const { uint32_t thisPixel = thisSegm;// * SEGMENTS; if (thisPixel > NUM_LEDS - 1) return 0; @@ -78,7 +78,7 @@ class PatternSMTraffic : public LEDStripEffect } // функция получения цвета пикселя в матрице по его координатам - CRGB getPixColorXY(uint8_t x, uint8_t y) + [[nodiscard]] CRGB getPixColorXY(uint8_t x, uint8_t y) const { // Just don't think about what this does to prefetch and prediction... return g()->leds[g()->xy(x, y)]; From 94223d0e91885afcc1d9dad7a611b6b41a127b28 Mon Sep 17 00:00:00 2001 From: Robert Lipe Date: Sun, 6 Aug 2023 19:52:41 -0500 Subject: [PATCH 076/168] Reformat *SM*h to make it less hideous. --- .../.cmake/api/v1/query/cache-v2 | 0 .../.cmake/api/v1/query/cmakeFiles-v1 | 0 .../.cmake/api/v1/query/codemodel-v2 | 0 .../.cmake/api/v1/query/toolchains-v1 | 0 .../CMakeFiles/3.22.3/CMakeSystem.cmake | 15 + .../3.22.3/CompilerIdC/CMakeCCompilerId.c | 802 +++++++++ cmake-build-debug/CMakeFiles/CMakeOutput.log | 250 +++ .../CMakeFiles/clion-environment.txt | 3 + config/partitions_custom_8M.csv | 11 + include/.globals.h.swp | Bin 0 -> 16384 bytes include/.ledmatrixgfx.h.swp | Bin 0 -> 16384 bytes include/effects/matrix/AMPatternHotBlob.h | 81 + include/effects/matrix/DiffusionOOPS.h | 182 +++ include/effects/matrix/DiffusionTRASH.h | 181 +++ .../matrix/Never Gonna Give You Up.mp4 | Bin 0 -> 10669875 bytes include/effects/matrix/PatternSM2DDPR.h | 60 +- include/effects/matrix/PatternSMAmberRain.h | 53 +- include/effects/matrix/PatternSMAurora.h | 82 +- include/effects/matrix/PatternSMBAurora.h | 40 +- .../effects/matrix/PatternSMBlurringColors.h | 366 +++-- .../effects/matrix/PatternSMBoidExplosion.h | 16 +- include/effects/matrix/PatternSMBubbles.h | 204 +-- .../effects/matrix/PatternSMColorPopcorn.h | 4 +- include/effects/matrix/PatternSMEyeTunnel.h | 10 +- include/effects/matrix/PatternSMFire2012.h | 169 +- include/effects/matrix/PatternSMFire2021.h | 110 +- include/effects/matrix/PatternSMFireworks.h | 267 +-- .../effects/matrix/PatternSMFlocking-later.h | 8 +- include/effects/matrix/PatternSMFlocking.h | 11 +- include/effects/matrix/PatternSMFlowFields.h | 112 +- include/effects/matrix/PatternSMGoogleNexus.h | 290 ++-- .../effects/matrix/PatternSMGravityBalls.h | 187 ++- include/effects/matrix/PatternSMHypnosis.h | 78 +- .../effects/matrix/PatternSMLumenjerPalette.h | 207 ++- include/effects/matrix/PatternSMMagma.h | 376 +++-- include/effects/matrix/PatternSMMaze2.h | 377 ++--- include/effects/matrix/PatternSMMirage.h | 139 +- include/effects/matrix/PatternSMNoise.h | 1443 +++++++---------- include/effects/matrix/PatternSMOneRing.h | 70 +- include/effects/matrix/PatternSMParticles.h | 11 +- .../effects/matrix/PatternSMPastelFlutter.h | 186 ++- include/effects/matrix/PatternSMPrismata.h | 80 +- include/effects/matrix/PatternSMRadialWave.h | 93 +- include/effects/matrix/PatternSMRainbowFlow.h | 59 +- .../effects/matrix/PatternSMRainbowSwirl.h | 42 +- include/effects/matrix/PatternSMSand.h | 209 +-- .../effects/matrix/PatternSMSinusoidSin16.h | 731 +++++---- include/effects/matrix/PatternSMSmoke.h | 281 ++-- include/effects/matrix/PatternSMSnakes.h | 437 ++--- include/effects/matrix/PatternSMSpiro.h | 251 +-- include/effects/matrix/PatternSMSpiroPulse.h | 6 +- .../effects/matrix/PatternSMSquaresAndDots.h | 69 +- include/effects/matrix/PatternSMStarDeep.h | 274 ++-- .../matrix/PatternSMStarshipTroopers.h | 8 +- .../effects/matrix/PatternSMStrobeDiffusion.h | 300 ++-- include/effects/matrix/PatternSMSupernova.h | 281 ++-- include/effects/matrix/PatternSMTixyLand.h | 331 ++-- include/effects/matrix/PatternSMTraffic.h | 312 ++-- .../effects/matrix/PatternSMWalkingMachine.h | 202 +-- include/effects/matrix/PatternSMWisp.h | 227 +-- include/effects/matrix/PatternSMXorCircles.h | 86 +- include/effects/matrix/PatternTemplate.h | 48 + include/effects/matrix/animartrix.h | 221 +++ .../matrix/junk/PatternSMBoidExplosion.h | 210 +++ include/effects/matrix/junk/PatternSMWhirls.h | 242 +++ 65 files changed, 6891 insertions(+), 4510 deletions(-) create mode 100644 cmake-build-debug/.cmake/api/v1/query/cache-v2 create mode 100644 cmake-build-debug/.cmake/api/v1/query/cmakeFiles-v1 create mode 100644 cmake-build-debug/.cmake/api/v1/query/codemodel-v2 create mode 100644 cmake-build-debug/.cmake/api/v1/query/toolchains-v1 create mode 100644 cmake-build-debug/CMakeFiles/3.22.3/CMakeSystem.cmake create mode 100644 cmake-build-debug/CMakeFiles/3.22.3/CompilerIdC/CMakeCCompilerId.c create mode 100644 cmake-build-debug/CMakeFiles/CMakeOutput.log create mode 100644 cmake-build-debug/CMakeFiles/clion-environment.txt create mode 100644 config/partitions_custom_8M.csv create mode 100644 include/.globals.h.swp create mode 100644 include/.ledmatrixgfx.h.swp create mode 100644 include/effects/matrix/AMPatternHotBlob.h create mode 100644 include/effects/matrix/DiffusionOOPS.h create mode 100644 include/effects/matrix/DiffusionTRASH.h create mode 100644 include/effects/matrix/Never Gonna Give You Up.mp4 create mode 100644 include/effects/matrix/PatternTemplate.h create mode 100644 include/effects/matrix/animartrix.h create mode 100644 include/effects/matrix/junk/PatternSMBoidExplosion.h create mode 100644 include/effects/matrix/junk/PatternSMWhirls.h diff --git a/cmake-build-debug/.cmake/api/v1/query/cache-v2 b/cmake-build-debug/.cmake/api/v1/query/cache-v2 new file mode 100644 index 000000000..e69de29bb diff --git a/cmake-build-debug/.cmake/api/v1/query/cmakeFiles-v1 b/cmake-build-debug/.cmake/api/v1/query/cmakeFiles-v1 new file mode 100644 index 000000000..e69de29bb diff --git a/cmake-build-debug/.cmake/api/v1/query/codemodel-v2 b/cmake-build-debug/.cmake/api/v1/query/codemodel-v2 new file mode 100644 index 000000000..e69de29bb diff --git a/cmake-build-debug/.cmake/api/v1/query/toolchains-v1 b/cmake-build-debug/.cmake/api/v1/query/toolchains-v1 new file mode 100644 index 000000000..e69de29bb diff --git a/cmake-build-debug/CMakeFiles/3.22.3/CMakeSystem.cmake b/cmake-build-debug/CMakeFiles/3.22.3/CMakeSystem.cmake new file mode 100644 index 000000000..d15376fc9 --- /dev/null +++ b/cmake-build-debug/CMakeFiles/3.22.3/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Darwin-22.5.0") +set(CMAKE_HOST_SYSTEM_NAME "Darwin") +set(CMAKE_HOST_SYSTEM_VERSION "22.5.0") +set(CMAKE_HOST_SYSTEM_PROCESSOR "arm64") + + + +set(CMAKE_SYSTEM "Darwin-22.5.0") +set(CMAKE_SYSTEM_NAME "Darwin") +set(CMAKE_SYSTEM_VERSION "22.5.0") +set(CMAKE_SYSTEM_PROCESSOR "arm64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/cmake-build-debug/CMakeFiles/3.22.3/CompilerIdC/CMakeCCompilerId.c b/cmake-build-debug/CMakeFiles/3.22.3/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 000000000..56cfd0656 --- /dev/null +++ b/cmake-build-debug/CMakeFiles/3.22.3/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,802 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif __STDC_VERSION__ > 201710L +# define C_VERSION "23" +#elif __STDC_VERSION__ >= 201710L +# define C_VERSION "17" +#elif __STDC_VERSION__ >= 201000L +# define C_VERSION "11" +#elif __STDC_VERSION__ >= 199901L +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/cmake-build-debug/CMakeFiles/CMakeOutput.log b/cmake-build-debug/CMakeFiles/CMakeOutput.log new file mode 100644 index 000000000..0af0fd7ed --- /dev/null +++ b/cmake-build-debug/CMakeFiles/CMakeOutput.log @@ -0,0 +1,250 @@ +The system is: Darwin - 22.5.0 - arm64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc +Build flags: +Id flags: -c + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + +The C compiler identification is AppleClang, found in "/Users/robertlipe/src/nightdriverstrip/cmake-build-debug/CMakeFiles/3.22.3/CompilerIdC/CMakeCCompilerId.o" + +Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded. +Compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ +Build flags: +Id flags: -c + +The output was: +0 + + +Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CMakeCXXCompilerId.o" + +The CXX compiler identification is AppleClang, found in "/Users/robertlipe/src/nightdriverstrip/cmake-build-debug/CMakeFiles/3.22.3/CompilerIdCXX/CMakeCXXCompilerId.o" + +Detecting C compiler ABI info compiled with the following output: +Change Dir: /Users/robertlipe/src/nightdriverstrip/cmake-build-debug/CMakeFiles/CMakeTmp + +Run Build Command(s):/Users/robertlipe/Library/Application Support/JetBrains/Toolbox/apps/CLion/ch-0/221.5591.52/CLion.app/Contents/bin/ninja/mac/ninja cmTC_df50d && [1/2] Building C object CMakeFiles/cmTC_df50d.dir/CMakeCCompilerABI.c.o +Apple clang version 14.0.3 (clang-1403.0.22.14.1) +Target: arm64-apple-darwin22.5.0 +Thread model: posix +InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin +clang: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] + "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple arm64-apple-macosx13.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=13.3 -fvisibility-inlines-hidden-static-local-var -target-cpu apple-m1 -target-feature +v8.5a -target-feature +crc -target-feature +lse -target-feature +rdm -target-feature +crypto -target-feature +dotprod -target-feature +fp-armv8 -target-feature +neon -target-feature +fp16fml -target-feature +ras -target-feature +rcpc -target-feature +zcm -target-feature +zcz -target-feature +fullfp16 -target-feature +sm4 -target-feature +sha3 -target-feature +sha2 -target-feature +aes -target-abi darwinpcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=lldb -target-linker-version 857.1 -v -fcoverage-compilation-dir=/Users/robertlipe/src/nightdriverstrip/cmake-build-debug/CMakeFiles/CMakeTmp -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3 -dependency-file CMakeFiles/cmTC_df50d.dir/CMakeCCompilerABI.c.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_df50d.dir/CMakeCCompilerABI.c.o -sys-header-deps -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -internal-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/local/include -internal-isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include -internal-externc-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include -internal-externc-isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -Wno-reserved-identifier -Wno-gnu-folding-constant -fdebug-compilation-dir=/Users/robertlipe/src/nightdriverstrip/cmake-build-debug/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -no-opaque-pointers -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -mllvm -disable-aligned-alloc-awareness=1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_df50d.dir/CMakeCCompilerABI.c.o -x c "/Users/robertlipe/Library/Application Support/JetBrains/Toolbox/apps/CLion/ch-0/221.5591.52/CLion.app/Contents/bin/cmake/mac/share/cmake-3.22/Modules/CMakeCCompilerABI.c" +clang -cc1 version 14.0.3 (clang-1403.0.22.14.1) default target arm64-apple-darwin22.5.0 +ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/local/include" +ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/Library/Frameworks" +#include "..." search starts here: +#include <...> search starts here: + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include + /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include + /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks (framework directory) +End of search list. +[2/2] Linking C executable cmTC_df50d +Apple clang version 14.0.3 (clang-1403.0.22.14.1) +Target: arm64-apple-darwin22.5.0 +Thread model: posix +InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin + "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 13.0.0 13.3 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -o cmTC_df50d -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_df50d.dir/CMakeCCompilerABI.c.o -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/lib/darwin/libclang_rt.osx.a +@(#)PROGRAM:ld PROJECT:ld64-857.1 +BUILD 23:13:29 May 7 2023 +configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em +Library search paths: + /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/lib +Framework search paths: + /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks/ + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include] + add: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include] + add: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include] + end of search list found + collapse include dir [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include] ==> [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include] + collapse include dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include] + collapse include dir [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include] ==> [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include] + implicit include dirs: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /Users/robertlipe/src/nightdriverstrip/cmake-build-debug/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/Users/robertlipe/Library/Application Support/JetBrains/Toolbox/apps/CLion/ch-0/221.5591.52/CLion.app/Contents/bin/ninja/mac/ninja cmTC_df50d && [1/2] Building C object CMakeFiles/cmTC_df50d.dir/CMakeCCompilerABI.c.o] + ignore line: [Apple clang version 14.0.3 (clang-1403.0.22.14.1)] + ignore line: [Target: arm64-apple-darwin22.5.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin] + ignore line: [clang: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple arm64-apple-macosx13.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=13.3 -fvisibility-inlines-hidden-static-local-var -target-cpu apple-m1 -target-feature +v8.5a -target-feature +crc -target-feature +lse -target-feature +rdm -target-feature +crypto -target-feature +dotprod -target-feature +fp-armv8 -target-feature +neon -target-feature +fp16fml -target-feature +ras -target-feature +rcpc -target-feature +zcm -target-feature +zcz -target-feature +fullfp16 -target-feature +sm4 -target-feature +sha3 -target-feature +sha2 -target-feature +aes -target-abi darwinpcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=lldb -target-linker-version 857.1 -v -fcoverage-compilation-dir=/Users/robertlipe/src/nightdriverstrip/cmake-build-debug/CMakeFiles/CMakeTmp -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3 -dependency-file CMakeFiles/cmTC_df50d.dir/CMakeCCompilerABI.c.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_df50d.dir/CMakeCCompilerABI.c.o -sys-header-deps -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -internal-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/local/include -internal-isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include -internal-externc-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include -internal-externc-isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -Wno-reserved-identifier -Wno-gnu-folding-constant -fdebug-compilation-dir=/Users/robertlipe/src/nightdriverstrip/cmake-build-debug/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -no-opaque-pointers -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -mllvm -disable-aligned-alloc-awareness=1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_df50d.dir/CMakeCCompilerABI.c.o -x c "/Users/robertlipe/Library/Application Support/JetBrains/Toolbox/apps/CLion/ch-0/221.5591.52/CLion.app/Contents/bin/cmake/mac/share/cmake-3.22/Modules/CMakeCCompilerABI.c"] + ignore line: [clang -cc1 version 14.0.3 (clang-1403.0.22.14.1) default target arm64-apple-darwin22.5.0] + ignore line: [ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/Library/Frameworks"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include] + ignore line: [ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include] + ignore line: [ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include] + ignore line: [ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks (framework directory)] + ignore line: [End of search list.] + ignore line: [[2/2] Linking C executable cmTC_df50d] + ignore line: [Apple clang version 14.0.3 (clang-1403.0.22.14.1)] + ignore line: [Target: arm64-apple-darwin22.5.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin] + link line: [ "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 13.0.0 13.3 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -o cmTC_df50d -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_df50d.dir/CMakeCCompilerABI.c.o -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/lib/darwin/libclang_rt.osx.a] + arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld] ==> ignore + arg [-demangle] ==> ignore + arg [-lto_library] ==> ignore, skip following value + arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib] ==> skip value of -lto_library + arg [-dynamic] ==> ignore + arg [-arch] ==> ignore + arg [arm64] ==> ignore + arg [-platform_version] ==> ignore + arg [macos] ==> ignore + arg [13.0.0] ==> ignore + arg [13.3] ==> ignore + arg [-syslibroot] ==> ignore + arg [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk] ==> ignore + arg [-o] ==> ignore + arg [cmTC_df50d] ==> ignore + arg [-search_paths_first] ==> ignore + arg [-headerpad_max_install_names] ==> ignore + arg [-v] ==> ignore + arg [CMakeFiles/cmTC_df50d.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lSystem] ==> lib [System] + arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/lib/darwin/libclang_rt.osx.a] ==> lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/lib/darwin/libclang_rt.osx.a] + Library search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/lib] + Framework search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks/] + remove lib [System] + remove lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/lib/darwin/libclang_rt.osx.a] + collapse library dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/lib] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/lib] + collapse framework dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks/] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks] + implicit libs: [] + implicit objs: [] + implicit dirs: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/lib] + implicit fwks: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks] + + +Detecting CXX compiler ABI info compiled with the following output: +Change Dir: /Users/robertlipe/src/nightdriverstrip/cmake-build-debug/CMakeFiles/CMakeTmp + +Run Build Command(s):/Users/robertlipe/Library/Application Support/JetBrains/Toolbox/apps/CLion/ch-0/221.5591.52/CLion.app/Contents/bin/ninja/mac/ninja cmTC_6837a && [1/2] Building CXX object CMakeFiles/cmTC_6837a.dir/CMakeCXXCompilerABI.cpp.o +Apple clang version 14.0.3 (clang-1403.0.22.14.1) +Target: arm64-apple-darwin22.5.0 +Thread model: posix +InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin +clang: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] + "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple arm64-apple-macosx13.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=13.3 -fvisibility-inlines-hidden-static-local-var -target-cpu apple-m1 -target-feature +v8.5a -target-feature +crc -target-feature +lse -target-feature +rdm -target-feature +crypto -target-feature +dotprod -target-feature +fp-armv8 -target-feature +neon -target-feature +fp16fml -target-feature +ras -target-feature +rcpc -target-feature +zcm -target-feature +zcz -target-feature +fullfp16 -target-feature +sm4 -target-feature +sha3 -target-feature +sha2 -target-feature +aes -target-abi darwinpcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=lldb -target-linker-version 857.1 -v -fcoverage-compilation-dir=/Users/robertlipe/src/nightdriverstrip/cmake-build-debug/CMakeFiles/CMakeTmp -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3 -dependency-file CMakeFiles/cmTC_6837a.dir/CMakeCXXCompilerABI.cpp.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_6837a.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -stdlib=libc++ -internal-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include/c++/v1 -internal-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/local/include -internal-isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include -internal-externc-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include -internal-externc-isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -Wno-reserved-identifier -Wno-gnu-folding-constant -fdeprecated-macro -fdebug-compilation-dir=/Users/robertlipe/src/nightdriverstrip/cmake-build-debug/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fno-cxx-modules -no-opaque-pointers -fcxx-exceptions -fexceptions -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -mllvm -disable-aligned-alloc-awareness=1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_6837a.dir/CMakeCXXCompilerABI.cpp.o -x c++ "/Users/robertlipe/Library/Application Support/JetBrains/Toolbox/apps/CLion/ch-0/221.5591.52/CLion.app/Contents/bin/cmake/mac/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp" +clang -cc1 version 14.0.3 (clang-1403.0.22.14.1) default target arm64-apple-darwin22.5.0 +ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/local/include" +ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/Library/Frameworks" +#include "..." search starts here: +#include <...> search starts here: + /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include/c++/v1 + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include + /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include + /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks (framework directory) +End of search list. +[2/2] Linking CXX executable cmTC_6837a +Apple clang version 14.0.3 (clang-1403.0.22.14.1) +Target: arm64-apple-darwin22.5.0 +Thread model: posix +InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin + "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 13.0.0 13.3 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -o cmTC_6837a -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_6837a.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/lib/darwin/libclang_rt.osx.a +@(#)PROGRAM:ld PROJECT:ld64-857.1 +BUILD 23:13:29 May 7 2023 +configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em +Library search paths: + /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/lib +Framework search paths: + /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks/ + + + +Parsed CXX implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include/c++/v1] + add: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include] + add: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include] + add: [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include] + end of search list found + collapse include dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include/c++/v1] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include/c++/v1] + collapse include dir [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include] ==> [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include] + collapse include dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include] + collapse include dir [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include] ==> [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include] + implicit include dirs: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include/c++/v1;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include;/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include] + + +Parsed CXX implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /Users/robertlipe/src/nightdriverstrip/cmake-build-debug/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/Users/robertlipe/Library/Application Support/JetBrains/Toolbox/apps/CLion/ch-0/221.5591.52/CLion.app/Contents/bin/ninja/mac/ninja cmTC_6837a && [1/2] Building CXX object CMakeFiles/cmTC_6837a.dir/CMakeCXXCompilerABI.cpp.o] + ignore line: [Apple clang version 14.0.3 (clang-1403.0.22.14.1)] + ignore line: [Target: arm64-apple-darwin22.5.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin] + ignore line: [clang: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple arm64-apple-macosx13.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCXXCompilerABI.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=13.3 -fvisibility-inlines-hidden-static-local-var -target-cpu apple-m1 -target-feature +v8.5a -target-feature +crc -target-feature +lse -target-feature +rdm -target-feature +crypto -target-feature +dotprod -target-feature +fp-armv8 -target-feature +neon -target-feature +fp16fml -target-feature +ras -target-feature +rcpc -target-feature +zcm -target-feature +zcz -target-feature +fullfp16 -target-feature +sm4 -target-feature +sha3 -target-feature +sha2 -target-feature +aes -target-abi darwinpcs -fallow-half-arguments-and-returns -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=lldb -target-linker-version 857.1 -v -fcoverage-compilation-dir=/Users/robertlipe/src/nightdriverstrip/cmake-build-debug/CMakeFiles/CMakeTmp -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3 -dependency-file CMakeFiles/cmTC_6837a.dir/CMakeCXXCompilerABI.cpp.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_6837a.dir/CMakeCXXCompilerABI.cpp.o -sys-header-deps -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -stdlib=libc++ -internal-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include/c++/v1 -internal-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/local/include -internal-isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include -internal-externc-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include -internal-externc-isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -Wno-reserved-identifier -Wno-gnu-folding-constant -fdeprecated-macro -fdebug-compilation-dir=/Users/robertlipe/src/nightdriverstrip/cmake-build-debug/CMakeFiles/CMakeTmp -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fno-cxx-modules -no-opaque-pointers -fcxx-exceptions -fexceptions -fmax-type-align=16 -fcommon -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -mllvm -disable-aligned-alloc-awareness=1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_6837a.dir/CMakeCXXCompilerABI.cpp.o -x c++ "/Users/robertlipe/Library/Application Support/JetBrains/Toolbox/apps/CLion/ch-0/221.5591.52/CLion.app/Contents/bin/cmake/mac/share/cmake-3.22/Modules/CMakeCXXCompilerABI.cpp"] + ignore line: [clang -cc1 version 14.0.3 (clang-1403.0.22.14.1) default target arm64-apple-darwin22.5.0] + ignore line: [ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/Library/Frameworks"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include/c++/v1] + ignore line: [ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include] + ignore line: [ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/include] + ignore line: [ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include] + ignore line: [ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks (framework directory)] + ignore line: [End of search list.] + ignore line: [[2/2] Linking CXX executable cmTC_6837a] + ignore line: [Apple clang version 14.0.3 (clang-1403.0.22.14.1)] + ignore line: [Target: arm64-apple-darwin22.5.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin] + link line: [ "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 13.0.0 13.3 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -o cmTC_6837a -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_6837a.dir/CMakeCXXCompilerABI.cpp.o -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/lib/darwin/libclang_rt.osx.a] + arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld] ==> ignore + arg [-demangle] ==> ignore + arg [-lto_library] ==> ignore, skip following value + arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib] ==> skip value of -lto_library + arg [-dynamic] ==> ignore + arg [-arch] ==> ignore + arg [arm64] ==> ignore + arg [-platform_version] ==> ignore + arg [macos] ==> ignore + arg [13.0.0] ==> ignore + arg [13.3] ==> ignore + arg [-syslibroot] ==> ignore + arg [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk] ==> ignore + arg [-o] ==> ignore + arg [cmTC_6837a] ==> ignore + arg [-search_paths_first] ==> ignore + arg [-headerpad_max_install_names] ==> ignore + arg [-v] ==> ignore + arg [CMakeFiles/cmTC_6837a.dir/CMakeCXXCompilerABI.cpp.o] ==> ignore + arg [-lc++] ==> lib [c++] + arg [-lSystem] ==> lib [System] + arg [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/lib/darwin/libclang_rt.osx.a] ==> lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/lib/darwin/libclang_rt.osx.a] + Library search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/lib] + Framework search paths: [;/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks/] + remove lib [System] + remove lib [/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/lib/darwin/libclang_rt.osx.a] + collapse library dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/lib] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/lib] + collapse framework dir [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks/] ==> [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks] + implicit libs: [c++] + implicit objs: [] + implicit dirs: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/usr/lib] + implicit fwks: [/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk/System/Library/Frameworks] + + diff --git a/cmake-build-debug/CMakeFiles/clion-environment.txt b/cmake-build-debug/CMakeFiles/clion-environment.txt new file mode 100644 index 000000000..387cd6c00 --- /dev/null +++ b/cmake-build-debug/CMakeFiles/clion-environment.txt @@ -0,0 +1,3 @@ +ToolSet: 1.0 (local)Options: + +Options:-DCMAKE_MAKE_PROGRAM=/Users/robertlipe/Library/Application Support/JetBrains/Toolbox/apps/CLion/ch-0/221.5591.52/CLion.app/Contents/bin/ninja/mac/ninja \ No newline at end of file diff --git a/config/partitions_custom_8M.csv b/config/partitions_custom_8M.csv new file mode 100644 index 000000000..5422b8f2e --- /dev/null +++ b/config/partitions_custom_8M.csv @@ -0,0 +1,11 @@ +# ESP-IDF Partition Table +# Adjusted to accommodate 8M flash size and includes a second 'app1' partition for OTA updates +# Name, Type, SubType, Offset, Size, Flags + +# Note that our NVS code assumes name 'storage' for the NVS partition + +nvs, data, nvs, 0x009000, 0x002000, +otadata, data, ota, 0x00b000, 0x002000, +app0, app, ota_0, 0x010000, 0x320000, +app1, app, ota_1, 0x330000, 0x320000, +storage, data, spiffs, 0x650000, 0x1B0000 diff --git a/include/.globals.h.swp b/include/.globals.h.swp new file mode 100644 index 0000000000000000000000000000000000000000..ad3a356aa2cbf370c6e93a3663b93f5a263bcfb4 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/include/effects/matrix/AMPatternHotBlob.h b/include/effects/matrix/AMPatternHotBlob.h new file mode 100644 index 000000000..60aa556ac --- /dev/null +++ b/include/effects/matrix/AMPatternHotBlob.h @@ -0,0 +1,81 @@ +#pragma once + +class HotBlob : public LEDStripEffect +{ +public: + HotBlob() : LEDStripEffect(EFFECT_MATRIX_BOUNCE, "Hot Blob") {} + + virtual void Start() override + { + timings.master_speed = 0.01; // speed ratios for the oscillators + timings.ratio[0] = 0.1; // higher values = faster transitions + timings.ratio[1] = 0.03; + timings.ratio[2] = 0.03; + timings.ratio[3] = 0.03; + + timings.offset[1] = 10; + timings.offset[2] = 20; + timings.offset[3] = 30; + + calculate_oscillators(timings); // get linear movers and oscillators going + } + + run_default_oscillators(); + + virtual void Draw() override + { + auto graphics = g(); + + for (int x = 0; x < MATRIX_WIDTH; x++) + for (int y = 0; y < MATRIX_HEIGHT; y++) + + animation.dist = distance[x][y] + animation.angle = polar_theta[x][y]; + + animation.scale_x = 0.07 + move.directional[0]*0.002; + animation.scale_y = 0.07; + + animation.offset_y = -move.linear[0]; + animation.offset_x = 0; + animation.offset_z = 0; + + animation.z = 0; + animation.low_limit = -1; + float show1 = render_value(animation); + + animation.offset_y = -move.linear[1]; + float show3 = render_value(animation); + + animation.offset_x = show3/20; + animation.offset_y = -move.linear[0]/2 + show1/70; + animation.low_limit = 0; + float show2 = render_value(animation); + + animation.offset_x = show3/20; + animation.offset_y = -move.linear[0]/2 + show1/70; + animation.z = 100; + float show4 = render_value(animation); + + float radius = 11; // radius of a radial brightness filter + float radial = (radius-animation.dist)/animation.dist; + + float linear = (y+1)/(num_y-1.f); +#if 1 + CRGB color; + color.r = radial * show2; + color.g = linear * radial* 0.3* (show2-show4); + + g()->setPixel(x, y, color); +#else + pixel.red = radial * show2; + pixel.green = linear * radial* 0.3* (show2-show4); + + + pixel = rgb_sanity_check(pixel); + leds[xy(x, y)] = CRGB(pixel.red, pixel.green, pixel.blue); +#endif + + // FastLED.show(); + // + } +}; diff --git a/include/effects/matrix/DiffusionOOPS.h b/include/effects/matrix/DiffusionOOPS.h new file mode 100644 index 000000000..a9d533bd0 --- /dev/null +++ b/include/effects/matrix/DiffusionOOPS.h @@ -0,0 +1,182 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Inspired by https://editor.soulmatelights.com/gallery/1685-strobe-and-diffusion +// Was originally drawn for a lamp, but I like it on a panel. +// The original coordinate system had 0,0 in the LL corner. We have 0,0 in UL. + +#if SOUND +class PatternSMStrobeDiffusion : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMStrobeDiffusion : public LEDStripEffect +#endif +{ +private: + uint8_t hue, hue2; // gradual hue shift or some other cyclic counter + uint8_t deltaHue, deltaHue2; // a couple more of the same when you need a lot + uint8_t step; // some counter of frames or sequences of operations + uint8_t pcnt; // progress counter + uint8_t deltaValue; // reusable variable + #define NUM_LAYERSMAX 2 + uint8_t noise3d[NUM_LAYERSMAX][MATRIX_WIDTH][MATRIX_HEIGHT]; // two-layer mask or storage of properties in the size of the entire matrix + uint8_t Speed = 250; // 1-255 is speed + uint8_t Scale = 70; // 1-100 is something parameter + uint8_t FPSdelay; + const int LOW_DELAY = 0; + +public: + PatternSMStrobeDiffusion() : +#if SOUND + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSTROBE_DIFFUSION, "Strobe Diffusion") + { + } + + PatternSMStrobeDiffusion(const JsonObjectConst& jsonObject) : +#if SOUND + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { + FPSdelay = 25U; // LOW_DELAY; +// hue2 = 1; + g()->Clear(); + } + + +// =========== Christmas Tree =========== +// © SlingMaster +// EFF_CHRISTMAS_TREE +// Christmas Tree +//--------------------------------------- + void VirtualSnow() { +// return ; + for (uint8_t x = 0U; x < MATRIX_WIDTH; x++) { + for (uint8_t y = 0U; y < MATRIX_HEIGHT - 1; y++) { + noise3d[0][x][y] = noise3d[0][x][y + 1]; + if (noise3d[0][x][y] > 0) { + g()->drawPixel(x, y, CHSV(170, 5U, 127 + random8(128))); + } + } + } + uint8_t posX = random(MATRIX_WIDTH); + for (uint8_t x = 0U; x < MATRIX_WIDTH; x++) { + // randomly fill in the top row + if (posX == x) { + if (step % 3 == 0) { + noise3d[0][x][MATRIX_HEIGHT - 1U] = 1; + } else { + noise3d[0][x][MATRIX_HEIGHT - 1U] = 0; + } + } else { + noise3d[0][x][MATRIX_HEIGHT - 1U] = 0; + } + } + } +#if 0 + // функция получения цвета пикселя по его номеру + CRGB getPixColor(uint32_t thisSegm) + { + uint32_t thisPixel = thisSegm;// * SEGMENTS; + if (thisPixel > NUM_LEDS - 1) return 0; + return g()->leds[thisPixel]; + } +#endif + // функция получения цвета пикселя в матрице по его координатам + CRGB getPixColorXY(uint8_t x, uint8_t y) + { + // Just don't think about what this does to prefetch and prediction... + return g()->leds[g()->xy(x, y)]; + } + + // @Palpalych's standard LEDraw library functions (for adapting his effects) + void blurScreen(fract8 blur_amount) + { +// g()->blur2d(g()->leds, MATRIX_WIDTH, 0, MATRIX_HEIGHT, 0, blur_amount); +// g()->Clear(); + g()->BlurFrame(blur_amount); + } + + virtual void Draw() override + { + const uint8_t DELTA = 1U; // Vertical Alignment + uint8_t STEP = 2U; + STEP = floor((255 - Speed) / 64) + 1U; // for strob + if (Scale > 50) { + // diffusion --- + blurScreen(beatsin8(3, 64, 80)); + FPSdelay = LOW_DELAY; + STEP = 1U; + if (Scale < 75) { + // chaos --- + FPSdelay = 30; + VirtualSnow(); + } + + } else { + // strob ------- + if (Scale > 25) { + g()->DimAll(200); + FPSdelay = 30; + } else { + g()->DimAll(240); + FPSdelay = 40; + } + } + + const uint8_t rows = (MATRIX_HEIGHT + 1) / 3U; + deltaHue = floor(Speed / 64) * 64; + bool dir = false; + + for (uint8_t y = 0; y < rows; y++) { + if (dir) { + if ((step % STEP) == 0) { // small layers + g()->drawPixel(MATRIX_WIDTH - 1, y * 3 + DELTA, CHSV(step, 255U, 255U )); + } else { + g()->drawPixel(MATRIX_WIDTH - 1, y * 3 + DELTA, CHSV(170U, 255U, 1U)); + } + } else { + if ((step % STEP) == 0) { // big layers + g()->drawPixel(0, y * 3 + DELTA, CHSV((step + deltaHue), 255U, 255U)); + } else { + g()->drawPixel(0, y * 3 + DELTA, CHSV(0U, 255U, 0U)); + } + } + + // Shift layers. + for (uint8_t x = 1U ; x < MATRIX_WIDTH; x++) { + if (dir) { + g()->drawPixel(x - 1, y * 3 + DELTA, getPixColorXY(x, y * 3 + DELTA)); + } else { // ==> + g()->drawPixel(MATRIX_WIDTH - x, y * 3 + DELTA, getPixColorXY(MATRIX_WIDTH - x - 1, y * 3 + DELTA)); + } + } + dir = !dir; + } + + if (hue2 == 1) { + step ++; + if (step >= 254) hue2 = 0; + } else { + step --; + if (step < 1) hue2 = 1; + } + + + } +#if SOUND + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } + #endif + + +}; diff --git a/include/effects/matrix/DiffusionTRASH.h b/include/effects/matrix/DiffusionTRASH.h new file mode 100644 index 000000000..8f4fab2b7 --- /dev/null +++ b/include/effects/matrix/DiffusionTRASH.h @@ -0,0 +1,181 @@ +#pragma once + +#include "effects/strip/musiceffect.h" +#include "effectmanager.h" + +// Inspired by https://editor.soulmatelights.com/gallery/1685-strobe-and-diffusion +// Was originally drawn for a lamp, but I like it on a panel. +// The original coordinate system had 0,0 in the LL corner. We have 0,0 in UL. + +#if SOUND +class PatternSMStrobeDiffusion : public BeatEffectBase, public LEDStripEffect +#else +class PatternSMStrobeDiffusion : public LEDStripEffect +#endif +{ +private: + uint8_t hue, hue2; // gradual hue shift or some other cyclic counter + uint8_t deltaHue, deltaHue2; // a couple more of the same when you need a lot + uint8_t step; // some counter of frames or sequences of operations + uint8_t noise3d[MATRIX_WIDTH][MATRIX_HEIGHT]; // two-layer mask or storage of properties in the size of the entire matrix +// uint8_t Speed = 250; // 1-255 is speed +// uint8_t Scale = 70; // 1-100 is something parameter +// uint8_t FPSdelay; +// const int LOW_DELAY = 0; + +public: + PatternSMStrobeDiffusion() : +#if SOUND + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(EFFECT_MATRIX_SMSTROBE_DIFFUSION, "Strobe Diffusion") + { + } + + PatternSMStrobeDiffusion(const JsonObjectConst& jsonObject) : +#if SOUND + BeatEffectBase(1.50, 0.05), +#endif + LEDStripEffect(jsonObject) + { + } + + virtual void Start() override + { +// FPSdelay = 25U; // LOW_DELAY; +// hue2 = 1; + g()->Clear(); + } + + +// =========== Christmas Tree =========== +// © SlingMaster +// EFF_CHRISTMAS_TREE +// Christmas Tree +//--------------------------------------- + void VirtualSnow() { + for (uint8_t x = 0U; x < MATRIX_WIDTH; x++) { + for (uint8_t y = MATRIX_HEIGHT ; y > 1; y--) { + noise3d[x][y] = noise3d[x][y - 1]; + if (noise3d[x][y] > 0) { + if (x > 63) x = 63; + if (y > 31) y = 31; + if (x < 0) x = 0; + if (y < 0) y = 0; + // g()->drawPixel(x, y, CHSV(170, 5U, 127 + random8(128))); + } + } + } + uint8_t posX = random(MATRIX_WIDTH); + for (uint8_t x = 0U; x < MATRIX_WIDTH; x++) { + // randomly fill in the top row + if (posX == x) { + if (step % 3 == 0) { + noise3d[x][0/*MATRIX_HEIGHT - 1U*/] = 1; + } else { + noise3d[x][0/*MATRIX_HEIGHT - 1U*/] = 0; + } + } else { + noise3d[x][0/*MATRIX_HEIGHT - 1U*/] = 0; + } + } + } + + // функция получения цвета пикселя в матрице по его координатам + CRGB getPixColorXY(uint8_t x, uint8_t y) + { + // Just don't think about what this does to prefetch and prediction... + return g()->leds[g()->xy(x, y)]; + } + + virtual void Draw() override + { + const uint8_t DELTA = 1U; // Vertical Alignment + uint8_t STEP = 2U; +// STEP = floor((255 - Speed) / 64) + 1U; // for strob +// if (Scale > 128) { +// EVERY_N_MILLIS(500) { + // diffusion --- +// EVERY_N_MILLIS(27) { +// blurScreen(beatsin8(3, 64, 80)); + EVERY_N_MILLIS(100) { + g()->BlurFrame(beatsin8(1, 15, 255)); + } + +// } +// FPSdelay = LOW_DELAY; +// STEP = 1U; + //if (Scale < 75) { + // // chaos --- + // FPSdelay = 30; + // VirtualSnow(); + // } +// } +// } else { + // Strobe + // if (Scale > 25) { +// g()->DimAll(200); +// FPSdelay = 30; +// } else { +// g()->DimAll(240); +// FPSdelay = 40; +// } +// } + + EVERY_N_MILLIS(250) { + //g()->DimAll(240); + } + + EVERY_N_MILLIS(150) { + VirtualSnow(); + } + + const uint8_t rows = (MATRIX_HEIGHT + 1) / 3U; + deltaHue = floor(250 / 64) * 64; // WAT? + bool dir = false; + + for (uint8_t y = 0; y < rows; y++) { + if (dir) { + if ((step % STEP) == 0) { // small layers + g()->drawPixel(MATRIX_WIDTH - 1, y * 3 + DELTA, CHSV(step, 255U, 255U )); + } else { + g()->drawPixel(MATRIX_WIDTH - 1, y * 3 + DELTA, CHSV(170U, 255U, 1U)); + } + } else { + if ((step % STEP) == 0) { // big layers + g()->drawPixel(0, y * 3 + DELTA, CHSV((step + deltaHue), 255U, 255U)); + } else { + g()->drawPixel(0, y * 3 + DELTA, CHSV(0U, 255U, 0U)); + } + } + + // Shift layers. + for (uint8_t x = 1U ; x < MATRIX_WIDTH; x++) { + if (dir) { + g()->drawPixel(x - 1, y * 3 + DELTA, getPixColorXY(x, y * 3 + DELTA)); + } else { // ==> + g()->drawPixel(MATRIX_WIDTH - x, y * 3 + DELTA, getPixColorXY(MATRIX_WIDTH - x - 1, y * 3 + DELTA)); + } + } + dir = !dir; + } + + if (hue2 == 1) { + step ++; + if (step >= 254) hue2 = 0; + } else { + step --; + if (step < 1) hue2 = 1; + } + +// Scale++; + } +#if SOUND + virtual void HandleBeat(bool bMajor, float elapsed, float span) override + { + + } + #endif + + +}; diff --git a/include/effects/matrix/Never Gonna Give You Up.mp4 b/include/effects/matrix/Never Gonna Give You Up.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..59ace1c6f2daec940f31db7525df94bd26b94794 GIT binary patch literal 10669875 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�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 iJ!+^(RjpmJOToA+lA>ZZD^&s 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

(x-yq_BQ()DM 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
P7Js~LRovQ<5^>L(G>&E-J?FsZ1Zx|W@RtU zCB9`9_x)jK)-nJ##&~imMO=bY4cMu-5@Bb-C%{inQ9N^mt4fW=uuXV;ML$?9`TzA6 z)E(0FR|cVAQuN*U``|MF)~Z&7;`z$F;W0eauRN;tL->q-i<{ASH|IawUb~9ij%z}vt(lObq)r{AG2x*Nc`?~j$ zTR1sNkI~vy?x?MKe$nO!b$~`Mo(t+OE3&feUBfmnfGM38Ia951B#jBVFnk~VrE-@j zN3Ke~OwoG_0#}f!2%YA*CTP62!F^I_Q{jZ9z+(4mqbzcm1~)>XMa=NiaS13tj*ceo*)w--Bpm^fn`iBj7f&(*Nv|g za&#@z{K9VcCq*V%SM&UO@1oER9<4A0^pbiw3AiRhxyDU=NVfH5&bAy zRJiD4*d-Uj4w=ElNMJetZoH@m#}<4G9qHENFyuA(jTzIC000HsL7Oa-!X8Yf1b_AB z1gHfrP^U{(J9;X5zm`wA{MI`6u&r8llwc|F=K(a|eJG=21$j-8e?m-X{{xOTznk2a zSfn>Jq%R{KOII%L3nb_f0xn19?k09Lwv~utl%Q6i>E@y5!Cba0Qer3_sbSD$%?IRk z$SM#d!`h<)I+V&dyBJ0aO5iUK$qtOraZ39|M#hZk9p^0I7`amVk65Jl&+~g-$_JMR1+7Dy%XOJ`adHsU(PZPs%$ei0{o(OX8C~2DhPL`Vm6) z_k{LqL}gM+5;p0tEOb5woZ~ayw=H1%i0)gvvH4v{q*_nf|$jw=rVb)-k<2&R>AI86T$@rCf&CGudj>Qy9KL`~D=w%yhr%IRNJcO0xCoC^{$BP0^V- z;+bbaw)8z`Cj)VML3mO&6FBEed|1zQcd!Gqkgn8JRW?XjF9SVqPF~C~o8NF||@>NoRxg zN7Fa*YJ~yQfllVZ5COdRVSnq2cE?B}#XWVhVD=Q*b$Y_0IPZcc?v{apj`XRHve-?F zXPn?^K%Kf9&ZVWBi2) z(3}g-?cH=xC91f^i9Y|*YHAk8OUMtuUr^*A>^4GB<_UcA%bp?kG4L-kV&x6V zJvIGdP$xMIAL97X2h-6Y0zeTU0B_cYvL|pWbt3g0$1=m4tT7wp_Tvq9!L~Co6yDNF znLu`FDx8cc&;7Bo1560s^AEHpfEE6B9QIU;vsA|j-|G?1PkA8>HS0l)j?9#wv`C-I zSuwPM!Az#er+uqB=xN;GKSM}5&mRJB`F3F*v*ADTWl5&$AMPt4GWAy_jfWWfO;A*+P}0x;A5FVB**Y#7vu(yZJpeY)k-PXSs2MfU9N0*lEl*&P5oO-AZLP?vZU^y0`_53 zMwg!oU*ITBr7#ioq#4syR20ieP`TFdgQxHh4vRSe01qHRh|_^z{`8~x6w+)&FyEIS z^LJYV+97}p(3Ze$Hh@NC!5tr9CN1;5{OX_b0(`{m%tbXQ@t;)isw!W!j)Hw+Klp*2 z^fv*V3#jY-d2FPxELqwN-PGpngTDpP6(_2{5l`V+oe@k^nI$3%t%TNv zX;gn-0a>i)v#9x1rB}o5NvmarY?*rwnSBHez1cU~*Cg}D4K$5S$Jf%P-68Z|>L7~D z4CmEdwLMOd>k|$+&39TP!cZ8OF1lYHR}XB<%K>xZZt-7^(Eq<1UNA?f)}we-n!YlG z2%Jv*8Bndw#LG%hSG8MkuAaCqqvxV8s&0m&V9uu7S9>aqU@B|TGStb$zhp@QaQ}$| zs(__X45KsUXr^o7;EXpyeHJknOp?aL^dfmn(i!9|&`i-t0_C|<(pt}vzpqphfIAru zI>hIxnBFJ>ZYKh(4s+N^Gm=9XE>6luaRYQq5<$63sVO=+a*oSc5Hr~)*@Cq}NpO)_VBNb!t_Z}qTJUXLp- zHe+XGEEz&+y&@&_{2QcSU88Z&S&W8N^5v&%qx|?vH5xw~PmGzdSlq&lF_*9bfdFQV z>Uv{Clz|>XZ$d(xN%`%=+VdCJ;1kEe$9H=O8tisPaLWtULI(iqH!5TRDS9yb0ZTAN z!&13=Oys=?Q#~&j9pFz-dTZlKdQV+t1Z;50y5G6xD&)!lr9fK0(>(rM<+}}~+P!`C zz!~NpenH~W#tnIDn=Vpw8SXSvq=`tlllJkb3|PhGqO7Ejp|^$u7zT0+eMu{%;kPdU zKJ6mE=Y0u4n$~Gk^I77Oi?BS3dg>z=QyPX!{Jh6edn#u@_|N^Fvx9twMhta9r_FCu ziWf;%0E)pbcuS7}+_zhNoRDWwrnO7*4|G@cW9;Hs;VkxVnAnX}7EBZVe&SfNv`JM6 zi{Y@we}Ft%@qPrZ0l0vg2|9pZ|Ia{To2@JrIi6s!aHaE6en7j2U3<*p%UC$E76@@V z8lmMKAi{Tu?UCobW1<2GTY<0z7u{JFHi@R~e#l1-r`|qUCX2 z-+ku$J%tT|j7YdQ_nh#PbXY7(5{jd=?RKnXGljGyudAVhUe3BX^rFn&d4@_6OLuQP z7;0uP9H{qsC$(GcPAi3?3^iu2t4L7G!8AvSbaCh>e$1WlkTCQ~b%5&o&j3U=pjXrl zy+Hk_kZ#&Pash6pY z$yJj^E({LEg_1uj%*>>)s|hh|3*_8G3=H-^xY`3ZfE8JzzNaHO5EU@FNk_)j_UGpW z8S5++WH)LhAI;<*u}hS$>gjhn&E5Gj?Xd~@D9HQ*V}!$bm7A2Y-3{H=1h|tXBKEb0 zTB3qLKYt7`26)nS54p~qpF;4GbBY#S0u?_{o0E*L`Y6U+IahG8mByKe-{$Yc6 zRWKalmBY`;4kK;GpJT!}Uq;DaWa6AtNM_4*>r@9%^YzyA8`whS>t<%wlow4U-xH?L z9UBC{&mWx#g+aS}&XDJodx_SDt9-K+?fZeZy=L3o#PyN{H~T>U{b5qF9OdcN6^Mb> zajGqODX{6K;vy-rgTI#GuM@hhQgxE~v<_ZfF5R(zSI@-?0@}$t%<00TUgJ5dI+x1&ifd$-jSGutM zu`*;eiglVZD_h=y*#XP|c`>Y1;`!{!UC!1^wQZw`6TUp8xh^+Ct!$kJ3} zuC10`V&g+jO2VIoi;Ed6j(? zDPiT>Q8&;&;YG>5eq>lPF#R&v6BZUz5>*O^RP~UCIVg&MK+%Z9rq)CT=aSYXBkm95 z-6Y_cxv1*c7=5@l+Fck0j_yqz*ONQeu;@y3rpEWC+A!s%M`ZjsXw%sAdeS!LUP<*9H@R+8%mvZ8 z^WWs+N2#>$`JMP*jn_t$H5prj?L7Coj>_ZX6+SyREf)6p4RAcj9Go*+Ev{;g$<5*a zsD%G4zP?|&jz4f8^aUN~0pS+khS%R7ybG|{V%?&Hr664oA}#>ZSY$K|ZRSlRud-Q~ z0STnVJ5sJsLY~B?!XDySscDX*qVD0*Km5abKh=t~jT_pb$qPzII8YKxs$W{>wHF#& zim9?kF^kTV_#Mg}C{aTR5rLWW^-u)MM9uD_X0ti#t@&4PJl}{-j%kb`GQ$a=+CG*9 zb(IZDDy4uXZdX$^e!K%?>Np5j<; z9jQ%bXlH>pzj#lsn9T49 z4aG0U>b32tzW8%)n4MVwAq=9<6?QUlIJqhhZdoZ0T5Qm2po0&U!oTHu%z)-Hp*lWT1eEuiRM9Idom z-FfNsZ*5`Pf9E3JNYc+C?#v^9OM-*1p!E0 z)2v?5^uUNUV~Ce(XT`VkeGEF*1<@<4kGRkCWBg);3&*(BlW2h&YZjP*u-yH2k#B;a zD)1Nkx3t1UWt*R0%Y-DkXMT0dwoi{!t~>V$_wg7#r<%yO(s}^H=_#$QYO!#dW+O7E zM5Z?_tMB+6_WQ;=(p)kdXwVlhNl8Lh_y2EV>zH^D{goVEF^1=GzhnCEZ&3$yrG& zw9Qwlqyh{~wzQ821wNH)$2j2Au*%O^JkixRC#O|A=jh{FicmJsP3_$r#m0d~$VcOa zONh7tb~rG*>NLp@uKKQJn^UTpY`jpXzEz12k7dt?&33fu0^*CgA3IpiInk4gYeMP; z=&Vj1{ssBd`?sRF(3+x@QWA(n41ntg;g~mv8w3TkMLpNe+y+R_RGNS4?|r5#)JFKsjB8lX>Wd2z2(nn6q+jOmr; zuAs$^Q)DgOr|0cTpwF`>reBN<;K4AFHN_4)ZZRCcLnWRypr&n$laX?6oCz4ZkVYQt z8q8Y$C|*Hy{HKao4hUw$GO;RK_S1Lv1=C3TxPvj4#aBpgxS7}c#Me842^jX7{D!&u zKwTo7Kuyjnvl{RJAFN!m-Xz|rQ&U3&W7jn95AvOqQv6$MoD-fq%4Y|hdYHR}dU#hsKf)~H zSVIWG-_9!yeH%}Nq0ViCo6(MlPChatQ_|)(*$19&y^mLh?fAixye)`{$M>^M$IWPd z8ahS3NW0s>0jEpEhWl?zCGdbM^u7(l6mMgbB@BFFoMG)XeC%%26det&b=ekW1;QtUYu#Szuyq>9LT(sKIL9=2CP!=10G!ZK* z)J_dfM%Bf1_!TjAICCl%C!--Bdw5YV{Vq}Li2;{2Si*)XwCS>&jBds@9a(RC(qZXo z1M#lGd;fV6riB65Sh5DAmYX!w;LU{PofMsk1qlSbSEoZCi8jD2*y5n*@;dvniizJl z0&|5`R)ZksxW&l_oVO3T<-H8PDWNgMgI4feD)H;`7069uaM{y4a$)@-9&|P<|7^{A zt>Ub1)f%HH);8oDR)7T1e$wd-@57MJ#PVFVqT5&ZbZd7sQ<1IR=dLl3CIW* zBKvsRl0}&bmRhC9mRV(s*8?JSHmLBQiBX0+lXDW`o|Kx%QdC=d`3y{wpeSj{kS?72 zm-#%nm%1y5UwfuU=WRk5sUYN3A}2`bK75sE5crrl@J+<>NV_B3@lI%}`YwG(!h8ee zU1cMq!vEIg{t9SW&vo2ylIURWKdkiTe<5}=vbS@~OG+n_^nnGWHu)_}=4VPT#Vs0} z_pG;F6G(3-RhrI%g7qW=Phu3`6$8n9KsAU;dO2P=xLwp(BZjG&*WU+BeUs5l-{NgA z)`LpK99WLK_#?1GIK0Z7LN^5cbp#VPe^uozF_HztvOYb^FY5<>wv+@h4KVEao+aER#+H@_<8Ux41z&bx@?K=_tJdRKAf}?b# z^QDir1nZR(l-s!I5|fa)M~R8aZ_iRk5BQEzkTRTSHaCk1tU0Xfry#_ zp9sbP(tw4!1&Dz-`Dq4&j6-Hr@&feK$1F#&6z1xzUYO!NR#ZaeDW!p-a7yGW zPlw2SwHykm8T=d2=9|R)1Bjy6ejyvyA1DjZBU9pB;(I42EO}Iar;3C7_p_y&@|kym z%_$!5WLUEB%t<*y;~Y7HqM?CdPipp%IM_23)J)|8?`2dCR#ow1Y&&qLpR!hG(|P z;wH#W{sxHH!|P!d(ccR)Nra!pUW6b3hv^LYcs?-$b9MrEDL0n#j8>#*DfldDe0Pdu zTd8c0>nG#y1{|`XZiw~y+9DDB4*4)VNqIEG(X`9Q!6W!XiNg{h#iU z{GQ5{rp`=!Sem2tbP^Mx;c)Dhqw!n>uG5YeZYmFO<)O9Ilbj07!t~&S#}USpCuSf} z*-uDhF_#~num-hls2k_xjE_s+$m>v$Gayz)tGArW^I83I#Ivc;a{LSS1WmA~Kp`5G&9aGMgfWF{ckAI@^)0j_t!PLg zp;Q*8VCziD$p3BlSuOkKwo8*BD%2lDW!~vzCfGQSs26ccKv)tnn6dial2|lViWB6| zK_I?Yl0u#3>`^e>za~Qkqo6U`0*vG`3CS!FC*9sN%;*eb4aamL3BO2H?3O^xE_`xC!BY+W{Vns0aRD?kg2nLCGRW>UdTogg!$rzk4;Qv_o z$AsKo`D}^{>xW%}>P%gf3sNZn5;KaUffa#y0rw{@OGFTGtfzYLvg@u5n7eFEa zN^4_3I2rQE+mDe7 z3Z_Vb5fYUytVk444i5WHAu5!mrjZC@Aw>pr-c0h41gQ%^u$nm?PmJuBee+S50v{r8 zPf65mtDBW@{BAxDAw;a?@6cTDi+w!Rh;QNKtO%o9>z4fvi3kpn{Mrzap*&UsFaSX0 zd&W~l%)tAyDtX0YW=2v~g~ds9Zo;*^2RTD9=Xa^=DLeo;7lg4<2(}7b!o~BM+L2MH ztH_YdZ3vLuL$gG&tG410AgD<20%T<&o{JC)pBFtTybmsi)`An-Qu#4D?lPT)Rc zs0%GEZm|F@+m8?Np`P;KqA@Y{j&Mqb@U3}4VsRTvC9f@Gtsq!Xt;E4LS_8S~Axzmy z+la{st5s2oyv$wtUDpd}DWt|C;`!o=KrI1z;I47eE>qxzd#3 z1wBPN|6@}cA`3Yt++mBy- zB$6VAjtWz?6k1XNRXxS912_tT-T@TEtMTz8OTE(TwN$dsL29pL2-DMe?LMV<0N84x z%2NaxVU#yCWa!3pgubESM5buOK}&%xXpkavzA5)_(S4fdk^l14fVgGFwH+ZWC$A5f zDnS^40cVI1YI#NRO~`K;TS>^dYIM*=YxAe^HU83-yx0DDanI(|cd zQ(sIb65xrbL-{%k9x0>Kt^k&_u?X8tiXj(iIumIXJF8r2Ecqp04Jq%rUq!6@VaB+e z1PWuPO?NgnJ#=^Ek>>pdW~O@grv4G`x#;0FZi@8IlUv~w$WGaTy-B)_sYb8i?ZoM( zSiRdc?1^2msh|ax3XPM0mQC3 z#Ztd>Y;nuW5U5RH6-FO0$#-9dp9aY^Lx$ZgS6JwjjHqV%l2z6>!QgX*4&Bq?9$+IPEZf*F71(E?5NM%9K=Cl(bb3RAya$_c4%sz$9G?t_3JN{+=T*y~( zq4num4gE1iIxLwy1O8~8Z4?w!U1EgyNK6zF38^oAf_A^Mnket*nv2wpjcL#h?)}$G z^`3f9aWq1VF%rIYj*GSwfj^E~-#Qs@R_0s=e|r8eN_dY#&)hScHw7TJMsV2}UWrq< zT!J7FDqCP75P`)45{t-bYSAGW+0JNoK&g!DcAG<;2+|l@3&hCm3h2fFFVQoctjSop zI2$oEJ!+N%)W*;&JVJm~`%^e8n-Y__QBr}zR4EAvA_{{Xg@P6X&NSAFP@m0@#1eR=)(Z!6t&Ifx#4_iuE>qG7&yNE><#8K46TPZ9DJ>Mipt*NI7325vKfBEZ*O2oe z3Y8_Qit1$`h=3I7SQC7cD->`A!3zMHoA$p6m6zg~E}lzbw>M^;%Oq${rOCkARNbr` zRGi7Agxx#}!Df(((N{pW(Q4?a8SC}h7_RPX*UGG+uM$%0mv{h-pw6<6H)pRCJJ)q` z&K23oC|9!nCWr)rfp!#Dw@)k@Kn0lF1PCEg?VSV+2*Ml+o1P`XuOK>9tU#@vWxOu1 znZ=>!Q?ADhqUv0h2!)Uy+akNpSJ+4d;sD^)nMz$mZsr(P$?YWa^j;~QSZi^s!-Yw9 z>)(Ia$L)I9zi)?8xb?8Wbbx9~It&_WA)tt066|-n0cloP5jW&IXDbSFlBINyn&rnf zd_|%NpiBmxGKi?*+!QT}nC}I&bh+H^#|8xHqlcq#eU5raOI~8^_5oa)uXjXk*pN;j z3nLTj8I?+*J`sT#qVKW8r>@}2v<{|(NhH140C>baAqtf3y^!Hyz*xvJC>_#F<$(br zq#*z(>qR7(3dp%affWvKwEIyb&Aj!me9)ktmM9V@aeea`j2x{#vM4gBe%^M&8C2JB|5-=))%YKbb|i}}1)L)MPr3~EGB%^8yb z6ts0HB}M@vnh0PL?7$6xv=$DnG3?T~ER=j$px|8G{i7owyPu4J1)0AoFq1_GK<=4N zj4llq4$u*qrUWbmQkLw)s_g+Yu!kWEl?}bl$3ZAiqEg~KCbx_>vdFL?0UgZ8 zp+RViyYo#M!~0_07GaoW7iJtr;-JK@Jb#ukT&(vVw;4Be$cKkeN>IS1Y$mnml68FY zR%TJ?bYROIdU`okEb1!{;q6I%0He3TfB~64_>2*NEz3qI&O})HC}EJnNm*3kMa@`B0WPTZNbeulN>e`R;L&Wg7C%6ZlB>%l~Q^ZX^6D>ie9!lIC7$c?|3kyK&^4n-Q}N#n z-eMiU*l|VBB{@9n>#9`{R$7i{@|#pkXS2|_=F_g8 z%qBt+Ei9JO63}h0a(fjKIluwcAqte$stT%NAeA5>W6&V;f}Ge7V`p4SdoBUc8;1#VAQZ= zYPdV@qynPpUY1`#?VLI4vyW_}uXwjT>YHdyHFg@9#vv8dBIUDN=1k&vkWmRJ|1XM%>o;Aum&KMlsSJd4OQz|Wh|5c6bTOj zgJ2SUx=ak>!6tHlzWXteZN_Iez!z%7KE2(W6zMh5V^u)_5-sC88Udsciqj-AxRJ#1 zP=TT+VLgi%P`9R$1gZ#$hv=FM2JYM=TY{yb%dsqdfc^6OGHivb<=wH9)a|Z`D0KZ# zm{&&&#s2V^(5niD7{9djj)SqjtLp|1QrbNX5lIaS#6f^daq;h*%M>dBAt5LOcTh4$ z1`bi*C#JcvW|KnoCJH0vNWO3hXtO+cD)`c6IToz)meaykAu~VwMMm)p%oIfE7s-IQFy|OGpVYu8o`2s zjy6%=y{Z9Abcjb+-j`O=2w?nS6`c5ZeD?MjAV79VqXzM3^=$Bj%pqi=ZyCyY@XlC7 zoFEp3vY^1So@)mOP)g2Xq+)os;VVRHb~ro0f*`5g<(n~7juXsl%8B8}oS6~#Qg*#WxU@hNRHIoHAhN63u)~l5C9_0;fc2TuM>(P{ zwiRbz`F0s5ylAOX)aUdQQ|Ch{GsFjnU<*}(GOxFI27IvFEY4qd_2mXf*fgwabuQcP z&ZD)=ynha0{bE--yR^0pAOX|$-uh0HptHs@(010BP<~eRk<_BUc65T4e%#cAf74I_ zYp*wo(h5is@Ggt~ZasY05^JH~A@9ar2v{i%R)@l~StRGjhy0MGm-yOcvm?`;r^Wpt z3Y6uj17vit;4D-am;<%5ld)?OtyTtstEHuI?JYlo@Rx~wSvg%iAt`F?+~sq_dvLhR zl^EJvWAv)35m6LcQlPuQ>qS*f`Y;uqJdS$;x8@a>M_;X^kZsB)rn23~`<%IejRkC+ z5e56De*UDwnT!G+f&p z8B3uA)c_Qbp&%s8h!VWBwSD=Z@C$@20?S9bNff7sG|ON{J|^4BDxOjIXa?104TziJ{y*E&eJ6mOvnaTzOPy_E4&{))elA-3sIyM(N6zj-^|{uuiHhjhe~KkFj>KNvk20- z0(#VB1)NJ&)p#s9Y6}PiS{Y@V0%VFx-c6=!ldcmFS^n7#TFzZ>;=dp0c9Q1V%IRKv)xvzEEU%V^%6M=87nNPyt*4e5!7 z4c01dwLZ((sie^@y#XEVT)<)gJ|PN}#jXhHVZc~!LpjJo`A*`tv|MFeLIs5@yEK)9 z(7wOIl1ZU~k3nk!6XSQJ-x-o*)i_(3{suieKMGalZHiiCZ^L5Su5obIpnMf80S=P{LWjHCYRq_ZJ zEna^H6@@#xs{jDM7K^jO$f%P2mRzbNCCiQPxdRN=il~as8lI;|EU43%3%jhUijZjB z)lE+B97BD@(s`^sPn-XHXs?zU_WGPQ@?x5I%ZX@!E((Aqtwumm2~sB;Zq(y>cnb>v zH(b+E8^IS}AN#xHwtKl~NP{8TvCq?*4%Kwh;xP&++y@w_5L9lUyvvB$dgUq9uIvzZ zR8&pXdnYp@;=TIBkuz4Qm8!iN24DeyJSbULVkZ0H7UPbrng2*-5=HF2FwJVU=8jN2 zgAg_VIw2~QrKyP~V!)WlK`G-rb#3(YQB4M^eCp^dw#Fg&(!lM&Wy}l{DLcM#T>?Um z=hfB%up%@d$IVwsIdw<%|I631ZAKiyYQ5ho_?wc;*#wK8kxbyWr4b_`E?RX|s-S^0 zKmnl$?ebbv-`c5+s-YGqLR~K?fV|)tBDDc}V}M72Xxvs&BhyY@msL0<>TTV@h6^=+2=uD;V7sjRV(nPd$_Zt@`vcO%UCI;vp;W08-g~%}I1CFrJ^ckP_T6N{t;QDs&Jj%N`*DOn@iekEDf5?0N$p=Rhs1x6l@~-)j+7^rxZ~+ zrP+CDN@NYq_Fez&*p_qrW+h2Yoss!Mxz2D=7XUhyTOMKpe!Uz0&Ew;dU1)^DUYUFT+1S!+5t{WxvekuGjfJ5XVg2pz7S}6G7+- zwyRx-UcRAvC~!?&9T2_hwGoib6%%!%LL6+ogCd#}2n4h$2>KI>9RCkzg>V5UlkL?k zR+lF8toSVVTI|81uO=sK(wC-A#3j+GkLQZhU^N2VffPSwKWYsO2R_ z1zu~4$zD#m)$#gsFoGi&NwP68k-}&u%C_K27F)v_sI#z>HCK(%X?dbjnFGi3c>Rv} zE00ShdLy7qPGCZ#3$c+mD$d4|#1K*T*khQHLeAUzOPjQ}Wa5U_>1i1=J3VA!rPt~F zl8ZEP=-0po1Jp&_+&!cbXgHW<6xh#dM&peOsw1e__w9)l_D8XE02YKb8c)Qywl-_9 zD7c{IU$ok=vl)Q1-Po2mDb%fbk~N7K90dh^f_{Wwcv;sWYLz9Hj>Slj&>}+ZOi|w` z#cz`q={IBeNrFzMs|2o)*t)W*0S8KAD0EVj51M}&V z8$O<_%7QJ%$KzYhSPj05Dyl?}x6aEb!BzrPFJ3j>7fWtYlq_3(a6^w>c(6j^d-m`3 zzVdMIT(`eyN$by5`j*|3-HVs!Qi*Q0WM(IXq@l6FVzM}l+$&ADKw2)%EFDe%{+KdQ zs{K@C1zqF~(_b9YQUy_(Q_kaBvL|oSmUWRl3|bJ|;f>%sO{X5VO3{D&$ze4!qq-DRC-!0kywe}jm#x^fE3JNhr4z}rAv$X0HTd^gVppauQ8rC_KT_iwdfPSU!8PWlY2RAhnJX++0^J{ozk9VY=W^v z(^EoR2=AX1n=RwY0m*C*F#v(8~$a#L% z_t|OD(B!+@YKMT8!_yaD_*P)P5U+C#fit8@71*fdd8BG{Ns%x9%1V~aT~SKMnQT~X zT9Z$1(5WtAG9W1IP=HyShKLcNxh(l0ENIf;GLioQ!B8$L1m&<&ZVDREgohubba@(j zw5HE%ibk#$eaD&o=-wSCspAdY%f)zmsf;*FOv?X==^4%}XnxI_v0>joek093Pg+b| z)7M~J5n+;w9lOSvdRJ;NHe}Xx^4gB_ttuylrQ+u{cGQV;?d$21@xbX$xbxP2g~9M4 z3XT8&|MX!!YJ)RSf{-BhVyFOXG^;Gs&_Zx%ByGXP{?{s>?AH?h$n~x3nEegfikyIb zVzmH2At0SC7?o^1PK97hDZFQwva2+Eu&pF^(g>ssBqQCQgpSA&HWqh$7Yr5Y3;ZEc z9pf7bBnKF9u9zqgy?PK4m>YpIh~j`NGo3KkfGfDWUaQjuKyW3=C$VXHSP82s}ZjO8aTot4AZY&S@Sk;86}^0c_fs0nz8q zc#`N2!wJ`pchDY~ttS9iJ^T02004}DJs}E@|NsB>0YPe_vyh^JWwBMA(=|a>go{H| z&`7v2D3J0;d(u=%DX9uR_#5ZybTJ!xzl9slVzrAQ(zJOccPUv7jZcj z(}#w9(TwJl(6x2Hv_>K3iV;`t_j!N-cDH-b0+te{0;r7$B@v*5SF(oa1ikT6mH~g~ zt-46j442UvX~a!EKuu?GoZRNYPw&FK&5EvGImjm9>*$&tOuAS3dN7H2oKdWkJ5S+s z>k^?fO=VG<6)X5%3+heG_nk`^sLTbI+uhgT-yCOcm?XJ`DZx&kZ_-pKl|j<}_-ynm z00B5sa{%li3XlK)|NH?xYhs}sNH`M_MkN8P3RZelNdRKlKz+>Ou8u>BZY$8Wv7B_d1Z-P6(s-j+ROE_R*hMV4Uwuvh`rp z^t$t}o`UlF55lph#|rZAZYMlnwS>!B&<>?8?O`b-*)Y<60V0wu*8@WcNHoiPjvy6i zx0agag(bLZfg&V?g8+DOS44QJb`M{V!@E%+A~u@{sG3!x+2wTBYHF5Ns8W@^6sPd? zq99}PsxIS(nC?(gl>j9WjZ$bN8_TFs$O|Iyun52LzcTpHCn9<^;Aaa-KME6~D-mkY zJ8v+bUPF5~0Q1-%4%_LlCf9TyvNB=yeSD;3-U_LqVi9u%?L7C{-D_brwFTKM!A(lh zd)7KPAXouVA!Jp|U)he%GxC)$qC{ocP~eXzXYsuLpHhk-HsMY0^oepV01aB|G=Mn( z00Kt=pODm#{~ol4fL1`0-0tw$@V~U4KShzMc`;cGDJh_CsF|-o-atDXp_3a5vOaVN zej}o&3tlG80nkB|oZ~e2H5M+Nl+W<^+*I9l+QL)p1fa}eo>QKyT#=k$2O+} z^R*CN!=$SDYwT5oc!#L83H^htc6gEBi564{Kai52sS^xrD5(@u&+hQ|IQ#KB){TkC z4PNd$!_qZ9vQ#`%m<7E*Ck~8foOc|Z;f%3n&`1l)LGV`*3T#pgK?XQo^U2j~Pk<#@ zN@_DSpx>nuqn;t>E9a&TS!muq2XmsH?1h<>Jw^if7<*X8f1`UvJ^5S?&KH|t-alLK zCCKYu|ItVMcaCDhHYLNEe8*+B%Cn_^1! z5|8EkMsb?{t6x{te&wR$YTtyB4;+bQ_foaQ<6A)t3_NGp7NW;!DnU2TzJ5eBBLmP% zwf{YiCk(9@4r3uP7s{w!nzr2STj8MrKA?QphF8oC6CL)0ZuhY%v-nRjOMIa~+qCep z?*#>VFBpUZ`{7G4!bz~Oeq%_XV+yHOwV@yzE0z*!M131`T zM{*F4%KpWZLfD6M*!GB81&RQTT72&Vle;`V*UWt}V*eYw69a{F+($8SGu^I#eqZAy*mh zME^yK)nysx(w<%I=m=yrTT&2kStg-c>dW$Umwc~S#;YmCSf~a{JG5$=E!QIP;)l8M zk(6=d{DC8M-UG|^2MNTfjiYQ5Aqq_oJQ3VsjS^{-z3h3WozxI z6(_s2Xz8fqcF8BMiF1LQ-$LSPgMfzQ&8qkBqQ#PyPN5jX&;KkO6S&zmn~bok(VTZh zn<_6Pj@|@BB<;l(iHq%F_bQ+HBZz?&Umy9FWIUwoA+M77wZ<`^k#?^|@;R>|sX z8cFZOL*d3CaAjLa;N?a*$*;=zW<3V?E8Tkp)`?9gyF&2NRO-qA)++ z33skb2q??fFAPSfWn<;+MHf&hFjM+8b!4OtvrFk6{ch1jM^qT+g*n`ZonU1b2HtU& z+?-;uJP=zjQ&itoCaKW#>h*zeG1__J*C2b(-T9aw<0J6f?+gy`05rRAm1u7KK%f}2 zfdBvnyFr_nlj}snm_k4LVYjoX=(V*X^MO$bES7mSeT^Go+B|zUL#DqY#iy48Ixv7g zLX8dPFjV@A`o|a3?W^2S1>&=EW?Jt)UGHlRrcmHBisukqD>HM<@2Y7>;twKfmS8&P zT?MfH`!iYx^%6)RGf6xI)}_bexpgTutA!V}L!spglX@z0lNzeiZXkJyI(HweRif-> z10nQ!$G}4gwJA>SU%apcl%&tHqFR%ns}=#Xs(cm?jP*D(Y6rP*HP{V9Y=$C5AM zCr|bWn0e@auNw4Ur~Pi{f{-WDF+2XbSPR0+rZcwS-|pPmhqG-* zh(>TW1e#u}o`c2&kecx9J=7a9Wg&L!h=la_4t%|m7mU;=@2L3izz`<^QO(ua7!*a$ zX();QjnwdHEWPkEHkbyZsB%p3&;bA?9Ka2_|BGEU+{fiKW>y5hPcdF2@MM;nja z7{o@urt5O{RncI!CK)A1qxd*)oLpH67%j#(`Plx>-7zY9yu&paOuLAWFT|aRg04O(YjoOU2Vzd-)aOZp2E0C3Q$oMb($SP`x2L8o~e>8 zj!aVwL1&}J`9SOqX#aDF+{^6~{Z(srxyxS+F_5wH_X?b@r}D;05Me60@be`H!LbAk z_7zdUovi*C?CvDe33K0S?}$E$O#nwO5a=Qtaa_MeTF(qs_xX}7rDJuUKPI+}@k`yP z%1_gsoX(Lnj+*t4+LR%P%_w*GRTbvWfgF5(7or5DUD!Z+;>+#|4r5%v2QT=!EQeE) zr-*g9qB9@19AafcMOwJHb^)F!3%VB?KOhLzVz*)0OBW;qVd*RHRWdCthQ_htIwARr z?-|9eHUrjlj;E!4f4dq$q?L5JLv!fb`;_QTQ6D9Kt_8`lQ)R$|CByH5%C@f|YpEHWOB#pt}-ymz!1JsZ=)h-J0Lnyvqc@ZlR%VN}yAk8;;#^cP#mqeB`)u zhvey(E6wF|4VRQKDUt2UBY%G4?&Z#6!Vsq^KK$efzsSWX!(`gQ$J;YT($vu`yHML9 zm)rfSczeeED1li@U#RBE9^xr?2zmbd_di>whCXDL@-!NIHnSA9O~HX?I|t{c(vF8&|I5bRi%4cdMOgh8XkY z@|AlqB6Sh(=z$w)>XBMLYQ^ao<#I89s@Vr{hm=`ciDPhQS>W;Gx2F{dGmFc1GD1UTkva9lk{g zBc8*-3;BcMUm{5r++v$~JBJD#PUB`nVzgqekZOZF%Tt%au&mLTfj%O1{(Oa$G1@pk z#4d`i(Po%VUxZu0ta_i?=K;Vy6h_4}J3;15TJhsc3bQYSEI=$d@GTwWT0IKW`8K0? zTLx{A?Ya{~)uash&Y^+1tU!Xua7#oH8Ns~YQ0k)e_VNXNyZ{@%D6pqmKd!QsjH-9z%f zfO!FekyJ-C&(IyQ3qVDPLl!{Wz{=jZtW}^tT7Ftmj&kI{w~7JJ13@G0w^Uy3yD z;e+KTJMZ_3ZZHZ;PDKckAdDoA0&ud*tLSb88>}R}p2~n;=MLcmhZvxsOQ+4>_)N(Ut|ocvI*Ly0Cxx#l37uPg&3z7!Rcr<2wzu*6QoEi!x637 zQE-l7jfrPEDK$XTqQ=Y{GK(#`c-8Kwo$xsG3>VAT)Haqk_IS(gY+mrosp}J6t4Y_z zW=yp=3hz`{jH_Lh&zTvuz1&$((!Ql)H|?_;``MtY1zfhrTp>f@vY_eC2o>-eJ{S|vMcS&9rZo-6QKBNHRX-Jmp&~TFtj9UC z-eSdWj4VvfmNkUMuC`koVjDpF-ENt6_Fq5))FURK?{A)KdDfI)7R z035M|fR68|O+Wwu2X;Z5zLWYyz@|dK{m~yY)f2M|RmcN!O=7M)GTQl0GQ-|k;~Nrk zfw4TS#w{$60H}SVp2W}YBpiGfL~~T)(4j*hezm`D!`q5-j*%db$Yb;UwGF_O#mzpB z;)WQ4HklMCl;%LlbLJ@N`D~h@MrWx`lKAV#9Q<7>kRT`k0D95!j#-2>YF+~u+*{d< zWIqUO?IrrBN4dyDgo9Y%k8uE=L`_g_mO57*X}Nrn$|W@V!|<#43(W)C&X~UG?MY0z z$33rjT8rdK5P5HOPG<&@g9pnG!&LmyFluDM-a#Sg9}_JAZ93(%2@%n_)ht%~|F9CgUKAJ-49BIdqP#HBn+`Y35H zOcc$8-_D8UOXj+AY$^U|2)tjcxfVtQ%<_a+#a=+8RkZKqRknk2AWE>8r35LY0q(UI zo#xxF7+K-h9{@2or0b_yL#a}{AEZ#-C~8M)+ZEcnD`|GtFq^gn21ho(qE;iVW)GZ(Kc=h~Cb|yoN*?WScQNy^@5}5+DFL4p7ys4In6{&j;T>tc zQ^92kOu%MLT34d>0tFZ(d$H|L(w+@vVC=%*((poLO^0~~)uPv9B6GX|1#8;5t=OER z(;*2Yzq(@S*p#e6|1w($tRmtHT5#oE9_V@btoo2ipr#Iu=A!w7p>_zJs(fqp%Ci6017k^1F9nMs-4kckBCSdyi5#hD83p9o$U!3Ka8F! z%2_3R8&#qCLGJ5>BTb5ma7~8Sj&dv6xB15GZb3vMQDzu|rOWM{TV%>eQ}OWc06$N9 z00THcP5-i?{d=Bfz(Li028&RykOdfs*};av+<@_vIEU25%s_u=A#B<3R%$W@pGKe8 zOXG-7@2-z_9Q2&x2TRV8Jb&ok_57ZAEFD>?F&JU*V&5N->mmdv}%a?BAYmq zp1Z0rLHj25x(bFnv`&y57Ok0=)Q(nH3;pinFH*HN%NJZR>WZYL$GH4RcG=)8u^q}Y zngEwTXul5L5_WPAqIx=Z{fL1djrHmKLUKjZP6^I&QTT_mb1)Wcjgq2^kRqafy#bfV z`CGFw1X+5#7Ev>i5~N-gfDd=v%gm?5TS-x8xO;16G8iK*gt0m}8mN%mlIQoK;2PhA z38=leBCS}1taV9U$+EkMYTmY?t3c5~P^pd0>5p{^9Aj2HKT3 zz$fz>%XveBkrtx}?{$?AB1?6A842yW434SL%b~Lumhals-S?0RyJR0mWL~WSi-jEd zDXuXr&I(G$@FLI?W)K?@vhA{ho8^Kut%C#t+^xwU5FxI0ld3J-C(m5tKSzrx3Go&;SGK(YU=mu?bb$9`2pnNrTIrjoiUSenBk*+ABVXS`W4Aey+$ zFV@o;It`2N8}2tdXvYq>9SY>H>9b7mrT)s`pMnMM9s2L6v12?S2AzGC$n^*pi1Nwu zG+AO3643LC7|_6&HFtYjs?4yYWR_y;T3W&r;&&LD^0ILoDlr+lW~)1>{V!K9&iLXR zR-b+uxhKU{?|005XLeXGpsptNRt$>0eD9(rbq`_J9tK0uR4cT-D!oue5VrcF(pIuA z+4iv~9=@)~2657E!7-UOP%#ynpud0E$l0x2oryWy??hEg#a}GNniYAS;ZdM!`oe|3 zxO1V0ih8(Im#81z?mIXTKXzFaj`6ZaBPIb`(1u@>*&(*D8CsH{0YPgsWA!S}l*r4@ zcmlDzp#T5^uK}Oh)Q|rb{FrJA0Sp3U8?^B6K|Z_7{RCm+K@lOB}@mYN3 zwg9IHo)x10RgY^XHu^{)SOGL9780RVh7{pkBQz2YXoN_K|KQ|UP*GZc0pzA@4kb&C zNTr}z*eET*b`*;MN+@$?s|&fBxti~>;~;U~LfM@ynIS-rV2KLC)IXR8dq*V>03gCj z9b^iLb9KgrTSd0uH|Zvd`v%K3(Kq>wmXv8+aGdsz@@9tN zTD@RFSrSf(H=Q%=g>wbRrX4A{y~^Q0aVFN>-{v20$$8o*2H};f+C|&G7CY-<7$mwvq^DcWs3S90`ah zsd8zhDGxPA16@;@8g0jV=Z(DK0009g0iWE|kN+14YbX?9&&!f&MSrSO00+e;b>BJh zN3+2VJpTbogvxmCNK(YdgR49i+6|ofE!|s<0C#Y~I=MUKtRxM4v|3R$ISpqGie2JS z|EplbD#xFv0V}dO-Obm-=>As@8$i{$#U#P~LG+dUzTby`83hUv<;EA;S6PdfHzNDv zDeM?z_GKl#4lI?#sBrbDlB9(dsws}Nux`M+nYF~-$DH$yR6^N8TKZ!+%$i|T+BTX& z936k-^!p8CGyJa{clJ0IQg^~7fN<;0N(SCt%(Y(XAMe_{t?a14Y3h+E08?_OZq)6I z!PlH?cDAH>_xys#+2EnGQ}#H%+5<_OdF5m!$RBgQQ*XG3)^nBLLaM?0h(@(ZcGgo~ zp+=V67%04iZsxeYWT`(;ns$8&A^Cs$&HX)68RlMGoB$6BiZ-F4lh6yV&j1~Vsvl_g z;Y56rTQa}ilIc#EUP-wncT#D2#yk`K^N?#+P?B`@#Z(g{O9)1IjYp%eE+#Zq_eD zDtA2>geOtOv#uk+A73~QG!~l;Pdpm3nGbqhiNdm&k~1 z+)N5?mCN0+tf!Fa1Vu=d?e^uL66%9Xj_v+1K&x<9%R|Fn0n=1$#*qE7iUoS*DdFj{ zDKJsh&@8DIrt)VC0X8q&}#EHc)uF`{Ohg~%}O92Mf z^2v}`Mw#-?uUv(2PM@O=<+OQq(@w{X7;D&V1=NNuiKqt~?iIQ*FAABAWSYc1Q8ZTg zoIOjZ$3}kE_r5mQa0r52u(aMwYe#cjEnT`0iF+5Wz5P<#T}a6cBoEtF{$D*zncqbK z00+ZCo5GXA9!#bLC;$Cot3WG9kFSkeJx8NRAQYsL=>h#NGUF3{%iqNn48$<33)2|< zD@&QggAEG_9R0cD2D~yBCzt>NYh2I_aoFfBX?Y!nDgQ1?we|kMp^oE6D~UlAgjdW$ z__1)_kDr`aP@Q373`O$GpwjEU!Yi;u+VKzatND}}4Ip}ud5?4)_bi9+H3!New5b#U zjZ0!qG2EcGQ?oWQCJ^Uw7@eWSN7$!gQ zIzO!zvSly4 zV~v!8UGh_lty~usWHAN0^f@@*$9v~$ow=k;&&#@mS4Qi*EV{M#iDNS$*r>{Aj{3iW zdFL@b31FJk2h5=PQIZ`rtaY6vil1o`Ab?x4i0Q48*>i)}$-qnp2OxVC)~L+{Sns^| zVPj4y1x@+CvfOqX}*8|cPxk9pF+?G@zJ6<6qo+{=l$*lJHvp|?kEg4Ua)G1 z7}H08G5GPPE`&OXM58}r5K^w}Lj;8gBOb>#x{MH2s8?YS0aYq0P(u@PL^#GlR2K5q z)S`8i?@wft5~UQgUk@WqhyVs(`)v#`a+3D!pc=ILbDwHa7_6-s+ZV}JH&l3~DMQhw zQj`Ic&RaShR{DWCF0f_AzL=hg3geu5P21)MaeTdBbNAS4hCUR#35vWn7N#jf`s@*y zufj560C)AM20ioiJ^Xv5b}lH`G}^2ss*eUVBv>gHIOk0B07~? zr?E0)9F#CBNIiIa`H1SMli}}ki+^H3asB?tF*KD@`(V|Tm8B$mwiOSfrUg1=6pIS( z6(&g#2eK|%rd1MsufdjbiqWko2(m&gr-a30t)j3?@TePsUxB_3^BoHCv!R&1jYM&* z^~H?6xoBBWCPwSJ=AKuNURH>IIOt4g^@`Ia-RApWd&Rl+SL?fdN0+}s7oy4T!Rg0( zXPj^+LYcK>xi7L5@7^*2TAk4&hFhHk$_P*ZN^bup4f3+7#oDP`#UE2^OujG30)HM> zbJc_wenN6U2Gg50c;j#&2yTfvn3X*rZB-P<+rpwrqiO_JUdqVf>ze-_;zU&#aebbW zWBCH3?+v0rltV_CZgM%5U5nS&q&`r0yqYGc+&;!-?KwirzY`^{qjB})6*z}#h@^iB z^57CdTpeF<7DSXXLiA9aA&;twY6p7I7%5Wv>=kx`6i=Ia?fW2Ws3RL@Ur-r%nDvUS z<|UQ??KjmR;Pwrrm~EZ$T!~DSSph1dctf^SIQeY%7Do!O9WFv?B}4Y$TkuJ-gQy3| zLt#@7dJx!PJODH~9(o_!fCU=2AcsQX;DF0x+A2#O|2eane7h1(34zOUFmDwoVR{_forZrS-`$cL7YT2J z7stc1^eZ;@HUlf-AX#s!1%Fx_(Nkif=Zya)>*&W0$F5)mMEO-k17UXPak%c@cr3Mn zRG9HSRO6^N*jkKEJf-D8p4a{ll702P85jtMx;}E^Tzm$H9D06~YcB5;2uwDaPN3@y ztc$t{7S5AU(CsM#aq<>6cCBgjO$i-&T6%r>!pinBnOdkxU>6Q5#DlSb;>E8tBJ_KJ zwjupWe>v%Bo7@dSyBm+{zq8a9xn`vyhCN6fUAC7?Sqe31((q3v0C7wH3S!Y_E(#FlVvv+rL(EQgCGPErN?w<{84 z(jleF{tA+qNE*plP>I&dMKA#Xo)hDkAv^DXh}qGl=NVtj5E7+L^|}xaT2y+V`|Xl~ zu+{O~aJTXgllRew`1N9ldmo3OP`W9?y}Rf=tw8|y1?{(lok2YL*&C@L=I5qmYrLe*oB z+k)B_wfhaYTAIT%PQU;F0`>u);M9-*8XZJUYpb@q1K%W`00iMjH&IgV8(qx~uV84E zWgkgCd`?~FdXHPjQ*AHsS@~-?TY7%iCMXLeGkJ+^B!C%CV+fJysOih^Y5lMa`sQiK zu_gwjf|1ScX7o2adWhi)%AeoVZBY@!>KraYs=M-mhqz3eQK6&$W z6g()lD^7&)V&3I%+iLH^;#v2Lzo2ry!9gu3Gd=(80SImBn)+Kx@_4!<@Yjgm%TpD- zd_^X^iD1p0zU%#kcO8N)J(^KP$iD{*+iJT3cQ;|+P4~h)p&CJgeJloqhM!*OOfA10 zD+%Z{E?L3#tUUw0ZTQ{A8vMH97g?-J<3$Ux{T)!*cHeU_&Y1!b;FxsL=y@Q?{3l7z zw2SL|s#zRjx38@J~oQ}q0v)E;BRTh4?Lbs zuWgZKbQf8iTsUKq1#^F!9iWhTsC(iF)~~3j{=wo-vIoO%sW>%8of&R87s=pg9Ao$E ziE8|jsQ3)uUw(JG4#jC5?544MnXef~)roKUH(9_4GI^XqcNHX?p}#>7jb7dw|EhMX zc6Rg<}`KmNVI3ToONPeHFU$$y|cg!Pt=RN5loBa`JfZ)=1ggj|(?ffkg= z7F^q8bGpQ08EJ@Fe^x6cX6|i-2o#Q7AS6= z*6k!x@Y+Z)RXNf2v_IMxfv70jsciEOGqz~Vl*0F>tgLMf=td0u0;5ov+9|u3QQ1ZS zRJ#K7dGC$%Sx-iavMq%iy7J@N#=s3St;=LvG@xkVx_g8`QTs&&Zq=C_85_{{D&Iq~ zt>T>1XNAxZ^iJ5D=|pmPZ!<@5ef;}Sf7)iP?AgHL=PcQ052J=_v{XScXYJZR000E> zL7V84>qNqsNB{I;vN%+TAAO`LmNl=~&S=V0nUSS2zQ`r;d;F)TW0+$elX412+~enKQ- zAJ9Gwt=Sa5BI~zuo9N&M-y_Q=Gl*MP439-!w|q2@oKdO1L5jpv#Sk#u@dnhXPNRP; zK4BX;S5@4r^2fez*Qc8$RcVsLO>)dP!$s5CFPUAWJzFLE861!E4^R@@_Gh#%EijCH zm;LtCDoGaOWu6T6jOxxWAw>N0T2QW}++3v&NGl?Hh{AYs`=m91@;4Jevp%q{YJrR$ z8X1Ckr8PNZ_9>$@!-M$RBK<;=gN64~0$2bt73hShfEH{uNV;hj{R)Q-)Mt~TyfgLY zXk{h(ZBQ@;_}y`BYp+VQ%4#>0z!!xFK8s{-RBnO`;WU^AHTTaOw)}*mq?g5{0^?u{ zSY0$!9!&$gZ`S~^3rC0@Ufi4I6x(03Mjb7C`U~GXWlrrw|KXd)pQdL$;0yI!ey6Un zgT;-egqQ*x_Sve3N}->CJZ{r_9@38HeMc|Vm;#C%&;;``zq%Q;j;;aXr)}}T@1Yxs zemuKB1^$kvbeP9*BeD3kJHx2r(Ak*YEwRB0I@s!R!(Y=s@0bVFAh) zD3gzl9^0I;oe*tP1fW{IYpMb5N(WjL+i(J00D6hRL9)S)>mw$!y-I5u`(V>ysMaqT zbcn%Os}Uxwq+v=S0sf}{Y_tJv(}Zt6r=9OSE)oKBIB9mHfC~%_J|6aOUg(W*-;nl` zs-kk8&ny%M!n7B?=l|hU(|Vl4fh!#p5SSMllgn3+kJeG*NY zG>lX^To@j>Ak_o`EcIsnSic5(3jD$QIa+GE=HEQg)1u~|bzCYuD2V+}m&nVy{HWv! zw|_2|KW(t99B>v2sOWm=7r;1mE~=rK_|-;?T#1n0*Bf9*Mf{$3_BRv(X9hrJMxI3` zs=Xqsy}+M>if6*Oqa;p%pMG1_tO3eX3@$(ixcsRD$<>-WU%WhuUaTBZ5IFGRn+Wqs zYcT0lCsD$GL1>^|p`bh$%pO&L<0Oo;ht|ekFu}aQA^fmC;CNlRNzaS>Ne$WF=d}7! z^(&8pLG`QyhWI*mLd;hRIPih>+zVs>_ySb1-Q*bzkf zwHGp^P1>vOK4{g~tEoz%+SQ2;@L@GM2=uA4Jc`O}?PH4XBdwa3y=2p~#B2 z%l}Mj>8#`@30O?D{eF^pQ2+n}tpT0{)Q|rdTAQ1M|FzaSp}a+^@c<@>vDWJe53ItU zeN`TD`E24562Wh^J^Nv_(v#H;V@wb2>j?)~l3Es+Gy{2!%jTf_oMdz2-I&yXLUb>J zfiw3cq0FET$S4n%NgvI1J7J|0%mugaqmwMGi;gru&!vPvcH`kmfZb-LqhG*@OG#u9 z-}v~&3{ZIcGPcJT9&1<&0uCW+swmKT02jsh0)Ga==)y9DyV?3p3m0O1oIbKESise_ zUTO!$;B&#!%l}FF3DN_>;c)KGo2doN@&=d}8Hns;np=ve1I}sMEy|?&4WgfB=sVNh z(S=QJDP3vC`xzv_*2*SN6&{WKiZ}@E2ugMkr0{(vANuV*hNp%MM!5_vK+B%o$uTgi zq>pB~BbllK&eQ}Vxb7=Mf;5_L-vL&)4+4rH59Zc&T||C%OwHJvK$PuzYR#dO`6s|y z6Hu57a~TfKKmOT}3jJ4`9V*@$+>)u}*1O;$=4`cjy&}XSE5A-3?zW#{E@uNOi?5LW z!N!_|Ozolx#y|WoQ+AdWzHj_I8V(3($#eSWMEOC=)&DZ|e|SG+!+*{|lcQm+23N#SZw%ZaRgspXs_Cdqgv z_{mj@CWbd0O1yi=p8D=ljXdyTgr~Q0c-DL1ZQ13+`%wmUMjf_R(9|`8VS?);M(D-* zjnUb^3hQ=Fgp&UIIz$mgBLa~21U0akv3ECu>5huGbVh2d#y8{|h2N=o72sIF<78~4 z!z})KT*mZIEhWHPln)7kd8jmKB(*@0ha$+xSH}`K%;9BlDt(T(YQgk;lj{E4(QtQE zFWo2F{W|+mSoETT>9p`y2LOL*JKUV|wYZBuUw|PBlC65(}<1J1Xg|~XE zZ>5&i7ReofH|OM3BdV!q|8&)WaxXpqN(U?)LyP9 z$fSJhqUBvmD5Nx$^y-t26f9f_^ku25_~o?3An6`%6Z>G{zf-peE4@lecma{zKuq6o zm#&X101M=O-n)o)A|J}MwHGgR^`wxgBcMn~Q3_1Ajz9(Atm^yftE!bPp=^=Z5<56u zhMPXPr?Mp(Fg)!dtfks zWXn&dnoc}I14;TbCy(zIp+|v^|MNndU&e33fD%@zgQZRrr z09hp(B?lk^3jm-U!L8sl-QyL_YEpv85ab5Q3ykLbcWAz(83;reOxn8H9;m*%$4+Fm zUkcD%3>D%3lo$g8YP*%BnxRR?PJ6`c!A&U?lr}k(2&qD`1Smi%fC>u;h=2>k*P!pm z@JOzM^cla@1?mT150cVmYWd@)lPIrxBo%3j(Q&I*B~k_I>$}$kqEnqED&DGK2CFrP zFcqFpo;jdVTi>GUc4pNLc(q@lXe0O;M*J-4H!>?uX@Ghs%7+dbQIHymcvuwcl-vn#wD0 zEJ*5txjIWR!xL=04LO4a|CHJ*bFkTtTyA&DsOC+n94qdy*BLt@!bl2F2YLAr=@V;5 zelIlS+eqsG+srx4pb#2#CJSW1L?jL^T^l42wyLiQ+K^OG06~Paf05l8$Xb&_fkzUi zaUVZ^Hj5EEE{@(_U_Q6#8$B!3v6kwT-1*o1s@BP}8M6G($iSsbLQK7$8Y)mJLTFN& z4FkIDAz~F^6FR2bWRa_}JJdUbQEH@|BXiCO=VMkbU}12pW^*}8wabOYgPtd72I?zaTZPsVqCmFmZ6RKGbxOLeXNP^|@Z>GEIw z*Az@4hMf=W=p=humYULE4QELiHBA$h!DU04H6K4qyWa z01hDAucyd6l{u&RseAc?bk9l$>ugLQUgjpM!1=reG0EqS{}CD9t`A-A49AV zojoY7MwM3i)r=W<|E1PtR=6_DQby0XXVp zjQLV!QMyPhsz2(%TvzHL8&vH$(liV85R9??(GVrh8`d4qZYBVYWoSU5qN+fu#tM{5 zGdL<}+rSr6Ayxs-_s&W*@kxrhD_)qczt>SJ$OE#vxqbGo+22=wY5}N#CShSYn_T}~ zW?&M!?g;~WgLPibXEO-^RbB+zF&fry+h60^?FGaFOAbOJY%cicvJZ{wMB3_*D2m@X zzMAjGqPsuRX6B}u2`XR=R=TUJt9YDtlx6@P{CYcf&;TSjfF2 zGhu3qFZAn@vm`}mLafVb%Vf>u4xL4SFZ$UqT_qcSl3W+%Zo%xW4JQhNCl~9!rf@A@ z^z>BrV%ZYqHyopfSU?XRBqLq=hMD@g1*5>b-n*iDY*tv6k$dE<@Jl@#DctxTm&u-1 zCi25alfmUPyOmphwSuxsqU`Sp0MK0!3`*FlfIt8yBX!=-i!^sNA+=jFbGv;BAA{?7 zqPSl=_{(+vCp;}IksOX2a0(8140M+6qi_QNzAyycq*S9autX>(3LHizz&_50VygG1 zh2S(>CT}2grfJZ6Z)-^qOjEjbg&6EfIB~79z?b}G{sDmh7=Sv#<^S3JQ-N96w~^Ru zjHSM-|69crwK%!KbPe0H%e&kGDj8IE$R6G(xVD2M|NHg=F4+_){>^9)_@4u`DC`)Veb*TX zJW4c@{dHbJe5(7S;Xy)rt5pBF1h}PeMYuq_^BNH$0*7+~axEwp{PKIJ_eu|fDwue1 zY&R1VtF8qQ3cY&`&6JfYs0=r~jE{Zo5kv(3%mpATHU8N7)opZOo|ZMOhu7U3=qYpL zR`;z4^s*5*p{TtZ|9Que(oe6l{4b{NmiT8L2}|ZN%_HHvOmrz7;|#?J+<>61^AX6o z$v(pV)`DXJZ$<>hqy=ddId-19;y=Bg>sU_UoV6REDFF$l8*_`;O@#}ozN;b{4qETs zQ5SAkMW!xHJGGUVF=z0oT&P|Q$t&UPAwT5-3u1-k?wz-X&LyU`@ri&ZBDlU1U@-?Y z?IyKDY?M}I2j zi%gavXJcq-v9U!v3Y_>#htRo5)((~(g0V;Bl+1RV$X(dV1_~!y6Q!_0+(uRWX|Z-V z3IQhANJjv~859r*nt8|p1~ahj;2_|_Fa{Dw%e=yEjsz*rn8N06fsLe)2nUQ~0;1*V+!ebLqJcC)txy%eQ-bgLzD zEh=;&#o;I=eo~j=bGNsX#||7m{#=Gx+H>p+5yuZ6v$v8pWcpRF6Qnc&ly=x5;vou@ z^{t9SVX2 z6Lxek#Mp}uu;e)a(6|=>M_Wz|r00uqRV!JJw2{=g)0c1TsCs*)!E#bV}{~%OBU59 zE9*H}v+&9>&}&kX?QUYtm|g)=ARHkIl)bf017#WjN}&wqpPQ{v5(E%kh{w2f?@?x1 zJbEY3=(yww0^0evUqQx=T8B_O^m2zED<-FwQnNg882@}(pPzy|``0=9(QWh7(6n4( zT6rW9Q%FuZz=B#OF4>6yNZ5vC7LwMz31}P2DdSrl7p7(4C?+WpUKBDd;4?9BfG*BW}|(Su6ytQua;A5b@tpe zOSVccj=Q>X*NqV^ubv>CO18@Lbu>Q6sHVM6v$VN~q*E3^7gXP)e@9=N zkdeZn2>X5t6YTBBXr%^>vSzL;P9;f527rMe2O%1iy`Cb;L;zJsyPCS2Mp!0E2!Mc4 zf8n{3x)qp-CWsjj1enLP6g8%kuPc$D9}dH`1Ux_IRf}$fx7cwxX-lu8qnqLHCWN=? zwD8u2S7{=wKb~n9#BkY@4w!P_?sxs1PH1jf_0)C&)C2u3e12nbW=4tV<2fr zN2gm;G=WIMOge6yfGUHwnGgtSfQtYp8mB@Lx3R>pg?al17**s!zC?8;8!VCIeEY&+PmgVOaq?RF^ zq;{g$qofiP=Aj2JSBL`VZ8ZVQzQ9}Xnpc|J$j;l|!Zq(}j+rKwbiL;oBVMEgyTGm~ z&6QI0i@|TuAqtfJv5JCXz*tB&5)?)P0B@GPZgrF_Az}*zd%{r>1p~>yAVhFH2W8&X zM+Mz-(H|7HeVqocw8oHO1voZi>N>@TT;O#ga-rRcWOzlR6^P}Vi&@QLN`M_AJ3E5e zqM%VQJ1CXR!c-#ryE^Q72QkbH9Y>XxjZGn6TrYk$fs>8UQj+5ZtKHAf_G3FMlMKG| z0d32e&yxyK2@X7Pv=$k_NwTIw$sfoQcx~NK`EK?tz?!WScC@bDx|lo14VB8}hrD{` z<12YDmfhFA>wJfL+Eh@HARStU5sFj+zDq)-kboZJ?A=d^%}Jw(BfjMhKr1dD|A$0U zX+DWa1>_f8$eiE;kd0p8in{pjU=>(MUDd+jye4i`l@%8bikj>A&Xqb0);jZBmh?V9 zA0J0VO++=yw8vo|?(pK_6E@>$l?AC49Qy1zelob>#x_Z43j5y& zwl37NexA=I@zH5RB|^F52)H2%l_jbQf`Fjlh!_e9grhNmS`A9to8_9z0F(U(G@96FOi(E7jHuHNOdUDQ;#vLg}0v^mWQ2 zKpTl%NmDNm53z+a6y}Ij0E^32?Ev0b2nl&C55`Z%=k>lpo7&QfGeFRw6VDZf<~^%o z(!d>MDij6dSg`7f*_Q6|X+7dcfUFMg_QrNYFoXokBGuBTmn_~-O3Z)S^fzom*O zDm5~gn&T55TkV9@1gUzIky!7>BOowB(yX%V`un&$sT9oJDT48e2*`mkR4fxH6gY0@bgHV}_+3$T6D}{1Ia|6BMT)l%0V2Zp@9=GzFM3Xdp~ZZi zbH5>%t3tdboS<U}ZFS36c5b%G*KhGe#EPJk zppSWL6NiL|3UG+}*l=7@$fikWhPa0Va0inPsdLQ`T;&SnlZhc1m<9CW=tO`m7RgMR zR|LQWo1D+;-cp60>{Jn8jFBGRpX+`P3VJwUT(*C-_;4*zdq98zOmp^?DY*utGz2a? zIXe&`a27NHFi<&`WKlhE`l4ftv6ECLJ`WWajQRScG|)4dc_5@?$2X;O1iUS>d)sfg zL$R7=KWqP^R!K)3Y*Wz{)X8qN3;LJ`1ug8kZ`zAQUZ=CMxYb=sH(j0IzrR`_tg~S# zi(}NPz)sS!E-k*pNYR*-r}S@Ou|~C{0(zcSxWWZteriAf>mdq?|9k(w;V*1qIS5cD z6a|Qd6an*E)0X#BD#WOTidCEiydn?7TI?kz2AY--O9gw8NUVI-0O&2vS28Wc=fWtk zwLhSbwTUcpioAj7a%2$I+O?sfe6Yi?vPQ!Du`sJW>ehajv*Ib?(tFQ1@wyCzVSF&PQv7v z@^YeXpWc5#(LeR2U2jt5B~ULI4=XyQVY&%7Qvd*0Faqm<2EYI)Eb{d_7{~)!FOVJ- z07|;imcSpbY^q9h73rP8U9`q^av_dxc<3e^PuRE;8!s3##5KFUNm%u`fE%C;?S)=< zBnf7>0U61Umwy2PI^IFD7dprh6LT_lmD3e}ujuWPi_tnwQUF_E?&fv7&H9ooNf+XO z0@N5}8kFs}3eHgq0mk@MQ`SXO zGgWI55Hti;FzKFA)N;TGm5;rDsk26i?0Re{)A_2pyqms0h0M`-lCIMuyUB|jm04QwOHrJ!RfiqG_1Gzh3 z1Ytn0^t$vCPztgcl*eLzC_9(5+_PW-6*gfEfWF+Y0Cbr}3^<_8LbcRY zM?BH66~SV`peu$*w6^~wHX~{$8ztlwj(flwiXQ9z4!wmvo9&ND)OuJ@>m{(C`Wiq9 z=~jQWU~a?G`!D6kV*N22nKzzuXy>m;U+jROHu_FY5V)GmI}GrIBv)sbuF~zioz-N02HBijt8L3vp}B&6XCB0> z7O02jsc*<};?ggQT2|Cp;aTrT0wh;yML36MjJbR_F3n#-PU=d4o<@gX4&m+5a?&HN z^pRF{hZkB=?f`bU1sW8VXc7fbTAhxv-GA3a-AXrIl=Vam^*%bkj#YQ3XiR6R<%AoA z7D0XBiiIKV*q{jQk3HHV2!(4%0>t1b;Yei?R7Mvw6buDI#fuRLR zf=yS0ijq-wQI+ALY`h*=HUtuDnnDbVUCIAc{-dctYMP+<)QTi|SpyF%m+cvj;zd3Y z-eJgC0VoWh_Pu(Ta`ckjE?lX5R(~{>Agm!-5q20Pa4DZaDl`uv3Y7hxj+_=@MLU>M zigXh5S;AZmKaLcPhy<7}ucvQK=iQviVvFIoAl0colu+_{rDaxID(E6_5dglWkKgg8b8c*w>Fx zU>p2Md}khQIvcjfpK0peSe#q0?n%w3znU(M8iI;bI0W31jDM22sM&g+`OZ zK2Qfl<-FLBMX%CSw9-TZuPnp+AqtfRv7U(&0IN5f1roGMxgyOVAhp6tWfv(2wQ6Br z{p%_MY~|iA%#jH0U}4^hy1b?BwvphAWkmp1KmZ=vsWR9bA*m(T(MX*{ZGZ$oLGV*F z3aTEeoYI*Yn85@c(!mu5wUgA~F4ItQG`HA~xnKqYNRVs%>aWyBqcv+ZbgKo~OcZzR zr7dStd~45>c>dBGET9r<{r-dSI5*zh028LZN@W$y1Q$_s%e9)(P+mg18LK7&&YPEw zrOUS5u%^rIpYcZYtYJEIOT|u?pID^^NsHY_V?&*ZKoH~r0MOQO0EfH2_VopS=r8IF zX$RpEshlkA3sV=Kd=4aWOC-76Z1{ZzktcQ5@OogUJBfO!#nbBI(*tdhVgt2@UA^1I znls+Qm0#sM_gxcj2T4Hu1UF+hyBdOd2AQ^!u5^k^&V^6+_9(r30BwD*u|@c8-6gFDdaeVdFbxB zqYn6~KLuSte_!t|m&6mG@g8nB^{-SzrjD2~v6{l~2R9O51I0Zyg&kNy*Q zbh(QungsA~2%asc`;a+0>3YmoGPHhB6b*fX>FYRCkWX!ZD**=(-a+D*H?o7pn2=Rb zWp;2Sncf&Jt@{FscuM@rD^*_QJX!VO-)0f89Pr!fACje^Q%>CC0O?s8EqiUt8mI{~ z)&xg&5=^uy7C^W;qbG%PyW82wDLO~S4}Y=jSH#r#z>|~JO9uR<4rMO$u@};%vs8xqWl^q z!b16kCF;&`X*&bf^nB(BT=%ld3Q^$SpDl^zMJ%Ly!38_TIA zgwe8>9*N&&%s^Ewb`r)z?$A6TR%GzIm6l82md>j?*u`!)%t8MfLrOAolDtbEHzbtI zgGEjaT~Z>8m8U1#Sy}VlX29>GQ+Dl(T|GWcTv9bpQgGl`#bH!E>9|v3o1-{!ElT{u ziP@1>7ytkRv_YB-lj}snm`4BS8v!BB(g0OJ1i&L#vY@a#`3Dy8)KkF*X!GncCjbEP zUZmw81fUMKLp|0zi0JX-nJrqtgwa^UHr}>~X*ctxx0+}*=f(5At+StAJv8=QcFY2}fv(RM64~#OK*l0X)s|evmB|KJK0A1jg3?x&vSe+tznA{3&g{*WENYeN*$EuM&aA zaG)mD&o+aFP^sTkN7tyk*s|nugn)B(I>*zH^w!}pk$;BCjXNfv!!nH7UX*0=X0$#M zOa=png|6%2z2%Zy^M+xE!BnMo;>yAaXqybO_~Y@GM{gR_{XUzk_g-cKkNyccj@SaVH$&1K1?>##&PSaYG@n5kFg!ZNEYO--0LwhtP=9rp) zJIlD^z}&N<_26+^kXYiS5v&%cK;sSG_P3su59=+NcU{8DxO_w)z+ui)%e>v0$`_Pj z>2yN`OQ%lowPKp$-;l-(hBVWsasL}P@=MDfyC&Gh)$a6~&+PHnPPB#Oz@oWgtQ;^2 z04L?O#yStSxG9X5=Rb{Pe1BMy4oc7FuCZM_j`E zDDk4g%a)*>p!Q~B)dd<}ju4&TD_AN8)|MDb&MG(rsV1OlL7&{ZzpK3r)`^O*;#c`t zTdlm%4-WP(6ya8GxtyV-B!WWW&+>1rHkbx9YTGori5|Z2UAN0aY>RNl9WlYqt8(>q zyQvz}J!gDn9*d?Pur+)eY#TcA)`}M$Ls8>&5;{Pzcnh!`eztTi)F>taxbIch4?@r9 z^7HAmzY=B>CqkZ~UBnyy**(xrQ2+n|-vOQ~)Q$fLX>e<5hqwY})-lb|m3Eq^Ur7PA zm+WwPzSJ8s`g)3L zcz}z3RwP1xh)7UmPbI4!VcxG%iE$C=JWJk9^}n7-1PEK7YvjAS;Di?9T6WMy%K?Y7 zbzGyNEj}kR)|o75Wa47DTOw& zoEis>o(U*MNzNzYBQI0&u;=^It>4s2zAB0T$S zp;m8jH7)UEd{o?r*}Uf0n%_-#o>PTj6orf&AuR2*ei*kAXl#C*%1a$fwceh3vQo15 zCe{dn&+4_6bX}uVHz?FVh-9tkMH5>h_+6HAa0;>OZeM&#D?vmBzeFs^O0RUW&(pB3 zozqK<;1Zb}_1h8aF>Gm5?*lBQlBrU%ZY$a!9$MzO`CJiY^}zdVnk;F{(@~>0eN=&X zd^ynPGg6^|Xbw?8NLA&;ui7sLq687`+>{&$g^4K401jqo!f zl1sWVn($sMRHHHQ@}fp8&QA{+u3*c0?oPR)CY*{7Q};jbS~*H86`$}BpL@+5vsTvza3!dX^jT};oBrrFFr-9 zM#O&~k$dgW^0y!iAA`r}H{u}Z(MX{g5Be5KyKMn4vOoq}9b4gTO0+JW<8ih6?agq% z0s}JMsbp=Xz%VTYh&8-*`C7tKFnj;wH+4T{#=%T0am<~Xmu*lQ(j&-4)X^ob$_92I zQfdE%fcG17E6OA1IZ1t_*e?#{njE&?>-55rA`GpDl^JB&@&kw=y4 zSW9Ydb#sV z+<^3~`DY+8e z_w`B2Kbm-bryLnS)94wn=FrKe*H7ZCYHN!vCu$DACA0&c-B(|2-!|)u-M-2pP6i^K z3hG&F9tZPNc@#aWAYdWCpS7ljG2z$Vv+sI7gSP?{$X9=AWdh+S7$5^=FEB$|WM++>JvqF6r`Og1cr1K$Nhnz_x0q3BD0+8eO1!CKdi}*Y!*VIdfO9Q{f+uqQv&oz(QmHe4Nsl z9AvV=Oh+UN%lywBaX-|`1T$4|Y?oa=IExwT;@QI^Ze&mPqrvJzhv(}&VTt$!^20i+b-r|GB`xd$Hlzxi4sjzS;VN}K>qK;Lkc)Nt9xr- z=xsTDC6w}Mv9;goHV#qNBlBPOskgN$=KA+ei*U~9@>cSzWar~P77c40SVR-12=1SY zSJug-5U3AK_ce8FhnCj!bmg^M}iNrBYm#PB<8J^ibjuxGF|s;Mxmli+i*EM8X^I>kk2yOd`>S*iuIL z7oUpY{A0=ht;DA}>ZZ;el*8)Z0HJ^vAzD`1hah+nt)ytgFazT|>-&uSEV^?D984S= z05GP^fp?+?0D>JzdN+Ka1JO)5%csvX`WBan!o#BZMjvn(rS|JX$A&1Vxu}5aCizBZ zn+OP9zaz8#`1g1#r}@ANpbJb`Z#Y!aJ|Hkk3NCaF!w{_AF(>|2Wt3NXIR7fBeI2FS zG0rblhP5-O)c5LV@?`eKIzK0=u`#@Tr`(UvbIzsI0IV=~6XxuEaAH6Sb6xi%p+k53 zc__0jNU=P>0%#H9JmGMhAk!#~DXlAP3^m`Ta>0+|Egk0?)@)LG=oIxbQtn)HR$1H8 z0lh_!-XsCUc8xkFf7s#AU}_%1H?~v#WiqOG1n|sX})LeA~4$5{{a<19ekI zwE7d9k~Yp@G%Evp<8-`qs&62Q=68Orsor()8p)P3%g`YgSy-i^Vl_6Q@Tc7oiyWX@ z{9KW<6qXZ1&->mne3ytpF2#F&Ds}&IY<{W#_{P%v8El@|o+mC(v-s(mwdKZ)?Y)D- zvKT}_g(9PuD*;P5=~R_H_0T>Ri0;o*gU1^z6^w|Ilxr~M7R3d=D0Y|(Fj@WV?UPIQ z90a(~3B@oMs@@9e?3*66!px~0n5PU86q~M6+V+AEOdQ{mZ)smZ2dEwHJ`?|(nP`s3 z8^^EA7(7EYSfKScmLG7PBO&JdrYbYVG%D=cjF~8lanmSNsc<-HmRYX*Onh*Qq$V_z zUUGAB8zII*jAqhFmPs9(aq7-BbOEd~>s{7ulBMVuy-FSHCes-fF42Qgr#;F?@ExQ~ zpMkIsMX!hjSCspRGF$W$UBbRDivzz%P1uPA^Dc!w_Htnp4o$(G zP$*6O)NgTQ#}6ILl5)#q-7v*?7o|~Qo(Y7Gg^}n~x59*YN?4(bj~_Q#@|t1CBj~L0<<~JW=-DaYZ_}`R_k2tO|y|>Tg{eH^4aNj zffYBmGV@gBmc~>qm9qo$vWtBBnk8)3)0X&8lQ9|Xt*QU=y>ENzsEDIa6aJqu$vMG3 z-BR~F2KMumaPKy13r>E^kpP&1)OZ44gb<=rZ2--(dK6j8l;C)s%Krb33h`(C`NK*} z^zeiF@VB#2y9~%;_ym<0sVppfL?v%Q%V7_bsp367sDWtfkYN0T5as!U=x-h))~}nP zlY;GibadHtjLAlKaJF@oGgdrqC(SQq)^IkTdqM9N|_H_J9V)_Yg^9IMW9 zp%Y1{&peHOO+rfcjd0VPV@J-j2KFNK+bW9jYnTzK#=t#ZiT^4@1qRFi!#h@{L z&Pi3(bd{TPzId=js{)u%+1}C5|^z9I5lqYjqbYPLZlDf#PF4KoC~P4%J9Cc zUZuOBn}mw7Pih&xyT-X8o@^8H-z?#_;ehBn-V_GTCHjl{(ax}s{H~x0a7KL<)gy>! z8lEb>2V8aOWeaamms#;^(8E9XQR%vr9{59e4#yfsD%lmK=$q)n7GT?OtyLjlHM|pU zB)|!*Z1_OrIMzM5a-qq_Cc!@g4%@#jicE3^lIa4J9g!Icnd^wzBXg_mSvQX$&+j`o z1(h+33bY422%Es2Etvot@alKg(3#+$K6oKxPgp@uEaXc!;h$6R5-MFqZ-5F0I7!75 zYA@M5>-~py{;$}zOdJVsMuXRGFL_Yc09s$tkl_*YdO+WJ1&o{SIvR0&NW8UEqCi@0 z*zfVJIpxJQG)B953M8M_63#B+vZ^iRPjukTvMkIqu~Wv!Xn4uAqncA+XTx%hv-2PXA=da-3U?w$>Kb0}O z7els*s^J6$wkE*v9)m$fE{IuUTwRd(&50LoUF^5{?3h{c`tO zTalR6Gia%r+SyEl%+5^84`1E+w_?~JAZhTz3S(F+WbH^_mQB&-o@GRdv!>o*z=2zX zOBaEPuF0`S(34-!ezVoESfm4dKce1{XLTf1mA-Mx(s$DD8Qs-}vV$Kx2_*D46^Xw8nVjSImeGWdN?I zKpnI2`@7(S4_!l|*n(z0*N#o-fpYI+%)Ok~EQ|uGz9Yj^!9FjCqt3kK+~PudiGX11 zq9h)Gn^Dgug$h*+EoOE{VW%@Mo%Vdi3Id&j8)zmMHlcxMDb<`N$g-il)$x*l=WXsw zum;)tej&~ZwdKZawRbav5_f1J3O$0CoY>6M>IYG`S6e_?HItKekcT_{RAS7&?Pff9 z>%pfpYSC-ME{RIV_F|PzJ9)}+J;D_W_Oy{K$mkbXpq3dAi}G(67Lo=HA4Qpc5p%ou zPB~4-XZ72DHa73teFl#?So!?K>0}p>JC4;zMtJ-#T8ild4lIHGFTrAOt608S@^uv{ z{M|aKv4{VVt?x=^C&U<_3#J3NdUqQv@Mk&7zAqkVk^rOOy+ClM2|TTFY*?RRnE!L6yRC+4|f>G@2ksNwA2 zd$u<*OZH?D;u?TOIl^|yiUhi!L>ZEHWiOLAH8^lS%CaR_z3Q^&%-p2g`Wb({!r=we zHd&WwUJAd1ku<^w#w(7}-t)U6QSwZ4?Ge+w4uwwNx=^cEQfbJ{LAqa0hOfZ~3)3Ki z#rc>MT=d;N@oH@oLC$OV6I&~@ubUUaZpv>HlD$?4ecaPkTRlmv=ozeSV8@(Q ziIIiL&A9XHbwE|hga6~=TYJy2QLeuIWhFF|RL>FT^B!22mYh=vcoNY700cfknk3kS z|N2?Muekz~t{@0}7HumdYz&}b2Qtt+T=(+HN=zv}1F>4)=YUuG6c6KhKtfe~L)@;qI7E_l)gsHJpeg{A-M?Hc&wW){K}a5s!xEd=8( zK4gAmMp+@fJMUvC{w&h+wviLUzL6sGR89=@3MtLMRrA24FD z+CyRrW<7QDsm>O%0aIUx=HueFUTdh;y5IODj7Ka~2GWP>U}prWFHaIcjA}aEjXwlj zdR22^4vfj?-~*~{1f(}R?6|9WAQrK{orTy0Jij0`7By;cBi))CU?1f^w`x7tU;Fd> z<0U}i3_~ETl(r>D3n~iz zy&eCXN>v9b+`-I!BYCd8nlOR6=@e(P2)||oU~kcqN&RxHlJPWYtZ#kbJ1gDQ)o;Li z^HO=9qt3odOX`g;CobZb;1o^RAmyp#Jsx(^Kxs3X!2m?BAU`1kEp*g1tnes(t#NrQ z^Ih6g=>0nJ8mZ*uA5kbQo-&NVf{?;wMm)nC`n3n4H2AEoJUD9^UwG+GSwCalq57Wt z4xH)4+Uy7db2dj0X;e>E#l%-2liocE->x+bB!=>n66cPwGj8=}%aUGnH5!3|tYCPC z;K${WSo4%xB!6Rh4M zX~kQ8A!XXMj>-eWJ}F`<6tmKII~uu;>&?4JeBHN?BqDp4c0MZvDL!#KE0Jw4uf^;M zM6m%5PjPIFC@?BNewTRbGzVy5SfG&4c4&;xl|SS9=U2N$P>Ds$fB*mi-T|IM@<0C< z2I=QmO%JACch=;mR~TN(kKg$}%Gtd$;11Zu&K54Ls8gO%nUTESHX$PK5;MtLkX!xz z{0NVo^zgXGx4}7M$I`97SHT|IiG4u*sAocazinch8ryQ zYM7+h?l^Ph`1N=EHzj`4zj&CbSNM?dX`Kv)e(C2-dgE0Wsm1!0o%)mlg2wlVgNg4c z=Qggt;WOG_TtiGYL#3OUk8A&0_FgA37*G?_Y$iFv1#=y`TfRng$x$S)85byTOZXCo-Cl)#zl z8G9afqXM71PQ9-m-&z&HUqkmcrCY@VZ2D&WcqCRXS_xUhx#ivGGuQj#jDjPlQhT_3 zvtV)|gxF}2>_YcXWRv$YeWGiSULiclDM~7d69XE;^T-!zB4W*(EcbKxy}7raKm~%A zBGFkjiL_}Pq;FoEvJbKxwi z(jdggLoGM56t(4rD((^ceJW8oJ5{=W^AG%x00#Vcu^1`;BpMLc#~SZ*jh*li=L+&1 zjuSCjqxa_*r_Qy_Yme-gCtHSiBVxJnNp3Y_dFX?(P-e@x<%BRKUZR=(X4o>IT9n*n zHCNY8R`D`S5``)_qtG$!66dHLsrwxb7F`*Ju>Q+m&dkqh%k@4^xX^7jNKtc$xOCor zmTB?E0;RL5WG1i^Lu?0L(uea_B)F&kEb8EFX_t0^L2gEZa)O9^7;}Z$@R962*#>yL z80~J5)>v5mKC7xiBL*sL_&A86-rTV@sI2)RU13CrFwVixjE2Y-BwmljXtL%hNr{$& zxD1#$Em!;P&r6_&$~uAEYzGm3&*w4LR?6gsO(=EOr1I$ykXUvupTd$@K&>qCrtu}l zdBg!#d4aWOqBErlF3GV z)8wSvZK1)K>l!93$lQHiFtT+YEVwCGW?FcL-Zj7!F%ccj!afo7gEJ7%2#L+}iVgLs z!DRVS{mU7OwlgzikG$e08`(~TfBPMJo4~bS5xd&re$2 zxn6hDGjHS%Y8EIfc*UsrcW2|Gt2qy~fw$6X|Je~8&Pv)!oVYM;SG!WYjd$#hR$O}R zxyo9RuUA^*xR$Y3WO^W^RN8CB_hrK6U2c_Z{kc@zRvCYe)PXdbjXp6Tw6Wi^Ra}Kq zpNnTSN`RAr>dB%{r!LfZ069kL9`jn;d~zZL`H3kbNjU}9LsliGUlyE;gm z`1)V_a8R%cF^2|Hj_Pru6%+;vJ%XJP38{rbHrJi}v-9~ueCbWcdt zRH?LjO9!UBBtPSe*bE>H0i`C9AvQoI+mv>u3{BG}qju;{ye_atSm3_{n?*UJAX}F? znYm`OoB-?>byO$_Vy~TC0;}2)@9oKKoCkIjZr>qlU}j zx*cbguse&Kbm=C+_V3CT`hLC`gvaa780I(5&&P#HdF|ZVjTM_T)74Bj5;!29On{B% z8&EQJ@un?4f7+YqE~;}uWzMfLv?gfHsUKpF4&reu9n~{x3c<_0sK8V$X>6ZPOdrh% zZNUx&X8!@ueU*5$BOY+i2Qp;I^%BZ8NR*P_niD{d?!dF37HGLio+ zGZ;u7SDbHmp?Pg$*my>po<#ykP*YZ<}7ZPSPfT8LNi|XXzu8k{>_?FwC zz)tG=%sBMo+Lddt=@l?#{D<$~Hy=^HUM~s$wF%K5W%K)z)0oI!akT5723!RVq6kb2 z;W)chX`-?eH9571Y~L8sL373Pg-8V)J*gId6w{XiFq^VWg2Es@D9iuX&%gix0vG|F zX4H@W9)X3E!NMD&&gwFl21|1UZ!F!@PT0|>-tq9HWebacK5;U<$aBAy|tuFA=Z#3^`DZ^>Znx%{0y)Lx=;$JVtVU^!O zFwI-bhHcJxizIJ>(g~mfsGUiMuYGb-hL9;w^B*C+K&CA1~S9)&MC&r>^@z^X)$wL@i!Cg2CI9A@4RgV~XdXx4hCQCki*mIxw^X{zP(YY0# ztYKKJxQG4|+9?(t^v*-mzf@xW5s;{QcD-#<&+UAp)E5# z@`A%JgUT%Q&Pccd+~Z93$^Jny{2w7LQ|1!#YE>+g_~3>Al5=l&|H)np@AG0Lxh6@< z5w=EXb^eS*xpYx%sv!UX1w28TZj-_uOr``Q|N3H4oKjKl_bYu;EMQ0J{%00MudJl~ zX8S%$tOM7bf|XDZe%f_))hieOH;r{KeXq@=)(Cr8;yFdevoC?ggLFn`hs^GwxD~sf z*5?m*snhmuQd9MVM+Q|QmBid+FCVS3YVbj-VWTkVZ<-M6cuY!;ZQwK2CeW zK!X;DOJvwb2PVCL#<^T2Iaboun;a;C%wS6%WJ@}>USqKP+#0`{ z+xFMklGNMS2e6z1SCL5wD373a zpGJMCq9vqv=S4M*`5^<1_MFO0M5UZNqlIrd0I&x{w(Xvz9Te5)&K80v=5GB^Xz$UH z@aSzthnsnEp||T^LqLE#M|xlt4^6xybhchTE_I@lDOumd7$m}e=AlJ9)PA^8!v5f= zP}GDyotue7sT|d6Y#TTvq60pg?Vo0KkoiMKekWx&Sl%s6(N5M9v%>3zISrSN%7oSD z8ZO3cos_%T8_|qHIRZhE&W_&gr@V%tt1(15FASM1-C9wJ&J5H#OCRojqD8)gn3+2e zYfNumGC1DsC_b82qaWt^N!@5CioJNvP9@hqJUclp^ZlG!BafjIv);wo0*zq~jrf)= zTwf&wcMN#pp#8Orygg~ur|3&@9EqXrCa<^_IUs?N)~E-4^auVL$ZW9h!DCBZ`vY)^ z#)&tmdZMm>lBVR)TjVe90(Z_eCM^U1Nvr=GjJqg((vg?*cbK`!?^YE(LJ#ks8-I|w zb~DKu)P2w>S1$qTH1;^>zq@wlphp`VnWy8sem=gOeH{mHLIC8y9E2)Ff42%UT;wYH zx&IVwp(lQ~xqYJSU)EdX>>@tA&g1&QP@mag+aQwW=^1=w#;W46X-u7S>GzLf9!34i zcHi-&7kUWa$h!KUVW!5`Z}!0y=0GdxlzCrqP%tJ@4znzA2sURSw}TmqZAFEim&*uA z0G_AlRDc5vMU#9wn77`~&;9k;TY^e0kQ&IHR{+~5E7xEv#QZI)IO!FgM`te^=k{}8 zMMo*pM8xV;LbZ7Zbob_63I$uhu3qhaLAHKc&S~b$<9WXy;3m4xx^KOLzk{J|4I3GC zpb`aEoUPhjb>VufHc*9RRTA93X}qxvkBG_~P;rECy%OXSqtDF8;taqk{JSL^{8w(Z zJ+1!ozJRFM%9}f23fIY&33Zx6wj~dq!+UD;uCkugwehVBO|Su<*GOhmC7u zr~tU8zxQNLm#!b6K5Dy(ph0!7f$y8H_F-f5;P(`P76X=|H(UvX$78z0tMkMKKPAI) z)tZ9H$v8Tm_j5`tVjl|Gt@}{)#Kv2>&c}&4>`9Xjb+0vL+KTfWme8y)n*kr#9_g^pJh64FC_%(LWJxN@1UW-^R~bMQ z?*{LDd_Mql7J7gwtTs0^lVkx~;T+t*!`GOfl+}>LrU5}7OAssaAgnV>Mf|tYj~hD5 z%0a^SD>&7YnhJmpMyB8!7Ex^Pq&=zi2Clsb-LZM7?~m51?T~J51CqlSAMOT^z3<@! zb)OrrJvmiElTH+)_!1+6KU%#%4R)fa7E-TAv^~=6XG2<2XSS5jAg|&rY>bDMD?97- zpHrTRrAMntOV*>&?@+~f3%=?F+qXhx&#_g4k<)e)L=B|^SYkro3s%<3E=WXJr{3XS z)bO(Lz(b7Ju?w>eK>J{5bVSU+&!?u`G$YWF>S|?!EGLtvq{?j|3%o{Zf9r%zz&Uea zCdVDuz*s*885i82*R0s8PwlC(T5T!2b`GQvZAvoD*6jB-wc`2g3?d`-vPf{P%NgT(Rd%4owGlE4{n8t~saKGsHwS?L z00O50o{ZFw{~oh5?6B0}0Idok0AOI22F4D56v5UE*~}g!MWQ2ia3;DBJ+Th;tI7u+ zlPcidick~hX1RQer-#7x01rIUnw-)BNI%)qJue$q#n3`GZF|!tx~v;NQvY1BIs+-) z_ms%Dut_J7cags3-P;{$6w_>K8crwfPw)(!gwplkEYK>&TEi=;%R{Nc(<>;Ds9M(q z?j>{75b_eM_SULF>(@qiR`>rfH&fIEf8n)QEA(ejR%Gd=R%>5byjIFPD_LGL?A+bs z73wln3@*JDEH_*{hUdEm@QF&YDu#Hht6NrkvK`B#iEgAdRpJrBosY2z!qa+=DmEYS znX_)!m=ujp=Tq3?rTJwl7MHw2$oxS16OTOQQz2sHy6eoI>%5df%PRei`0DT;RiSi1oMgRvLROn!AiQ(9WIZ?o-fs}gC_WjIkTf+mI zm;))BOoXzF8Iegbo0QQ$whGA25ERlto??rP5TG9?{0pM{N%AvI7t%M&I+ZVvM{Uj8=zXW_tpvEdaRBpa@@=QWV*hOW=Z>Ze7H4F1hLb6``9y3vTB3tP%+`qxB zzoF%S&)nqQ>9+w4g)5`Pdz7u(pM-?3R5zzp_7-~Q+ZML>ZfvxfL%6rm z8vjgw(MT>izUj%0%xvI^ld7p!Nu2vMbpPYFo{v?sTcRfa<3Faxq{o*Txp4yFRv(Y; ztH-kBLdoCnJacATF|3(8f_rdKTYxq|9u9r$pSFloT-< zwI1as4F38`pLTrsuk6!?=k2JTfCj<_l9djy001E&fB-3cd0;!D^%jI*x47N9*u`H> zSOW{sa|_oB2O<$ho)ZH)K+izP(`h*#m^qA74@xR!O`Pwc#RM>VEMg!7iyO+eFO@wi zpyQ7K*_})WP}fqoGfMUY+YZ^r&;(!rThTT`5=SiXE0?tAp$aR)K&AY2^`QOoQFCe{ z-=TZyv)WxNz^tvlT29BlQvjhA>EXV%8XPpGMmxG?cu79mW6hc)HOMhovLM{p=lPfp7M$8u<29rcV)PfW4w1F*|p>OS-H$h)J8nm@!cZdDS&e-P` zWC&X5TQMN?Ou-1B&CNZuXF7&)0D^gEX^XCbErxO#@=H;eNr&bZr4SOax@qIL6nk)m zML@Ll^S9b8n`BT4UP*I7e31%&aK6NYk4n|4~1>7i}JjG<5Fc^*RO1vf1&Wf)bQz(Rq z;xFJaHMPCB&xyAOs zZl7I*laPH;w<5*SV2*qb$14|#-r0hLmPNK4pv7jea8AP5Mc^qNmuWI10;?&wezK%< zt3E7LFi-@}C}I6JU{!G#?yAdnOd1|}5GTd`vdMwQ2C!;?m@II7QBjBlM!>m9=ncU3 z!z^k7-N$NCknIP`3#L0;XUbKkG(8drIhhz|kgQagiGion(=>61veI}8 z>~QO*^af7sjTjS;{C_Dxs2D-RlzDLJFqAGllt`b`lc8%J8Hm+4qgnaY(iGiKv`?^K z@tR~-#0!HD-~<3qX&pKtp3n=`MV)rzr0#LG!#RXTI5Q2ee z1liaE76Qw#6!`xb&XZL+m8iV5Sw{~1^;Yj$@8lE9HYz{}?)@5Vm|&)HE+AC$fDKLw zeKVr)i0UoCrMeFtzJ;HHYD#^#H|jl>MCqb-9_WAGG-qERs~X9tvF$8JsmBZ#JG}z) z>|H}M%S9WtHMEnJ|7+#^S!Pda}LF5By|_xLknEa@a0DW00(1LE78{%3t|)WD)y~bGO%ZHEMu1=e<` zy21i8>0I&vr0B~9&;yk~4lQ}us8u~py*ipq;h-~5My)xBVrP^dx zJzrG|0Fm|(s8V`+h=2nJAqtQG|Np=NH*8|SNH7*81yU#heRy{ zU-h~R6@w14WZsK54Ke{&M2R{dPd(Nm@I!AQ=kB8t%qkoW&fwG1uex z=1pSblF=p3JzRGlt~@TGvrM*XX( zUcT#XuMNG8Fu+>XN7+y_&lFbkxC2*7LcuyhJ8WD*~UB>;B`9Blf+HOs!Mp@5=sLj>>*cGF(3_N$f5CKDEk8PjXpYH6kO=jtaHz`)E& z&^Kd-yYcUKkvG4DHl0}E4l~SJaS9*=1mYppnaH9*iH;gs;?v~LKmeXO;SJdha=}?w z-1_R%!WPg+LJ&|9r}oj^VrZetFl5Il00k8tMh0-JSV&PA2{KX)C8$J(Q$FEnafg`6sW3#6&ud5 zDlud%u&n1h;TV}_!Bib&lUqvt;oMP>(2j;-1rvULYv-SnP%_o~Jk~6Ef<65=CMD?qBziEY>={2&i->?wviC(-Lrvvwq6N!6#^UjlCfXl?}2C!+@}$Xf_~}21(Db zr!N3is>mV$bJx|ZIfsK%+bzRyE5{v_+P?ayZYrsXOZnb(v!%#gUz}#MX$e+~0GvE) z(M02mJi&40=_a_wi_GaGeBsIGQ&1H0J|n<(MZazd}p)}&;kNhGbCU`p`#!7 zrkl_JkN}Js&>|d_A9Q->AtO3;R|L0D@b-ECL=;jrZR-FCd_5h4iqawingqylAOw-5 zd%3`j;T9Hyfyf$_Q9+l)PRPHAsuH05bSf6f?bLe7>ckKSnemN)3wwagj_*gq3?`rG z63M&lwQs(CWuFfBLK)4R-u#b^uy8+l_-$3l?A6NVy0b5eawk*cnWs}I{NA~&F?SmD zajjdC{y39qB4ZC<=PrG(2gM2!walu?^P~VeAqtfJvBt)5u%IXw5|~hw$J3Pkrb=8O zSU`rI4+*)or9IZYlcRZV(uwx8^q-_HNY^~RPAGN$`8)ye?nK{0Tn;)}U%|qW0k^^c zThGg?g0QrxgS>9!#X43AUys;*EE-X!WCd={B+Qh^f;vZ+%Is*3A;}hpcQt|V>%CTCO7;zY4tEjj<4+e?@KLo1buA|%$EeU zNzz!mI~vg1NVePU>*@G)S&RZeOL6Vxgav_4jnTSJm?W<6z0d6Qr~#K#r2rP!0J`xU zAqte`vC9QwKv<@vP_g-Mg;XTX3j`|s;Au|j?uPZA2mPE0+?hI=B)4Mqo`{$dUnCZZ zWE$peGqUw4j5>MqkY&~(l-CaSXO~atMTp>%C(fuURsgwpbjKtlRS2;xL5p+KbyOJ7 z0bRQ0M*zQ^__6u^TN?FJCje5{mu-P z?vTKs70FYwp6pL)m;eC0a1#b*ATHtE>Fe|{+I=ph_%Qt!m&u7CN9=b0^u3^%OM8oJ zjvyD3AX+KnTM!NM7EfB0=0q8(Lwd6Y)s$FPkTr)E2dvUMBD& z0yB^Wv0Z_e8h{!CI=SIx#grrk+;CP5@TU3IuQGT8&!^Ely=WT!cntrTi_@bUk~H50 z^!+hv-i2!y+6*anwtqv?qAhbtZfEzHiGgdI*S9cXqN5bB^6b> zivrSG%wnsfKQBbHL1fz4CR@JWmsPe=QfykLl^E!i1%VYJado+<06JQEKm!LMdXNAA z|NH?zO@p(LqB9DUHh=;dX$YiPwovE69Gz~xkI(gfMf>b0?HA#>f0>uGSaR(Opr<<_ zMt5Us&K_|>Nl(p=f@K#5ExHhwUjd6t8?m;1WiiIuY76uTq@am=su+8}-MlUgG-=5< z&M?l@CoJSL#*NxH>af(3nwH7yluTg7(u?iFqnv6MDfSo|shJ{REngZo9dlolEa(-* zmCX!ENO!^0J`+xXNU%`LIDu9+LEGKSgs#FdnG38OSP6GjWnA+K9l}?jZHn|(TJsZL54wNh{>zbAl%@cmqN0r`Mred=r4&<{V6xX& zNG_DNPSwF294fVL8B2AuH~v%{2jX0WI1IAx)Kd>BW7A5~vl}bxb!?Rf8&GxHNRr;g zWsG%0!^c5TP}a;Z5p+{$SaKJN?O?f(*>0YssRhdQ2W}z?B7r)qSrjC}Y8EupZE)ZX zYXCWgj;E&yp7iAv{(Or&`{uOyQJ!u^L!mcGCedyhbY-0vW9jnPwpe>bBO|JMWRmXW z&BA*(=o57k6jciNa(t;S>4hK zH)~C4@sJ0C4Ho@x**0 z@gbyYUFF`0peUmG3AX7~(x2Pn7>V?}f35FSgPdMQ&ebf+AsnNdcV7H=z$(B8*!Y91 zr_3{&bO+|F;1WV93YW*;&-^#xD{XY*THz}WA!*8~j&Ig-aM1%;jf(z9eQiy%64^aB z6Bwy4t^0A&H~<9Im5OmfFtjWbFonsnk;paxfpF>~0m#wRHS(kFwDl0)ogej}bb1Bo zH2@jU2V??=)35^R-Jz1S?V)rb&Ki4cxr1|3Bb~QI=^$J1q^FXJ)1af3GqiYnz#ijj z1x;avXhyj+3+=ja%f`Kk>#{`!TVRsL~o20=QeZVb{T@o z80+DKR~j$()g}&SHH)O`K|WB62O$cJ>;M1%fkSA5Ig-L4mQ_*OsKSdPBH)09-Dv_E@J4ug|SwcIa&`w&f|+;q&f{OL@B_ zqXo4V>91jGb4>+W1xlU&(7C3*#94NOK=zy9zB<6l-0Mb_CE+gWhgR#Y?^9NIv7(l5 z2>t54F*+>Zlu*`+_?clXx)svnY$&RxqV%az8>gD9gyV5_JE3N+FsfSjEPz{xRv{D| zT$YrpoovC`!PMmJ_Ed&}8H%WE?qMhlLIM+_#f|SugS~>tE{F-v4h-bZ98;0KUsJAx z6r0l@<-*fyc{WQR4=GQ%r;?wJVt7;D5W=%&I4q}qtzJsHV~k;rTJ5s=mGA>Z`)w0! ziq%VrZ&w$pYPJcj#%!(9s7+*nbTD_!F0Z`!Ma~PKrB>V_CPh$%Wt@jY4cWVdmZ~B3Y8VHl!Q^D45(D$l*~rP<=qU`G!1jmV|HiZ{=?TXkA-~QL%T!v z&Pc8a-6qD^_);2`#;)INFGl}s3Z-jkpq(qbRIUsgK>~Y&!WN>TmI2PnL?O}yNcQz@ znzs!jn?5FoANb^kO1e7_*R93druW?M`+F-9C}$G2S1HM4ds(RW(lmu37LTr&s5YPe9KqBsInH@cP9nmQPkwsBvS$v5^%oDRj(IiHPQ$o%u~r%^w`WcF zyQ!ergl+`8U6iXZ0*aDyA|ik#tAh^M03a+_uut*XIoLp+R9K@a4RJz;Gi^JjelkAa z#N(AslR96E_dtuPPvxirdQ+CSL~ydpA6Z9N_`d(eD=??r95Bn%q5A|ZJA3WI>57>Hvq6{Q>O9JmA!wrK#uKtr9w+78-c zOb=4vXuINWiIBWIiVtGEA+KcEv>qmP%Hz0oBR1OQ>#+`JIn^%`;TTj_p+9HYmQ^zI zJ)H+3tT^UMP2S-`eLSF5G1RV^8O_SSDyK@@A$LLui}%#Dkb#|oQf0pqt-@Uo4U#DvMza|g4;Lj4PHb=l%e zV-%jnxrylP^Y5iXpXKTH`#9i6ztX}bqQ}>bKmk2THK>3_bU=(ydg8aCun9(hST2p@H7y(!EtT z8(nNlRYJVnYSOFaXE}49e!2$t{8ZR0{faX^d5M;}Kw^AwS0Co%?S;K@86$Zu#%M*(6Xf_-W$+>1h${ zyN?>rzGm5kzRQNk1HuVR+tGPkT&&X|(6Yio1Vekt%3UoJy3K(OU9~zBOZ1)awIv|9 zvRkOuXn&^&v>&ztBq9MvYE}S*=n^5By&S*}XJvlE#Cg|?yDVu3s?+_G zTaf9_4@@H~?fCW^ViaZt`EZQ%21wTaM$hx!i?uOqRXTN> zARQqJl@+m!l41~+u3k=4oB~j=ma;EY2qRxi=2?mr_V0P$9g8;7HMnJfavNf*gC&fq zob^ZL1~Qzgl=RN&p7{(n$km!3eI)AoW5exy`=NM2+jkhBp7e8$u>Dpp?KTi|tvfl~KuYGV$&SVa%*G8a1yFM#m|hSP z*)C_KYANQlV3x4nV?iHE_jP$QI{>KXhzbf}ypVWSQ7+DT^^m zpgqbD{reCkK=Dpx)t9b$5E#%hkaYR>>E+?mE@LAI_N>4r8)khz)(&LSvv0ubj2OI) zIwN=Ke{3)isqs((PWhdv8#{x0wx#4JmCjSjRoQaM zP`X2iEu;h5mqmV)jb}S|HtAjEhsY7XD!8(bR&A456h%=KWTkMw29Wq=g z7Z9q=0*;X8P6VvrZP;dT~k`?a6VbK77XLpiH9382MxC$n*?)lEQ#p-r@^M>ZY zAVE)m83k3xII0oxXjOXmEw^3z?}gQ;&4!VW{0))o^#cR9AP#}u)H`xdW;KZ3LQ;PY z6jJop_evsI>2+D|>m%J{`HEL`%R2nl3n$9hOP%$S5# zDI1EhKmaU8fKRlSAcLd;Ggf@9D)oRka7LLGeDWXVW@^s0me?LL`W{S~61<^@! zxl;M}QRz(XNFb01a+E0xkyrsd(RUV)0m+QstaS5k*MA`jl_jPOr$-S$DKf6x;(_43 z)T^1MHE9uc8TZFh#`~#s$7N!>zmeogi>eszEhc>0hcL*m!z4SG zzT$bGIZSMA@KadBA`Y0*(94k>wuTFeEp*naDfJU@j;Ae;iK<7Ug~cwbg)As4mEBKS z>{+p=C|WuU#vQnwd?6@P6hJyj&@Cj4lqn=BAx3Z^gao4^A_QY1T#Ty02&8Br8~NWZ zSO`Q(?MsL~6P02yqaGid{4cE@QOGY6-)b&yWpbQIRRME~y?Wgg=g?5|Hv1pPt1|-H zex7#+Z#sYgr0<%*6rOT766SQxIW5%aoQ{gLP~7L1)kC=)AeSslIU`ofTI{q`R8H0@J0zBMpkv8N!lqf-) zY*jkW6QQb~&E3@Rfs>950@q2M#it?RmBK7lCl&SN-KO9{v6LMLfS04j5g!UFg zSfraJ!j%RT008MBDwPeU5kXIZ6i`J%Mrjk(&(C$%q(ueQWNNDVdNomkv=kwMFzavp zN$SBbJ~$IY_5Z#q6A9IHS!#kUh``k)DRYx2b44l?c!^h5?i9?d@s`=c^wZs^9l>b? zghK-dAxzmzT7=CIpf;g2LN3*2BJYSygq+e5dsR(USuu-%)&mg;6sAk87!a~x@}p<* z&;szyPZ4X2-XnBm>;X9()b+%KiUCW+v87~5Pa{WjODrn6l7ETv^-~46)5YE$uU2 zd?=ihx&V)$E!3`?y5-bs-@j&yr~EW3P?BJX7U1dX%q}=WaN&&)ppds-$#^~G>%P;_yxUDa!FxJxu#0%RSkqvdAZ?&X zqtC3Eq{$N$fM~QxZaPE;3QDYo$g^}V2yBSD zQoOCKI@8Dm^Jzv8>DlH7wNBj#R)P#U%9I~}>{P^tHcQf#-l?;LyOycagk5~!8?fZK z)vL?cG^v^^aWG_!0V1dxiN0A2W6s#eU1Hz0YaLP}0Wf|T$eu4?-UUqZs`gVs=x;ny zC#fHJ0swj&Lc}LNfP8a=Llhz+`}Z?q)Xg>mL&|%$fojmX(V1zEQ-V=@QTDc;ptRwi4o~1nX~{w`RSZ2S?V*2fI0vG78OB=tbt$t^rQF`(riR9-+aQ=3uF*?|;6ei{wSN34W27^f65gr33V?%0|tl&j^P;b{>Ad`LKlmxWJSU zHi|aZzc!MYHS;S|-R_P$WNCFqrzX%Z@y)e84_6jSJmfqk=V_nw`6oXWL!=6JV@MAc z!L+kuR}FUS`E8io)u~O7xD~;+!);|MSHuUb1z2Pmr+PO*0f}YvM1h5J<#S@x)Ok8O zsGEMyluo#0EU$CNeplQh#M7N2&n{GhMM>r+O zws{>>mdbHtM(68jzL;<1il1zJ!M@7PEX{0C{u2TgenWbo^nbGYp7iQWhmpwcw+ut z;Q|6m^lRt{KpYC6TH0#?(*KV?TOh+?!Z4Ct!5Q+$m!glKS|c8e3Koo6UdlSzbUMze zMVgbAAA9NV5Z#5*i92>gN9SCo2`0EI?9@7fi%Lb?G}lZnlGt@h`m($W9WimiTa)SM zT#&!ca6TeXCP*|~7_0I39DPFuX>0)~12+P|%IiPc<_>+eBOZiIDqEe-jpQ?@aK+lU zVS6!@@@jPf>6xbj_c+vog#H_8<#M)jHe}g5EuFMT6!}_T{gSIc%|eS(Xx+YZl+4Ji z`~ub;g%ipAOUB@r9WHdjIOq}_Dj&eVKRKJjP3vgK>Yu$87kb67_2?Q2&+T}KM*gL4gm|RJ42fc;x4OhP52Jyp z-GJ(Ba9wL)hWh7M%l=%hxjY2$$7T|i2^I^C7_cZ3WW;*?wE{;3%9MbDyQtsV@=Kj| ze6^q2l^PNCBWfN5%AGo2dktby+qeu4weyZ4Rcdwe^Y7C|Hcqz2*qF;_e`SS$iv&iA zbFcW?bQ(J@#rh%{Fy~2rO~V+u41GTO<1$jun}j;|sGna_45-^^1HH*zApey)#?g7M zXXopN<(VVuL9XB$U1XC|54pmv#cTP_gG41QlMW$;Eia-dPws{`qC9!o1IgEkP{u{X znsB$JOAC<|h<=_K(G;z$7yg!;%f7G5aRnuI^j2u(!gC#6x6vv>!+JL5A>=@tL*?+$ z27=4F1qh?~ZHw7IqZ?5eQ&IT>(ncCL&3W)+$|thTzSA!@8jE9C>Z`+w#Y^?Eo#Z=5 zPReJA^pctXx#7&DiHdm5D7fqaWB@>Hu06ex@qZ)?g(US1Xk#^F;7-~3bi&yp$xve4 zZMy2~OwRLDD_kZ2mT&a+a^N02@+#fqbWg*kcj1F>X}EePGGcxp!hdwD7dO(c5ACeG zhDynuGI(#ZhW(IF2>$W6WW1}uR9pc5d)k}QonyWUAc;f5;KU?BcndQBBt^~1H1U*s z5!>g-jYas5Qj+i8SPE0|Z*rOgI5OFrXhUM~f$V}|m9kQr@j_}QJ{Lip7O}0R*?t^7 z$#u8a7Sd1g*{=HJAYlY;i($dce(EgBdi|SC7OMyK1}OmXIORn1LtG5%9t!Z*v}Nr& z`PiF$b9S(sa?`G3lu~p$oB^B&hy}_WrGzdr`G!JDN@zg~XjY$BS(T|R8gGEHWN#h! z2lH%MJRWNt_%IT0J%Z0}yw}BPFTMj+zbNwe&|N%2^fN>_pswYQn9)Qw3|?oh&YAm% zsF=;4+{P$rtws$LH;UA#aGf+(6xQ%B9+uOv$S&JN(VjZGwlA&nn*+nmeXatbHei*Oc0`65!#6yo6G+pRlf{GFIFe_ zoTCBqr&aHAyu1;NxKf_)%TfQ78tps=)0ypTS-+zOF@0o;vK*gZWJKk_5n z<@c-&-K-o7YJgR*gzkMkvm+$1bFfvZfaU^SS3ONli#(Pr&%0p3US#4+s{MA+}B4xB2P!>m;KcZjoI2-~?I(Cu{!#W7e zZS_C5ZfR^SZeH?yD6an))XCv&bbQ}3n7cHOi-ES^};+Nu=JbNs3@q(lV`Xx1J_q_7m=J5 z48^P-PQQ<5fGAa|m-uKMM~`bExIs9|yy2)gk(*#~cI&ARcN2s!MtKmd+s8Pwy8Gp$ zO0nE`W4L8dy|Llg&w<1pHxwM<_^Klwg1>x#!lo$%W+WaW)8f>u2`MYJB-j}Fl%*p4 zePjw3BbSqoE@}Z|bH^xt51DWpkcbg-s8O(uu8AOwl;Qyj$130H4jAU)YO9!}gMN== z(bZbr_B4Gb&+G3GgimqjiC5;jdUNq@k2MhaeW?C!fZ?y6Al8mbz^#II zwXKR4FJm(AKaEZvLn_OjrQqH`6b@P&C%v3UJ&CAulD;(nRG3*E>sCNQ6$~&kJUD2R zCAKCPftwar8M4I^YRUH9E&X;%Bf^Kqa}M9M&lve={>CG!mjQ#sX>m`;c`w0@{M+Qt zhz@G+BH{a^<48W$E>b6lf)(i-YYlxwZk&r@#0;MpFl`%Zsw-1i@)W1Jw3KHJ%OO_1 z)eb+RQfn}|KG7dxn}leV&! ziCaQhr9cDX1rIJSVG!h=65X4?I7LYhh{;2P^k6hxZgC*U68?m)Cg$r|^@u+YYZ1yG zEkUO^o(p+bX{mEPoKd#~j~nx@gF45c7$)LrZIVn4D6FQp z@$WGCixYjvFA}r2hviAlQ$sE!2{yw;6k39OIw7BgL{_&hu{fYUK1{N>>oL<3QP4h8 zjDc#>`A?8ohY^&CV=CopM0orZxTV(0PWMEW4yZ7DUpxf(`)o zjJb?jJ-Ko)ipF_?PyWtu7+hyHnXA?MDwK^1tVXX0ku1lkG{oH`(v%(>Eo1a4*Q!tH zhrm}Ws`|A^i3i^W9{lA#9opl8xgakz6z!i}q7}9tJwSG6;3plhcO}hdYIY->^USgY z4-EyXvet65E;v;Lgkn>=3M^$WwVY(np2}e2r+Ze_W;4xXR7Rz%z0MtF?+rzaaDuC+ z$X}Ki56fZ`6A?@^&)dq=ov}!Tfj#v*k=a%QO3q(bFSV_i+d8V#&zP)6?@IOXk-ETVrFu_k8pD)X(seBFiUh%fzxTGt-6 zs>==YTRHu5G(TVzS(!rO=Qn=m8yucFj&$!TO2Bvdcrn%+W+i3L-|9CU$u8*?g#=y< zgR>o)&Y|o1&f7~+E6a*uulik|$ReTTo;*$zREv2k-8*oW;tGv9H%E4QS+Y@#xoaK7O&^owKms(|^ai5UYygo)X6+h(SC zvTGUDc}U<>#Ccoh&#u1w;|Z(?GMB741cRQU9xkv+IbgIBYn;XX&bvq7>=|W>BDd>} zc{QKPOF|)ed7p8RMTv(pxiDD{$prL`7;mTBoTcdoF zE>T2xiVqPrJ~yN92QIMz%1`(b`9ZDgUl7Dt-W09IL;*^R>JJ^nbrYgBAon3IMd$DJ zcg@4Xtx66TaQW9DdE)W$c!0yOsD`rZ0aKn{aX)t)jAx##y9qTx0@mR$G|ZJ*i>GZu zfO`t$Yn=vP>hUTUIHSH&=lwX!d2~2uDATo!>5-=q3`ifDg1S!-Pn(pI_$q?_KwRKx zKNdDd$*q#s!e73eZPZnJ_(RX|T0@KKKd%fqt^ja;z4b#h#HJ;S&b9{EA+Dz)@1rTU zoF%xzj@FvjMicT^-Q2zS3e+%$^UG_|c=^GR9R|DRJ97c3xv!+RsbA!_8lNwhgeKyy zAmqt%yiWLqc~0CNi|06JjruzwDI1mDz{%7G!gKtaX&Hb%<;m=ls!1s78*ur~DQJl@ zq{!H!JxHHnN*%}``c2JxW6X#i{+&-jB5CV^F^FCSN_mRG+h*l$B^bByPhq!OHg(US zgpNJSVyd361R4FN)*TYM7qDAJC-Pbr*v(orm^H@ZKIAT?Fkw#Km*Wjxgp1@6NyG>U zhrsu;c$V@uQCljq$o8!lG~QS%KB!2)WtQCvK&-gCTsUuXiRdq&cpgGgnK|46iQY=d+&q7}B7{TW+&!Fh_y7 z`rhZay=Ge9)uoS5y-LO+htO1mo_XvIUJsY@^-bY{)srXG`m{V#u(HgzAG~#;RCB6I z9@r>;i-!Cq+k(yVh<_0@!f96!nI z@FIA1uMAU%euJNN>3-+ch;3KyO3ZYHb7>ixG%&E7etW&2R|jJtdiOG;0NV^`1w`0a z*9OPH$RSSJzr-JX_C7YQBoCsbQ239{9+E^&-ySQw8}1xv37i;Lfe2! z;uu>@_@?BT@hxQzgZssH=IU5b1jLH2E270++u(z>yi11aesB(Bb?(D2%;iggo|8}S zYi!2!+ZyQ&ptEeJFLEOm^Ek~wzyIT&{*5Z?>{HC!aoTxVTn$rpc>F-I4Z?*5YYi|f(qu9Eeh)!!Wu#D&ER1dJY z17_#xZt{iZT_!|{YCSgWK@%_E9_|5WZeL<^h~141tpsgCG633h1=vu~UCO1-OX$URek_9;EL zM>*!Lw}RJDTQfZ>;?=|+Y=e0dJq&t^sl%H+#x};Z@wo{KFz?;|3=ggX#~UEp_omJg zZ}aEQhBu}I0c03V;TX=P;vSSgybO_Ix__S>rTfIL6O6O+H9w^|Ce~LB{U}Pi7AB7r z*+0^}{$BVSU;|>yKan-!VT$p#=R!ZGIKur6kgZZH4%wouAHu|JXHg56k0(lP0l-a5 zYVm>Y8#u~StxV=gZ&2#O(C*=z+{Kl;cHoCqw$XeCkhm$;*fD$jzy9%kv+R1H zdJ*_d!W_BHCg7gySGgy=d44Iqvg;?pHoZ!8!ckxCYM4F|A&Wvo$i1B$`Q>etBPk^_ zGnc2c47K_zGB|uN`>@c`OH1Ao^hp7y3aTf0E=-9!K0*TCAjnO3p;C;tp-f)A1C~Fr z6RMrRBH#99j>Z@|uGq-@LyTEod@@yF@#ELwm;(|H#eX)I6PJqsV7($7 zQ9{!D$j1SBw6BUa;pq&$8G5E3e-5_q_BFRusFUP0x~4B)^h2V*%dJI9f?upTfZ6V6 zJsEUxU7ErV#ul&u00fLdn%0-X5QQlOU_YV*`GE-k`_=~xdECv^%bF-mD)I>^3Hl}5 zRQ}VChXw-$n?x9^f|h$xpa*JIjJhMq+is1!rF$s<@et^l+1l>;^_WuxjF3J+w|V4? zxo|rMg{Eg!**>9WuOcO>!&4Zd6b3>Fitvtuq@Aw}8lHM4NkANaddlrom9tSB(9>5j z=KSWR9>5M`tAah?hvkXqbJP5>RIO`SHU8eD2&Qegn{GN89hr)#QxJuvXk0AoA$IRi5u6yQ=_@b?1U@@+{=tBAW(mSk?d zPs|15LTc#4WMm$iHEcU(R%_*5I=csJ~#b%CmX%0^Q^}$#E z6vW=K&C#f8$tIwHjCM%~0vO7A6789##jMII6JQ#mI6f?B5!6AB_E(G)69vR-!u0-` ztIeMDdToLc1f@UgRD|Sm7x;qJ#6}M2=rnla)nFN&|4Zg+g^Yexb0NrcUg!$5R*7A* z<>`u1!C7|!zwWZOBKfDq95poWIb{3DvGs15u%cFnmk~dxC6xy`JZ8xF1At{i1`zEB zQ=kFS>T-CO#!!9$6_PQS+L0+RM1Qw00NR_t4JWYg*1cJx!IbF@#c$Zus;=?Aev?V^+g?lBp1)Ux#;xi z_$W7quMe*r9?_p=!;TO&l{-p!rq!ask+r>^^}tR90xn?M?25{})6(05@OM*Qji0WZ zJyFx5K2Ab~IPJK@H(YYo(7=UDVcq1m2xk5+`0d3WW6wl6W+fZ&ckv4WZJpMD#-=32 zE}hcuJ~;Jh-`IK28^S*nj!O)4`^7^7+Xa#Ucb)nQ0L-qOFnlV@_ou^QUS@Iwy5j9! z2^j?;#GZUst{}&`^P_5V>SU#EH{R?$i;H)kPhLmXA^f{C#q)c?j&1NR>fUxD1nycz z6^g=Ky?18MRNY8r^^G?R<34vdn>KgFpHG8`@fme)bohoVUeaEzI6c3Yr)y2oLx@aj zmZzmhv~^?__#@t4P>UOX^Sd#!SP#kYVm2MM;Gprn3cgWBF~w$L*y$d1Ln<4zh> zOwL&E_FC9|?%a2Q1TtU?h{d29b)m9u3GK8K4M&P2NKc2pE|8@l`%3UFQ-Er`OXi>m ztxHqNqsLcjeiy~=(Gy?c^YHiMyN|0k!W>RpkY zyJnNfI=FHM;^9^}M?QLzvzs!r6%9mh$&8HZ-j!NM9#Kt^d1Ql{Sh2e*y1Q0+;_b&V zm>kf=89WrPd25sf3!S8s)ZwwQuk2$#PnsH9RM@MWV?A3>wh}K#{G`y0_6v0>)oq2f z(SJ2{8jy?#1WbRAc$MF48NeJFpe160jLN+eK4eT5YJFc#=OI4q{|MFM36&G@u9{#Z zBdnq;WpP!NsHfc;G*3vZeQr8~pc!tdnU5_N1b<91xgHMBe=7_H`s9^VfGhV85I9%p zk|{^$Bp^;G-KHwe$uahIk#F=F#bCw8hgoW&0Qv?nQ*x z9U?>YsDa}G6+APe0&Bn^7>zED0;ElOM9W zSPC7N)SS)f^?KVt?@Mgw>9uHAvGa)i%)@M^7m86Xs2F~J6vD>ZH;&4?ktKYU6PNN@ zRa(CaA{gJTp4Zw6*-}1q}&2XI;0YvR$6-Gs4QMWZouLE3w zDzIYLDz2+!;K6hSIXSN)YTtfw9O%9>a>Wp{G=>GHgg>ZvM9(o*G1&7RQWz4W?Worn z3$_~LTz7&nB$?|J+eh8EbjL_#M=eE3$ZEtIR&zBvOT>3|rp;JsN5e<7V~ZbFnKwBc z{MKErzvOn>!UDS=l?Z~Wy?+@nvjb^7oGCVu5!5+nznh@W=^h$spRRaYHy_}zr2Dphwg z&&vZCf7Ky|UdyGBLPbj0ThZub&_IMdtC z9>?mR&5f>~H6f(*j2CIR2Q|@o3r?8W4*7VqVov9!U&C1#8b+MAL;@YFA$z8fJFLeH z;Lz@Yj1VjCoNV|z8<=FeQ3IO#xxhOGj$ysW-p*5vfB*mi zpaGv4RFD4#%AdfNTAwdK0%(gdnuuy%T6C$fuo^DX2CYlLeY1cUnD7aW&0=6;##8Wg zUCZm>#rj@kO!icRtcXW zr1@RfC}iZXZ@f3W2>lRmj^3{oG!SRtAGa|4f5?>Mebw8k`fbr*L!~%%W#heRbIk|| z;>%67Sq`fo$jQ*DwHC$gXsnC_*fa)rv1=`)!i_K}z6^ME1NUIN}?2AqaM2(PosH zF|d0^M#pqQ>C;_BJY%Zj@wTCI0g(dTbtM3k6_%pt27WA+R3fIWvo>a<$zJxm4?Z0@ zX#fBL5CNYWRFD4xFoCotA$43%B$$=S)4_M3qQ&|j0AnF{3WbtRLtr9GX{=>RJf@oB zz@X=aCpXJ>5!7elkpXM}P3Do96}1SC2$=nGQTd6!i6?w;haJX2CSD>U548@2tc@pI zQ(SU-vSkiOxOreU|0XoJB)|5QQe$a@h>V;p!Q>n-fv@a~Mo1m0MtYIbw2+xrt(79~DKue8coFpGabV@?(F>xU-poCHcm?{B&EN z%;cP>@jG>KEpieu=;oV_1@yi=ze9sO!WY*E zm9IlTB?EN|)NEhe5GsadDF6Tit3jIrlfo3F%3wl2`eCWA=t8>6oF%W_+|@FpFP#HD z(M|fC(mMVMShue|KG`vT-=F154K3E#eYm##gi1;vXa6AT5wFyyzjB-?q0nGBvOJ2l zr!rA9AW+TCs>Q|H+Z|6vD!zxtQ(I~1Fg?y!i19XNT#4+#X=s&P4oOtJPsT!K_LI$N z&hy~EF3S&$oQ$9P=R2W+Ht+qOimd^9x0JgqLpO_5F_q3~?%dAM5$5Uk#@99>2iKrE z&ib-#jwC?)8qPU5q|vP2A7<1%tL}ok3&ah4`*Dc%KhY^eH!Rc_`{gn}uIXdf=a373 zH!0}}_WKu0@2aN*xr_>qNV)%SCHg@kt ze0yK{B{PGKZA0)H?yMTwcBM$uUi|s$eQ_^60-|ua*$aU)*%z%oFQvJQB5fMBxe-W1 zfAj}u2QM3|)1~uZk2*U-BoSWle{}h&7f2_#)uErHt|nBS`eJ#%wp=SdOWJVuq%`Fu zjm=!bJp{2s;33wIuu00#?J>vo5o+s(t!883jOIc?_)AkHFLXauPjmcB2gG$``8ktDX_0;KXp2WH#SFMRO1dPLLC{RvG z>-9wV(j_1~h@-gF?%dGMwj0J|ikn*WzjaW~ev9mS@Z!_5=KXJ@%_9=0XLn{DXQ>TK z$fe?Kj_d_z0%;>exQ5K zyO0w8Ho;+EFg!dbM~jP<3^WPeDj@NzeY<99YXu^0no;&8tmLU-q(AsUcbc2v3~Nu* zsq&?uSr(&ncK)#_ebiiv52sgrvA|W~0003m0iQn9kN*I>Fxy3fXSQ{Bor*~x{j5*7 z$DiG8+_P!v>Ff87o*dF}KyH8of|?}lQ{A-)yAszU1hjfJY*UUgL@-iy^`RD5`%bY| zui3l-5(XVY4yQi-`6`G?=gGok;j*=)}N zDA|uMSFXPNk-vMeqD&pWjm?-jg?M@DmUp&fZ8R24<{GJaDxOT>lK(}Q#NwnNR)CM2 zPwIy&`YpyNu>gN=rSOZ%at!h5 zb&|y(dc`Y$VCgS3f*t1F;@>xu0m8^!E=5{v%fUE2<@XhpMjpVsX%L- zAO)$I!ITV-dkL9E=xU$XC@fs97DNE6+<%AeZZ-TBmdrb-f`f`e26ECrVZvRQLVzoU z+o1vdY#rY#MMY&Mz>QXQII&pA^T-rmfcs$*Qc}|KQSMd3VZgOy)1%6%!e9IY@P2c# z!)GELv4V}Kzc>UK5Jze|+z9hI?=~fLsDSY$D$!7J(52O6(T?aUVlJ`ca^@Ka*fNA+ z{BXoAH9m4(9Z003&;S4fEJ2$nlfoWMrUWDZ`dE6Rr1S>cqS%)-hbhsc@`P>{w~h2} zgNfp;HP1a74A{8Lpv(DE7ZTAyNM=xEOgqN)wCnG@dePI+YT;Z<78VnyLCP$rJeyn< z*Uc2hJ1q2>-2vH*1FNipXI|v+rwrXL;zUB?o4)}%0QFlbl%)z=17H zh#ns$0BFFUOst%X?f8d>ibe~ObZcpixesc_UYe8S%n`~s15)>^Y19zf|Md2^VCaTO zdzDU>7&8lcC^2USn0~j9up*t>=4!(m)v)%`d>2 z2ZiDEgV-19nVCowCyGP=!!f`5pTFa$!#2CVb*kmRwjh2dn_O3-VLf)50h-d(tX=U@>rk>yY>Q79S+O$v2VsO?mHPJorrZ%BY0mH2+wj1@#ZcX0Ny`(`fL2VzJ5myOdp z7J&cSF4Rp@0PV{+Pu&=U`fECc=4wX#&T!#Au_F3IR)@MIC2Gjv-TT}~4)>fvfzOXB z;Z@Gw^O3UB5eO{WxT;5n<~`%IcyTE1<9eQDZ57(FPZ!`_7WxFbxJZrd*P|A{_)bG4 zaW08&?UAOjIGPTN1No8tEf(>AEgKq4Lw>KTE{WhBmp0D!Ug89-D%yjSG)+PkuBG+^ z*8xBpRvOG$Kny+De&)sj3COV523EYY+E9@%qsO-`V*tvEsOphz>99r;r_&X9qc7Rw zvzi`$ehiOTS4Z16AV9qIud2=gv)mpq;rtV}L|OSJf9oG@1XcvL9AG*NLr@wN3Nc;F zA!o>Qits<`t>1QG0nmDVsc{Q#fU=aJ81wQy2^}f@Ntr*Qfm`?_6bp!jZELdeVE_OC z?g5`f)Q|rFyA@ffZy~28yJw1JM#$h@v09CN+C44ks16;|&#O`|6tf}WS*bwR;SMjI zU(21cUsMc&O`Nq73eEVkcxCV3*bHOgr?nH8bdEv|mXUEgu`_@M-7OZXupo_q=X*r% zW85p~hdvw(m}-x*P=@l(M5THaIqT{39m8uLb0|Mh%o-EM;|L+xVz^Bg6_w>u zRq&C7G=J~lyuSwraJhNLQPLwKN?qVF$>rMe_)Xz3>Lu-Xv6Q_)tWgz-U5T~n-?7d} zQv<|atKBy|FIva)iClG4A6SGs?fAfFab#_We2G zMTq}Xydbr&dNLO_u9c3eyRRtTGDQMvCTQwC8^ooc0<^JTgQMX1DQk2lb2Em9TIxJZ zgfA#bnBbt8MeL9VKFWJ+*!-~vTtw~&)Zl%%Y%eGieK?+AHhD-o|0wY`(?RJZa2MGv z8L3@cW(1*h$Yk=&YXu`fbfn$pyvwvJ(U%|gf$7JtJ#znvT~c)goNaNOCGSYi6jTUC zP$Klv8>93k_hkq0lWjhpCFCJ`l>Md(kRhQ+h69z?y(;_B13|>S3$Rj?O5CIa8r_GJ zL_}h1lm+vhtqH$8UvNHUD77{vuRXvjR_Vo8OD+B+iAiS z!Ii-$sgfiF78h#}5q>~-6KkjFanXU17U-`Nhma6&tWnnzu@<_RKEG&~dEt=8zrbVk zU=lRe)7eyEK+|TNCbcVKyeLW$_?+op=MQ=2N7&esrEuMS5|DptUS3g#yo1NAh$=^Y4^j zoS>5ARJ;Dy&;_Q_)&Vezxor1ochoCSsFs~(83dy)mn8~Nx*kBxg?)PzzV9-v?RpH= zq|bWyCZ}`{(SmDouz|X6LNUBNiM$Sr>n4rdMYHwfgtZ05%b386S9TX(Ni?{WR&!Vs zPDwF|W14Im1+0-Rpd!n4F!zelXU^f*vz4}^p!qLS^@Kn&6N-idFugaU9FeEAf$gli zOm~`P`&n-FM8d*Q1MeY+q&%;MGa>$TbpZXGgf?d+$)p---c%Gi3~R74Q=fB*)7 zs}Fv`Nkz5V>tr>R%P^~}W6#X3SR55xsY{CIDq3scNlB7zkJ$foxlXQ?0<@6&`2ZT9 zNSD8Igw`BRF%{)e%bp-Jscp*)nZE_BLORYohQYio(6C#H>kfi6T(5u*;f=2DXz8+) ze0g_RV{zAIR~0Q}99BV-KgKVa3cM0okQnSB#|t?M8&aSKX(b4RUg5BJL>7gvNgxOD znNbvo1l1fa^?<(ATR>v5@s*c5anyGedfl;74Nz7_YXW76@frdOPSn)vlbF85;STh( zU06<&N!w|2+lVpz$bm_j>s0dSNFek_HyYhrDOU|Ez$FyNG4n1QyzD=wN=EYo8?D5= z3LYJ~49bd?!H}@OiX#Uh3Y9IfivmjsQbccR6J>UN0 zqs50XmfD)ocPXrn9br~PK1+vN>MO#V(m3!LaqTtGa2s&)7=(5{fGHelzIT;ZL4|;TQrijUR7eZ%n z{6~11JFRS~)r_Xe24q?3xk#*0Sg6XuK@kQ=0n@ey00xnw*I+}gdWOD-RG=!a4>s;< z%0LaPBqZHG*24;|uHSKx29LZbe3uP(E$w0YIN3`Mxv8(~)h zrIAr3JR8q;EY0RRoO9ulCEjC@AQmE|YoH zR!~xa6-?}Ry-5rPQbM9I@F5zN1*V45LkWiJ_?1U+zzLUEc3Rp3GbTq%0CsAt!>k@P zUe?Qqr}0@3nIM>lJhy1h7JgA#IDOcp&=-2X@&x7-GLlTf?>ZVv?67s zOj~6zjOu3(Ap9nryw3W$i1>ZAyr}SRK|7mBmI8uDYS^;(?L%10)-u7?8!|R1;Id;tjQY2M*b<8)xjrZ^+Uag5(t9>n9 zOa)tTVvTcXI%gE2H*c+qDx6@F(5*I;B?SSjD=6Jrj61g?tCi^<^Vvbka%5O4rbS-` zIM|Ov4K<>1N$~J~5m;m@vxjrdYygs{AsUbU|Ns2~MQDT}7)VA67>)ubk1Eb*1^~-I zG{5lO=mp5N+S5VXYL_Ka+y4vVv^j#jWDs(EpSJfyqG7dnIwOg4Ul*fxG4g}U8?G%kCc8RcgLM#GmIGni>;U0ajp8Ro!Fwvrbk%R~F7~~rt!%p4a8ngAj+YYTvG+5@JY zG752+`L3KsHu=>Ic^3XZd7=4;doRVJ?V#q?Uy-E==?PZ>)^t6MXb#N94x^o$S5>`%&OiePAqtP*|Nr{|OKO5M5kfE;3otSSL3_55aL_4U zTN8Wdj8>#5@63s^9CY5?M}2tBChxf3@KsnZ78kDYN@*$6Nw6lH+mJWkZvlhD(=I}6 zb2LDe*CUVv8dHPlm%etXTEn~u4k&Q8ggex%+tE?vCN(7q@I$TMCb%E2d zXTy221V$z&Sq7GZ^f!5~~{v2Y-)+J<_D*XghVG7(z6eVEL;HmQu9toz}7B zUdr7_ar|QOD5Fg6==bUr)RS2l#)UK)r?Rt<0>bdozL_Dc2vN`+5GT8hdf~F(cQ697 zW^|8A$CcG~ZUfCm+rHxVOHnSVrhXrdgo1#_EeyX?oFOdk>PNrY9o%>ZVGfJmtOu#oMNu8eis z;b_CQcjwzYBIz`)>dKkb_QQA8$I(4H#D&6WMcNW89u;lHs*yl*5Sj8X- zQ(ZTvs3~fs0Az}WjIc)ulmGxS#c*bl7Jzr1-xUTuVcyC2aF>5NbN`;Lf!8LxUDG)P z+;iLv@ce9N0TYd?_OYH*buM0t?HbQ(i*Nk|gj-UbwXCssV*ghYqg+{w8fEI^s{YOP z*cCcCa;EuR;n}hC$ynPin-v$#c@^NP+`dY@N?dg6wUcpK43#Wq=K;n++rB3SdHw8l zc&@fpMk#x8>(y`)ZNESJ01a3jAqtEC|Nr%YL1~1j=qyJH2}mgg$J*LZivWgc7p~d~ z#JIS;yiTmlga8X7MxS5Ct}Zd*6&}&Ig7{>D#P1W`K-^1*ipX<@CE$+WD8tbp;fNBr zX_4th`<`(%(b~k6dxuV~ww*>pRk~PLIgO@8u8iQ%KX>6&1PMe?uUV>;CZcrt{a1^l zlLWkuS}JUFAL-v#Jer;@O&1me z0ArvH{%tiFh2&LILoODVUny0T3Qkt3>E_qfnm;4Fxm2#Px<~&Nl?8$X=NG<7oY81f zWRbY%r|9okuzXuUv0a!i@p;sF*==gLuOk1ZIp}+hqPJFxec|!Vq7>QXoowmX{;+-) zj-bVsmjEaL0|y}rkNyAu)&W6jq_W5?6d0g1v%ywis?l_?gm47nvK9CDuS&zM@blKv zlLPlAuhZ5mjVRBr?IvviHZGJBsn$d>tA4RYSUy%p8_ zgfrQ$06o=^0Gc2Gqopj6Y!o1wWtQv(0@p~b3QRzCm5rq@LquvtCcwK^a7(`ghz9^~ zzFhTVTT&;OM{m=@$*>>+70z}6EHt$u*yr6FLwKWdWmdRd>m9dnk|+gaF2HVpYn|~J zPhqvW`$o(fMcv3*%!vWkjCzt&TD6tob?p~X;fX&6k153M{f}wjU;R?#Xib%&uec}fJGuh0}P~w=$S+|EwcnZz&4}VTL)ekj0RqwkO&Z$1KHO zO4d`V;3uF$Cq({#y=?#iNlI1#jHq)M4M_GXM}P%|g0ut_2CNd74(DI$mXF}HfMcw~ zl?~{E6Tao$K`D}|dc{{)r?5sqKus%bb@pZ3`VZK6`q-+2g+Kr0gUZygbDyf&wiur1 z^U_I|zOdE4c0^X%4z!#v!nVxvqH@a(K~uro1C8Z+%8^J10+R$^&W=fW*$zF=#`53c z0C3^SqH`fkHv7lyf9L*7Tx2@qa3-8)LTy59gh;Kb-eV5{vuYBpP3s6rg-T=w@W-gh zEw;BT4r_8d_b%KQhaK&FFx(0V9e1=}EOH}}AAr5%?TcKOFr;bG< z+*PR}T^1~7op>W3O9O2Zm}!+@n5J&rB(V5)Ie2v``+pY9bifT1o1G&VbeXNd1U((ZOoF zDQ26(!;vpsN_jBqr!h4L!W(7F@%flz6%PK=dw=pj_wT&BrpjgyN|=MBK-cex%4SV+RJo8I z0WO`2HwYd^&tlB;jjdNIFqnrLPSk<)RP@P9O8mJ~MYs&BC z{d9BC+}Cx%vze2vurI1OWPP;Zmbzi8k$fWkL1-|cqrS7osQ3K@5hQwo{C}3<@Y%<% zk?VSaBzZ=9hqi&jgTKby+17jQ6#Lgg&x7Jshs8P}YLEZ_|L}oHXoDn(Xi*SoPaQGM z1>s<|)|9(|hfDc1Mm5bIbs%iLvzp^A^~s-Fs&`$tb4zFJaI9zAvm$@;;680DHKAOI zucwMdOPQj7XooiIt|P~yzp|~YW2gy3Z^6al8%X()n5=IiccY%QHBSA#HQTV>#7zt` z<++W{KKXA@Y9SX%%z`4pRF)nPd3LEz4O!yv-DgT(Mrl%sUrKpKD&ucy(+(EYEVME& zl|h_$4&cpZn}J~UvteqoAf~HopJqOybP-b0PUMgX(4|HIFb26Vj@KZF>rs<$R%Vd= z$uJ6>Iwhc8o;dX9Yux~kKhUS4(W@{8bJD~Of+`Fp*BRlP2MKvbTdEAGsl8sfC!@OC zN)Kf^L47+xIk`uvdxm`LO0EiZto;BUqq?E+(}Ug;2KO_E2te?DBT4~h_sjGM8P*3O z3XlK)|MUStZDyhfqA*#5mNm;bqRCemmzsryby5TDeS?6DDw_rlC!DGxWu1?YgW;IF zg~OI~`1R4El0~T*%i34BQ+zJn5$X(tNH4vd1j|3M0FBealOU2fBF8ZyIBk=gxpS55tdku=DyUNU}c;sQ`OxVuJI|ug@8>L9r}67OyF}D#>}k5 z<)B|_o;5EGE0VDAjvl1~Dsoe_Wjk4)-N%^6rLbr%HAsUPS{_l_>MQviC6l@hSs4m9n<(8-}h(T@(qS-5V1mT%S z-`m0s$@r%<&6N>5gQ27BRDey3YLkzGf+;mc6*U2?*Fh02hw%t z>Vg#TYsDt{MkdeW=j*KQFQFKbD9v4}kQ90)$9%HFY)c*00E^SVvFZFY(Y8QlJ)0RxCaE&%+pzAjC8-B{ARAkKfwNE-DkUX%L0} zU0)6Le08#B1k{BT2sWz+F8|db9|0axp^pVQ_w9A(MXd3zB8RREFk1l9EvC$sE=B86Z7bUJxM6y(f8xhV z>tV94AH7TkIUD1gSGH zP;9ga1#R!CXLNSRH>*iYqS9ml`WHjcAE5!IigVUpBqh&9B7t!oe%-jjfNTrEr)7Yo zLB-qzqZ^>Rrj45YSGOn{6BE6z6PC5xC}^22D1}!fvgrm!fTVn~NVY>6%-{x2#DPTa z_*|nwGuE$OhPtCV1R7FCXSK~V%>t0aLpX`|*aM8+TA8G9AfpY(;Z(RYB3E7K=A%)S z^p$frs!IAjQt`d&X6wbOi4^O>9=8K(P-!}2Gcv|tH!SHSQ05>clE+}xe<2Ew|Nr;w zfi-8ND;O#?IFJNp5th!`fL8!mLc&Spj1(D*<+_7labD}ktnGGk(BgF5oq-JN;>EPx zU(d&qMEY4#XK}}~btH8Im_o_{T44+dEthQTSL0}5KlgN>myZqG>3YhLn(FVA_{Qv#It>{zlMVdONYB(@^3cnY$k*sOHx=AxJ#!>RBkumAB-&xPTX@ zRd!GUi2_#8qXJ6R2tg1Dyrny2-UWkLgb)x8FVB;HMSr>m0N*W8>8rTRBjj=o6ogJ9 zr;ZAcFa_g9Pb*v7IWQ4GO$y*?z~^+lzI@OHCPKP2mU7>JOn{+9T0@U#N6)Lf=;axA zMhufgSXaNdyN{1Yb+0Kd^|Yf6#N*)}zKz#iExc})&OB)2!GFcrZE_e`)UOpeULF*x z9IsP(PVicByn3Kv@&Et>KtY>MlhUa$DUhH0*qFdueB|Dq0HxAY9#yZ%4bmZ^i0c&F z>DRpAmE2Wvm}SI2RP4Nh;|HCY!w@KX2VM(iX$_pH!1WN}Wk#ocZt4#vvY?D(6#-9c z=O}3#@w+X<5XT7VB&E9HMl7fZSKgXJ=wHySxGR(%HuRoC^^V1g!<-91ey``#K**vgOA)V74l&;j zDzWFt)M?iclMA^x)-W6#JjHd^5*0AiZ(W8ZFuRTe#G{QUv9aVjvfHoJ)QNYPmB&7B z85+qa$~>_fi!LW&WZiHND&eAq+&oI?fjK%E+x20?H6#l>@1H~~OD+ucLa9#l?(@Qv zBo0Nks*v2ryagGx2;s-|Qbl#T--MTz}t3>ueq!ZBSbdCyU*%IJ=WCn*=EnnGf zKPY<+cCU$sCO;$v(VvOj1o|!qn7*$*rO=#31x?k<8a{k)hx8aUK9kpPCsoKTVbxGf z$y~1l*kn44h(t+zzgnC9edGF8_1+M6bl6xZ=P=6D#PwASIjCwBTvi!Tm$|dBHU_20 zY#8W1QraIbyJ)4W^xIg4L8vM0Oxd}xOYiPK8qFYxj+c~_nY(|nzfVMwWiw-_L1kO2 z@#AkG_)JRxKp^+e#~k>LPexY7j@-v6qHmPF|PcvX^nwVOS2QDB~EWvR8%=kWbCNe#xQy%_0se?Y@ zPrL{c*Rpw60fU!w{A)2?>)0+7|2XaWpPS%Z-%EiHmW0~Yu;#py+fqnB^b`10D`6m> zeg*&l0ObLnY}Akc075CM?(I>q;2Ift1f+XL647Tf#C!sbFbu4LL$dR;Pd%9RG;Rh= z4alOH=jfv#tn&WVL3JuTwR#zD1Y9RGM}u7AV?_&T{XqUgm2856h&UoTdwNX{i$MM( zZMYMz$<4mU)G-)^a0WXm@#BaY!jn>LRcbsPv1b(1X3_)ZgDQuD^RXrPi&)Kh2nWXZ zy`AZ*AN67NdJr#e^WHbDv1J!gb!~Lt+uoO^vvINib{JX8(xej?t8z5%kUMTN1f}$% zwM_Klyo%ucGpMAeBEs^}pBYK(+ysTCwsuhf00XT-n{<=H9!#bLfAw*(^6}tY?4G4U6O%c$D$AF)EToBxLL!Y+62rQD)vqZqns`)($$F-i{kjo z{KYQjrF5FH#J=GBFNT{Y>eQrj51QmNr;x!Uv8KEPy`F7q9f*;yLesjFM|c1*Fyz5) zeR&*Fzf$-!9XDP=BK*8sCO|Oc)X&$ z$P?>|6@2a?@*NcOsgi2M4&mm1Ex3QerpFT9j7Cu|bFR|PUt66I64M^H6L3h2gd${t zRN2HULnrlaCXovJ2%WixE^8Y9-&oLNSZ=Ffs}#-xN)ZeL)7k3u_J!qXY*&8ie$P4; z`qBLHy(&C^mm(S0Hd*F%a~FgjMvMqD?XbcZI7Q^kRn$ph^5V2MehUl7zjyvC-3FQU z;fejUe}mZz5Y1Vzyb~`g4xr{lZsWxG3t(vkLV5K`Ua_v?BRc?-(G5~+zsX43a5-+m zan?P5ptcb=a3UZ%9um%9K00R zDCbynA|^-n|4NoYgEfx4R%nIM!4lj!s{m1)mus7}g6&hpE?#I>#{8dj2X)*e>bDf| zI~7ih%S&N5R=1(VkKx+RQi!xF+-DJxNgw7zmc_$pqxj}~xO-8LMswR{lvs(?i11v~qv{IfV zI*K0#BV`r-QO{T4p&+cU)bILTv!x_gX62E}f2(b{bm$MbmYYGc3W@`C;!XHyRD|OkgS-#7sx{rmXFn!9+65og0Uc`c6C6%g9ob+j`NH&_t$@#5R6!*6gJ)u zC0^sxEqANr(y#%EW)>4ht9$fD7pkU z;c+%x=hvl|5`WyJlF{}Q@o>Bm5{c0?S9mg+3=;(wG_4E^XB_$9*D1VuMi~(``*Uo} z>CKkzO-0@^#o3z`{_v{-e?}%7Be0MFgRail((9*8T6hF$-HoYXMF`GQQ7MgC^M}BuYrJE# z%dIO6k!l6=MkZAPq8HhGi2q-1L84kdA?dN=@7$XO z@3Sx!U)q*cY7gW3hRB&=v7v@VT~&A4^^K}EU2Ig@JvO=t*mcdh$h*39doBGtGJx2K zla(TUJY5V^-yf4zxaw-=(iOeTJ|Xf@Q?;yUc>BW4v|t0CxvfC@kk4&&vkmytVgg59 zxpl1hfOEm`1z>jb(3z0BFBNZ^zf)FH^HxjJi)LPzv0g5FpTD%tLIe<7tUSkLAkcfK6W$78+XNef z7Mgg&w>N)5>*+!$01wXd*$60wa47{d{%~Zz<-O-OycR2p16^srUAZ|@ zJ{dWFdVFvw{yM6nf^2u0UQd9(K|hiO)<9|J2CoW%vX0$_3jW&!PcP2oWj<vNB{F6n4V-jjBZNXF8o?kI%_>XuZzTS@OVPhH)>ACwshrDcS42*{w7zv-PD3~c zlj_s76rIpehW*jG*ufY_qebRn%lz>}J5cVYNjNy=j%jhP)=2TF!HM=9l5Zx&?ZR@F z>H*7s-^YimUb12y7YKTJPuN0}cLt>65;pZax6coy>%Kf~Sp4-$Z~!qWvIwvnzZ5S4 zd$LLQ+YLiRD1TK#HJZrt*z_u>T@XSAkOM9I}m=nTrv)P>$HUS*b{{Alj000FB1_8u?001G)L5TMOU;gx? z_!QD?L@?i%AMG0b<9)6+kCNnP8DQBMa_|vkgX#^oxQ`k~W{+w`X=}?h> z5<-N7vg2F$a}3@SmW&W8U?>_N*P z0otb=J(QiLhb<4?6`{`P%54svDszCl$@M^va%DWe@q1lvuI@!sR~1wH1zqtO#SB)W zWj{8{U_C9If4MgWZ^}{9Qa7<0vkkxap6L%mq!3w=+jYIjcfOyj?A^Z_+2C*e1dc*Q zMrvntOHGEo(A9;PkwRe_KY;7lJfrhXUy;6x(Se?1nm|51t{uD%NeJ1!!=HMMq;g~L zgrDfLR6wQspng7OHguX=ug(iBeUP>+GXxoA%k(D-P_IS=PrgI(9#Q-Z4fW}|E-+nn z^eG9*Qev8)e}89I3*>PIKzjcxvf<8*yaGbBuIU5tv#(az>sJCfWh5ljpuC6Z&6NMZ#fqM1^U-qN}CxMvQ+ zYI#SMM4rqyKEl2*-7Z8FT0`l$ASP%4fBD#w&0=EkNpvsZk~pT*=pgqnFm_f*^)1AO zZk#G4eLeMg@E!mRMJ`qYM$Bzl+KdLVUG_P6k4_CE!r(c`l?k%_!0wD7YrDJdP5xo} zq8KHm!ia|3&zJ~gY5nemVs(iA1mmX1j5Ilm$2XYP=~H66`GBWhL_SjD|CmH*7Sgsv z(mIwdxXvf8h*k$zI&xAW))xmDAeT6)UswZRQI}RHp~Mbcie}MTYPclfZeZ&-m27wK z(~zusdnhVTk2-JSY)*r3BCzgBv(B1UlxVwQ!ej}xgt3QD+rsMb-^rr#tohG&rT|q* z5JbNHYvC~8b~fUX?1T~Dr^F=n=JiPZ;v$>3PWFQ$CQ#;O!Z-tm4+yWcQ6bxwb$@)a zH7_u=2NX~IgY+^p;_*L@xcRq{y1x9Z4RZ-Ti;jIR)LzBtq^e|;!u){j;Yr3><;{XH z7s8Xtp{uS7&8TMQz*p>wuV6DHhz+{EYjA8wuai)HVkT zIrzy&fkwCD)s?y~?vK~qCRrLW-I|%n#4B%HF3T&y>{DVFHMu1E4mZVIp%S@&`Z(iZr0@5`nUK5M?ET?JOZVYahGgZt24#*(sJ8I1!dsyfN8 zj+&i72$l6@^iq3QJ`1MdK5qTYXRH7r%BP+PXsUa2?yU&hM#1?}4`Qdj#dW2yJTS5fUAc4?de90r zzMIjdB^Zut2->orG&U^$R7ns$F7je4ml;snh++5%)4!p0K=a=)X%o4f_KQa}`osw_ z!FqI#uuaybOh+0dE@Cz+X6vpb-@3!=)ChlAhC*mG7&Q<5Lb-{Kd-=#RO|EVb2>$Rj z;pq4e|AunL0OFUPEWz8hUXK0}Bj72J3Af6d2(2`BG{OCRJs_1GZR8vYYIYWRNu!*l|LNa@n4DDP4f5=Vy1G4VF zgRh@^&1maLIr{E_9kS}TQsm@pDJsA7t9@rI1G$RAZvW$B@iWw(ilR(Oicr69J=N2b zGE?pM)uN^REV)Q2nIppa)!V;iKv+IG*HeooNG}GpHWQuy?+^BVTcU8y9Ggqm0JB*r z^fT4OCqn%QK(bCV>YGvCq2;@_R^IdqXeZuzo{{2_ku66sQ|O>?R{HfR@*UXYYnp); z8T*bTzv?tD4#J6seWcOV=q~}Sw$oYC2trZmVnSGm1n+Hz%dvn<4+-Q{;GTYf$`|e> zYIUhvI#y5)%($4uOP#O34e!S;ANzt(aw2ORh?s5Ooo{nX^CreY$tr1pg}eu?&+fXV zE$lIWW|~B*OLv*CQ!-q>Y_|Rkaxcnqao+aoH(Mv{0D2b3XQ6RWn8r;{a=+nodZ>M8 zWM6)ki=CHL8|=7w%(Bv`zho+|oSYfqRoX2_UQhJS-WQWXk_GSUlrSm-EC`anY;b>d zarv)uMG@Nw zfmR8nh#rl=hdN78zjjYCL`P&s4CU9GA785HY6OTAy1A|)vv9A^ejnBiSVdjp(D{-!wSo7>tv>|rfo z{G`}7R12Q#B+U!iw4jCy#QZwTt}*BPi(06jHxRlrr}q>a&HUo^ zs&SR*7DZIOT-Fj(%HZcEv3lfz2|T3Vk$G#WKLos9?JMvdrqV+7jzsAo7(4FbeLqDd zC|3vCNuWcJxnX;MrgU2Q?CGpc?a9oz+GDg5e~asjwDymW**66yJ~#J?uc;XC$x1}b z?4H!>PUf_2FYoFObYiLQ{@G(wiaD-I;qJjta)F$1L?jmD+6KQaPZI%_1Mwf6G;I7} zHDVyIwtz+cj@KRe4h2d`lCN!@;yo>tDzb$z!_##h-4QJcqV7t$8TgyxAyhR>kP)y0 zF*fBHIXyL^j50FWwb^AV(2ot^^Sz(PncjrHRL$y+Hau{H=RZewAEdQNMry=ht4Ek< zrH#Cmt=|Z-4#WbYMHXnev&-8-+8sUXOB_EN57y|!7}v29AB3)_jW?(d(7-Fm{imBQ z-eenZ=QfQb#gQI^vOHCX4^8g1R^16|z0_H<^KcX}@RivG;MV?e4tzDYFN;+tUVGq) z&IxUQPyASpq)dupKN?-td5av923~2>?l7>eh2cWMxhS%)hi4Dh&ljK%sl@m;`z)B!Q56AA@$=?#S_US%PuU2?_{a0XwN<3{Oci`TIvIJQn<4fmbW(d) zU3ke_%##p$r=?_9s}Mf%{jl)DZ{3tFwbIggfqe8x-;#;dq>M(<1%<7={VMZGbJl#iYJ99ETH=gAgVtg$#=mt_r_7anV%V59&@Y zramh%-|OPe)BcmXcLn=lFL4zSy5XS!#s4RL;_J>Js2_$|`Ju@ge^XpSaxXu8P7L&wiT{Ao^nh%oxUX%^D!wTi% zYuwj+FRg&NWR`S#Q*(jgq-~eCfVsij&Qhd`qmVeNZX>Db&bVW!DN!?L(GR6;v1fpA zQn3mB%DYf_ft)KpaLA)phdX$!Pqe*{Sv8o{`+MqDSSj_wY-)%cntko1$OI;7=;}DT z=|y}iwi`M5@T8?gW?Ffc>79Op;EZbIvs4~9{c{juDBe<8V@zu#FX;eNF(G_go31Uh zKiBK3em*Qa|7#N0_)6y6qmb_QI6jo;`1vP-woskt0pjq3Zk%@*>Cl@;*bynYW*Na! z6Xc2ggXT%rkKj!njW>tmGq%dpvNn)<2iE0g%6b~dC#4jtDMLH=#ITK&ZBh#Y| z?3Oou{xykQoCtamvu&a{xN4Er@U)DDszD2ezgl^sE=-s#R3VqQBAJn( zTjzXU+D9eO`4xy+MxoxRYm2^Hl!=w(=Zh7CA7O)`1V-P}+fjjRu&-gSUT1u`&Kd01m~2{Mt@grEP^#-SP@_8!WAsmuX`j5FT%ZddX>`_+%z|&7U7q z191MLK(T7;buLKqVYJy!0X+8ac=7&1`?>>lc(&7-K#T-Zr>=#3hfGdVo9Y)6B#gkb z6%mc_LCg6wue#jGsUr1mk4aNH&i&xx}&3Iy<)V@%i?KV>izC=c*RkELi_7> z#uy_-BmT@GO%GIj2ZeY1K`P5NX2?Zv>)hOXT)#DD6-yUjAdWo+n<1L^TF&}Ijgc}due6*^=}^P9%`43=SJ#K?3l(U8+?_TfNleWA0) z^zSxN{|t+?mB91EGi`k#{k4%^+?O9R=&Mecmj7at;p?h2E{LR#wr9&c%}<5`AA~Rk zJqX!X<{qRV1M|t)br?E@0e!!kYkO{mSw}H{txPW>s5BhkVI~-(}`wO4xd>~k|A+V*wEhbk-1~yF^ z-r}tfH$=6#@ZOmWm9kjYqnIS`6-%6TA2!p)6}sTJeD!_bKQ=nb;N;@9 zzUuY6GdR)2#RUINn37wUP*VNAM3d;I(P}{eU^Cvae^7?q5{;-6Fbk1x2eXq3gLI+- z`9lE~B*(Nyua4w0Fn&7!1iJSW2@R5G!OEdMWiyse958#r!+ZWmw1jvINW@w_qw%|P zk(?*Tmu9Yhk(o&RH7UKjLa3VRwTLKgG$4+u-a{b(#vOA4vaWPV(86729Uhwp5ui)7 zCBYMy$_ULZuqW&dl2GTYC^Y-k0Y`TXT}*D{KKj7uv&Z?&zyb};1dB?j<;XFOnb|pK z5K-FCL*>9Ia0+pVflonJZ%$Y)!hVSx?9(AmMwR~8JT1kx90n3GlNzFqKM3b!;-YRr z`Y@T$L5drYU@s8f3s~E!MNsDtNy=b_Lv|-}12ZjixdO7P*UCz@4OEwh+EX znx@U2FRe3LGVGk764d`RI0(Qzk%U)zaIylIL_a_e3SorF05*8ZIZk4KXVa=$@)Yyd zjXH<{K{i|E4gmFPS1`iSt^_Wz@h>57LNFX666&txd+I}SyQIdI89PSpVvi)=wrs)Z z{o$NZI|PtNgK+BMc!vj*!@2k;5QHQzvnCZ8Q9nsLjm@UXxHHi=Z@B;r@7s8#@Fl5@ zd73|bUv;o1UwyNFXm{I3?nPi3ewOy)+@xq!Gm#G}IKOaLaJNy*{-bjRG8nB=ldX;fQUlLlx&`mdc z>L%%Y!Apt~mcJ$mq&(di8w!(NYk^pgl`Y_4%1k5pY_Tz3rfp47Iuy|Bf2SA~+q(wE z3~%0etpG8;Z>pkSTfli^aZ)mr_^}aZB_NqCBL55O@3jc_+EYc<$ zAYY+(I=g^w{CA%n*U19XA^-#mR{tVWbZaFl5XyM|If8r-sU_(TQB*DGT3di9Mi8S+ zyNN1;NeU*4t74iAJ~0C~y%YiD@hsPgHHP@2NPGAsetMx)h-Yi!vyGfbdo*K;&doi5 zsge6p<^jJuc#9XQ(3akY=D^?_C0w8ucKPY;6R#YxnxhlDHgq2vJGi?2S#g&)u!S_9 z3Hls!>Q>%=ex}5QFfsmrd13lh|cFt9@^W|Oy}3z1@a)jIh`VQ-iDh6lfUoUg|ibf zlJ^j)aMeq>(G}=*1DS_x6y+HlFeZL9+V$A5b%_eZ4s2+2+B813+O(b%8acMBKdf;{ zPohrt+)5(493Fq7m)*mCdsMS!LP@+SbYW3m69?kNZ7U?HCaEkD53_zdbW?B{EKcGP z$R??Se09=#oPlbU<$w&7_X3%62Gg5DiU}x+_(76;C+|UZBbrva{7^mBU#^W{KHjMj z*CroF!a|ldk_8NUy`PShamy9iQ5Z15zc+wtIKieK$hg5BoLXvteIQ33RCI9-xMg-` z5cg8;QsuMHV)-V&TWv46VzSVCx44}31Y4J;{$b9rI7v7M2iR519?UGvt^bici-rHT zNm|`4CWw3(*6s)()nm!o2lf34Fb-u0+12Il*4K8YyIK9geU$m(Y6yqfj&=M_Yxpl; z+|pdd0mUaRWJl6M1?WvfZS$#+0EQri)4)oHSG(PR6zY+L)Zl1Nq~2`d{LsjjA!g^_ zwiDFRb4OH@eWw*q{2wjn&PYKRGqVy(&?p3tMh3N0yA8J#>}RgD`gd7zjv%=O@7;rF z%kz=L{wlLXM+*{d8y)uAlN4!J+G?>K1M5ERiG6ODVo1e^~fTehd|w?r4;A50d-N@|N0+7MsE=M^`cjfGJN;8-gF5 zk67<1h^zXifBxsJ8@4I!3P-U;*8w5uZET4ZzfI=jW2Eei$F3i(?&hOL9HkHAS&o+i z#;j?iUzp1a6bA#&|`W%arSrKmXXHN+wTgAET(*&=SEN_A`4(Yu+f6Z zLAPq+X3D21B#RN$K++};Quh?knI9>AYiJ04nB}#(?&To&QR>r+D*NELf4qt!pilae zxYGsu;1Mgpqn!-BQw~i4Q(`&$>#DfXX-E@2azE~`-8hz*9}aUZ-E;pcc_~mp^%lRM zC7S(ZI=PS*I4?exIhbC#T;n&ha*;Mp$JWoA)>GjrlAsMPNUYzYl+3>(pHhR`e|Aj= znT_6;kE~F{6tbB1X#bmR1JcfBvBmUCYm7oW5fr5|gWX~T$S{;I5RA#S`mQY7^GGH) z9OXOkW?h;MHfZ74~f*A*X&wrO@6F1b4)=MXFmfPZ{=1RV-JhCmpXGLr|HZvsi2G6u*( z!$R*q2!@5Ut^ZiD((yy<7tmpK#d24~I^-XIR+?A*HEeSPTwGZ32&2J=<`G#J5d)wu z3G&6>1inEPm3jmt7z>*gCG0+$SU=W>%cU-kpT;we*{tb)8l}|39MXAVl@Wh=IP?Zm zz1FJ|39>Y5QpM2YE_%S0lA_+&1No}7xm^5j%d#La1AR_gjHa z-Om*nxNQW7V9U`plwbLgN_a5%)b^gkt3vg}jHk3Y05~#F^6TyRXjQ+ELttjDcfI#(=C%e{avSA z0H*{>lZw3RCh5l!`5SH@faZQu@#YQ0hhjAfdmoN>Pdot;VqJZ1^V~GZp|cy&sSP7y z$*w`SV;`DRXq&sY7W%o@$r$uQ<&mPXQu=KpFh1`_r3_i`D$1@iw|mj#uAzVGFbay5 z8@Bv7+L-R`ueMz3{MaV}=rp(S>_QWQKL~Q$s8olM(Y^(rFC?KCXU)j+j$#=hNF~2l?N{tZ&SPgrxxu4Pk|9~k~mALjzj;_G{cTBGzO+P)648%;KqPVR3*z9 zBoF>bP#)QiyxMkq)}-Mp{rcN9n^?%K<<<&$}Akj*%vin;PWUg1?2VKOVT>UsaRJRiCibCH<-#G#^ z$-;s5iZVwX_zU-4=dqd?;fG)4J#cpDRyRaiH7#hX_-O6rc~S|&P+3+n`u2r36LtAT zR_mcr3nwL1#B7(&b{yBPRB){L7j!1nS>WjsZ^TOl(c0k#t3UH3yweQ+@Ai)u#i*Li zUieon3vHuZSc?X8|EF25!z2Iz4wXTh;`uU~SV#Z-FYr_WLN}QRcZ;n=^dP@S1&?7c z!N(oiyL?f>n?S#=38gQbYmXft(oYcKIyo9@(yu^2oxZE1()wychprqWV(W<+0wH@T zgcC_)lmNqSVkpB`rVI@T$ksv6x^Bex}pE~j@ z3mrY`p0#_>`0*Zg2BW6-J$>-}1F%dErF^qc_X~M0FF|g18Ri2<2jIy$9$`p*LWd8p zXKaozzS8XfO0pR0J`GnI!XRc9jg%?x&wC5|BwZ-ANQsvz!t)Unfm6nfWD|{QyJTZ< z8aJh*78Io&dPkq+c=lZX0_|l9c+kWF!iQM2d7 z5kLXqRxGJWWHm5)dCCWSIOb(v$VMn7JsmZa-^#$Q?SI)#ATtym0wWhKyfmR zmu6>|>hXGfX(7!J)8H-{cC4qSC=0;S=Hxq%Kg1%3`|nt5=?HK5_>If^tOz?@$UwZ| zI9m^#Rq4Jj`q{QKWS+-_dM28{bFJ%ezdX{10-lr$YP?L7{q!7RFMA`>;p-s478f2X z$2}s*tI^ffKmwq+d6kns(QI5i2{?08)UHSX(3lpit3m?=f@&SQChyLwY1MX6;)b3v zLMLhFK0<<*bcukb^?|c#FBt>}^RLc883hQ5*AF_-y_%4Xf+c*&uEip=E|1V3I1?^! z;Ijx1284Ii^f3sh$~=35r~5l+O5HKp5(kwiwvqbWQ{Z)PLmSywW4DSC9i^=O%^h3C z6NC0de_Cl72TIE|kX!X{qc-Bu&VSo(?MI;=?Q_JCF{%A?%@SDRwF?9W`I4fe_^2^Ua1s8O|}p^hkVO%k{r7_DWNj5#H`BqG!w@@L>yhEb( z)|jM7#5xupm(?w!T2HdM3rM|S#aecOCH5=(8_~i`;ICrvF{mj?zS{&z2op^fC`Wv$cDasA%}V#IVeNoB1^>29*Y#jgP^nK=m*Dpwo`GqeM0xc<(3m{vY!oQ zL3>CZj~ltZz?(v_tfYm;o$+sA4iH@9te;C`49-fLW}V19ty8qa|5n-^eq)bXA^pwsy=6!8hdHG18~YWEfJl9iGCnuG zMB=WS{XR6`P@M$znr>aM5;~Y7*L;V<-tV{{Tj!2Q!ohJ_s-HaxipU6(_O_(07*dDJ zn!C;tpr*RS|3hvR$ zlc$&?=Nx=7p~0qlaD9Xa?q3z*0`bua@|6Sd5>6|K^Wwlu92z_?0zTKZ>h$dr5sG;_K+`C+GcyA#<{*06Xq5vLkfk7<~EDI|4BU z$0Ji~JiEq$Y8O9fyOfrPbw`#+%JJh180O>^8VfT50~> zUYZ&5^?Eg91L5+2jAk60!%U=hoNjOwvu_?BWBa@kbyfpi^FI6=5T7jYB2Mb`rxejM zc*R!h4;1?|p07q`MNQS;3MK~I9%@rSw|fzGL4tK`$<`Y)xPkW#8dBJ#RML=^Fw4b% zym9y{D`b2KG9k}?z&vQ7o9NKV@QtigbiArnT&w|$=_l7BJUKMk9BC5|ED@rr8FMs} zm|AhDMYm~3bAeX&JR>=(jNTI)C&tLP@lkUpcsswCJ0L&3mE_hmA~dVViKqwaCVVCH zuB^e{Kn7Z8@AS`spCk+$`9PK;?5rx5`RCS;O4%ph??*qHw&B}O0Dyf@_$#&*dKR!4 zU!zqjE$%=qh<+UTuYaXuI~K;|HzQ-{U~jzi`79sN563&HZ*s6>I8M;>AF$ww!C|rl z(QLVZ2?IR%xX#n}-th9|e&z!u=>YkaFUaHx94eOj>OgaNBP_hLB6LM#;7=$^l)=&% z!U2b-m|B!hy27Uz$w}h`e+{lBq;LlXVYd)<STC2b~PSJ|NA_i`5HFm{_fYg}MyR*h~dDJ<{`j|^V z*CnJjm|Ok&{vWsk(lO5a7zG*<2c6U`C1nQR)}7aG&ba>!FQ)o(Z5#3o@f(u_iJG)_v>znx`sj?;&d04i0S`G5x% zFwn1X4CFQ`7c!3nfgGYe9A~u#8D18rV}i0^|q`Eqp2`Ns9hct z%Xb%y6>HSS&gD86C$}5sJz*ysW^+a!4{=edeY;K7^a`5WHq}HBX6P|`E|;lvWi&$1 z=O-4%MnMNU;>R|TvHz9hL&ov#^m|k?%q2izWyb~u8>w^L;8<_PXZs+RmYlG`VtAa- z@@=>2J;^$dRPGb~TK; zZ^0H9=1i9Q%ZZNGf@>@jLJy?9Jakp{KO=&$Nkf$Ts$?Q>D?CVAQzqC*%SX)r0;ePC!%pe(x> zHV2m9LZc!#V94S&8hR49Gx7+va~q?ifp7v6N(AjbP{$3_#;<6f@JPDbb1!r!)+%*BCrLF z04QIw4a7%P25Aw$vB1?TMo?!bT`wRP6}4|6(P(Qn_BW%)+!!W4}|eoC`;{I-OJ=a*9xDP(2zBQVX2<_ zbRSuAY=|+?(flF$GKCR(&|&S?A!R@`_P9?gNQh^)z$`fT6up?al&TU)iQGoPg2qE) znN->}Sj~mt8mkRV4Kt7Tn;^?G}2pD!IWf85=1@e^k;9 zEHxC&z`Me-33t{2R@32g3zhH2trRV2sO2#-8F*jDL6lWvIGFPL=bbZtaTa$=PWJ{? zl9nz>dZ+IX*(WgrOYl@joI~GFtP+5ANpGxbeMDX)sDL-Z?T9$uI5Y<-X$d44RqGG- zRL#xn?cPMQn9C@i=|`FVtInJXf=i%h7@4!54uAQ*2JBKz)LDV{llS!kgi~~{XOzFR zWXN_uyinSKz5X5BuDUKA8c@i_EkaI|7<{v#) zHInlc%BnnS*qYwtN0t632___YdgxP0bet;5F>*tafGs1xP1DJNM@<``T-5ye;*>H8 zl0)`|{an>cRYNiW00j&Io*wc)|56I8OX?S!_(tFFf2}aEtC{>c@cUBIU*q~I>JXD`&d)NPb{z}L;xMW zc#q4||Ee(a^>D0o&5z|OP~^A=hyKCINJ4$4iVGx9nYCceXXfhNl}53_&c!S2`Z6oc9(R)ENX?ty)SI$wzgE;Hm)2JstC&+Aj_b+!+tEVL@}z?_MvE zSBl>s(9`8@DKpj#CnaQj8a^hh@ob;%tZ^EBF4$@LYsFt$kkx(^=9u4oT=Wl*$>DTm zNoG(SQtod=TISgesH~l-05?pvlH9+)&C`s?#2kbl%i0korcvZnU~Cw2!Qq;o_bPB5 zLlDETxj;2>>H)5oG8Q3;Jw5N8a3fjq>iIt}r@KEy)6)}wnw-IlSG?^ow}F%^sws*0Ks);g0POqXPQ zS!_(8BHcv6;8}m?NeMVfqLP|Y`E~EHbJ0lEXT(mQx|SB!OI#-1eQ`xkbI1JqJe<+g z_bjF8#3hhkLcH>nxoPKUmu-MS1s`(I|Lqg_tqVSzTQ0DD3}c_3ElrH>nQjVkwR)!( z=mf_sjH)@!P0B>0R!>xJ?&0W>v#flZBd>G!at)7=M0hpb%3=pAc?m>sZ4?M*tnW?= zAp!?aG!(h z4;KxxgL;)a+bC$%ONb$a{SWSmD6S#(EHJd$E8MQra%-OD>qHq@G_*`FGKSVW_m|Pc z8kO`sz0q8#!NCD_dAE6tGaRY2htiY)g6to!)m&O$pRWEe`w`rjx25lZ2v?k&UQJ$x z*f+0Ji)1hP2cWEIlfgG~F(7AvMuvCtu8zo8ndryjxTaiUuTHho=Cl{ULrRUyr#C3I z$cL-v_ZwumE0+}65sxWMYqL%cFbE*u!B{phz3mMICwLNV*1Rfem;OADJI5J8-F$4d z=aTg{@bIAeg-A)WK%SWIfqCw@grah@PQZ$)dVpH9BM4e@#OIkHTs z$DzF126wV%0dPXdeAm-Bt@X1@$Md8qNWV;yXCixi$*}k5A{ixAFV-z-f$|Le`Z@9} z<|guBp&mye3XA{$_ap%?Y=j`3Y!x~LOaf!&b9@}v4nV5WODqo}M#@`?s>mh555+rh z=kfJJUTux}jJkN(^NI&kZN2ORSq09QP_wP%pA}lnWN}~HEyG@yF|r)!c@5$?D7bkv ztB&|{{@dpJ1nBr*oxf_$9H34{h7*EjP6$b5@5cw0paL(*0DJRT682azvI1jN zAVh#8mH_({O#zm+YODd1xwh|VoL-{0r4-E{N;RxY;$u*29wm~g65|yV^buczEv9eU zjOF{g5{4HpVay{T%sJn2`j{%Ao~RwZzxDrL^V2Y?M92Uxs&DxJ31c`Ape`mgSis23etS(H-v-nviyL$H!|K?(k}_xr!afDFAFARi$biU0R+kO47j zqL`peM=B7|0y8QoY^nxD%vl8wV2_IPFLw38Bo{5zq);N5v@qVLJ1Wd9ZK^|Y_wt|=HGLahkwqdh*H?742wI|0z|Yrf!N<_K4#K$$rwP@ zt(e7V@@byx@jTpGWF%-tw+kYpeM>0MkHY?)s+Lu&C!OS+aoq>&@`|G7>tRmxctJJ8 z{mmJ9!7LTFB>cDReiP$JUxpmw46fTgAOV$N0G|%nB`FT*3Za9dK&Zed5D@(3sGOq$ zP|;PSFSH=2`E|E_%sab?oWn~LBX%%NJ^1wE&WqKSV@DN^xD8C;S43!F#|*oun-DH> zhE%ag6yBaHMF72qcm((7`F!kPF4ZC{w3u(F{C^KrPN7ZlN(!R>SknIr)y8ib2($o# z?pM7}G_PaV_qc>KM%4UN?JsfH)2{Dl(S_|IifSiRW-q%hm({9BZ2{VqmwYnhAsUbW z_y4>BF=nbU5Q2thV;OY_qNYnAs~Ro?mHL6p$T@z`EY1}!?v;VKJ+g~#eZ9zHEfnUS z9}L6DJ~?%?Esq*;@u-atZdv9OP;t&Mpx6~#K6ebzUX#@q;_GRv3DsB<&$%8?Gj5SY z$p-?YoN&!`^dXut4tA}Yu^2Q_AhA67k$?b^gnM@*mXbobvE0{<)B8MXyDqH`-I{Ll z|LklVIt7!Co9;)mPWlJSvM*bwTaY1enp?8ex@$*A@g4Blkq7AEdp~@_?X8o#@`XXU zCM{2;a0owd(*o_ZG!yUnO9+;S2nx%%6ccO!OVX7nWeN#~r7{4AjqIuo)P{hIq{|Hn zuv8sW^`EeBNcm`TVeq;~bLA)_Ko`4i;@g$$rnVKJudBXSlo#qB(+nVsX{jZ0sOPsl?-Zy11#q!+422KNHwT)1sgKAhv zq64h7MaAcB5{=D)YRNRqt9=;n>q_Fs8OEG=Ls~#*xE?Q#sTBig6Uc?~|wG#U1zRzP0!0GSx zW*?CShkU5xZ8e$x1V=}vh}|r;ZFI;7iek)>UKPnxV>2=fHa_^4W;zW9{7#fCFu~l5 z1ri)~(?TE<_Y=STuY_i_QK`kX$;Rw9AX^T@0IPmVYFj^lH-yG$%*=rABCNslr_B1d zsP&;6hHm(a_^m?>7eJ|rRKmlmN1=4=Pc=Ls|8D-G!1kp(qw{9afhE>K1BWx)HyfXY|-XzS&nBx_Z`M<;u)e! zCkRHlVrMeT$v(;eDLd5y?-d~+N7ecj9Fb#YMi`4kQ0BncIT;o=1Ryp2#qU6+35bHz zy9bM07@Uz6X@302iY)ZwUV`FpDN}zFxYbs5gwj^11WNH!?cYyK;2@0#2@Ll2nV*-{ z(Ogd&)&AA7bzqr2_Dle(c|Z>Jly*X5ipa(`KvgJ1FfVif2rEFDp;^!biBOX+u^o*( zaJ>Ltxam0xF-Uf5&H!_2=YK*5DCfZX)?p!w@%@$)AT}0=v+w$Pw15_>KuRYukFAF2 zU_!9mw`Lms|KB$vfT4}7iqDsi!xWZUva?plDg~S6d<#S1!B55)f%4qTm+5~fSY`iB zNsH@qI$poKVgP8`00FB$Fb^RLkN^MwKmk8yqpBcmBpH-U0tUW%y0@u_g^5Tk90Rs@ zf=aV`*fHXKRhsHGP>*LbFhgaRnTez-|mqigs(`RZ)}cpz15!| zqOb;6eyK)$-|Tvat!2ky@olsD&BVzS?2ehh0gK3Qy9rF;w3(P}CR%G#V z2y2r+!mO?4_ZUa=29LM(bac7uFr&;RMefvcD8GxNx{~txEt?DY-=pGCjzu`RB3oB+ zgF2E>CK!KS75HR;D^LlY3tlUTTxfW{Y$_4D*E61mu$#vTolhrK)NwQKH0~iXjPa`y zLp&PXjI?*o!eZ2js#-1_zS~;>EN*RYbGOvl4%FGT`O)pPd{72V^tb?5PMKgQtq%ea ziAKdU1*Px7KmrK`URf{@S%FCw}>Dz!rJWsNDdHyt|!WrU|w8GHT^rF^EI!oB%;|kshWG+ z06`EBAqtD{|NYVdJ#BL^+)Otz1WW<|va65`xmE>(LQ+8i)RoyLpQm`I@V0W~uhV`K zFPYeDfGA@lbspk6+;KCcluJ*g^{RrU%Ttk|INH2CVixLsUpbFY%>2*t%nW6@4dpOv z1X|(g!V$#rv_6-p*0oeE{zy3x+OXy0djs+xrBYy}0ybE>fN}y7cv4%6 z?SVS_J(4RT8<>(Bz%lfE`lKMfRJ-*0f9L)2$fOBK3Xz-F-PX{M0)$Ur9$dX&DBnEB zf|?~w&a=9%zmJD5AAeh-Y?xt86_R>LIy$T!I*neQ!4%~YXpXMT-0!8+Kn@@0E*CIu z(@c2_L^~l0kN^Mw>;Xe>Au(Mn6d;fUMQOP-IoVBQDp^_qpysUKm?j8Dw(J>jN!Y$3 zC!DW-$6`SSeaMdt%L;IG$Nx5q7CRLSF=EKG{JkAOKL<} zY}sJWJ}=Jy)7fj}WtNTLi^lG9B1oPWE2k7v>M}?Hn`DVFaJcyqopYOZPiOa!kEzt{8*1j2<{cZrN zxBvrgfKXc0MwJnf%E3Vy06;h`_5l@+rrIK7gG$9`f9b{n04$w8se@*m*0!iMI?C(xWB`~6ymE=%ZFuzh zb69W73@)P6YpTqv#<#{XqQqbYFnqw6iaMv2d}s!B;nvZ3Qz0|-4lUUJ>o=-m^{(fc z^BcH{g}3-Re$7J%AqtQG|NrE{KWl#5kiF%0EJb?mFd?k7T%D}Rfe&^)<2xf zcGo?2=FrtG7_J$F{lQ*R7?0@P&($snby$xs6*${wT!70Xq)3sk zw$g!sHLQ9!zwr8Z9@O`scYMmzvd+`M(St`w^`6Gzu27jh?Iwu;gMWN6q$T68F6xyD zYlLgq06cc;3MvdKT4Yf$ge(#fnH6amRRMuw5m&4j2mW;x!u6^n=v%SwgYAItmQdMS zgFmm(7v2Z2qCf}Hb&!=&RWed&5z+QYPy|_F_YX>fDvad4pX>K@(2@WJ%6s+3aI>Yz z!(f0T7y}v;lbP5#(dDjPo5?5SaGHc8TkyI2s-ZoSiH%bjDn=EdXt0e?#XYaUdXhj5 z=9Yi}8(@DS3X3oPf06+?Z2+=}FcJ$11|dL+fI-`;M?9Gzg{1|9*k_v+`*i>S91eAK4xCJ9@-`?1n<{YtEAf>8!`b6<04mm!3YGHk zs1EAtxd=xO_vKHPgamVQg?m0gVj)nO8*(+FKPAQ)>O?}ZO8_sQ*H4wAnFL7LfFdgG z+<12hzR(oI51tCL+g&h!^%yv8m?^N0#r*Dw+;+X?cM}JTod5=0*kZT>Jo*tPZ16)p z2+tx?Ak4~q@TP~j0R@tz5C%lhuAyU-vKJGZ^pt!p3I~hD2)UaTSpi4H@dJ4jtr(9J zcA_pA^MG_JNSeD#{70cyx)BCLrfA^+EfBia?vtza?(Mg}g@oBLWh);xJ2!cil|UJ6 zZgt$7snz~`t}`j!mwb^!IDf}U-$L|>JCHYOZpNlgzYhm@zSM>$i&|h8!Rm+r*^q>U z)uCVkRG^H??7auty|=Iywp?BU0lB1OL`Yka4Ke_V1NFun6i=K<+1vIgMsgM1G&9iv ziwpPoI3h8yH3Hg5x}F}X0k0{Ney*P%Pe=qtB11B{&mOOLeDt9J5(p{Ax#ua#P!%v0 zfY$Nwsf@8fSE+~^<@eCf#(z0!_IlOP*q5_H*&|I0EMdn3Ty5dv*xHwS{QC~ zI-!DsGb?5n$Z`N&Z%8Fr2up3&-<*%Jy6x4&V|awh5hs)MjJ~$A4^(!37P^Yw1qJ83 z+pJwL|EUI1u(oqQ(>+oE8VuKGpB@xd#FILS28`#sr(FO2tHtCLpbAf1-&gYGimJ3;NF zrfq?kub*`zCkjmg(!P~scFs$L-7Ou4{{tApP7S%MW>D~Pw(80aAOswU?n{Vq#|(9g zoB$$)n^Ov?XXCZko$EgfMj)|V{uu?{rS!aq-aRQOC89B9R%6I;B`R`|-@G>A* z7J?%(Lx_AS>-AD)c-9yuw!OC!sfb0~c#1cMP z^c3Jan`v_oV7BAEZ1gjO5JD0}b!&Rk&J%=OmwA-RZfgzSONrrqFie#Qhzh(;b_oFzCuURr z>%@T;)L=6JAw*UO0CJl9MWpYiT&$5i@W|AxrmquorrfHs;H1R*eIH_=n1D3bO3(=m zsRhvYZ%9$oUO(fuAJ_GFaSLh>aR>}^`S0kx9ifKp&jSbWuJ{&EE^#3WkAMIF*pWMG zXCPUmFbi%NA1%dzS_BeM18xqG^Vfgm_g-Jl-CtBU9Bx`sfv^w84A^*RZ>@S^>}h(HRBEJMagdhLs4_IX|}CF;gUqDYW?X*Hf0q<;pk3j55YL=kI* zg4y1@JhnLn=Sda)?}E)?AlAGI!B&Pj-jD{U73d^vMgv+vqev#@CFu2E1mK3nTccwt z?sORf$&%t$tV9Xzk=P~@@!6S}>4p3oX>G@RZ>T^Cp-D<10gVVYECq}qEUSl%0ML+% znW_kmEyeS5>`_}AB_I~Wf~$nEl;?>2w#IoT{}D&!}gIScS-n5 zyZRti5(A}5s`_G=))4sqz7b^P?vqXmkTWc?h3ijMhZFtmrE=sO)|7@y4Dz!*H zes@Z>S>M#vh#OXcGOOm%oLne0AW0k!m?k-Z0CDqEQF+L;&1?Rt>(sq1%D?VvEv@R& z8^_6nr zgg^+_2=`&FfG=t-WTQY=zWh&qcm}5VzaskuK}%4yO6Z``hec*4(>K&90cJFNrpr3R zt)o5Q?#x2OB4B(OknZ;RE!u8um`&Jjqe+ zag(ljrXQG0@dGuFO5&WlGuc{>&hXWgaP{UB*LXmnJSk}g^$493A|>4Jf`AGXO4i(M zEnyRSgcg|hr`|E%0io9e=3?UO`&iJ7YefO2Ukek zz3+K8DnNSq3$xUTB<5(V(zFYhO2`;o_Ob1xo{ZTDR2(4+k9YQO{joo3q9q7Ma02^E zS1V9TL{icqPAia6N8v#xCz^S#ZpU|cC6Mc$6!A|q&zm~0;mu^#!>FVr^M}7+tD2(t zI+^pl7kxIT78>h=44;lBeJI1(@xbb;dH#5fRyWJWdR_~LY_%NpJPEH-C0p2=L1%6{;TbsD_D4UJ- zGa8ZEgK(tUYiQXhO~asxq5x9T9tLz6i3VdtGNW4pfCAZU)$9(bXWrdP>3#4#&gx|7 z9wKCzE?A4g;1EK%U{)44dj9uRlvDvBDhE%6kRrfD%eB}=lUy9GE-$qGURu{lhPhy$ zQ%>KlgN4CBEa-0w_>@@7DyO-37kw_CcLLQkRr+-1FvqR53lW8La+dz5y$x6 zxG5`;i}4==&n5OP(upl#AC5lF%s!lHC|L9ohs7*qRPBeUFa$VNZ2UX02f-y zt=xiPp@e`Z2=X4Pn&cr$vJh>cgwq-y^Dz9A>z#ttGKZ-9W>}$z5HVcR3;xN?2%XBt zd}Xh{W*n@p3*=U1w9qj0{a;LzSz?G|8)(jT^hnPPJ?CeqLv>A;jz|;ZL!-tFFZ{v|JO{veS1Db@tZ`t?*S!HKc0^9$%k*wz54gxT4v!w~NvMASXD| z2VUn0-nVnS0%LvF;>?5ZpkMHKeLI>bNOoB8Iqq9i|Ayb0FAACJGox)>P58 zk=m6AAi7;%0A1!fGB2!C(-*s*?j(cEoU-BJM@+@$JE|hwMh;lSd2wnABV0Z<{PG32 zidZ0J#RdU zfbO4gO+ZpWva;pzLMCoAtfZ2alsDh5zqcBxiQV+2TGQwa(SA=s03SZySsz<4Ifv=d z-{A?+d$hn7HSRBFpZt!Dps!#B02!>fR>9zE=`2EusooI;D^~kugam>&x@=Si#z&wK zr3|Yiupp+F%AY>QhcVSU(`maGP^2K`7^v%-#54h5rNw~*+L3-ebyE80Ho0v2-s=$WCgX~JnVXPesw+|Fr={Tkc`N2@FFa6CvF-g5)}Jfv87_IS$fn#M_b zb8bI-?k*$T6F=#a=>2JGy%s?P!VW3}9$5`im?g5a31~PRTqD6yw8;F!p+T{;4Y2Tv z@*b8&MAW0IyM@Jf+{3|C@<7zbpgTRUk;)K=;NLUpf)^lW0Vow_o!M1FB;^B#m=);( z6q)!g{>eJqb<(@aZzy(Bp~#6H4M1p>7oy-7Qu1z}?{%xM6D^g&&vSkM zNklAwKLD|g*&=^e2ssnNbxcj4hL9Vm4U_!Eh4s)hkqnN|9*{ab|0C__=ot+qFPun) zXFOrHnAZA=BYV@r*SRtF9M2C;&W6~^TasHusq>6S6l2M31NOsq)CFB3#h3xbWQlw( zv>F6sp~!BJg1la)te@2`3S&T>AH^VA8^nmlE!dzxMbmBc6d03l zf*tdY14;;lY4_pO$rkU1K(5lJxcU@>1|%)?VndmNxSsRYyE+CLuTnPt$3X3ZDP9)7 z#$&%9nabf8Do*9r=*==&_g-Yi>^!Q9HkOy zG&LKuJPI0JWc5q0q0|B38(%E1#!M-&z!#v}_ znkOudUWm|5Dzgz9RkT1;B5~)UVbGxqc9MVB4x>dbxzy$M<3QN_{7Tf7Cqnfu!o2F>bsD(Ch>xXOSGB*^xG!J|E zH$T{DAFbilRktNdG8ht(8RWXR*MFE%buM8$6*Tc7Wj51rm=i3+`J*#EF^29_ndUl% z{=fhL4s1c12zWy#QwT@@{an-l5}}LY)4B&)S@b2Lp5?@rZl_?!U)s(MRpbbZ*k-C) zYSW#^0a_jAL+?52EfnJ*6AG_TXjd+PC2W_Ceb$QQb;HXPiw*}77AtdeBh}p- zzyy}xO~$qAC90pOYzrXBe}00E=x#AcMee{B+mhVlD?~_0CUP*El9U2by6eYvD<7JdEnB#F_Qw~WeG z-#36$u=H?8p_zIyArz*S`b72t_;={^kSykjbyQ?&iTL&Sg*p25Ltp65pY}>; zl|^`E4C1&POPHM~8>wN-IV0X*Z%PDJH*&8Dr#kyq4m)4I$tS~i)wP(S^=GjszZ47X1pm^<8>yWKXwvAhnZBnaI+ zl29wOMcb|25psC7!yHT~+?=FmyzT0!L1I~|M8#s|!sYbp3!e}m^gNHfg1o_VDw^mt zcVHw~=-r%2sDE2}SBpoH%j}PTsV7s&e@+r8Y zd{kN#j9Yl5HtJJ?5Z=kp5=K*R$P~7~Tp=ZvnoPp^|1dT4my0Lv9qb#_VNPz3hSc2J zK{fYk`L3o4IyI!JWtZk2uGD>T=IrB(CzP=G#4)`1Z(BDkMLV@zWOC3k;nKsfLnA>(&Hf6 zLv75;rm);bHl{qF>=2hZccb^hbd(X;STMG0ahw*q%gK7eHE+tT3|PC+=tbC#YkiBd zGyx5hlXlKeO}qU9wD3t0Rq!=Ha3|10@ z{M{}K4{N91)`ent9Zu3D>452xAF`Wk8lmsUmWa>lB2+{+xWNrxliU=$kE4`mOH^jAhd|&9o#+P%aeAl{-vLUtHN#rF_fl#tUv2{| ziD2ExbOX;8aLzyJw(-B}e!dD@I;ij8p3&h&>Et*1I+QTpZaNx3s-n(hS-aNWL5vcO%NrYuGy$z2~r|%2e3Kt)`+H!vEyx)OAp+JqzqnR1flrv z@ZWZJ2aca67H3*sOu={}e-JV=mL!rXQ1G}^i)_;2ZPkHv1V8`S5VRw)P*|ir5-7#E zZqH-}Vimh!yhdW2;xbUQP`4=;O)kI8_YrLa`RuhH&NKpIAm45U`qe>Id@XKHd#D?z z!fSna5zg+4_;<7Ws9L7poSD~$NDNM>N0Dbb;rgqV8^U2$sE`L}PcDrfy^BIp?%Xh% zxx5aggEH21#Yqn`Bk^ipHrnyv0nN7pspP6zX&eY0#Nsj_K9Uu+slo4Xs-V{q)rmFfVjx+4uQ@MM0pS37c{OZTDD@v71Jmw;w+kKf9GD6!Ul3 zeSAm9p&XLZNPrj`21!9T{)KDgvQIIS&Zk1T>cjyMRCm??%8 z3`NA?$XHG1^7^$YUoB$E6|8@J#W3ROHXT}_uQ7w(8dwzJOyn5%-U}{PXrz+SCb@0L zSQjhU!KV0O`#HJ^_-n=JU7(DO!}Tt^ivvS3S~mZW3vEg;UBB$x)>lmwPF^&=Ua%SuKvtpe;*RlV7IFhOoWuinK;$MED@`7>! z{bj&Dz}7hVMrX^wiorN3^3}>j&*N-{0mk%;OY#)A5-X(RcW<4}x@R5KYk?8o|f@WIm)jq|FZAC-pqAi9-Gw_l!&2AYRT9dxQ&QrY`p5+Y7)r~(iuUE=>O`^wx{FHJnq^*~4H0iKU^L0W@;35d_ z?`U|}s~ljAq@dq&O6DP$d|8mv?$Bcg>PjPycvmvQ^bnHBi6IZT#DJ+eYw-7C@E77V*30XadlA-yB8Q$RFR7F6sF8Sr>+9)tIqX1M1 zH9^!W58~E7uv#Yq2Z6?<|1lP_PKp>@x+CdfM{(BT6%=08lPYigkt*Jfv2G8)8mpin zdkod`@yCxkcGi7AWVjLT%Ti@sjrS#Sl$S(iKGp|RS&riDIU<%b$w+QrxRlKDao5^g zO~zj%K1>^J`&!_|x;x{jwo@{nkO6&WQtbsjz8p&k>?GUSOK!9N$_0y8wD&5mS&_BU z29jri`^47wZ9R?Co7^Emf>ZKfG1VIR_29-~yE$cE>8c&FP6LW#1a=3Xb_H5xKp$Cd z&X>W9U9P9;Gz$)ESL12-(6{@zlfIAh5zNHjpYZbK)@11&W-797k(@)(Q5E z0n3+^OqV^evTn%m{GS~SU0;9(dHnl6%4Re8xgLqOHS&~GqE5bh;Ecn8u?i;EQhR&G zGj$!Xl%ByPd30AFpHe5ILD5l8FTv{z7D$6+MC@Ih{I|xQ+*kQ=!2@3~*>#2!`}%}i}|=o^S!)) zLX$qyor2Yd;3Uzd+CC)^oJM2?)Twjm4F%+|3l`V}Vv{9b{QOfj*nnr0l5H$Ldk(0Q5~!5C>WJtC88mRb|Ux5Awd~Krkqj2$+U4 zcHl#PgQj!_;(s7~-MqV3`!X8fYZYzrc6z5|laYc7;hS{R=m(V9!nY|0 zDYc@HwR!Mpc^MnD#@rZ>kT7GLZ@h(VzK|i)12Q3{A_`w0BYj1t9>nkx(;yQ*^tq7b zHL@kL=LU6LoO%;+&j`Cd@WQJ_UZdDLCOpy}P#apy$MTC2R!L9AlfT^yZ_Vmjea8yt z$bIO31n6#$CcCJx>HgMDn*7RoYJHVd_r;9B@||MGM4MEI2GTBho@s~|PF=dSq~mRn zW*o3g#Bz}^arMUU$_4zhXCjFQFeiKr9L&Y0HUI6ljVtRm%T@hhGKx+SOJTwji238!BYB+w00kHUo+Q+d|6X0EZ+&asCYL6i6#xl!0W>gk(=Sy3#cutn)47bG zSBtespY*Z;eHf#nr`^orwga=XmeeOgXyXvtiNo2D`xyg8GFhI5lGVNri59rEnXDnA zY8SQXRGmt={vS57mjo$l@Pum3erOnj0_g zi--LlRSs)ZUOWo&e151qDxfi@ecBG2bKnSwGBnu(ulLLr`?V^LIqS$eid<5z$PC{- z^)H?c3GzkL8Tt->)Z8pD;2WmW6B=!rzUuRVwz{y3|Bmc1I< z_J*D(FvBTkwwZNju5lB<{>ZJ4$O2rn)Ld#<@-Cc2`*61*G>j(dj9q-}A9CL(aJysv z(D?V#=klg#wE|Hk=+#}>78ZB+J0tUb>E01{vjJ=|RH9K8P9JrZ-R_AmmH z;L5-DUwQV)qmB*k`cH673&Ud?Dt}uoQB@OlTc**ipK&TV(5EB-(# z*U;f4zbBwf9XQn?xBK#g&enJi0i3~J0q8mNjDk_{>iHXr$ruOF;rGnDX`*4>80=8khPIu^fj ziT8r!)6h#}2im{TGU?l+iebhHEf29^f=NYF8?gs|JD%K_X0jE~(&7a&-dwIDHG*Vh zaMGlaRY=OdUeWzMz|fu!BY1a(+~BRx5qXHofOLQFfD6=w{|I!ic`HroURU@R>8-M_ zn1Rkr#MN(P68o&z7ZgOf|Htu{8kA=2EBpq)Vj2XvWfyVHET+bAeu3Za&hG417{BF& zI^eojZ$@j~C~FD2h8{{G2&>>maTETi==Wp#O3z94nWS1L5od_F_t7t2p$ac=#4IG@ zT_8qQ(ljj%mbdMH0*1cRzTBjD$ikC6lRHNjSzq=+!rE#tMpMi3Nl%nwnOjl1>^=%2 zV`Jm5_WL*c(6AsEcOMp`U|J>HPZes?ffx$G9k*e6o1iN+NcS(d;#eK8lR%$~XDjJg zPbkTvy?7GMU=)DF+6J>zIe4M#F^U*(BkaIpG@p7XT)F*Q41Cwg0Z|~qUoF1_Jt{UZ zVkz9tHM6@l5fF!?sM{O{uWBi?wHKO|$P3}@5|ZS$dikn}+fd!EkQC}TM2pVcBR5I> z)<~Z)k$}=psQ){`^-%XjrRANohfzZ~P3k|6DipT?2a2nO`!g)E~SAuHdn@6ZIO1 zYe;ZNy}Bj>>gI8;f1S$1&nVqtNROUbV62voBia<)ZZ2VPLyRmZ+HK>>Cm+l#v{z>r z#eVU<{(|Q=9e5@>P{qXj#3q0M00k)lo+i|f|6J)tH=P75Ob+*9tR6@cNTe(SAxb`W4W+$J2FV(lW(voZmUy9rg4ob=yf}P5L9?jnK(#C=$NT2 zEN_c4NH4>VtaDaeR>+sWuJGj@SUWZgL$FutaGWolunVZQZ62mS)Pja8f5&Y7HdKojsp_&(xhKQLEYko_`kju)|sZi|+pE zlG*Z%eqqJ z$UtTLvECqavEqUXCl^5@wKa710K#PSvn>!j1#{i~uGZ8m$NmD%1uFvGxwwD{p%%Ut zUPI|@?mP65GG~&YQ2dIhC$GK+-u8@1)V-UtErvV5P4KA*_jBE2HyrGbLKUml>+xkq zd7skSZJ@F<>`igFSoTb?{b>oNabSZ`|2U&Wt|~{0z)7jjd$QPQ;S_Qjfxi6|raSCR zseI}#ll5lrY7K)AUFyevm_bAb-hZod&n}hI} zUU1uiyM6xmT)n@;a1dp)$1}xXizJ7(@OimplHWF?0>1ZP5(Klh4QquR-2be=!VZ;% zW&tIf3YWnzua^zZwoePNAIio#YLt`Z0fCW9HbhS{zTisaZ?kkStkMrD+$|WS;c-Ud zc7uu!?xQyV!@Ll0<==`8mhEn!W4TFU~;bz z2DcPEET<_m%~GMjN&;iziy0e4oj*P77G}7!d^#7tRXT}Yl3AHwu=0t;h!h!j3EJtH z8HllXj`4lDnO0@ zg2lTqm_`r$EtTST*dfl6$l&o9TUy0Ysf) z&%9^Us{8ceg8X{EPwte6srpwuLBAg&Q6_gSLPrnV_x|kPh)of<&w*GOgS>NF{<^_E zdQW4HF;CB-I|7{AB98MLPDT8Ia{?AHlF{9<6llDCS0Kk@5rzPP>Axyu`z}!DhbYu+ zFc|LZ-Vw4AQobyy#yiLw8`}V*Olyr+9c#S%vU7jv6H{>9iIfkb2#DTA0KkQwiUb-oc6Rb- znfW2EH%r|NT+l*!-A^1MkTIpI2|XuuX`k>Po92ui54c@QXf$bd97F7r4;b})OW^tG zK&|3r%vXLVJwSq`&3xvwZ1@Of>+NIXaM;+0fC&eJDiZCS+7J3}*6oW4000j$L7Fa; z(y1^hkdOWh=Rml>zyS{`0qTFlYexSh>f}CZlUx-qEWoR091fcbi#dxxE7!%W#+ls6 z5=vtbWS&N?I6ti4`y3j)k*kU{`#G^=$DmPO|MuaC+`OU~13t*|9AvrX*HP%D3RaQH zP}aRZ0m_c8<1LpR`OqzRKdDE+pZ6fJt4eS;>+g*=*qXjgFUM*sY`+qu;wH(dHG) zeu+IkNP588-!0sb3g8dV{Wg;na1d-eH{ot=(e+R7J9cc^#cPy}lWSqMDJb;)`!uPF ziE}u2M7N5ST`Z!jfJTB9ZBe%}qLhW-5H|p98XMeUsN!2FodqZ_@5G9Y7uG9WO}33V z0Xdi2#y+IscyN*DGYInUgZ*-hZVGFPP`vBs-P5Xo^6w*w@2q*uHF6n8+#Z6(bTb!C*5N}(FJ3JvI|LP&Qw5)P$e&T zjmCtA#Xp9io`U=^_hf1t?gSSKTv`!v!FmtKuMuFwjqM(=*Rz880(bW;sCexJiD4|> z6zI-q&X@=x7JQi$fFFd9eA&ObdzMdjJo~GpVf_IsxFvE`?fZ`|1n5FPz4stDEb1ug zW$#Gbt^u9{ObA$VdHA(I!*I~~BavXGm4Lp(CdnlTn z6miRAWRY;v&9&I+OFC*!^zDQ2X>|(hfxhCYA75RB24OcnYR}xedusVGz6 zNWF+}BVSEs8!4>Q&&VHFmm2g`@svGKz3v*r)b-m%B3=EwK5?Sfk-(-Ezm6mBmC$aB z8%ys4rX`06TFDPuq-r_S^B`|hWXJSI8+^T)=f3AS!{fuAVDj^F^MddTnAY7;VZ|c+ zY)$+StFIXi!b5jSMe&RtX+i@cC4sxUQi2zVh?bz>DO%jrQ35affj*A^KsvkjLK6C? z{4(_af+t?oZ&^{^J)JBOHvs*;BF2AIYe#6L<4Az2*>fY$ygSgEFJp|WWIhZKETIR& zQ?FrS4MQwFD>Lv_mk0|?jDX2osxsZg1o(pAqs13$F$f|QdSxvDizkVD7+%$4q+nVgc5+Nj|A3>|=# z$A;EK#WB(rbiN(E&W$sp@h{vLnsx>^)Y2VN)38=6O_3anyk%j|m#KZ8BHgUtases# z1M$e%vPR#5Fc1?qG06DYV~=fla)16)(Qsm)QR;@<*fQ81A3uGVVAH|kS+bVW$Q=QC z{%#HBOHvewTgU>7KG{xSflHKBz|EoRQRw?HoK!{ul8mh2{zy3|KHYiu0|2|e+3Llo zr17rWc|%kufTReg66zg$YcSpLkZ zXtWs-HuK&6`tx8TA3^2o2_1V)QI>Sp3dv~!$4NoZVj0MRHsto)H;VJ%g;$C}>??!) zC@zN?$gkN&)8GADrKHF1H)3`YWVjHZuQeTqBd=7+kl5v&}uU zHZ}g1k_*4q0;8xZs>YW6gsuPhbeqJ-$KcrR%PEkjY$^)Wbr@iC`D$mn!BaXQk}e4e z)Be#gh`t0Oq#fi>Wf~d|dMea&x<}2$S`coZ_o_=6wuaxxjSL7dl3hFdd4@{~1DzJ0 zjuG5-TAJZd17B}LZBPZ_mN)WMiw!Eu0}9|(GU~BCBz8|P#5^8xGb#d7nc%Np3VKM;7p1dI& z-YT#g1K&9{aznQ(X(Efiw8CAgAmCI%`+UE6-YBHo8>#@(xDk!9cZ!wM*0cKoSCp*@ zy_BYpoSL#`CHuVts4>(#G$l2<&~oyr%GM{FtY)J+j6B zv5eKHvc9)a_J1?||5Nz3yX|rf5XV@1)f~fW?vaPr zk{EXUwysNb^s9QLX=#5EMJu(OBf5?hzu7I zQkjQ+fs5DJw~(Rp_;_|7>JM<2doD$y*+%RrPSIy_`x#83J94@b*J&O*rT)AIhCew3 zm0iX(2z1FL;M&Kyg#0c`pjTVCX!o3|VMqg$yK)`q8Rs>9$ul@y_JiLB>u%YAFa04WfXSx`B?d5CnHKS7vL=zk(SV$S0}CU^)Wt~ z()!Va7g!|;HOJc7yC^_O^hT-etE~nB0k*vYBvjHOp4gAI4|3KLcSL{;-cgjbfYm~s zE5MULJ3P8z8IvYB{BhKtqTF?#=`Hiqh8H`uez&@Jm>M@aQ*Ll z^5~>oeALtSd=EmgPV71@6$hv8|{3T{VDdXV)KQoit@wbG4v{;1Eu zGf-2O&^9?Ir3KH~;`l1H4Hd(7;qv8G(@2}^=-bu1yhJElgM6l zsGM?`fR5j_x@%n0$rG0AvhT$9D`5H;`?cp&`L7mTpAOqdsQ>^4PywDw)Q|sdU!7R30paSBXMQQ~4T_Id@0YYfp1fPzL87f&oU(r+CuU2G)VB#zNdek8uK=<|)u_byYcebIN64r~H=&Us@vJ z*&WXle0X~X0-;^wgM_btRgxR1gX%N_nbxYt`dFst7&-u+>$;}gOSJ&%ZFzB)tn(f) zWV*yI(g37+f{KouiO%)7E7V})i};B|AFU2rAEpeHK~G7Nr3uTb75%e<;fb7QeS_XP zffQ6x;POI|ngj}KkpgA@>ZM#mec)5!v; zV^~k6b*&jdkToH4h~QV?oPLah!DDj{Wc-a~Ym`3(RyyJ zM~1g@_o_Ir&oq1GWK;AQrPD&r$3pUwt$nku3gHhv=8HTp)!-YN^ijhxVx2Q}dVEjX zgHkv@GR2FSB)K}Eg;cTN`{-0xFR<%%%J#upq4G$qta7kolZ5&j)uZ5hWV`Hlo zloWsACNRi*mkzsS|0>$$k0Myw=sG@qPtKz5tDVkRN|;vjPWRKSqu2O6+zN_SCS_HL z&=O+IGJN-OJRsweTS}6Rm1mrsbv9^bO*;&${`~wV&MdcChtS1plL~a$e`mF_g=hX)?sOTie!PGstftO{4_-XBq$aG zcyK-k{3@$>$mMN&L8f#CUjlRUr-;DOmjzFrcDRYauCWUVq`t2hTLd$N{owhp6S7)Z zH%9kp4?_pbvn(o_nY&FSQJ4uo{5J%;QeWMNq`511@=NT?&%8gB`pvL`HDR1KMps)^ zhHj#l$3ciu^5CIlvL6X8#B=rhmU;1!vCEpOpMGN0bSEP#11YHi0A2X(Ege2p4ZOhxQt?|1e23?Ndv*QiE{9Vvs=a;+hv76<0eV3aoE5qU771y{`) zXmhKf!dRs4Rgt+6TT)Ccv2R@|N8SbMv4iS%`k(w^gY@Cx`OEBU zgUtxP`Kkt9I*VDl`Uw^BHZHOV+yG+>MK%p0GkFE)38_A|r*WwO9f6WcXzE;kdf!YF z|0eO}PO&!!g%D7%(Jt)YL|~#lw$m!{kGx~1M$?SgXR`}TC4?qIRI3T5=!nQ%l2cF> zn8Js>31r3F!Eb~)W1eun@MF@(*Q<`@*S$C313p_F+z>EB$M}l)pkyyHbaw&)!2kdS zjsc!b)Q|sdU!_*r^fNj31RYZ4Rn<}$xCFP)F6d}h@7ljw?(So(k~1vvsI$>8y0W{)8Xh@sRI^3{ESMebYd$&@gX} zVT|!D4)O^P9wNJ7537Pu>NyJz$RCpbuaFLQo+HB;Hc!sB7O%9E=N!)VS=wN$KY1Bd_L&yBb z&di0BTl;)wetO^OMp+__!t|spXD-AlkGr!)-yi`HkpdNXgvZ`m(#u2rW*jNp1nLjp zVzro@5@c${qzK5(p#@i$!0tD@cR?X;+zha`t=I`Z`jwIa2^sEl<#E*&p3(H~UpK~d zhf+l7-$^dZ7OPI%g8h8U>xVg5h1P*|K0iW~pN<-%-r;0dIa_>Yn{Xk(gZ#;Lr7Fv8 z+Q#|}jAr2$J!Vn9X9aa*oBj z(Rh{G!TJECh^M@j0XQfCuA67P5{7Y73opy_o->1j(>#c&MV}wsdzfw%^7+;Pyajq0 zHjMNDi7>~a5r5D6*J=PtRLtDEtt`)1L{XP?1JV@%7!uc8s=WVpW)V}QUYe0-{3heW zA46?qR`-t1!a2dS`!9%u9)?IsCsKb>F|`(xM7zu$CVy<2WZN7_LQwCZQP=)TSUNWb zws*ElMlK0mVDK^|?e`&e@#TTN$1({J;l~6N8k$n=aS-EaatZ)VTaMCJr0I^D1(%uk>5EYS1i25i?osx3ASw3b1<{K#nanmhP(>x_#T^&)Hd&s6y=qP^&0fpr~*>3${A{HwP_*BwKb& zDY9p*SXIKn=QI4G*^S?u?va2TD<570hOKF=Qlr6yG9Q@bg8z&sIn4DLK_*)qW7e&* zY~}4%MW8_CG`dbDLkC{<$AgaspNZK7+Grl6l1s08tGm02US0G51yWm7bxY5jME8V522L{jAhxQ}H>KKmnYM^l`&L)24t)qDe3a~OHZU{V zs=i)z|Dx|e4UxL$S{O5n+bGb;){Qo4N8~KEboQ{H?e}_IjLh*33=1nPxid4Tp^?*Y z@Ia}1AZ4lZTtg6APXLCD0)TE9tDh4~Dq}*Y@UYRbfKHbLDhq<}A@k7T>}^sjk>Wzi zB=9_eEK(=oUs+y@PInkYD$3D>1A(l)Q!s}Q0ja6yaD5F0gD;$@q~{eGFegilj-ONvZyWhSF#;98t!6!^a|4Dg^pT5nXrzB8hsn#?p0k4HOH)?yz ztsCaAOIzO(!en}bHwvMHt1^N%C4SE=i*H#rQl%Qj1p+VJbbmRxOW+WM5Juy+w{Gup zjP;Fz+~2QmC}Ac?i`7op_buP0aru%dLO&9;5j*iM$IR3 zcu=)g1w^oji1VgcB<+#00axB7z3ktZ1^Ry6=p&ZJ--ykYnc$5?#V3eKeo}lvsyx@b z+Uydn@=5~#4p@Q;9UAEnPBZ-fn6d)XM0=}A#vMr^&__HlyF5tgp`zgJKO9)x2fUr3 z9E)(c3y&%NH_$?@m8+byiW3##%Dc)y>0Lqs>5R9i=IZ((j975I@ND5U2UI$KV#~*H zIbr+k3|>3WNBI;}3l9d>^`weyX}4q~vg>}fMY&P%3kZkxP$$OjZ^|P-aEP`OGW@jW zo|g7Hl{>#7eJSQ!r{;z>(@eFHo2J|XjWrv3%m3(n7JSw=!~hPTtS9fQI;USmIim`(Xwv0m{WQFp#|Q(MxhIVmCp>~b^i6_hs^Bl*#-eq2?F=_e*11`q1v zH^n3ZpJ^g`A2fMXhe3yYDge;ue%$K0u>eUh(P111nzx}KAw#QMw6$;lr&yo%5)aW7 ze4_^E&-Kno#H>{=J(o0X><6sHvHmKMS39&X?@={2*%AR+D41&eDyoPRXEnM=SDB^ zdDwM=_BaSTAp^e$qw3|equkv&xSh`g7YA4m^=t{(ZH1)O{`Wf)ap0t1F7b{IYV}C8 z^Dc1122ZcAZ6dr&j{XH{JaT)GF-x4Yfm}EgBQ}NqcCwefr;t_9w%-FsB|ml-UTsA| zdJrtF4XJ!%&DXDHBCIL9OUw;*1i3`#WFgbDd3Y5X?!AzuOl5p9wZZ->dM~<#iH-i?%?KHB%kV7 zc^Ac0Yz`uvf^>r%AfAKGv1y>N}{xDo-XD; z?5c0q^$#=mNaR}BK%}U0C-MS2313Tl;{wS)y9d1Cy^O_23Zh)b8tBFkfr?tc3~LT2 zC6xizn{*gvTS1NU0~dGW(^7*pUcD0&foaC35)p-5&gOo|<;{PO2Bou@Cc?S(0rEis zx@+peyQvWcjhjv9awp9OU9qN-;pj7lRoC zz9<*!sWPBjNIis~<$XtH^itFP0_w_luV=vOYSrKM;rC6QS44O(=&V%81N75=b{Rea zzjJ)X=rBxl9e&2Vp06!|S{r8@S15Z-d1g{wg1UgSGTqs{8z(Efu87jfCTL_IR z_W|)E&rr!lKCRSQ9B*&z4T!0Jt(+`)maP|zxUK$#`RzLd5%C&u@&0(m!rM<%WsqCf z*o*0urvD~E-oDjqbRk)j^_wKTd?(~5i@Z~F=Pqw#&c)`?(y1qW!gr%F{DAG+67wdi z)ZA7T4Mxk9>5l-L>SJveuI(^_316~+SrWN?AyD{LZFFboS)4;;8iq^DFVs^V-alEi zfu_+tFL)($5PF`=H;tHAp;XKsr+=9?S#oWFb{qYKq$ECn9n0_SiN4RA5< zmmL0qpOpdi_#B1uR(|x;9a+~Pcj6)wk_8uQqq?K+f^f}TbUZE((odA8Ihm^y%TAL& z&=6STx8A_cK;2d?K+PvwFl2SYY&ziOt~>Q zLkof>wl=#?*c7rR}+C>>_CME$TgwR)*VCz`W$xzsfX^m`ms8v zfi=-QmEIfpyd{R6X+|@?R8yo$&evatf-dvH$ju1FX);7snuMxdr2=0LBuO*SFPavi zVPA`_@ptf&E5u34T`YGr_Kn%Kwhd#>HZ!E$EwTuhS`Uy+FMV2nOxn1ux`VZv3UW!T zx)0m$;c;K(J4r9w<}P^L6!OihnR-fW>aJSb>z|%5M2{B1geg!(WI#>yB1Zhc~RVb>vPtyebgs&%fI)dJH2BOiWuS6{CdfsM4>% z^}-2DeakQRIu*l2pp5rR|2T+~CUd*ZQmXUZIx0HmBp5zx0(yK|grn8*)JQ5a{I?cOxB+7vku<9UFn zUa8*S1!p(P_{fDTxj;Q)6SNX-mx|SX4UCa;l9nb7c)4*#X#}y(hlC~VfyrAKPR8%0 z)jjVo-{#=9o3wo$1roJl@P1-o1#>d^koBZ!;d+vHkDa5e6IZB@TOn_rnr~gAM{TOE zQSzlw+|B`7iGLiF1{BgiP}kJ`9mqmWl+2pcF*XW9%Sqx7CFJ;bTj6TBjo_UHw@cq?>aF>cF4KW zVR_^8?$$uRYV+o)cu@s_F3syk2}*hS3kMuw){X>0K}9h=^k% zr!k~%xdT}!luvUW3gjp#a1%;TRZ+k`(#fY+;u2?E2@THdlgztG*9((hk_ zmn?~5b+9OSzJrsF^fHGSOqA2b2@NFUSnr;sM_UYS8k1&zH65raY`P^4idPVL_cPxH z3HlUvNiIe5^GcJmcZZ4ckA-u)#m)9WBzn1)4A=r|xb5h2p_6`ygHx(i()|!GskN(5 ze1zcr+xr(d%uFN!g?>m2tyy+~*YfQ+0&Yeo>Oc`s zXaE2OeF2_u)Q$gbf@sd8E*#*v5CsB>k^tWZK7CP)0L4_&F2^Pv&TJdt`h`ija=voQ zvE2$(I(`#0kNitJ)dImFtzY-R!l)L$WMZ2{mFh)=(6uyDHlMjfPDO>jO~2x&d?>`0_gGrjhVY zzjJLL7U%Y#d^fWPuy-aG2_9`U2*bq>J-bYgl)(xPK^ydCydTnt=C_DfWooB=kQmy6 zQ0z7TE-!k@P`Qs`O~)8I&lIbya-~8{rHM>XHp6IS4u7L^XH?epqAcvex!N$#dJ&XF zf-rpYSwiO4*}fu2J{Y&FSm6f7@do4dAyGz#N~{gf99+KuhEVenLvVmhl+`_#dR~z{ni>WOZDb=>KlqGv2MF=xcD?9q`E)v$v2#okbjIVW0Q~!rCb)bn&h2n~jW- zB8GnlG(Fd&;x}1gZF8?$;!zBx1QA~Xp{ddWC>7uE*2fx-!c#Z`9zl6P&88XeF+8C( zMy;c>$Xm5ybY`v%GZz`q4%KDAMb7^6c{#GA)SezOjg_W}5_nIvW>h(9o&DQfy@pF8 zo}kt3xLqMt*fb$;D?Vt;73o}<(1&9@bW_hcnR^7~_2b*ONsla|cv#a+&V zo0Xp7zNawKq;O79GZJOzQLV+HyyJa)u}(klm(%!W3ro2l>l0G1iA%ez=3OmZuxEsE z{u(f7FJ1(ppu8;50Pes-B=1jyYTkoU@$;M$97%NNVF_-v5J zPtkZ#2-vCX&!AI9`=3*1==c-GG*xo9ggKhs_!IyDH{;Am2*@(!la@=^$siv2m@`y7 zAu*TlFbcyBIt|=u784ZRhH@I4hm~C8dj8mKvjQ8TJYn-)X&W5zVFh{piUT}TK(IoM z#+9?huz65oDeG$SF9tU^ARG)11x*zsXluds*1I#0rS5CaZ`YE+DC*QE?^Ko+wnIHZ z%2rbkiD_iAcDtM;`NDwuc}r5Imgiu2Gm>NFzev0(&2d*I7ABJAPqTnA4Iou~=A&E(*PXktio_-v?b7UXH#aK) zZ$Oa0@GlAeE|VNbi|?F!3i!Q3I8RgLzJx_&4&mw-U8*K57|(+DbA!Tqncl8p!frGm zf8g{bkwzTEvNIIJ5MR7cJo6pp4!v3Ip7;9Y=kFSvYyw;Sb?`el_q(BULy$!y18-Fa z*@@edrNxaVF*0Pdv({i9aFR7?#*%Fr#DmKQNR&U`@EQ_>&6Dq^z~_Y9kXm-UhdJ8x zLAr5Lt1$X8+G0Qe00krgo^sTU|6pr!&SeTN=QcLm;!J@10wN{$EHWJR05%nW^;ZGS zmuCt>or=U$91^1>_R-xKWW$lJ&Fx2&Pq~&FJ-V(#qyPAohM>?!p^F5R&QxbfT8F+T z{=IM_A1uOE)x{OYD(FAyM8d#Iw=ht)g{wOL}uuoBc8Cen^SNKv3RrXQOJIF-cJ zal28j{zkhN?L^(rFYRG`gDTdp0MEU%0Wh-fN@Q;R&XB5@ZdHTsT@ z%=PQf>PFYSDpGCUo-B@fz`hb|LIVaW*`sVt`CwZZsmyG7a1`56LDgTLNrXPR-GH1C zdviA}_o`>|SJB0m2l+s`Lha{vRoxH3UIT))Uup20rQ9mUMO}NQ!bYWb4Ra}n)*TaK z5ZYFl%mwSp12dOJN9-0P!kGns8iyWTo(8#-&HjK6;eYKAh~R_?#Vw0V6u#tPTohCW z^}i4P^OQl|IAQh$wPz>lW?ptc8K~G#bUGQt$6D7Zh^(wBcJ2z*+LZ%zO5d`5v~_Dv z<&Ivy?Kv!!8OaP+uVn3pPl&bvXwwb-hiHH&wdJkO5{5#-jnLlPBUaxQYV=j1jHgtK ztDGDO$bNcP_DZ_}<@#hx0_|8-FF5ZB_3n{dhBh&76gRtbY^FEAbcMo+b>=X&9N`Fk)fYgrKOm+$B zm%-m)JD->LbSFy!I1XN_V~!uk%^Xd6zl;XorA@#lmR!;-@D!)=my#xgvS2rI%A7mh z>~id!G=CQKHe`?kEvGMS@?zGInAVx{ywUi+<6}Lv=0jZqB#P`3G$*ka;ua5lt<6n^ zUxMp=G4}z(GUN;(V-ajD5ogRBQn)&%F}gQI1`dAN<;bw;=+c^!>T)m8=BtH~8XPU+ zjIw@OBUIgBs?3i~QM}f~Vd46B`HIuq*HP%T%_;bQ=eVfo=9ci{^jZ#qhuoeuRX+(|)E$7jA;} z%WlNq0kX3v%$rL9&GAK@ut!ZL#?Nd1tV{;z*&PIzxfotsKzIIduoS{tC`)_So1p=L zQ(u|HBY#=YXj*`i?)Da4S?C)?z5@HC@9hJ6JtlEbq;<-CwT7oueM^GL%XS(Q zw10PNV)FZ*tp#`Ae*`(@o4D$I|8w{(GMRxR8*p9#zg}G#q8)aDoy)#4O}g{!qi@p> zOhU8rE}?(x7KNkI7ESKkZ^O)fhe=#?@6p?FvLwj>01d-Ins}4?M8Kv(KmB#ufCNaj zJInzZ%(L*%KN1&9UvWL22Zfa6fk!C9kMjLqr%m+cm+1|jqzem#^SU0g%m)baSMrw3 zW3w^?Yx*#Py-pOoz02)yK18j3OPAJXdPD+@b)p%u#~8#c{r{)J&aW z7h@}|i|?Y@A~@4%-nqT~aUMBF=UF2Rp6m;cd|*I8S|On{J!Yk9wfJ&enOAY>m&Kvn z3!{QD8I@s>a7l3FdL6IZ6wxf|S=#eZVBp_9UKR{E_d^UAppA-;bLKI>p-=*+H(KO5 zO_v;+#wmDN8krB??Z^IzdmL^E+^ds8z81~mh@X}`1PbZBAlsMug5jJw9p*#EI`+W6 zmZ=AdX#8^d<_VtFVN6{;xpROr77kt~ESH^tGTFJh`CNYbk7`n9i34hz8fi6@x{S;# zP4j%<|25~*uHo9W9l|l~gFtQ79~ckJobG`T8Llz7gW)@zl>Pt&)R=zqcI?Sdxq;91 z*)RB@I$PzlD?25R5)9tfHdO(&Ky{u7`Xf6{bb^cQ<1hIU%KlEJ3%1ygPA0{v51AMY zJDYdnyu=P1VeT=R;Viw*IK|ud-l(A+AmxBZ6AFrZvfir1Fqvm)CLn2&jc?B9&89tv z_>tD;jH-bO%P%;dDWEeO1!@h=O6nCb5cj^uZkYa%%`Q>XCGH8NpE%^Nm@!J7C?72S z%?Uye=b4{qfnq3kXubSb+i!T9CTAiHRv<#P+aLFdUEuK!eH?e~B->huhuA-miI`Kp zwsc6mnm;r-uk5&~)>cXih!s2CQnD6wux#i$v6tspf!~9S$m#SuTp0Yv_Hj)w>7(ka zHM2RE72UMMZCws47)u&(j+1hAghYeI@7%497P$I|6v5O+1hjmb+H(IkMJ0H0;da%o zPX`ssZ$;#FW_7bSTSA3#?o>klH-{S*mUDF57J{h@-?bP9cpx&J$) zTUsl!m->t&68~{vAutSXy_f}$yEVzL17>v}1Z6UMf34Hl3*8YxFeQTiTl&k6c693; z8xPKc@40JM5~!n@uc+VNSq;Doh<8qpb(ZAdq#0K?3Int24%K{V!5i^Qw;#k4qfSCngFB^&RPnx`w$Z4Eq@8&TdaszC!q3+}|? z$GX17B0w9$l6uu8+Z1kJoIv2~^MXvl6@pID#O%asO^44z5)?tN36=KCP|oLH>FAsZ62)o-c86vTZs z%4U+aw7}ghWt?VJA!yDkJcbS%UWuz>SPDphB;6d5J`#}JfsNXI5H{W=HVUIkCKanS zH}=Kli%gmnJ{v03fufnxI`heTI05$^8KS#02D#Teyc#>@_{(* zUxGBpQWcvCnHd2M5|bG=dsBcglD)qGmVO1=iWA>hAPcsi=^Lbl5W8ik3YnfNyM=CZDSs!NL&Iq3_p@FZjx!p|!EZ!d*CS-+^#V+ZoXazpaO>5_ z$ZvGZB7o(*AWb+KN~24T=N5?if~kFp(Nf&)oVykZwkCLCixf`x*_;%7I4kp|+Q-Qi`Rya5ue2wBX~I;1R+%=H8Q#-ID;*d30|krUM$ z+o66h)||VoxQSb?WzXTDa3B*Nx|DVKDrY>EK%{o*YV@;iG6h*VLQSE)J=TiwsbFyl zBSqltE^zBk!uJGN<$le*DHV`Hwek{=n?zj@{!58t&EQYlz@n``mX0qanhMS$w?4wD zu7Txw%E$o4h!b_jZH8ndX-EmN)5c2r+8KAGa!2XDOy&!V(u>JKR4gH}SBW7jZ*N&A z?(x*wN+VbN#-W@pfiGnH+`ud7DGH zIj`Waybits5tD{=R)P1+qU#=upYAU=Y*Ih9M-C||?87w8b-4LWu3vE-{Y&cxf5J!t zP;e^qMRkHIwYfNWi=COFrpXHfsn~6+Wz%c}#b0x- zf};ENt(_fR9zEJ`Pqzzz(ol$!13K`H~ucKwN+p^b?@=aLq zFVI+f;r^R}zbLt|WGQe#isuY?yVU*`HVtQ&;XqunN8>HNChE)~=ZHy?h(JeCsAZFE zXr>0Ju!|^4Slafsq)HRxI_E&u|M$gpQ#njCW-pKP^t+0-{wI*&00BUGa=G*Nce#o; z2hR{<%_5ACGCO%{#ffnGA$AJj)=KJ~DM>vIHS!FAIOOV%o(wUl2^qz?M#ijf$OTC^ z-g%3G!H@%;Ry5zUu+qRQaZk*9W9Gb*HqG-23UoW|{-hOS10d+DtFB&tCciM5ia;=7 zo3=ZwZkM*<&L315=H5t=_UGg9k+HZ^_guEjWTGbgkzSHu`b&T_b$}UMUgiY6< znc*geRVP#W3dc_k7KsrxcC&sOPv_;8IGde9@a4Z+^l#TLfl6Zl@D>EzRt}b3!D6U$ zm{ArNxCE@#0a5HmX6ny!6=y3vFKa=noG8QPd4U+z`6tMEJk+W!eM|CNUnrBFj7dTP z0^qPzrGb=1X8;gJbJI$g zy#OzD0&I&#)cEi*HKy0!7#m+&*4&>gNNIBU2F>5RwIvw(?Q;=;X#09lm zRg)~KWu$lbpnzn~uZ$VLeB=tlO13zf&|4k3;@shMTf!-`9N*zFM!G#qFB*7ya5lVj zifcQyL}wtuv;A{^lM z+kGR!@F<@h!k-6b5OQDkv^&$?P7YEwtHrp)vX5RSltp!(c{?Yz@J`{Q0fgB1!~DOO z1y~r9I8mX$^AOku@))Q+PRh9V@z3FBN?( zv=nh$PGejSm^NBL(K=5T4qoNcqlSRMnTIw2UgoE(GFEUx~0rfZCNc8&(-cb9Yd%|J~l3>Br8 z#lBhUAUy6eF#Ql4n^ z;ty2hG)V8mS#;(vVlrT$GK)vtc4Y}ZRe(A;n{6AX-m^r_77VXvyn;}t{YLlzTGD5s zOUbXe6)dEY!9gfwr&`T8)$-Xay@J(vEeBBLjId5g^JYx?jA^4kE4bV=+w|7R(SyEr z2cgdgrW_G_`@JUHS#^;Inn#^vH8hi8hLYk=!rNQqc z8!(lZ#b7d+tH?DJPb=`R&U$BUb;?7_a+qEz*!{n>he(tS!++*J>Y~+Gqb@p;q~#n+ zxXN&;u2t2g+eI*Wi(d{vP$jcvKA->q1RnvOmeh^^WKHy(wIBr2G?UF#<>7{qJ6OVW z3`a?v>EM>~Z(cwraltdVA4DC<$EcWpIB{7Mke&Dp~rp?7>Ln_dt|>;&i=T(wNE{al|qI zkEN_QT_db)Mp?NiZPJZC=0KHuq)Q`Sn{8O&5cv7f*-CUEJ|@kh@dvtqK{f{J`IyTQ z&rbLt6C`Oo+7}Ioy91RFiro?IXEo|P#~#5X#1oQSMEnN1K=}-$hULU|DRp?1;Gvaj zu&}3HsNXjvu-J&c!_-+uwfYFTYIb~Hu^yCFf}1IJgI>iHgwHwL{IUq>Zr4A?sx9WC zt_x*0IA^i@HQE}13FgP3?fb!BU#hK&n;Q^gE_7V@=DXvzSFshv_BPil7r+4ajPqic zh1*_RoMJnRH_s{1T{yU5c9@A3c+IoV{-fKUV-QaFmk>s4eE^8<4_=ZuiUnTv7KqgS zTQmC)8q{SwqtWb$X-IgfjFP%ABFMJrrVV&H?5>Ea`+__l5L$W=XSH1bqY*3KTDX>k z;9GiN2*Tkw3tYKi3z<%vO=Wjz@uLj^Dw%Z20T#a3c$p1f7#L5g!xc?g#S&&dkz0&g z^*@}kT^ONVu2i0X5h`k{rBTv%_=Y_L5!klk(rx`QdtyCP5MPRmHLW27?4gEKxr|5V zF)W~M-Zs@xve!|Iez3ID;MoWTHPMOE!kZ(Q$)oD8nP{e_)gaI;vt=&SqY0G^2_N(Y zaX>)DFaug-DSGuDkUNu*mp86JO8I+FQb-jfbs1%AKp5Np~GKqQ!3a)A02- z*lnNQ6_VY0gb!wc4k$cbGf0i-umyKrTVwi$CYytkpiw^~2lnPJ=IM#K1uIezI~O&> zKTNE5HbMb3i*V~s1d?MO9+(kBxC@Ck^eEh=$-Zt}5u=;?j!nCUDHbcJfBAkA=I^7BQ2)$Iqgi6N!7DfT+t~tPRZdP1fFwy8oxs4$%F0$ zRY#QEJNBF-C1y{aBE;V#7U|!2!&ZRYyMKYAk>douxhP9r7t4LF?7;tv!e`8=g!&)$ z+dzi|si1mh00){(TF78~CC#&JeP%*WHRpjD7B$&TY z6gbnqbifO<^uJy+WVLhwe#EM-KT+~PW6b&1U?&sDX{z&NE+dN^ps|P#0O7-OMuF4Zvh)X~E@RYZ4d&LMSN=b5R)*A~$>JcfmVT04y(_6<0u+ z*JE5eDjT;t_0p)i`Ck~g0!W(L2*?EfWC$TQd_$ksf`3saIVED3o7w;=NvW9l+LZtX zM=~Eqzi_P61h$w#zX{yyZ{96uyI^TrKT>OmQyEAmB2hGt6R_aOeTyok9?9zhs>@qJ zV?kWGMu`s9V?t)DY8Ql+T(DL2^mS27xdkk7p28!({9|>ctFJbP3sU%7de%O_`sLMG8%-8t zae7j3zH_+Iud^%!^NzpXcX%791(@NCD>0RDl71#0;emMGCs-LjW;y5@}ln74OVp)M4j)}Ez%e4vJVBAL+#MROY)2v2Z9u|t%*m{21oVjOF$>P?Rt|rui z{rAW8-ivO+v0djS$i|0=Bh0=UD8$$j0-9ZBCNMUIxeV``pP$#&tj6gV7N~B^l&{~0 z*)OVLwB5>Si4vYutfjLmOt{RhExlgx&aaf!EuGX1&q)N~a^Y1=uC1C4}BxIzPH~?xXy!`DtjZMTz8hu@6j_uq^?wINdX*jIt`#h5-AWJ*sQQPg$rY|m^ABo!Mh6YH13xJU4 z2O$cJ_kaDh6)|mgpwuW)C<&*A$xGUg6EsLF$Oi!katN)ZREr|u#Is~+3{uq&@}kK- zXGGuT%xppBQw@*XrVKJCeDYAWP1=0-cwRooS4m3paO79sdfb3yhSPs7a?4i|ub0+( z`rM5a%HfVi6;O;WjSPD2)63F%Q~X+$W#h!?QPV$>(wbi!uw-S*_y-m)y*(PLlYz^2 z)*%;8Bv|xORjFf<$God{wf<1W6RV0mJGoVp98&N@&30aKB?%6Y?f^{yw8be@C19!8 zW@RfjDv&%3975Tp;i>_e%Aj*?1N(ZV_nXz`Qi;A=!aSBw(tgHkP{+CoapOv@l@ipelPnzp-!bNXGrPyreGzAei^-IHxaauj z9b`ReWH=lc?Z1n^4z)MS_hL~WRVPCyu6vDBHZ{}VpO2xC$tEicivzL0SZ?E5b_^U;qMSy`hG2L>ZKJ z*lWB|P^#dFu>@E+o@iLjTK-i;;WU1l^Di-+6iSlan@6rNKE)l!rh3v0NzL^4_BRE~U))e=H0pGg@*dB$CErh2> zPl}Y?IZ5+IUmk69B+TN*drpS7OKEO?!d0e+lAViC7I4%8q==#sdLc|VO5A9O6}E$H z)w2l*t94kRA_Qly0aVMSopuRVOtu!OL6Aa3qH2CAwq~3{scMvI?no@ALkZ9iv{QLN z8%C3aGFzK{m0eV?)>I$(;ZMW%n&KjKB@i0Y1o4%J=0BpZ@(~G~!r*AxZ684o=3WI~ zAmC{KFRpDkr*{i~&F7e%t{c8HHdq;?g{`~w zw)+Z;fFxN8j>1Gjm(BD+|FWlEflj>W$n>=w#f$j%*=ajlBD@;(e+!3?XJ&lg}o<#MZz)%JUS-C znX=(ajb~4YT^Z;-S@nw*T$N|~n0zxaNic?$Ot%XFwY9ewr&$ zW3aSILtc6i)g035k>?~XCsHrHo}y+^WklGhz)TDzi@@G#Tm_fOZ(2_ZKp;I8=c$88 zNN_|id&-I|l#(46honV|)|=u*2^y{aUN$v_(>xk)R0Ag7{Q}Ogu$BABY~@9(qaC;s zon$j2l+1D_LU1D%@yrz4WyTocH4S7pQPM~Aec3X>qgk69bPcOY+lnT;LKuv>SDGQG zRes)eStcjpx=p;V$i{8A{%gCVO*jAQ@9KqZvQD!#Fp$VuH@UEtW_pTL7Gbl#W0=|= zurackV96@nQ%BaYQfK+G>LGfS4W5d{OAy0?m0RwSup$jhi`1|bd+xYV31rE{qK3^< zt>WoeU!LxG+xJ6Rx>h;H9eB2;RL8f}GGjiClTM>dOk!u6$xWj?JMkc(jnfTJU?IQ| zEwbkp^ER%xe?)4hJ&S_-w|nM(sj26y``)!MX6r-78PgQgA7bOgApH_Jnk{L%-9vyNRj12cl2jzl#QkwOvWxxN7K3;@#0aDa-Z zz0f8AW&v~M1qy>QSN!04Zm1UmS^z>|r4U({x?_nDL5M^jatvIle#1IT|1$jpMeoyr zy$bWbF5=ef+aG#&0J^$QZFO9n;Jq#lkX}!lR@(~_@RC}o96UBQ$_dJvIbQ#c_`Ky2 zA|F%#%QoH3AK-TL;0`Eq5g*Lgb;1!@Urw3mWnof?HO7wlqMjk>c+D=O`^9_ zbqq78;TrLmD}v&1sS(ye_0qOhCCq}Fv=u!9mpI;oWClP`DsRmhNH>N2$dwEx$@<<9 zyU9&lveL5j)y;Rl{Uq1w_c=^raGu?IQDqgGHQQ4S+ATWdmB_$w4jW>4WJp#~MR$YOTEnx$B*)8x+ zn_@+jx3{7m7>d!KQtw_o*8r6}Z{8RtB7k`0NBWZ*GY)gQiXot;RoGtROkdV&tbM@F zK$pN-kG?DrdL!YUgcgb&Q~w$(r?+-qfpayoTh@2fn;LRiDr2Xw#qY_s+a`p!}lJK|VFgZ+~|W-0XER z3+1K&qcQW+q%;oH2gmC76KF5e63i~A#t7qF(Y&e4fMGFmLs$g9C_#23;?|~8^D21q z0bBLR?!T6cRfj+AMp=isOxj)Op-W^^6katkD!of`E@1;|GMIB5cAM?-DNzb65Vc!~ zL==DoY8F(1Qv?EpA)!c!F&p)oPH_kd09wg3jX@F}wWvs~bRYGl98vC%eFL9kch=vN z$sasS%bQU;oIb>nPUCjN5ZtQSf)o^o+=LUE4{t-(X!~t3F;hG!4vrR-O zB)E2~B@$j2PLEJg5W$P$=0#|}J?L*hEV&Zi<-HQ35ve|H#Ad7Z;+>1je7ZoDZ1=tS z%-6!W#Yu|xtKe$LAkznk-BZbyVx5f!-Wa%1Jlc~7Ioy9Y>(4Dor=z8P-@Oib&I0B7 z^cxJR9{vHtvgKaFJYwrjpxEuks|>vr8H{EnAV{bpG0zq(dH|{eOEnVi1RrPax?zt8 zMS*#=fC281G1=~BrK^=`{%Wob57djaW_jQ;sUV|+gmfX6xO9*kfy&7oZL3Hjv?mdn z_qurb7JOKirCKzd)=?VJWEo?=e;$qBD$^ImXKVkALs~{Q*B}gCoeIKoJ=U zM|-%~nF(dcvp`>v;`+~c{FJH``Euaoj4iB7tfZ+;2 zXmMZ8w{)PNpWxDbpsmf=dpXB9RM4vkNedXT8<9lPycNjs{(H{isMfjEU@laObixRh zT!cxd)e1|JgzJbcO) z$XttG!UxhVKvpOzv7w?p{mp>~2K)f^^R6Jk?JNn+T_CWBF(Uo|4@Hl9&5wC{H(EnK zdPFpVOZ7kz#OJp$q^&}X=Jn_r12uJy__34q^tJ6VI;WFQZ;${nq?!#SUk`_KRU0Y_?rpxBNi8wCa{c_HCuUyQX_LeMlifNuDP-p>=)q&Vn; zV%b<6WgXE{Bs|QueO}hhe&12DaUhiq8OBhsxwt~f=g7-D%sGKu{!4J1Ktte$PT+Ui zikESg_^#(?U5LGT*a>6RtNpC?r;F2d7tGOrE25DwT;gs*gWb%rSj{iYB%*5yxOd+o z)!PoT3l%k(F4EcKMypZv|959f*y*UJd=rPpT5DS8%%A|JA{*!7QgFnBHyR)g5dfaG zAmB!#L8K5>ZLpvq(Rf^d50inQthw7tm$8308@oUw$B+rNz>O6Zav29Ckl_zv&lY}{ zhB>E~*5F>Evy~c8&1@~%Zo$sSPIp1jFwC+6O3Ch^mZ24$8zg=q>FUhuQLJWj2+ENI)EXJ6pb0?j?rBDWIHFpjD>;4)gw9_n}!oJ+STrT6lJHIgXgx%6s z`^;L&A8bwBJT8<490>Nyv`y5-j+rv5 z>n596{=4_Bi0cML_&`o0xrDDmI%M1wP_C`@ie1%3m7!q&hS|4ry6ait`S!JMd48vE zi+DTS@r+I6-VEp)QaHAO!7}3dT1f6e3U)8_**iftIua!+yeX zwB8w^Zyy-Wxk!qKm*MB&XAX7^6CYPeN*+lLX{^jIQJTLF z5soGPc|2Vvm~P|jKnbcLu`AmDAqtD%fB*0SJ!^t76iieugir!%i%}jjm(84)T z3ddFDD9nHwpopbFkc_9>zMHKE)DR060BQMuPW4=qqjJ*dUS8AE9z>)Pk|0^VSkL$4 zK{G%nBqF;1;sC6onkjXa(AQ^0Lndd91%lRVT3Xi}4|8@a0YJ{-dh$RXXOagCptznAEKp1FPF7AX!Zo#&`V~1aDSbx~0 z4&o+&O-YRkG`Oel8vXwAT@)ZsXGRdI(Sn!jb~Ow#6ypvX@yanrayYxag-G;0mn*<5 z(Gqr3^bBb=k0a%A_QqQ-HfqiaLV~efYwPQC<#)N*ea3V_qITXP-gkcLn3dN8peBws zuxKZIS~6HLx@p)-CbT!*SOJeUdG%A^z~h$$Rj){!yX7K`!59gAxyAs!ZQ-yXS}Qwh zRiMBsG(eC98K%r{OetYyvrG^Wu1y4ym$l3Z@^o2^H8zSQcySXt^N0mxknH2?l0kDp zU7sF6#ax$*Uqt|-y1KNjhvT8GCMSE}S`5G&smE^~9JHB!+(wPO{8jR{l3+cVu!wuW~`&XtSaLB@%qY%SX4Hs}*1Pfflql zFM~Q6y=nw)Q{Vh$`kz(&T4)CjDV`aSt~Tgr@xJ#)NLI{*Xa=7TDL*mR^((DD9*ME( zm2Y{xeOnYIUGHITw{F>^psR~vw*9*iZNdd;3*Nji2=cOkoy5Hu$3jA?h(;tRock*g z!N>rxAgusr8VfHzVWN1vf!ZO*{U!t*NnHFY=?8}(Q&l<5J3|v<;ykls zlLm8ow9pd}BKUmLnidTcB)-%=^!d3%=OKm(347iV0)>;#-1PMR16j2BU_1Qh0Ik29 z;i=Z3P|e`UY)2s8W%MPd7*puX)BUr3US#u3Ne2SJ_z2I%Q3HQ-C7<(VX7&)8l<+f?|^7LaC=9TMA?<3TTQ- z@X)o-FOmlMz!cbptPoMY|1?t zlv*q-3l8z@&}gGLp(@Z0G!=b}dzuBlWEiu}?LN%F)c}FXWX?8zeaRICvS8w%VeOls zT@v#mcy0XR6RwlTF2Q?b{NL~UeDWi^RfskY1vNzXtqC*k>l0xr?Ewmg5+R~g1c(f@ zG-4nbgHlhTS?!6ws;s(_j+k1LRxc)FYqX@QoDm{g&XJ+7WQ6}MN5)4U9X|;lUmtJF z5OpDHl-;5XtValp+8nbnTH}&oco$ZPxCzf0lVIo5-C#Gz^K|?#p{xU162Z~3nPA=S zt3NMEC+q4)QW8pOW{~(z_RYF3Iovw1(Vt)Ru@M3%uweS=vHkgGRA=WHnMI!c)t42;I2|9s2(9x_<6<>VY*_M6XrlFIKfyOT` z6m<59RzQ4{zhkv`Lb#n#Jno(Hx}lhzixfzH*c|2nCus*H zc!k;w$_xSk5JrF5PDsfr6-3T_{MtjMv=i z{IqQ@sNfrKWZ3K6*7uFAo_b{cEa{DO7|^PJi()SUiBe3PVku?%_`20m$l@Uil@+3j z#z_fM?-|2%IVpG)ED(S(cBK9blPE>C^&5xz-i+?f>u_Mm_1E2}>nC>5yo*Dc-9c5A zBW}083$CCSu^hmHumd;@+UXx8x!Yj)B~(ry?m50Q`$QL)W8GBkhjS&`=q9yp`UHw% zkUl`3YVu9yy<55pz7Gg-95m0Wjn3TzRza9mq?clKPX2AI-87oTyU|6bT3c7%$@8&7 z#UESShh(~NFufeI)h6_Oi{8Kh8jfW(MtPQ!#9}c)e(#80k|5 zl&%!hWj}7kntQFE%@@CHZry~erFi)#kkZ^*3?1tv^cOm^dv%wt?dC7KsabDZgQ}aW z!5vo@qKc)x000h^L7JYE>qNqsLO=a@{b^7Ev5lHd+}AOH9#g8%gi5^;EwH;y%ArzZ zi64IuA;bbHgk-hXNsdNuWlD68(gJitlg07`T4e_O&dPrPtX)gNP~&tN2AC&Lxlp@k z0*#h96$^VAc>PB2v!BwQer3;GO3^VE6|9f-;#h}wVIi{|2Oac&@Ka1VH;@A~R7=v8 zEo4tM0}IC+0Q*px^1piE)e8(Og-e<5Nx^g~d$gsv+tFI*TkZE{q{3Q7fu!LsMG;(M zbW=r+nu}1MGt9;z(aOzXYz;2lih&=_Z{a&jU^BAs!8sJHOf8&2U zZIu)o@8`x@7d5*CvlNFl>i365@3hw{S*}&=mPKcc;(srN;dIiEl>rTrXmn(1_#pB1 zN%Amss!aVXG@z8YFh+wFQID?H$OWUt1V(oFGYhbXWOE}YqBb{LXS*!|rbKBHwBSnp zY+seBss`aJo zN4GP`Jucel@|dj%PTGV7j>vmorhLO|^wFt7r=Y&cCh$RQU5HthPzDE4^oAwI+UM=b zMF=wwe-;~N2Yg|CUGBY4nN9gz1g^joM(q~Hcy}mLVDVZANP7erkpJQo>`9L#1h5hk zHPvN<5fUbz1@4?Qz-00SHqaDb%X_m{CCHN6rT7$iQD)iYi+qF$3+PfuMgzdn52ZNs zQ78+1Ie-=!5|Mkp3*uK?KoqT6sqfXR#|iRVaDI6GXt3dAB6sl}{n$NBNiCe@YyWNF zXhU%GroEWA4K|~_I{1^ttE24W=rW-=(s_bRXpSNsoPxU8lr*k`Z@_wb{{6R;3FIIm zCYk46r@8k2z2|lSy3EJGWz*)@CI6)a_17U?<$J{_y0NUNMT#~A)D#9Xub0)B zfvGygt-N%mnt2&ym(PE_nFoe)JU|A1$Dz`GZ$l(O&LVP6SwR!_8^RP}q%2AWku1k? zWefi)#wIM;^~5iQwhChqe&ii&dV<3szyjT}ucS3TRY{G$oC5}Fb$JsaPc_KcA@URo zoah>uy9@| zBWGysOHQ^%ASrDY<$bTTa=?sDMxn99gYAmTMUi7DMd_XCwMm+blvtVn;~7c z2}_>5)+ZKSEzJ|FI>e6T$@NRj>kMA4Z=HNNrin^1oy4Z@h|EaK#*^06p`jp8D7-Mm zpCuM*WZZFrBiQTtM=!>z(G?eD)V--tayJzzpcv@zpb^Ow=PVlMSW0A%_In9RCk$x} z6N!pi)0g3OsStn21jlRj(eNLBEwqk5%t^AYxbz+4!NE##pLFMv+9j8rbnSn-qy;Cm zS^&j*=!yx_lTFfs5q%*(u<>IK&WSBKx%{{_9KIa#)JV|FuZk-!BDV5Ajo|@GJ9#GJ zypxA13BKoKL0?CSuZVB&;Fvw2&rIqJt;82?Gv4m&p!5>p98Q$X&>^ce#_VE(785H4 zoTjO!3y`sG`F{#NA81!uBPD+)V~e3urGwVmlej5|1yGLYb^{PBob1>fWXvAZgOxgg zLvdoY>T4HiU67MR9_`hLhfGI#q&SMX>Z%?g4>4~@FH}uulQ_BScL5GZ-vSPG_)(~P zxM;W91{>}L;3o`S4_F)#vlS#sFr^Pd@>*8S8lhUa=iNAhha8KHJom@Bq67zVAp~^dM=|in7IjZquh{wN z5G>O6(v(nw-~Yd|`gYR8$ zT4vEeS@Xi7#~8D5%*i(KtdsvI-*S;tV~t2eV~4i{bK=B9>7+^s$!d?p+7Hr5nW(hZ zoMn>FSPYN1N}QbM9FU)cFt2MIO1jGH%Kx7@!!3Nd0Ee^=Tz75XSs&70xBEv8DA^DlY6o4K{Mlfm1& zQF2OhHm79~ASH+;y&2ISBVHfg89Ue{)^LV25UgBM4rP!hKmxF7u82?FT-AXe8zexX z@j7OKHzj1vq;_UCaxz7Yn)H4E$210BlfP zrE=n_wRAz$Uon6>-{|-hHu?k!L`8$usqeeDcZrL}rjONb>yl9T-f$m0=eZr{1uYg~ zdILycLOg`->`Xou&s0)KByrZc$1zEj`FpMr@>PEKcVF!VQejw4|C_mL-0@y7Br_}$ zayv;0pi6wKznvPqn$E%)s_Ae)c%-)Oa4a8A!p+Yj%8x1qCNQ6T1H~#fTFM69$@Kez zVYf30=2#lIi@Gc1$=wY{8JxNf1Sbqpp2j|CKeKZ-x_Zp8MvIfS?4cpMv*v&JhV-#9 zf&>BCa1;N~^@n5Dy!5b-Vb7r(8ZEi#M{8MZ_%%aEJz9SDRabyl`$@B%Yj$4WELNOG zjz7toReMIiHB6#x1!7Sz-(9bUM5zI*Ad$&QrAr09#;$5{U9I}p*FL+)ER0EQ5jtG- zH5@uFnfzkq)V{VeT>iDqTHWbm!y}gaR9j0^7asHbS zKJM(cT)gF>YZYgoP~h3XZ(TYQ6iId{Ei@6%@7Garh)F>ZDBy2XYoD3>czQ~W!M9c+ z12I*O5EH*lq0J5hBy{$7#iiXZ87pNt5G_fhc+3bH+L%_=)(9At&?+GaiCMYnrl;uZ zqYsFZ5W??%cx|#Bxm!9|U-sgqEkzh=glNFUUOnUGnF$`^DZ_3mp(H(D{dXi)3mW7X z>~&z?xG5sWH<3~coip=c;#0cQVoLJtw*SH?0B?`D~z zw?Y4W38sC_Dd7jlY2jr1H7c01dmSxX5><3dkA}D8IDq!*BkTfy zu(y1!gTNpQ?Y{Q#8LaC0z0+YXHF^oY$?(GFK_yCLpV^z;wxH zvtuG-H_MoKlG}Kh{qymsC%PKpDV7O=E$saO=AK4Jxq=_`<^=#vjp5B;5ij`iDy-Qp zUOY-vP<6$gBT3baWL#1E3K{0K@QIS#o{KOX{9#0?K`iiDb5c(5a?^8~=0QUP#!w@a zr7bUy?4xhOTzVN_DUR1EhHnkdZR5C49%6gejSEcVrY8%cl9Obd1Y6+qq|m~F4KvI4 zVFC;POlJD`%&1EK^2=?2tzF@7Pd50A_&Q%tVm>MyckmJ_dk3(#ena`KIm1VUn+z<2 zVVkWI(t-=Z(&d>L^2anbWVGk(V#8SmLvXVDo6}kA3HLR-r}2{#!<_SF0gHkgxz0*A z8Kd!f$GYj|hsw`2qF*Oz$R4c@K)d*H$s?^3(55kr|Hrm#3X>$1gYNmYMpQ&1IEEBi zY{f2E$)CS}_Kx5-C+0l>TR^10^;JmUlHm{Y1uehKd@AwZwMQBNgb);|&Yyl&5gtVc zj;5&@vXJ#x&z?S}{;(TJJ|Z;~b4+R_L1}*TeT5c>6e=C^WXNI5mLx<%eccs1@ zdAE_aDSSJo!j@IsY5zuV3Vv@&DPM&2y|KqCes*_Yt=sgFDb5)Od1IN`1LY+fnn}3` zB7&Mk;Wq+1`?4sm{j4=DLL9ZJR74MI&AmMZ;*ZHflAFtu1oKJJA9Jx6 zyw+3&*JtR;P(WQdMoQ>XgRd3onJd{Sf9Vi+(T#l-Kvtm01f+;DO2_tX2`%3K|0CmG zjGGUxq3ysT*-q~W<+W|ehju|C=xaBDA1~`qEd))&&9b3nCh^?eUwZZ$D{eO)eoYr9fSGjUpL;AvPU} ztEs+FuCBeYW8d9|LYxaDut+q#H{L!JS&z+^#XGFhh3Bs3s&4zZRkDeYqUHE@-5LAo zu~rhA-OtUk+(zHIF*(|I-*Ium)huthjaIBj0k~j({2y_z-Ma!rmw9&L0M7cR{yig} zIC@8I=;x8^rgIRj)nhF>sr05hVwR&~>5~xj{l^G3k4SMRIWKCk@s_o!1YCt4O%#Pj zBYkq2Vh-$|?blBQM?F4DPt4YEp4XUdhjdV|p=sD78~x3@u~xcRFrjAg%XkjS%B&|_ z3W2vmwTgJSM!AI3!$1HW;eLU8-ZjNd;EmTK^TOUvDn3)e{c_ccD?7cpP>-u_7}|f; zNx{AuVYj~fGUbc4fO@QAY)NjI{s&23P@}y3~#TVP-IU$6jc&nARYt$rUTc zDKJ;=we9_ftP*^it$ku1d*E^yduZtz%I9yV!9~YJ4VpUkyeQl!Os5Y;O$sQlOm3v?h~0ELz59Dq0V?H0IziFr5e&QsI%GMCaUWC*_dZv8HHX4r(mj6sm!Fx{I%=Ixo zjKiG#n3|d_9giurD~VxQWFw>ys;=O$nnZcrA>k9;Yt!v_VL`@Gvo_(q*$vUh!4am^ z(;AHk)CS$BJu1lP+OvO{uwoWrS;@^a0E)C{QBpJ71%jn@{wI|0yOKpY%yR)bwmkyQgo4&n}iXx?!Bt1T1OFJAdB z8a~_7f4#FHblMAbo|qho<;K*e$1h;iflHM@y(!=TmCEGbCFDycUN8>G zBb0{B<@8z^fzzV>b$5tqv3{fQ?}`tBSD5`fmA~yhJ8bbshja#AAwVR>gQfhL61!IU zy^S=LgC}Pr`MeS1cgX#G}KD4 zP8gh8;zyQ@WMLnx?`+5d;f#_1a!aHwQHA*Bx1`njIz60Y`+0_iWb<=+J%f(7zcGxM zBS*z7%0UbmQOOc_%BJG@BAJ5OdN1}3PIEiCiD?NX0fpsPCrHG`^@kwl2>=kQ9j63( z*&j;eqd}ZL!xOaY9__xVm{l>0t7L|&NP(9R4YTF$>SQnuT(HDqup1SjJHz$)kbk@Bhk}${^kIs3)Ggqe^AKgKuL<-xxREzj4m1alsgBANJ z>$)p7F!#?eG>A|?SaauvCEUQ(uF*iM1nUlORHJ8T)yJfoqiR6Q^M7%I7w{>ji#XVm zm%Azmu{>Gn7Q(Pk@0ICRXnt0nEpDg2v02%MODfOcJ!Ky3Wj4T3#n*DUOHoE5u^F^T z-r++=`^R3evv}h>Imi{3bzF|e^_(Bd?^w2HK0edV{oh2Z;gS30*CrkKg8wuEWqTM@Y9-Hu2_6a z2u>9Pp**hnV6!$Kk$IZsAbhe2hYheYR)6jh14;<_e67iU|r=06s8#OZ5+<8v9Xj_VQTy>^gXPTN1PvJI1>Xo(24c!W)LLv zBO;ZB4z$_;S0$mBaLMXJW$8@%d3!@fC2{9nJka1VL!R4B~mTP{!d4&4$95)F^e z;yOa&K zz*b=R>F_~q`$R_3H2@sVH4>T8B?SaK@5u?QN4x8vn|{Mi*aztE@_nv0<_>PNckaXi zrJYt1w)Ne$3aM*5m`roE92gZE=QE5(Bz{k#@7)t(ORnmq{#;qTYjo}#)YFoBLJdB2 zC#rE)JmOoaC+M6C#{bCQ!tEUx2nDNAE7TA7<))2lL`S%Z8YqJxEERzvh&qd()b#WC z>wKU84d~zLg)0xV9LITUCV8q-ta_5}aBR0`wo85N^y+vp4fN|0L$i>1lSwaYLGKnC z7CB2RUf>4#>#n<4HLMC{JbW;j+2Y$Bws0BIvax{2%;;A~YFl-d%LoDyPThtKc-NZv zpX|(`tuFtj{jA1prqf3+K1s}0F9_-I;KWQqG5`dyIOmSTjk%H*D@ZTUb194Q>?N3~ zY{4ou8&r7Z2j@UY2i9$_>8U03;t2ADrmwnD9)#{Tee(f;4;iF_yOBKg*f59Z^iwsM zeu%sQqu6PQDx=1m9rufj92MtI_2PeCBUM8%V()33qYmP^fv1|#*H=DV3b+!W&Q3GN zKQ%pWFf^pZw8`q!dm~32K%e)k6Z`TG8y<4dH?S>7v(@&ZSs%I0kW@FT^}gFxbD7t9 zREKx6XG^`f#Je1ORB_3AOfodR>XRQY`}$~wXzFBQo<;Z11rS>b=lyLLQjSP!8xyIS z7t%Pg;IZP%eWXEF3H1N$kF^E_6yB)2ysMyKlGiV}#_19mE%2Xb_q*3U$Ypf>&qz-Z z@aw`2Ozi|3x;@$oHc_avX{d!I^`O&uqeqe_MqO_mdIGHyeF6_?B#eT%k{ntc(SK* zF6em^6l2dU_<8R+um_yY$*Kf=o|RIxOW#S@PVr2SnBdy~AVK)cSX%e+d@Lqp=e2~2 zPfi3xo@iF~me!TkaCZC^BXPoq+B|9OA8GIVYwRGqY0;#l@{57J zpG#iA8H11r2JquD5wv^iW(~tO;wdp@=i=(urB2+Obus7)rh=k6C%uV6<^M2D-lFz~ zNL%lJtTFpVF7FyxAITWd=wH%6gDNwv9jllN1jC`YAjkJxPtP1S!pjNxbov~ERkDzX z<*ap9yZR+(JU;N88zEon=_YVT?^V&r`w5HT^T@=R{jy#P&S3$5A;0*a2QVcd$xvMnJB^O2I|38KXuGii~%+esBrSXhjp(yQXqBW@c6s2Km0Sm$K}`md@FYtj%Hiq$K;im z#=~de&lidUW?)D&xDDO5R0GN}4h)7Z4?+tZy;w$Ul1>rTA|5`M=PC>_ zuC{WbHRLu6i<6gPC)_3jZGPO?|J*}+ynmS2*}k=Ev{%Dqy(4m-wpl6o!DR;K7UITq zWbVw1c9nC`|J(PBL))Cy(cJmOo7l&=Oq_1a$ck^Qlz@zSJau=S0mpm3`5uq^g{j$-K0eBzi~+YmZoN?!{vkJR_=`PGYb_Xb_h zOCVQ*kt}fsEq8I ztI74xZ6%!KC7+<$FL_wx7OAx;kfG3YBnyU1+F%J0FC4-YN4SEPsozITg_zQ7n0PHL zDqXsBH5|-a_Im7|q?i3WhhlM_DJ>V7J!OdPK1$yAtGTSW_U0v1huim4U4=5=MpIE3 znYov~MWz&Bm#apbJ0VQh*`SWt_0a$T2e?6+pp(KLOr`{X_l@v`3>7bPNF&fzc`k4O zaXzl+A@FBg_Q&f$LKT z^=W}Vz`yYD5t)*zsaf`Df%7*J)>|oXo?Y|k0~1FDeP~O~?4Xw-8)zH|08#X1 z`V6*QacQ_pRrJZiwW0n5m+NBGUHhNnhm}v7kZzvTMedlH6JPDw?Td2E6%AGwIOVk- ztjgGHWLXZ z*w%hO;#xi)ws)_&%orir8hwhMl*3`Z&ZQNzP_eT^14TxJKE`#<)VNdDP>ia_^}3i5 zlPVKwM1Uwd!3{@FTsG>mh}dS8CYR{RtFz_4wgha~c|U1j+D&g+#nPS?&vsxIrW5e| z0TRXS4SF<`*uau>a!hypZZIfb`giyIk%wj6Pb1f*A<*3|e6d*XuGD-q&Dpc&B0oR) zy|J=q+RjzNn1Zzei&u!YR^<*qx{sH!HWCd5fpvSM z8OrPOftAVrVmb>wf-3M03^pAJL!HF3&j?&KZ@gLi)UOx-#dvz+3A!*ecgH^)BUaA% z@w>FVPHfe}LQ}^|POQBOa0`Wn1odwA34ag$?Cj(K581 z4(fH$t|;`m0EZZdQ*hJox53Oc*6OfO-;J!8s79wm=o{e)8WFka{6G5i%^-*JYKWJT6dXUU=-)@$kdZV{xaJF$eI>I)*Li&GZHSM?sl z+k1Xz=OS(m@ViJGh8yYwynI1kSlrcr=Lb9raa9rj(iZu7Nyl->+>uPX z`TtV1Llax%gNUa=U>>I)NsZ91!Gd~AizSY6gY&1{wcjpxq&yKLHso0D)~&1Vt*~kC z27xIWN920-sX0jO=F~@2Awkl2Bx=_N56O^O%5;lDm?+WHTcQ0Jb%qg^B04=d&@LhgE9uaMMP zntAc-iaG&22S!AvsKLxzuo@EtDT&X08aA2rBP#hY$S4clHF++KmcT|Ed98l0`4Td5dl zyTKX{GBai&0D4QAv<6h=>77K=J!fORIB;M>1@5(*`pgrkVk6s&pELYa zmvLc-U#=1;yTl(o&&UNy{&9tM1B)Aw7$s_Wg|(x&9Ryo6F96wZ-Q@>}+eZLDe<}-? zjk3TCoU**ptYv&Q0t>a&<}A$BDItw&#T_=~^v~m~ z#a)IeZhDF9Duu=2%xkc2mx%S+hmZW=(HqJx+XS)~s=FFkX*EV)&{p`Bz@5@@nbzW9e~L z4ag7u9pm!s;~}w-kaLLU*}b}$L?{7-ax4G<7aT!|uz_Fx^rQF`(riR9-BW#3WUi1t>X%;ONLnM}290oi|G|cw&O7M}Qm;^sn7w_&D}@Zd30nq+ zeM{1seNy%7toy0NH6CkNqU(uQ`|F*FCUn#TXAkgO9`gj=1l4p!Ta`HGt_K>poxm+q zVyFxzFWc$e_XnO;3ONc7A%o?N%O6C<{ngSHRkhB7l6x86sO*uET&PtBruPM z-N?xB!%z>)<$sWhO2*+I$mFu&h)itTtQM5Q6#*jUrhXTXU3NL4G4cc$M#84L@p3O5 z%a#z&jkr2f^3@z@eO0xUY1?`T^hj%&A}noiCc{57<~QX@E=tz2QEgZN^R|Y+0+KRKXpf-{0MxyrR@kJ>Pc7mxpp{Wm1q6k+s=> zj8ea$(&K9BU?f`3XPLxZTJgxG5 z9{reK?~~P13y&Wc>E?1t+=7=--g41*C3}8H_yz|7sCWS*F(k{+19#NcdX$YFwHvd& zA?Ih!WUJa!sF!kQTz`6%w-#A-vSd`+b>g}?VBDj!bV>UyL1b*A>!>H5W#n>VTf^=x zTX^-@28)uW0M=)lSl3UYab91x1IE}v#JgI1u!fKax_RD>&UI%HWY)TZUTMO)yAcZN z{6facp_`k=Q8?KSktdGFlKub!(MXf!!!-4xb#HoQ6ZyGFG;AHH8j1-$ z%}8k9eg85U1im8U739r#~kkkQ~3xnH3EO3P7=%@n31wk)HNMM2+zFTk4?_-=(lm(TjDFhQR;5 zZ6-`}|CFmnXk^rK@R)htXM0`XH{}9&^3L(BKNt&*ELHM-!7#3Xid)i^AIF8uif|%m z%DcRo6L)#&U&|op9orm(%PIm86iL8w`j;D@v>dx@XstC@1vWBVQIdgkY4_gCqzNfl z_wsOZBIDHwuGi0l+o#Bo8hHgO7&7h7;=;Q>mpK;@@Cfhb#0{DQx69(7mTc?e+t}$z zi=W=oVsh;TT^a8ABbFd&H3aL-+rq2nqR*+e&Lw*;&S?S*AGc`BM0H(iQu3!MxPJH}=`6^2X7xfFkg3Nwctod=9csXMQu)*PXhZrh0*Y9!ps+!b+BqRXkB{qK9lle~gfAf49 z7OqnJS>{Dcw<&UG%B6&9w=0Y<2+k`rj$(7!<(=-_XWGnoS|*5vy5_i!?ms~yO}AdV zDX-E`r9dMcZQUO^BP8Na^?ypNql*bnfki2?S zvVAib#PNphGILtC0u4Am{z`t=sD{C=Sv^XYduv=irb|$!bC%GFe%U1UCn{9jUxsBn zNm+QBONs7~7Q#E8=hSMKaqP_Lz^+d$f(MCn+>e!zCj3T$GJ_<&ORjCS zh8gbab&Vs9K#iR}?zI7);VbqbXT$BD=0&&RubGC=$dGw^!W^A;ufKlhzRsc+j*(i) zw_8YmTy+iV%F;@Wd!tU>M8<2s<$d~+oz%cMLw(?*SBDeD2$JuYX!x&S5AI*LoT-k2 zQ1hz%EYmn3K4JXJy;gWru|jj?c~>#{s`Vah;iRqtkc69GfP#8fQv_x8s$b6nSJHV za!gDM#=Q~_0@*xOMja#|Lx6O(F*)lO>6>1aA4m_Y)x-q}mmv@+7)}c_`M5If+@|l2 zlx`N#1VVgROWNf|txIy1@KM{_;1Lc?GdbhfrzB3Oe)kQB1!E-7ZyGLlrR&zJ@wWW% zm1Sv`R@u!539eI&g1nz+?eM4eG~aXTFb&5F(3J_gkRZx3ElXe3?B1muboDZD5x`RF zxmKl-YwuVTfBaH&fb19*`;Wp~t7-Ej!n%j7E;Y4s8gA3j8cyHTXkUK&PJ1(9-(tD= zI3>HqYdA@hV~#*^g6~r8b={g)4wJwd0k?PedVTMHT&nvSNm<9zC_i7IDB(4jz5e<# z5A3B&SrB8uJ20WWNx_TI@dE<)v|H1h^V^afZ5p1T%th!(=*3Q?KE}xbX(S^jqJEms zdzN1|Lt&k12F@d)t1Bb?_)AAOcy&^16uG{YP;B(7btQ;ON~?9w#r%K2CphN z+>y}|A!8VwBQ|(&4%?O=EAZL$^nDZ=#ni&=S*9SCG~9Dlv|PIu1dM>*13IWqvtH&%zGOSSL~N!W6W|w(uE0e=IR_7&iEu z^`1v@(hK}?!pGePtOAr);cuExZ~eAj>El@S8F*I+w$wViOPldh3zWE^EHiZw&t5Th z9B6sQu~l3Zj^;(tw~^v3&~xU#;+0lEP#0f4AF)e_))BNF_NP^4a5ym&H3Ws1!+yhk zQQL8A`ovs;Cyv42=e}q~Lir`dR&k_+EK__1Zd773Sj+JDrc5vJLpb4_+6eUxY|3Ue zse7$=CO5x*vO!KSYzKZ&wVbsClbPv8hgu!p;a=VI+$wB5D!wnoLgb!l+ON?sR!XqV z-dC;|a4-Xdjth0@1a>Xda*L>r@#MIy!jmF4x>FE)w8buphf5x_jHg3J^ULcV)4kc< z)kUId!0}FZUoWh4I?fF6EOC(Ak#8NAo^MVNaJK#fe?3fZ3z+cLv(FWxfa=H2_K669 z#qv8t!UDAWDMki^^Ue>@KA>rk$cCO#=%~uhqFd4N?DIwyRVnYwwv!^si~TTyHEM%Y znr@#`f&)`SlD~p-wE$3CaRs#uUYt#ROiFTGgT4)EkqUxj?fb+5Q^gHnFy=`3N-my?wr!Vr*_XNl80XI9Vaek|AeM4!d0B==-u~ zGdj)Z)8bw?wJ}r@r4bfo74O@XapTr4fhl9Y0HPP+!5G>qXuq& z?%8D>N2}K(HDzbYjD#(L$?4P1A|H=Vtp+1QmkF*d)fm*+e8j{(;E<2iY-`+oK~ddv z?+hPFqZ>mpjEcfECcb&p>*YJwqgWFu(k7V;lk>}e&>@Zcs!sS8+V zLO09-;6U)OToIfp(nnRMpYUoa^Gbq;2ui4iv!5i9h9+mv9D^v$9yeFfdT3|EtvG19m~ll#SXic#DV^pPaOCiRZs9X4KNSMCD^|Ues7<8b+;IYm z{+6c$-J#RyO0a3u8ryEvg!eSxKKnSGNdM>yV?E8jN$mPP8v9@0w+%)x1n-(;zjsbW zrXIX-KO5~}f6y56(fj(p{t1Tbc_T6~D^6Bn2!0#qPU&W0-Z3MvtW3@z-8pZwB_=fI zf&)vsj_0&d&#nZ;5b&urLjBY_Ksl)}IRp2GHKg_ODRbS@qQ)o@O#e>WhnQrBU`+foKIQge-(|GARG$m_9Y=$r{x;Dvw)Trfohck z`QNkG*Bf0%LKMZ0#uBrL5^KcP$I0t9bZ(AZs$zV&T6aCq#{ujxQmQV5TnFnNrXc|5 z0(pS`8_`Io*sqf!OBmN=4dyF3NT@C7^H)bW*gc3pVzDscmgMM! z6No(G|0my{e9f?yzpvjiq7<~EEDcA}i%=)iwK?X1I$Cc=fK0~1I0TRm4}q3Y9;ohA z+;mpp0=T3*XNI?h_E!f_x(0koRzil$UioBJbBT&#vh7No7K~)|Ztd9;)H*-=IuS?* z!0`kNhcnp9Natzy;_**=Yv>PYCbfgDnGF+kO{^es=!W|3s2YA2I;AFw-u%PQry^i; zHRtCn^|ZXz9HgfX_ki*ODmsP3$KGf6oh>7Av$Gm(EJBA@;Xr>*@_zbzrYXK$#4avI zI3#ucuc}DWR#yeQ&aD+eOy1+YcT(e$=F{?Y9OSI*(qiyYE>CBU|m~L9>yG!_0B>t=(gE1 zq4Dwizm-xoA?&uO?2qg$^oUy-5bE8MCEl0B+uucfo@6`hu`@^DL!;rBR-8GEZ#;d| zf{2Um(V>qc+bXk2BF|+~%KuWZJ<{V^N_y zoOnqdAgk@OOLbZD;2Y0lm6 zC*R$C{WyoP-UBZGlKdBUnbzeuOkC?Y{p4M3qxDVU#x??cv_Gpc|NVjlR)cCW+VvBA zcx`2KL&Y^=)N4TVArw}a&%42-DoplO>sE3I6fJUO(+}g*t{;;aOabt^I$J1XZ5r^1 zycbjh3}Erj5Luigt5Q)I>uHbQk+n@f!7sgU;y34T8$rC6Av_sbaL5`bq3U}dRoP~* z7h21n_6{tJ3rK5r8ajM%0c!~B-ULK1<#wLqv;JUyHo7zEijt_pfNE}1tg2L zHx>r12P49umS2YblHt@_TPw-ec9|KytgTLNX4@0I0F7`TZ$QS3VLRwM{)|6|U6+kV zpIk2??v3ii+h;_b7uQ|P_w!$yl7b@9BLmD$E=Q8Ipm|M87qYi>ZseWkD4g-&D3Ajo zSKgezHc9>Qm2oBn1__^jt2ZL8+@Q5rKD&YIx9#c(A&Tz=WDrMfmSvmuq)=2P8H9GsiPozIP>Qtf$1kX%%db zsr*+s@m|JXC3!vVnM!+_<{%5i=EIH`wUpV(#_Yy+SwGj_2<|!xz@A~k>nJhkT!7g+ z=cHtp%2h|6@hklpg|8e<*ckS4T;oU&patK`9{`fZ0+H7qp)UJvLP?2yHf>At;!c5y zDqmo=)K3`m^;y-+wNOEXlC*J4((w13 zri1h=p-6+kVNIWmH%%bpv(A=i1CM!syqA3W0JkEkKo_h(cCx9&geQpsbve}f-ElHH z?h0SaL?;#`dCQI~ktYOWkE?xyHz_687n_^@^bETYC8Kow&eZY_4)Xsf#U89&ST#7A z2hq^JP}37lhCIorvUt(U0^WkZ%Zso$y?Y;!Y1FPy>P3+~^wo9+R!N7O@5ilnYgv`B zLHWO7gCtFC+Sjupjz6So_&qMoCd5l^Ua z*x-(%7Vw+HI?DQd@V?ZN%Nv+~N8kkY1`=Jm$fhkRAaJ?eo0ERY{ztJr8g9UN^PfjW zA`R;8`Z{l4qR-oR)Ft&pnv6P(K%c@pn!kUCTHofW1gG6o9E%wD&$7ciNe6wX~hU zUtxJbT?$inR6o>blK_HFq!2l0#DNYl2f~)yL6S9m9(FLSWBw~z7)^?sB{Vtjr8UlzBuC<6{U)>CUfjWU&Rk9rUnL&EmDGgu0voe%Cv3u|A z3A)zk67r=!?wodSK=vOjMVH7ezGYMHgihwH{K?1Z%V$N7gImt2g@bqqL5HRFrM)w! z0LcFJXBq5%;F?_aU`_tJ5YPYs22(+r=99u6Or``Q|N6&U`SUSW=*xv2zQsF;QoWX*Z5I9yBKeU;uWdnbYM;#x13+rhM*h!&L0B32o^SQ z12xV$Xx67lbvd<$^Z5P1==G10^I1|Op96Z%XS!6{v8{yh)B_DU8;yUkW!^#3nWFzR z4aYey>{rZ3j{FAw9J;Os`MVgpvHk~1%=3>6%@a3Ug9Jj8OVeFUUw{b||Dy+hU=7{^ zS~l;Tij+XpkU-m~R1uhr>tK-!Qs;AXVoJ22O23Nj!fxMW(R5a^(PWs^#Dr z`p@Bku1;z+G9YrbLVdin=o$IgnHeb&0CD0piX_ToE{dG0w}O|swD9{(@og#!Z>#y; zo{lsH*BTBVq0IBEAip4?JM-+;lPO~;;CKz{7vSbb>SH$Xc$>woL%q_!*l~WGVK?*u z3~H$WaQVsI$6_Y=4^$IfbGvv0dhzQG4`F$9t`IT6!a0~d8tI(5)RT#(abGH{XO0*T?D*;*EdDej3) z%$GG{bgTmFbM)8(k+Q}4mI|;weH&xg=nLsHs?|#^!Y7vLAJ;Zu>Aa5GiaK+aS#RDy z8fTx0q??=W$tGj5C?O5jF+pA|-X)v8si$rc?$uYr#G}GvlwvzA@?3gq;9_d@ai`&a zS*-pCK1t;AZT}=@Az$ATFdMTHkBPPAq;EZ1Zp}Xmd|@yvj*H0O*a(JnGj$nZ?`9&rwzs(8#v0e*liY-5TdTTkzEU!3J$q zOi|8M?gyO;Sds`XTr!s<^bimV z_=iO$6nKSQJIP{6Hw&Ki?hypHMl=;M>UNHXTZC~X zLeaKDH4G6@LV8 zV4kKSVG0Z6a$L?}Ey~U)h{5(*Yl45ReOrs5poBuC19f;Dih5F=BY@To3D-!AMsz{I zB5=oy2zBs6FOPYSJ-^7Py5U|j8{J+=0Eg)tm=qpj*kwD`lJ!DcFX zhDbUe#WouE5juDPLcfH=qWU#0^MBO4N3A|{j}Cf5e3$yI1sUKw8;s&cL0Hck?bLPG z8XO&8q{HueDt8l08?ae7CxI?$0;?yb+Ffv7rWMKe$kO4wbhbfpAJuu6ZHp*jgcL?ycW!BtTcJMaI>NcQkgk! znm+n^3f~qU8=S$wOR+Q0lrooz4O8qb%parO-pQ3~exUen@Id0FV7Yr63f4Nx5k9wznOU^J40nBZ1wD>05(1c)PNz6)= zWC|J?nUQBo%C)(sL!$d`l7(OQg{UIVgkF~3iT)NsKGF^Arj6xmcqr4eVk~mRYbkE2 zv*p&c=k!2~q^=ct0E|@cE#t|rFlA$8_&>I*q;?P~&9lb0gdIsUKB^W+n=3sbN)D}B z>-KfepTS9zj_%J&^jj|38USO)2+H`FCupo}hz-!%Nvi{!&^*7n0!nyQNJl{LEKWz? z%$oMFDO0wtQi^-sZTV5PsuNIUV-E)s&m;S;C!t%_Zu!mza^n45GebWIzV1-GsR9Zt z@*KI6Mun;(?|F)1;8*hs+ZWc&=>Y)1MiPQrGod!vtgkjdg`~5@j3w*4=M@LC7rkQN z0eK^3xp(wT2IwFNLk)THxw^Q!{v41DM?4=K&4xe8fk-kcU@j6u*p<(Jqr0u9a%wQw zlv3pW8D}@Vk|1lK+Hh}Kev#-uUCNiTiH$v~*6XgH>RtBn&#WTlL|jn)RkV=MLDyM8 z4H`_Pu>gbLqU*o=}O7F{r$Hf zRF?KP>^;VJR`QSg!gn2|Z0^Jzwn6sLwGkC178Fecp1v!1Z+MMf8$C$zn{PTG5bG|S zVICAqlTI8S5?ltOr^G*gSPWEKBbnnm;w0gdH)ha?0Nne z-#g6Q9nKxh%b22*#7mtMEpLdTINrf$=PPFkA7hm~ok1 z`{e}=sC%Mp5!zrBKWc?81Db+o>H+-X0xJ^6cif^dVAwhH3v{%*Z7FjEzR(eAJI~C5 z>#_#3P1ac&Da{8FGZ?r=DsA3C+}2ATpwKcGFj}QXFkYc z#&ecVxBM`tg>P_DDUFg{tr};C{?Mt2n2~6XDQI?GJj`@YpfA}88frLrdEmWeby~k# zO|BG7_lx3@-)BFbtX`_Rmm6rk#K=3lQ91KA;Sz5ao7TbGZi|{S2o-3hAo*Q+jk_xr zO33w)5sPW({Va;NgP$eU5ZN+o|IE?obLZLje?2Xn{xC)FNIy?eo9s*;d3x?*&u$;! zwkJ^nxje+uR?Py=7z#(EHMu`Kt4-$ezofLXP}5c)_?JIl5$2qUBtxe{64b8M1<@oi zkx#zqe9M||3uRv8sL*${;&2hhzZ*Qi@=rHCohbQE@3Yr z?HwIP#c<{vrWn0sB-jdikwYhTV6fUNsdSRuX9F?ntJRT&DNmPAzWL+{Cd+F0+5(m* z43KA0|ro)MW*U1zVik&n#1@s#7sa%}EngBtZW+snU>53SQ z3{nEWzQm^Y6?p{_Mt&W4rl1-Pu@fC=G>*N#s{D~1qqw>CBteYBLC5Eq%FiIasJmPE zT3gBy&A0EE7q!nMG~jNWU>x~H$ZmLNJ(~ve1=xZ>O6|ImSvKHSshzYzJx{zld%nMO z+qjeEzB%Mmq{oKE%pOBKI{9lkUro<@2{Sjt5z;jlw9 z9Eos`QG)*_qSxk=e?;`UIf%9@ed%&*A}=)-VC6Pj2Fr5l3;Fnqbw8*Vxl{C4-Z-(t zLK>kuMqmIGma}SCa8xad*E#st&7#t|5$i^80 zj_hs~a&N${`RUBYvQ)(IeON#FZ->lR@}+AFJK==EYBraoT{}b@PX^)rfv}7VWkPgV zVhq~TR!KSQ40MchLHY1u#RZ3Aks~dxico_+W)nQtK(cd%Ca_&Iw+IGh-EHJJbRcxP zy?4S(u*idPGfuEze(Jpl-A2+8U;=ykL9BOd5=4BtIRrt~XtXwwKZ5|VtsyiO(}c`( zh|%|*T_PJNz5PGaN5axvn=x_wqN4{DPLC_2F)|5x2#D zE~?S@U7f3tA(DE*_+`PKpdMX_9kCGpt)1u(XV-QW8^#G;?f7kK<%v$H} z`9`lRUuN5!N0Z85XwGVa8b&-95h!J^y>ajvm-nU8iF6O{$fz`*Pf~yz^DntR+5T?J zwHfqmd(ZR(Sn&cv8YKPWOIg{2MV}tsX(%>A65DRX%<=e<7(f630m%WMDAbStFzq#n z>jm2O-o4qGW0JS=6(ZFH3y^mmAsEp?GB&&C+%F+)k9|w7}R*;U6J&VQSr`P+f zPqnJSKUL<(3j+7QIBf8P4-3(8tNeNHoVTY`A$9hPQkA$n-arD|u^)0twGd=A6~zkh zJag6~ERe6+WOs(qWSMHgSx3?6GI>KkIukJacgF4@0cQ`K*q9vSGqmSKpqSFrY+?(+ zXD4-V-0I*RK&g`z!|U}F=XB`6uHipsWBpd`?f(!Fv`iP_@-2>k!xbtuHE;&8x^c(i z_YHJZWi`Yqy~2#qdui5ls*$F-YLmHpmcstqJCA8M>$w}J$NPnu!J_ccQDTPPwT4a1R5DI8BU-nQ6Bm;vY5%376j4ALcuih z;S7bgD;mo`YQb1t%K&E4Y$k6qP{&`Tf;FW$tjMgQdXX1G%1Z9DyfK#e?!f)=r}jmK zmL!`%zWSsx)Ra3MKqTiOD%yvw6U&!YYetE11xoP%00HFzpDNUk|2DI2!Q{wbvbgru z{%zq(03b+14X<~Pv zU>qT!cnAi%hg|=zG<4EQp>OH5ubz9(k1V@9A_~abhVg{bl&sDW`Pwn(+J2F)LGIj~ zTuKc2U63%=CLxh_w>i~Tq1Rnu;wDK_iy8++U%fS9uHx$q7a3p;h>ZeIYjip|l>>C2 z*sWh$T(_@{sVJsS#}41fCbWC|C;&x`>mYDHOBv=tA-138!4Yb#o+;ltHa%nt$c6DhO;I_Ay1BPWA|*mnzd~!v#fATE6{^b z%lvU18?#>f(G`Z*(q77EKug8EX?D@Keu5U2-ry|!72V0ws;R8+dhp}K=mhxtI7vWilfoWMrUZZWVVm45q$xwCp#V#QR&YTl=J);TUZLRqh)?}GYV_oA zXkg%K17Z!d0INdoc+y)3?*0h5Y^Wlh>qC2^@JFE)6l3jH!-YPddzpt?P{rC36^aLX zSfWEob$!?yw@wX!)*adS0{qr^=2NxVjCdDI7gts6TT4Na4aZdrlau3#lRq`^$W*|| zQ8OPCX!OI3z>8Fx+idPawtbdb*qDyY`T$xm=H=l~2dO34$(dqA?HM9SM{7>%-_vx3 z?kKLfx|wUROQ+C1QqJfiRtj;54II`)3n#&M0|wooD>EW2LtDeG7VqV=+2L0sN7h%d zE#xl%e?Dr}!GD#os{75Wo`F&7NNUP@;Pg6HS0=*#?57uv^nfA#g8A`SzeV~L$-9u{ zINv1x(i=V+A2l%h(m!O8NCH-h1W7GpRX>hS%1cstI zlEpk!T?&JmKQK0itn!DjWU2GypB1z=9Go9kGbrIOb*oRBD|3c-9 zCRRqc3dqdKiJ0(EGYiQ2XzM;AQf`J$NYs2V_xauc0GYcM9ThxN z>02m5m&6mrA5Hf2Xd0WP6U!})Kaj8XCurH8?Rm3LC*?2z^WHTUQ^2>ygGorm&r%%5 zbQ&Yw+S81V-u+D?TeX2YQOQy}l-(mUN>4(flH2d+)BVIo=Rt#;8}UJ;9)6k5=aMf3 zxowO)h`>F)zd9_W60snI#{Lt&ozTn60@|w9DR*03=PvR5FF8sFTjtoMoECI#PKIND zL{aN}4t|JuYl5nhoTR;fm$FJ6+#@0|Fi7`yr5bSp)UEh8C*0-)1Wl_i_o|U?n8P{JXiVKH($7KX0R5LVb?k2AtO>7CQyhU=Z zSs{~(1F21?OYGZu#Fb_Lhxy#bBsQ`r2)Uz!Gxo?o%C4$J`NX;;weQ;zIT=t?7*=}eck|ovT9!@O+=_mJ?wf#+J)ab0&eAq4cic} z{e8y>3K9M~RckgG;a=J7{%b|y^>F}==EUmbtKIVHj6uHB;qoB*!TgCl8Ic;9@Bs$* zCl^Lh30@8p3vbQgClPbqGRNOqG?!G@(o>D9W!2a|3M8jO2K)rD5z2xCK{%f2^T$JWET>Vq zZKkV_c5V6RF)={vbd^`ouI^NgRFz~3Mf#-hp|D-FhO@=W#{m9O+CyN=8~FX-QXO?2 z{am!~43eLAPu%{aDag1=Zvv9c#-Vj3$ws4LB)t7J+QPvOi2#_2M~g}LRX&Cjwe*0f zOI;geAdMK38-ZE+Sz!Mvt**A^357=~!M{wc9nq6`A}fn! zdUN_S4nV>BZ@H8fRVd5zWE>@@J#xBQ6W?JH9M+xge~RBfWaJ;ioL7*Q=X&3nEsrxw z?rf2TnQQb`pXoTS7Cyk>F){m}hRL|8Co+$U76n;`~nd|2(KI z@0st(vCb*JxnNgQZ9jYQ06>);H!6%R-red5Ae-|K>dXiL zply(}W{7BUAaZkQ5f%RK6mhbJYs+GV;yo{GenHSEh-KrCrAJ_=af+KVP6u)_z~#py z7ok*xnCe{XNa15@C{DH(9eT0Xpq;Xm27p{HeV6Oquav6^)e?-hi9nF6&cccBS zw+Xx)^|0B1RqioK$GTK>NU{C4cmsebrjqT>bzij(GkH1t|AwV?c7Ul~-ka4vKm9=S zB~cWZEmm?#vnf;fB-{-E3+!;~<7sXR@aUCGRZ6Y)`%Lj;M$j%iABQDtD^5&z$(1`q zhgah2rVEX$KLUEZ(Ak&t?4dvd3X!K~pxHBjb@G95)c2+MdoF(Z8x>&VDe!pAbzOdz3jrgUmX?7Aww^klKKi5C1BdVou5CyR zT(jBs*Jit&YQown3TEk;Ba)^L(w!dV-#xK+QC&1C>~pIjS01TR+|of5xHB19CA~wV zw7^N)FHTQN_dO0QX!YL;g6WlaPmhWnSt)VmiutxUew#?rTC(5rjl5UVmM*}J7tu5p z$N-QpSOe;k@&EYsWRuPgY@Y=vFQb#hVXf;`nn@^$P>t zKojHz8Em=CskVS@%yOOv{)Ax*B-KS(ViqFU{!Td*pxyBC$~WC@7=cUs^GU3;GzrX- z*mzrz)(QDuhJjB^QtLn5jx7KNsrAW8zWQe!VR#q)iYgjy5K0@B#5Kq236Obsws#Z?xgtb8NKR0U>hRPEZ@K zO#5fVZ0J65#d|s0w36#gp`;xVEEFImHUI!-h=Cv~Ybx{izyq3m54J9J{6<#ePw8^o z4Pm!wFxE`5g?ho)TYri=dVb_pj%;>{+NN7d8vA-!gFhlUr$3xNn(Ibg0;BSHAZo@; z!HZH@EG)M)XO7|9r9KWaQIi1yS+EU@FQd@nh&YN)XQV4#{NEIx$-qv&@qt5Nk5qSy zkVAVc9e22lmRueWczWV3I5-(!N#?n7Y-`WMfWA2}9L*QO%$9faAqtf>rU=GK5dbTk zMP}5hSU@jnG=zXt!#IcY_jW7ETcg_NP-gv^seUh{HPl}JQ8V?L-5X(SktJkosiGvl zHIq_RyoAsIg>$&)_^}1s;I6X}|82BxQqQnvZGZ3yDy2O7)u!vN^4)fbD{(#SON*Ta z$l<$SGqj3ah8*xyEi>X^XAqtfhq7bV?k-#KethpVNV%aLSmXIRBUj2I3 zAG&S+)ed~3iGmg%vm|`Ux3ecM+nd$g>a(uYUK?2`7gE6QtmxE~@J1**<<)T{`G2o$ z(Y%|nbFVLsE`{gQbvIll+VR|~QddR5#yLjtlDF%t>b@e;SEG$b7b)<6OBvF0l}AWt zN6iryz1gGaA--@}5gQM+bU+2H3T`p=>xXY_wHkzrPq+f~z%Uqftx%`U7AIHH20NfC z*6A6Y%Am9?(zL|@kP|;hVw=%KFbDx0w?>5nLI^BszW?UD>rZJbgWLVJ^x|f7r%(gw zfE+v$1l?4X5(CZr>CswgHEd+)dLu-FdaL%B;xX1yvI;db)}jkVF!ag?%3{-4@7+^z z@eHj~KKBX$hWVUTiOyX^0wB?k6_L5QBKr_5E@0pR`5_9GEsm7Kak7x)Kodmk2)_yd5U~S*L#90gQ_rD}dJG+}k^D}% zt#Cj7-&tK%w7r`LcXLI>_=f3;bT#M_vR^xs;kL{%P7+txakvQtN@gaAU_d;)YOTaf zlLO}DVs1Y7oxm7C)SVPglB~QAP(To6OCae*3W>iGkPskj-#j1_m2=FI@T8j@XHOSR z@7_D<(xp|ZDSUcqipkVt*F6c|7AtB3^Z*M7WlAhUWIZ}!Vnp9Y+63&7%S>L_7r>9^(vX47(e82=d zgXM*c+m9T!6G-rKg~#PtA5gsiY#l1x4OBSN-7REmsl3tOmZ?=8}DXcyu-*O?(0lQlfmaI4PDg=3ls4&StuHv- zEf!OC=)0)*1-W%-w9sm9MwCNoWy52cdc=4%qOBgLp2}(NekH+P94pbq)OP&_c;e36 zl?#Qah^5^jDwOrT2I5mAL}9HAR%QZoTB}k;qFvJjaYM7pB*524?{mbIUaYV?Ch(+q zrl1CYQ-0}wo^A&Ze&z_>?O3~UaL zUHzJ6n9ck6MdagAyj{c%dvctl-xmp0^zy(1l1x@Y&W0=TR5+@fi*62gseU(=Q8v{w z6g?Dmy@3806^Oez3R&7ua`8h`*LpVHuQ;k3G>K)vWO`gAMmD{!5d}_}^KTnlwicLE zm8Bhtg*(Ir4IzeZBB01-5)h0$ip|Wc7z74_;_x<4o6wm}iK2Nfa%^JG*oHA*$$N%!Qm)bn7_kqkcEdY3oZfHn1K6TEkHpa=b`SsUBA$pDT|NhPOJ!yoqQD8HgF%->i>S&jat}P~*J^#@Y04Orb3$01Uo&D)E z7moVAxJSODs(+(*sIu2fe`3$90_zG?&i zvl%16KzRi{hYx8#1DS7BwI;eT*}>&LAyd}xcra)78hE>_sC?Q%jQSONG-?0PIr-jz|2Tr)jlk_hz4rwV3sn zKC{FoT$NDd=2)@-IMC(Kj3l+P@uEud*s7Jzq7}(`s-*^4CW(^4o9MrxlB5iXJj)RN zinOPqyt_6}IFor*mzhZ3*i}`d2Vsgim>t2Fy#tL6qr{30qb;E$3Dre-TrkYWL%WbUFj!^>LAlZwu`UIBkYLczqpr^<{nD6!6SOCbrR| z$gNtlg!*f!XkB)orHaA|VAuMjUI)-{~J?M7A`5!|Y@C2$ya?l!&5dozkq z9P&Dei)#bP>gbN7QJv+hb(w$@o{9d7IQ(K2d~yJVBS5AwrJ{M3C@~5cN?M9QEI>3; z!qWjNAF+;paw^R00K;XZ#>S>?OC@>Lbyj($6qR=IRB`OxF3e}3X~M2Gng-*FMAgnB z(h`wZtE!EbWzs=ml-qzzzQkE6o?3vlz`aUV`A6EzQV&sjI9jS7t9?J*<2(Uf!nGW8 zftn%}PL!ZtPDk0#YdrbiV&rA%rD7v!qzr*DKmo}i3XlK)@9+UTXod(_s9`_|19Npz zR+J%NG+l&41;moSdfhE*Dx7mtVNJoUV0=;f5r^IM?)Frz4BGKvsW=9N_)Gzf4PZ|Y z&Q3F&aIEP!zEB4KLlz}WNVNsap63A(ZVo`u`KJCWoHtbwe8U0)4pHYr2PM5o1oj23 zq?I5&Zi`|{Jmj5tHavmeDI>=Au2!f~9MzZu7G}4cxIR_QQpGn%KEM6yGUzx!<#0lyv+aADaGJc88D);j%lNw4|)|BuSHFoIakE!%xG55)fA0QD;ewQa+hLk6A~vYxxIZX^|UrbmMu@|FivX^*Hv_rmB4-vgT;+_WO|w zj?Rvw(FmR)3XlK(|G)t`ZDYC+f}p$XVC<^Wt3pDBy3T=?$w8(-qN>OhTGQ7Fte%he zDrwF9iyT3}7**Cr^ma8zqiZ!|Mz}rfAO_*77w1@oel;)vHr)mwTFWZymbO#Mkc>LA z7-?9?)AkxWBUiA{ZH+zgg{o+#aaUcxhpXFUBPj~JiJCIbbhq-o57-e?!SK~fsa)3- z{QXS^9=qzzc04Y0jsN8;JXM`zcOTO>PFQ9D@JGM+00xcKkPFD=_<&VP<^WFFoaR^v z2}WgLh*%^R3Y11TM~2OSEM5qUAP+A=xhhxXf46 zQ&R3NWS8mtIwlw@8O0!R|5f^|&7om#XOaJt{TF88XXPQ7iU|+zX34ijnXCQKNXUlP zwVKZl-oOLVI!yJ1v>LbQo4npj7>HnyRHAC*j~d?jcYQsxQ6Y*_u4-`*M*8v32#STK zK#SZFS^yS{EI=P23XlKy|1beRZF0bza1;y$P$&`B>$n`1VW5CrwP4mY3TS|Fbn!p~ zzkgkJ4l3vD3^o}zB)@cM+6fAFZY1TP&?9&rwrFkoo1QF-! z*RPjez>%8^t6H2f!!d@yCUziCY+@^dCS(B_y&3K%Rw>}6>RTtwUmVe1~ zb7)P9ga-UOyh?)!iCY~%Kel-Sd-c1&>+}2lf4*#sFS1poL|t0DJL0GGJ*FY; zBOo+S{>L@_f`E4|ju$S24uHo&B+sLnsOnD87La!T9^b?bKvn}2T7%Qa>H0tC?fH#2 zXy_^IXAOJJf07-yiJplrA&8osHat(|l*BhtZ%-&^OkaO@3ElWlOn@8SqwV5?02S4o z00FT~&=d4lGrR)hQwf-+r~|6Wu@fg zbWR8b+5nv`%b!lMtyGZRP))+4J^W(t?dwD}X<31HnP)ZI54Ut9b^5%yIRA%#&(-7p zAXQww@Jqw;hyw5cav=(j_5J_g0XuDSK-_Q=3UUrpMjw(Hxb&NSzA7yAyr3(f9+&VlirB^q^tXVcPk?7~A*rnJ zmhun4Fd9)ebI%K9t=oSdePG`K&k&*VK7@%8ln@9#`2<#i6##35!ngCiEx!N1<^S$^ zQX-j4uM6|O#rntZ?&QPTRd|s31%aUdqdFN)3Nf^apFQ2_KRFZQ}qD5LHK4f5YhLkQj|10lUQO_x*m&W<^BD zZ0&Jus~6ep*QdXtV(wurb+2_u;?p&*9#HO)X-#aVbf(1O_1o9=d+m$TVmRuxs+=V{ zgE{Koch9%BfQXx=gcEaV#n(s!2O$cL|MT|(0XuAg${;GEFbGoPk+U^G5Ejk_jLV8k zfY@Bu;CmR5Q|rG)nswLVWT=a?F0M<-QL~`)*Laj!x9EhIEcg*Re8IMGGsoO{nijnM z-ptN>W^2W_*JTatpd9R>UzJQ zqu@59S%Q$IxN2*wvifHCQXr}=Hk~zn_c`sk#nUJXn@JN*R-n?gQ<@O%?^SQL9S7sQ>;*!X$ zHE^w+cFrWJ1zhE&lz>3UO?>sNNi6=I#>FzQfC7{gQ+V_F3=CUz&IGe{*Kq+?b%QmW zu1}s3Btd(8Q?!oQ0(5PI2O%nt`|s~E0XJxavLGrp8W2nZWbBMo&M@6wz=Q)`xECBs z8vo+_|2U|NQ=jhZFlp}-@af~ceNJoKsh1VUa5S--8|0QzCBn5cwjhX$kbnROT{;=% z0>Kb~IVK=$*&X(QfX}g|Me=f(Kmq8Npd@5urp7J9Bi`F$S zS4SSyhm=ckG_wta`s*EhKELJEBA1o`D?+WTd~-^u0|7htYdX%pUw_p%II*3?h08e0 z1t(P81xWtq;#4Uy_A+rddF9qg@_Gnq!-x(MUx}H|Q$6!yu?N{~=yop|9*qdP!O_Q` zf3+B5%G_BBh0^La`1&ri01pmt6axn#dXMk_|B(SJXr!QMESL)o1j0dx$MtGc0C!BRK^CctXV91NL>)Gt#x7K<9>7NdBw{i|ung{Lstp~^^pK>900xB!mTQ_FLNqUd z*-TCrm@G@~$C>t{?k=+__ z6cc%ztiNuDxorb!OZO>6>iT*o&`je!d_uvT1#37p??ZB7+yKo~`P|;4{~Kj~=}4E6 zN0fHl$hlDA&^|KeC%B%R%0oNvu}WWf0%pvI0;zx~HfV*I@K3Enl=lNEEJAz6&ye`X%TPnI@3GEzln zzq7;s!$Fal9c67R76_NV&qt|j@=c9bNZ_nV&DGemMIA2KsR`Ab!+8YQ zZ>c;*DA%%CJ=o;o8HYl-*==Czr&6$+iBTNy*jQ zL5zlN8g?tisB0i-}w}#0HSc>w|sSQB6a7^d`SnC?fcb{W^P?~mxw$K z?Wav;V{$dRXN9~U;2pdWczsVeHV4sD9k|TZkS|^-)*YJi!EzTZSH?S$c6@CH-zNb5 z*QNu;1wxbq%`_elX+*W6x`6bBs7?IaFTdNtlR{JYf_C4I6Z z1SNw6W4vwM?6&Nr9+7GVgx`7C!#h4W{D)G^51!$iJ8IFd-_VQ2Fq)04nPDVbJttVR z^}e0|k|w7jm}{0^N#m1!VXV?LHXLEfa7uJ7c^T;dc<*#X{F^U>1_it^Wa-@y--A|H zT5Q^eK*X;<3`qShv$moH#g)X2*=||6y_^D{(>ValoJ}?TU$+m7@DGsD6X@_+GZbdO zCI4#4MB_wc(~*2YQ@-|Se~B8KW$x94vmSjM&trh9T*o({1QMJq2x@Fz&Pfrkw>xj4 z5>nYSs${ZJ=+h3!kH7fwFYgecQ|d5vJj75y=Oqzft`r3FUN~;S#Q$!g_$Xsm3K`e{ z-NEF~9Es$P_Zl!cHG-ddpw*7w_0ef(0Ryr?0A{9k9*}RLNfv6|NVxxpRnHV1nA)>wENxjRQ)mC zbC}e#p$g6AXI~M$Gri9-b%$a=Gw>Bl#*%}ezD(~zYjzRjtSJ&(jhjkosX6E+8A4F! z5-p0_SDP_}=P5UIaZUUwWbl3+O`08PcW@K;MKLkc9P!Q*a;$lWzqDZV&(&}yba`(& zguUB(1dN9AN3wI3o8Vl<_Vw9%Xe(_|-U))*%@4))v`9Tzh+-W0lm7*9{BPf!w;#3* zh^vM^1UD#UyHFvH40ZQbV05CZ5F$bgbjXQbGpe$|IB|i%3~#deJPzRRkvzV3?zZJp z7%Mu=rFL`;6PFUV5_w|(${qs%thw1QKF(E3Ku4aBi^HfP94yYamU%kT18*4v;RIlE zpYkn%MD&!cz>2&$tF0awZUo`7?xndzb^46g2&CuTf9hF)MFDp>m1**9w2(Y?{ZP;@ z#=9nb&FN3tdcKeM{jzL!y`qiscCecg{6MnmE*TYNoQAa`03mF6g81f^(=1Be2tc8g zC(+7Ko%04F%W5Ht_ZV2YLw<0?HymM<5@Tz-fVsmd!6GM(vTcM2(WXI4(4+UU<*0T$Djj`78_1U~CWukY3qlYj_?7Vor(5O)Ko1$5!cl%$#4U*)o(e5_H}T zG{?MAQB|1k#b%8zuOrH2N~x+e!bfyl3*!I*r>&bgsY6d#5m7G)@h#}7ar3cFf4@Vsdz2DZsP>x=%Vb}}n@;vw7Q85sSx%s8SEFbg7SE`^m8 z7VPjHozO;(-0%JLqn&C5cT+#K1!vM9W7jSZpm&10*;DHrl>(%Rd4;CbP0w2wpGh@^ z%gxjGA6XDI8+nEI80p=bAfVW~g0h%==H)QCCNom zY?1Ec)w`o)t2nOO$#~7|rf=Pp31<9W{f%bP(V_}6^2)E|5lvFj_#^;PUtBKZh3f;O zlfaQqMQjDhHIJY~C-@BJ%+N4xfG4nR_hJ+kZ-#msgsIm{SUyv7Y(dQ-nk5>tyFi`9 zOSuNrW+?9j{V0m-d@)3Y&C4JW^X?Rm_mE1st*5Ii_0K$rBzc>=rGl^NFB&s!hJiqwmvfq5dZs;@f1b4$Km${nplIJeFBVLWV|&xR?=v8h9Q{H6OfHbw;-v_q4vL=WIyA@Ph9 zbumgRY`xFpEET9Fy{wM!mpo^($7rV(g`P^GXYIe01TtcKUzV~yXQ~!@n2$!ZqiCcC zsu8k%;GRlYoI}__10Kl!xIhgsC3NcuVM^c@CExA|o(LF8WgZNAk*LVY zR8)b#^5#IZ%VzC2(1@{TlRt*o8dKb#qWBn_AmH^#G&wsqbBL^6wF|c zLScx~>v=)+3;V{|$Sd557VGV$BNFOk^-R2IBjuY(F}Z3g!X~|9p662NQ|@?U+6!HX zpe*@`aqV&C$QW4*7@svJL_23f!LlnY;C~!EvjCK1nXPnYrZ-(4QjuIFM8>}^l5l36 zGMbOxlawZ~%>USmjj>|G zH78l8x4vhtF0!NL+j|Lu!r8KeoMmOfV6K3qtql%u(_jS27%im-r!XgYb96@>7zT#0 zAL?RuG@cVxvRg3?V6>a#_Z=+y@2I$#uUsub3vO3`#q}wW94gb2<1;^^-udcNC2Qs* zaiI0zrp#XUh}~61pc$et-HuY0I7r!!by&!4@#MxosY{oGUtL*xex~6h_%krB`;#S@ zEowNnU(_>jcePHgc@UBZO?qeA;9~Cd^Cg8d{h3Bgv;Ty)Fo%b!v9eA`2xrym`BzbSz&4W4KZ(%%J|{$P!a{gRYBtlRs=kP1}HW7;3M z^AN%(Q7@{EPKiQ|;;ik`sFYe`a+jburF?E>|m&}q5g zocbQpKx$M~OWH-b8%{44581u|kpcPJg=0Z5sJD_$PdsZhvJV|-K%|clu zCg8q)ulUb}1aDhT_f?DT+%EIrRUU;~t5?VZ$OIZZ`;6#5 z)4Mu|n3om!5M<>dE6_s_fpOhPUq?JBG5cr~!0wkPA5vz-J&0qbo|Fk-NwR;dWnagd z_<`J`2StHwNVM`s0+K~_WC$nWr*jHL5N(E%1!DLgPvQyt&~q)}VoeP0HVDnRzbN{$ z9?XVh2swW#gmRR3L_<{gttsFsF(Jv1|Y{nx!W2y%Pr(*kt{^j0WPi?2gqz0&FMif z5>DPvDX!8^Jq&e;9UeEJ&Z>RWkl_()$>lJeI;qv397aJ0EUf7nS&DbuqP#~Y4@UuT z`0(<i{%JBCueg$i!;0)$$?4&a&2VGR=xD3LT~&Mhx9* z;NDIS7aNi0!qX1?E$%Iy)61$v-ESwZc4~=aUZ+T~s`X_)hJPQg%3Oz@t7=c(y)|I+6GWnWaUz&74FZ;NlUl9_CbFyJ5I>%KdXb2XXDmBP7kmIV*mwUgzw)0lVmTa(7E?0yWPHln_?}+z)*}1 z0e3YP@#yLB4{QUX$yG^ixNOOFb7$-s%!qvnwtSrndUz6Th|ma&4SRHZ&zma)!KCv3 z$__$9ohFVdKc*hu`ts4?5%4sL-*Nb_q6E6QYLqA=s*i78vX7vZB{PC_Fnzj|6%W|H z7i2`{T$@A8PO(Stb+E3Fw-~U+HzpuzcNK_kZe+wAiPHP;-QT$4+ zA&Ke+yRH7}8pC`yD@Vhl?pN=-#3@K{a3SOj7`tp&s0X=ug~WblA@%blA(xQ=00IyJ zpP1B-|3)zUCI4}IkPR$WptD{YUvr(}2B)fH?|D&yvx{0Sk_4ZBKtOGLZ4#eQ1yXYN?)cC05b2Zgs}zw6IXZ zg219Y6e|U*^=|)*@$5Nj$qr~wsC!iOz@=!Phg%*|`SppDIMe-Tq#sH>0p^06*|P5; z8;`cwhy2kv0X5!T%D?oJFN}CYbWk^LQ090+kTjW#3lkt;hb1$+yE-b(7ecKrXj}9p z0v8woZzsIAp`IXPDG;Ovt{>A=GVgxrn&76g^*BYwAXciDB1r6zzT9Yj_tAHpd*P18 z{jDOD2)%&-00}ffn}C!0M8Kv(Kl{_BjONY8Y*MtS(l}lmgpWd+oyR|#Ig1|_(<@hU z_>~W?hoy1U2H${A?&-^zVlKEwHD<3!%tE&NJfTO{3-uwAwvf%bT^DJ&TVVwbc9((| zsN|q=xe?9UtE%hRkesZECt1>f1b|8VUeH;>9i{$p#f+qRfx=aakDv{O5`MT}{M3M} z4c;aD0djGGKReWM1w|Vsk&f1+wO2P*Gm;0FZfdOKxq&j)OHONiph;jE*J-V47V=GI zd;;QxXJAQ(i@1d(3z#2ctn|eNSs3AmL3owy7|m~YxkONIUU=x4%1IM)J`TAhL|0(6 z{F90tukZsw&ps7u*K@lN51{YYN+9S8xW6+QcX2Ri;L=m5mRy!(85d@sX!UNR;SXx> zpvl1*4_67-`wu^{()MsgiRauBC8WYL;g=DQE}pwE$rbvQ#(W|+^&BS`isfVe)d9KK zHQ!JVD5m8;o%?W4L4g`>xykq5B2|+(KZ<8!iiC>T?6ilV@GPf{G!^&6!tcU+b!XIv zNQ&jwd0kz62gbTN;^*Ro%ypjPQ9+OaBw*^?a21$zojS56>n>cJICwOeRcp=9d*&Op z_-mdK3ck}a#|c4d(pn#7)8O$q_4vPs0r5eXV<2EQlwnJt!V&Izh3fRawZZzr^bE9zgW2k<3IM7^dp6BN>P>K`>RfQjt>vax;j&prk z{8BqX9ATp%<7xo++XNY)W^l__P=`cu!{Fvo@$9GyDSCU8o<*_b0`O|dr@&-)D7e%? z$BXx>zK4EX=jl0vsgsYSh^59+d);poxlVyqBfMjK>#|1*=El=!bXYWnqUKi%8*1%z z$H@t}_0!a>=Ew=5Ea&wZQdGY-xSYyM%{xskl;G5Dn^5TSGxvYp#yw?ajvDZeo+u9+ zxCnQz>1c4MOK)ZmPBwe)nOqrki!tYGmaPFS!(|x#LF<7JMj&VN|G`J1x`H*?JZm-2239AIf##zBw}8sY z7l=g56Hr^;p$Q1Z$vj^5%`Mk*^>ovTYiKcdq+^k2xJCH97M0R%#4A+Zr4Qwc5G(u+ zHwQ)2bTIjv8c8Twmd)3ZLN_!8()4uwU7twuduiSdIoYyz9kJV32U_hoa?HY-&|lnn zjX;#ga>WV{83adp`PQb;*r9Nj3_n#RmE%ip+Zy2TILboPry_paJyplCPAPDuK#j6e zNG$$!Lq4OIuNJcI=Ci)(+Pw=|8Ip44oO^ixw(5GdTUXTOn#V;f)!JgsNG3r{8g#;4 zW=qOdWDgqL3f4t(;x6>cw%AOq?T9(ux7Wbh_4m8u%jl>sCnRi9LnN%P0->e3o$Xq9 zGY1aWS&!J|%^NznN-eV;3i>0qAqt6#=PX+qdYu}O%?~066_`8N$uH?X+xh#e^SYQV z@!!|Uvn+C)#Y`)qBrIMf4MRJ#No$gMkxC#cR^|LfNFe7To*)LyUl1u(e{0;zc_yKD z)xnr?dDROU1hA1BC0?OQOJ$7zTTs5(J@$04fS_aiB_N1Nm0vM+D5?C%D#=_bbzBg( z?^6q?kAoU_Q{oMEMP^wt3qMK?u1f(xwUF)ypl0gQJhJtS)gx-baKrB?{+)pa1MA@MU>C632Ts#bI0Ee0>FDi$Ps!4BzR zlG3#Aa>+QJVR3%?!ILW-%uYswVhR!DRoqKbN>~w5Ott5Op)We69E~AVT|0?SDA@HB zHY$83r|D3wQwdr{K&|!@`QN9jUgR=(^0jY9u9B9 z_k*0L7iZ4>t$H?OPz-yHY|xYQtk!yl)@A-#(fhoO!68oYt@O$+RmQs&mxphZsHe#B=O=MfW}T|5dLx%H~?k_oKv*qjV#I z9hU8b=Y~{}>6buPNk3rYTrAx#x1i=+ksJQX%cE_M706@m9c-1br@Zt2R`ZB_O`@aw zrY~G&uk~KRc=4bv6EbMbI9u*rl6i*4L-K83XIgnvguVXlsb<$hV)2Ti6nFDg>q%H0 z-;Kp{P2tew1YtI*$b+d)q~DW(k6zJlbuwu}-7ydRL~qwzm#3S%86&j=GNfYazn6TL zQuIbcL4FySb-ia3>Tc4iT5TiREf$qK_`I;I!&tw9;djh$`$2HSsH=l65jd|YdYhs8 z$@W%l9`rXRs;zF_3k3v!aqVVONpm_VYgAZjy|Fu`^!;$zA-vAgBu8eU5aYS)?*|Of zB=p`{+l4slN#{4y#BxfkXHw1dI_^EhT(}{BCRc;_(W(ISs0ez%Q3uhi>BiT~q8?;+ z!Wg!rS?iLWTDA0cRumtj9zDKxV?tGe1N&+aD{a`q|o8-CsE+nS4FF{)-Xjp*%_a7M!v9 zI6+@uTVpRpubs$LCbju-OGZ!xLOTn)GB8uk;h^XGoO${%0006u0iV3okN;3`)5SaA-e_X3 z&LR-hd|cAr022RXMKqj0t>bI)oA!fa9~~(aPFy5c0ZR~|&O_xeOdpR=t)sw6T_M4Z z28apLmkc619?6@@@T4j#a6?-L& z@C4&fA}DR847eJX!GWW?;Do!-_b%Z}P`Ou{-nzfdnS;-WE_0}(x!NNz@42UXKW9## z-ujxUi-WihnVpv$34U!4xqNtP1d}?^7gyNg%)v9IF5e-N^O;79Aq@v=xdbc;2VWIg zm@iIlPY&0U8q$MKudvE6Y?51Om9Mc#V==GBM075qj!eXTtSm>xM?^W9dlZ2yWQKT^ z(UPe51}dYvNW~g^6y&DXCL<~v9Yrfk7!Ex&*WF1J5PnDgOLa1jE?@?_!8`ZKAW=)P zVH5c!u1KX?VYfZGXT&8#2Zieb2`B|~8=vX^jDj{ss?WHDdEtcXpACtErb@Sl*?xKj zj9x+=xs-7~<_^h#AdJAN;Lv_buT%4|8OwsdF7jgChpCdlS$KJYW#yzMtD=L>pLY{+ zQmS_Vu4R+HE_R)7A_#7IJkVsQZgKfJGB0rrlxuBYRV@w8+qW5$NG#2kuN$-tAJ5!t z{QqyEd0x9t6Zw_89!12fLpkUL5kqKVfr;e=c5T%%xPH!^`S`j&p1lORUPE`N1m{tc z#~#4i0W1gF3Mx-~|taC!yVmKP+({+$8y|F3F8np*HPV+WbT!^!a@?702NN3N_kLnMdi&@g`e|? z^piGRl3csFF@d)fK@2yeIkY6nBwP8KC;1c@dvS~Ob5JekJykrF~~CzrB$bAn?%(TTC2PQ9Y~k*-+-4xIb&T6 zK!4={YCOT3sZ?6|E6)4w=A|p)xu)sVFX=Nt1k2Ab7~K2N5cQ17 z$i)!6Ax`RFb@Owv5MekQ>V@aGy)+?7g!%~Ap?(plfk(3YPytomf|t`=>yNA}A@W}H zl!WAr*a4sf>opOKde+UV=m})zYc>Sk$9JYo_Ox>A+*hLXtTAZum^*lq&|z`R`0}=* zpO)(%&k1M9{0pg3x~Y%fwrCgQZj}pMYU6$@S=@MO78NVlJvHXKT_AXl(fanw#M+~1 zfdBvrN48WVyurj&m+P{Z`z!lrZg!gy#+hH$uzfd4s3`NCKBj zlA_KVu;6P&PNiR3KdD2NCRM9hBvbrF*XlY z2ywcM@Hs{Ewq{UoVa&Xl9b3%5opTbB=<(IT0Xx4VkP>u!Yz1pvN*;AQU^VFq++M zX#tu~y!i;WM>o%1W&=2@uYk?QuK)kW2QqSKZT3U#TiI`D^;-H6o!$gMvc~{C28va< z$n$E4by%i^4lECJ0d=!}&877haIF^|2^%VwS&%fI4y8Pv2PO zzXlu9dR_$_m@^h?)u@oyro$@X3?-%(KZLupJ-5wMI}I)xvfb(l+)oA^>W(6mJS#0V zQm46F*Q>N21z5y+>9!o0TIpwv>DygtAG|d*sWxY0;#9L_Y%v3rO|=~Mz>Xc5Aj=#u zza~f`=nk#i*3_5a5-WbTlbHz3ZP>2Zj0HASt)V$ zuBHjSzMEfy%6bu)e z6{UOyF){X!tdeOzNN$qu#JE>&(qiS~QP43rZd|BHAEwvpxml5KaLc$N&+H4P_ZziP zdy=CNI)S8KciUOdzKcQ}fUNI>Kv=A~KbKfO)O*{;n%ct=aBQ|}&sL~_)_WLZE4vVK zlkNM4)wK<;th86#r*R6m_Z^=LRjR^Dil)>t1i!zpy8^zkK}E8CFcz94`tC&U*B^V5 z8~r$;d+`pJ#ctVYNv{w{&?B6*A+!wEEtlxmGn_}sm1f7{Kw;@Edc%$wQBG&XvNLRf zpXc6{W&VRFW;0K--KsRLXk_c(!_UVBGlFip&!wPT>C+~XcJQPpuk~ZmLxtx~@B@YK zd&}m=#Qpsm|3I8~qf@dCGN*TW#L?WkB1nvV{w+uzr;6MGM?--C74Kurhr@2c!Q#GU zr0huA!|fLLCX+9fgVwLrP%|kig~$qOO8dvkGMtc-FtirnZ?gw!5}!Hcj4NUY>+n&l zh7}1lgQ7)_Da0I=yNJ#1mv`>!<=bq$yC~EjdbQ;W4H!)Hgl||!*LyP_rZv+x$ytW0 z>o}1zJ_N3dRIowqU3wW@KLl^m?3UoaWD&MEee=rLj6~T4DuEjZxH0jw4bz>wX@w1@2F*(UxX^MkLLb+=|WguzitwtdH0=Kb$JM zL1dxEdGgKqcL}4Wn{o=oce#hPh_BKO4~@HKv?hueeYwbSNbyHq{3E`m_ESpnU|h=V zUVIXbSRMLhaMi@S!$~n?MEi^j6dzsMJ}CAF0M0gph5w&OCxrGDu4kpfGPr%j$-BSs zn62Pf`s+DAtSa&w+L`LxrD=AKVo~r@%G08v!#rPvCiYlGW93^WuJdl1b zYQ=21ZhKzvcFPBghhJqX6RQtc@61@LX{0t)I>OBnCQhu$K~nJc4as+97S-TXf_#$y zVl|e#6Ikp5I6F3Wz6Cv$)&4;uR7ul57bIlU;u%PACryPL!iW|ZFxq`AXi>_Jh+u@2 zUefaIcQNaflg0MjE71A3gsf6fsa)Jb#CclQOPyGeGrY4%2xfDe?-JO_o6{fUl;)z7 z!N>3q!nrP`|El$XL;pp>>{Kjrj>%wx8n~^ZSQqZ-6%IVzXW6kY-Y`$c@TKUM<2MS$ zqEnHma4oy;!M(FZOwaxQ;$4b|QG)&dHh$wVr5V1t)mVjRzu57~stNT&HQ}M{@r%pO z;Isv8=5V>HP9N>&@CICrdd>~?k|fG z>|CiM)+sf$V#!|%iy~>um#BNbJYA_5J{2?=SaY!5gHdQ~B18seF0-BoW7#7>P7$Mk z^{o?+#{0b3abC1}j3U)oRLKC==yq%btbsh}CPjp;wfF zwh36?r?|1K&b82c2wg%rmI%!D3&x&QX3&UN{H^mfwIzu_!EWWvtu=qACLO&99UR-r zuPI6#wk8JgaV29d=wIZNC8hZwCKSg>NecY5mA?fC>BTAp%>euL#pG=2h{a}K_Lf&; zcEKv8QGE{Rhy&<^*DKLWW18wC~=GeoHtP_%ku6eySx-Oa*mDAvt zrG+HJ>TV>H6|KnHD}o7NPrp&{0QLIZlS)a`vtVIjIue6f&k`)G$|Mi~00IF4pTg9S z|7&E(m4L9BRWfge1d<-n8{_3nn#`@#BP`WN9yqS?+@?aJ*FZ9*g|ogVlHfV|%NN@s^@4{t<@JZ_I~mN-wS;q`15jQfB`e@&ceJ&SKp zdN-pBt55)`+jTC1_jiv;z zpn{S{X3AfrEJ7gWkk%g7vl+4^zE&=fftpekdukhhW+Zb2z&gG+T;<{n3~l$=ifXGv&*y2CW6eK86=4v2 z=+#M-dn8j({ewaILY)8Z`b5m3V9QHJ(Xt2-qwsfSLhvg_Z-@Xv0cV;(F{aAZ(}$o4 z5vG0_0vTWv7h^4ou{ODZk-Ur66*%3vJ8u+d_yA3Y(gU^=HuEkDNz<WqYhX&?+_hq-t z$s8Hm##r$ceH6|r(h#&#ZG$ALX$dw;F%BzkByxYyYa{Q68fh)T#RxYurpe=g(VtF} z&AcUp@8Js;Zf?jrBDp#F9#Z9U`S)A9Q}ESMlhHA(DQI@dvaA=??1mre;1(VAEyd}W zX-tzwR)+%Uw?+eUmXqtP=apE|a|+gjN95&5rUP;*c0CqQQehkfzzxUV@CI6`(mhF1 zF^+D=lr$mDk7B-t&hNpLV7fe{jfRqzeImJCv2X|+R$NEAM?;8%$C~s0aAr)w1Wpn? zQ&buvaLyg_1?DVG0(~%EbO5npV>niUp$iPqR1&+2E&_5marQ)po6iqcYUu=p^|4(f zK(0Vvk-n^uyH7mVrJlM&Hbn;!jJaz4AIqL-MK~B=JotBU1YD*k>crjK9t%|hmC^8_ zSSY`c2>0Vk8Wcf|%DR?oiK5y~%Yp{;Li#Juz#@4#MIXH<0+eu3?$P9w@jG$&e@e1Z=_1&gsVFC z)6&(mmRod;pB2=OKz0abU?B>R|Nrmwp+{w;F&s!{8ZgAO6ydWGK}9B7BUF(|Ey{RH8i-ze=~nFm)ussCXeJ}6Kc2fpk9ErMzW(SO!hfe0eY`#jx#w`CemycN;d zej{ooOU^cS0I4{kn9M3=ne6Ya1@bowzhW!xCO7loL<+`0DO+dCDF zP`zc%IabWInY~H~Q2VHzJsGdoWhNSSXcxm?iHHbF+9_o`LjEQS}tRn27ht=4kp=cqN^%xVIw#x<^~E{ zP^Jt}v917?f(I2AUHbbI7@YquOv#AltS{0}K5J1t)Ge)%fC?3^xn$lCHCoRhmWjQ}L0CRtYJ$f;*EJvjQbAR~B{DHY z0WP^(0fuM+7f3)~`S>Jp7SDje&fWV<+>u>kv} z`3bx86gwIC(Y)&b9R7F{MINSlR^3E7K3NNT2FP*%VpkOs`H zm!TnCR?u$SUk)*eS0Q5cNi*wo@QJ;dYM@4?v8lsLV7`qmPpH{35ik`wt$56k0OKv2 z(&D@TZK7$7y>g1(;Pj9M_f$~jM}lSpoWafD-My%$_z3~ia@ra zl};xc3s4E}Y-H2j?x#+t6Iudu5HT}xbRTydWn=vf<5)--_zM6ENHU-X;xv$vA~G^o z`UOw`SU?1CcC#5f8NPdh4@0pq&}u-Ejq(*et%0UiF8*)jm;jpY+p6kmkAbPO%Q*e< z^-IjfWLuT$d@}ru_00^qJL3ukJ-TN5)2HOnJX;mpg={Ly3~IR4k5=1FY2S1_29$PC zztQn&2Oa3K1y{xj37_3c^IsiUbM)ju@p;8qKpi0pl@*$gCPOe#N>m}0y;E!Gp~|wf z5FvC35yv)C5(Pg_SN!uT7hV=s#m||_`8GY8tXth=NaO=T4~AS0SmgGcx_)XaOb&Me zMjW0mU!FWZYk&yeI_$CApYne>Za}ipR!1$UP!0)a>u2Tml+NN7U$>k)<~;-Q?DjP= z8OE}h@@lTvHpOzv8&5`VaXZz*Y^A#O@y7ad5Y>vI5X*?@njzeIO7!D74MwigoLEKr zIa4uV%5LT{w{fgj_F=`K7#et@3eW%r6%}4*MJWI#P|^n@App>nAOP&T3*)eale+}& zzpa*dE?bf6FJ_b!2YdsJ@qt?aPyH9`Q2_>OZds7qO_y`CN9_HcSt*2-1DRBnB*OPR z&OIEwajfrkeZH&NHE2{6@1Q96OZoDa!{BSC8Hoj_G>+yum;lV*XpZPp$ohN}DV*aX zmG5HCg4WMIZB%2nFi|>;6=+EYU>+d~lBkW2(sxjS) z7z1JO3Vd7~UF~5JNGJ`Sp@S-Y{zz#zB4)VjaJq#%$_EK%{}kj? z>Rtno4)-w=XG@Q1;0x`bT0XO-d_HaQdxE_vqv9XqPtm>g!9s}lzel`A_)&Fr+0io- z(}M>g3XA{$@BD!~Y-6C*NJR=HNI4jz7|YErmx5eU=+G;sX-yxZq(Asa{Q2iPzbVBv z9?Px(rFz_gz)nP`xfN1Eu+}$qJ-u~zt*2DX_gGY;xw+5|A%(=D!iLamjDk~WxR~SN z_SDSOB8y&Cdk9_`#W&C(IaV8t^kSu*BmPHMy7L9OEED3ISkGv_Z~{=*!ztm_+Fq?g zHjD|qwuO%{4>?Dn+Yh5x3z#Jqxzt!#J!qwQSvZroqI@169;n8K70Qd{djrDQh3{=@yOexV?UXu+pF0x`y9v9o3TIrmOekS? ztdR70%WXE936CKPkN^AM{eekMRv_3YG9m~_BXNB2t*iw?=#a3`U_D=l#CsO<2MYRv?a&MfT96?r7z#aJ->Qi73)Hn@zW1k7^7{;N z@17u`O7Wr#{&`2p=@B#ffQ-sdKT(45gFDviXtJx-*N%-F*ipQPOJ4X86Yi4*02FX@ zs*w@_13Yz5Si-6z#+hs^I@-Su=<(TshDgIj}*tZHV0YH0Ah_e zIJhD}0 z2e4byT(oeA4yUF-SAw zza=tF=2!$Fy#Rzv8XA3-Att98U=p0SBI2qOO&`1d4{Qbd9929=5HbNcLvE%W{=08w z!zs%S%A5V)Rb_JCuw>BctymHaD$-u7&D&;*nhqHSO8$C*TDIh zdqy!X&?ufdHi_o|Yry6eugCXl0>GOEU5-4fI})+Cp-TTUT*lH+g9_lQbxQQk?@ez$ zpZxas*2qG_$5n1Je}d{SEify)vlW@R-`!{;faovR$R~{9dbOOD2P&BBgq62=SeyX9 zyF*kxla47{*6D8m-|6I4XoTUHd5m@I5<^7rh|mG|AqtfJstV~ru#loaAQWisRxL{# z;7VNq(AhkdRf<1qKf&9)Ro_vsu}tuFJica@!=^>p5<1Vf+Z`A!>0dCMIV%}2nRCqt zQ;gl$6aTO9Z`l~K)QcKCwiBH1>NI5+hf&}3Y>n-FaAch4O9Wi`>TW(pWU6=PK@t-k zG>x^>Fah;3~vZd@zv>H#%iv?usdtOigzj!c$ z>$J;3;k3AH6h$jj(@g-Vg1W#;bP|aOp+X57YO5_Gl>`>a5dmPpj(HcrhJ7pzZcEY) z=Ct0R)B%dc!O!X8xGx=Q5xj)~*L`kKDoIQrP)2!Q`hV*fRhJ4=)p zPKJZpSBU;Ym*g4K;Ht|j-W&~49HZ$T``4BM*v;N9TlLl!3`pKDl<{PTkqp@-eYo+fRrV)a)i~v0$DwPGbgrk7TSV|Tspac!GjUm_s1%X;vZxaX` z-}u+t-@N|oa&31`*YT=jidERnc#vKfKh(-*TAt;G3=?9V{{=XUdUP*e4`6W)=a)X` zNvF=k8X0pgF6wHl3g77$^`DLF&CKe|919U3ljec|{LimlYtrJ5e1-5q1034%Gg5xA^HG>_GZhH>X#M6^9#dQy9^@cbfa z{Ejl-0=;*|Kmch49Vv!sRG~z{b(2Yam;i{CXbT0iA9ICVS@7`nQ$tF*jVkh3 zpN{X-6@RxYEzJ zCSSa3v2iwNm9Shga)<*5AxzUuT8hYsD@@$6SO(N#m&7tiYH-YAR~@17A9WOEj+NZx|T>q!GSTo5ag z1tEgz-YNjtMOmUaDxKnILiicY-`03G*nel(0d?`qF+wl-H>Tn_^uV=Wu? zJaxGGqmEObrFk|J5-K>{>E_v@tEwgi04AWbNW{<@Em8`k*klrMkpm42t%Aa+tIZps zbktC<$nEJaM#iv&Kt>%;wEbmez#}Zsw2y~3RIl#1Sa4*1yJ})1e8N(>v!gj1)S1=aYX#?ZF;^xPiewa;!sGb~ zhCE^@X7_1Q1&R2qkWVD?@47Y^?`^eAQ$OF0fRM2lGiF0^<5pc_>G!MfKp;+-i!d;h zcrNH&p;*}Brp~ipIS~+)^h9N0t0w*N%E1e5;9hUaA$pY+stA@N0O?)x$-0VJ5o?z& z903XNdYl#7NkU)PxY|SeRVj&jcYm<^%M6-dgnBlEXrm?Re9 zRA$~mfuW~mM9^G_w4GZ%*?x&&INdO!T>s`MLaK94t=aQ*#)}bdpC?D@Vg_aoLrI$N zZqxfWcH%s;w`2E4Nr0k~u8}Vq2uDDZ*UlBi>X5xmBu+ZRo?ftjW)LAbT@i$l&=a2p zSwGjUSK}UXoXz*cr7?VtX(sI?Y_K?{mPj_clmIhgZ*T=9Bt!=gfW<^%A(d~ZzB~bI zNi2&1{{Iif=_~+>$c?RkofiZDOrt>65};OC9Ynf{9*A`9M)}qacC@Fe7y0n$yFu&N zt)!L+&oLN95n~59j_gt<0)wp==mSn>a;oc;?a>@nJ64lx{@rg>?inA?+7N_arH&yQ zl^v~~glFVXuq)qFCxeT-XYmUiJZ8imS4$hNI+i+t*-ZG|l1UA5UzUR32^h{Vhg zZXihn)7xbYB{J}3qg2lgw9QZ8WrmO5Zc+NM?`KL8vTm3~*zh5m(Jq?vTZ7-_-ll+o z)CXm1Xe{a$4NQl(OxRcpnO?TbtE3#r9Ja)0NTYXA(@U6veA0=36%G#hzMma&hpu=^ z8)H13@6Uuf0;+&0EUa)c1PCG`p-4hh6;Q*lEU?o+!`t{I56Nr+hM1-{iVI+W4CGl6 ztBqh6`{J)ukOBP9)A^JX=T*#xQK}$jg5yguv8d29vtpxhcc5=73_opA#uXiar_2q` z4C;!~%6qv@H*I6#PaRYpL`%g`$C4ym2HP&C_d0wY`&g`8@=@!u(*WQh3Y8VHh?WvG zD{}Ij#cjKVsTy2d(?C7iQ0*8LmsG|3hKU#7FSf?j?gQ4tdYw=^Ff2_ZBNxNQTkt+L z(_L~@?_4=hgBvq=qmuiY)6@py2EKnl)O)7rPvl&_yq;!FPH<*44~+l>F`HwnC&!fd zR)PE`>Sa=5grc%dNQYHwfNP4qp1x;7peYRs6J6U7`LWT*D*>ET*p_;pD0C$8!KGAf zDnwAZyM)C?TA(aq20vP>UG{k~-q2fhzYLU$Niho$DpS#vfMaPaL~19mEr0?oXlT%i z3+8BL5@tIfn2~n=R5sHO1ImFTgJY+&Y3o+nQ@V2{O-;I|YFO$o32FJhUr`!LHG~0W zCzvQuv00Lks3}LV{k|tkx_3k674UZPU8&~BDDLy`+hw?PmAV5TVbegNRk3~0r}>-;p*dGz1aoKDLJ!FNxjsW%w8zypIYsEi~2Vq%u)|O zm)om;D^_@eg1MA$$vD_XxKFQ(g6czEO(IEU?ATzrw7n)8$-y=X$)r zMYK?L+?4=~P~54$^DL-a>cH)k4r5^6A8je{UBuH`cPT4RLMYe-6&~>13PZM$zjioFM@KHZop175@!^&NK?dry$X^Lrb!~w|%6Y zS~8^OI$u|U`jN?7I5sw=ADH?cTkN-Yv}nnzyX*eRN~LXPvmuq=$_x#$V(SWZH{|E1 zHg5P&kI0tbc#m&%L!7Vl$HaOg{q)P$bz?F9HMPyy+Vxa++tSc}GK{Q0Az+4BMm?60mQ9}c@2dm)>n5D*?MNl2)3gDDAv znMME2FvS(%gEXFM{cRl{A00|$m;mD;RWFSk_j2Kl>TuW&GED zR?@tXr$ub==kN0uT`IB3ufO}Z3-EXitL9}akB8ieo%chlMJ24$r4Dv^F=JKgV)$K# z+{Y%-Ju6%5-X3bp9dMErwko5m9K)3UZTdkS#JaOvFqjs z>TTvHVXPVfj=^*yp3Sh3KvzGhRdX-? zz+gC3ETY&fj0x2#_av0sm#qjD&a5N6;8z?)8K%5Z&9$(BA!=ov>r-f~Wg--);VbB< z-lZr3M6C(JAci5#Ux1JfB3p0E`=S4XgQg#4j+D8Vgm4 zCmeC;)`uynXB23kz`a(-O7?*Slq!29f#Nqz7_U;8E7doKJi#@34?-hvV>Db2H~dmx zeDl6`Ai`*SA4AxZNhHE*cSRa*q58ObVb1tmEuKrnU*hzj5S13)2y4}j5egTjEjg7s zAqtQG|NnpiMQVhxASj^;1WYozZpvj+>;m%aG`4`H`mf6Jw!7pJzDJkApWOQMNZ%Y> z!O<|tXMSk1vg6rmF=3a6St7|wanw;!OH(mS(3Dg$=7j1)Q`~ck5aNRrD=D8E=DiJV zSiOs$T6fG676U>9m5;7CVPih8!z=Fvy>B&Nz1G~vYVC%qOK6#Ptj?8OiTGJqY>fyC zD>ug9X0laeMLkVTYoK?utTBm!NFz}somzZpg+Lg1%18hkt5iTrDu7hMR){qU988)4 z03a-(bz^`PekJfgrR%Jw`B&1;TUD{W83SxkV+?>^esu`DkXx20B@(|buI^NfstCCt z0M*3Ed^n3ugfia(LtJQ|#(Fo`i^ln;N;t}J6ee|csOrkFb|s1mL!Gz$pOc4o8V@JD zADyVFfEIpVIaj+*5_Db&un{Ut=*TM^qhu|8zb@Fc2#D8S?LP0gItoD`4C<(ndvEXD-PT-3#WpS;npX@;(ANS44FUWP zoHy9Ql6%5zi(A&xpL58oRMbEppQ*?!r(5^H!BgQVJ4RM^s-hX3Wi1K1CbohSWdLq{ z%+EAa8mpHKPJR3?8;%zc)~j`K8#JDQTD#aoDB}$ijt~QealWuKT}_&F@c$%P=Y`cWjG92+Sx3G z5XI12>4MWs3CM!81qH6XvqOGbwK}%a6YBV{Ly67>K(?HuVnn9^Fipp6>&5D|Tb88~ z6ot~~eLI>?VrEslUD~5IjaS3x-_pEPfiO!$brEiMAVLvU5~~Zu3*p&%+8o{K$LwN` zP}jBtS3sUud?9yrrr%}nO;SaSNLL5@kW3S?5O5(1kN^Mu-~mTxq@bWII1&wnr7{5s zaG)rvh*7E_bQ6!T@OF=PcjYd}mIb63xPRS~^(GpucEyz)n>~`wT(QxswNosTi-iE= zD3)s%C0{E;dYqwrn)`rT+&LNvMYeaN0WHHhk)WT0)2=bZNTkzve2z31p%l-XHrLpb zV$S~HlBh(<6;)Wd z=L~5DKpeTI!;b3{-}c`rq$sHhgG~iSf?%N3VjvJ3;YbEiabOUDb^eU*NkS%CRE{nT7n^S)!^+eMvDEaUK!vKnpRg#6%r03xSFV_xHe(x<~$G*St&8`Hv z*%c@03#S_4*&oNW;Pu4cuhh0LOAAvHU*}W6P?YX8oM{=LZyu3xs^xIIh_dD|@^6Ai0u>45k zQ@5NjG7lTJ-Fi0`7=Q#U2t2;Smw#J5pd)vR0yb5!)8N@x(k1Yg^)WF}9Q@~H7p47r7alJ7rac$`H z<MgHOJS68rZkJ#rFFd+Kd}5xtI96+VpmRvD&& zl`}!>F4{Mqw!%Z!(P2nxN0Uf9tb>go5Hbq9V!H1CCNfGD193qnqjGW)iwimoB#Y)Q zAXXxxSfJKp^{!+1`rk3-dL?2fe=)8E)CrOUPD_>TxqU+!1ZT2aLM{CqGL#u82R-WY zJ#*Ok-Vs$1%@w7fk+XeDcuU=NV=c$D1E3jgWAI|NM8(ntvO6(Qc2;;;9UdgY5wl)M z0?j7#1#KmQayGTCD55}QU}(L`PEY`$D}6F#=FB{DT;tM|t{|QkT{1qorSqz9GrAB@ zV+Gz%N&Ws+yN@KU^vsAJSaJgMTG{GDK{&MRinhwbTzlvCdIceaoX~*ULTEjzu}^w7 z)%)8dp)c_gd_??l958|>?Sd6g$HN4hpFJrIM)Le$!MPcShm;j|%Hy#~HyKZ#;2nQQ zs`7YIx(5-O)xKr9!~n$PKyb?pP2Z0F+N0(qRD-Cf`Jmd|>2|fA2+7Cc}k@Olv zZy=9dJRl}h@^nv%}?tTfFjX=>-GH@B%*x}nP-=qtbH@z!~kXQ%c(Ok`U| zle_HBoD*AdZ=8wf3`w@@VNJaNCn7d$h#)#GC(Kw2w1_GqC}oF3C!%y{soB-ST2UU> z*ngkCzvDFbZ>?{sImIktMM3a$~0~TfRtdi$#YCmu`@Ov*AgLNKJb5*IE!%3 zOv5&*%}HdQamcYanE7A6)zGq2bNR+HS!WD0qXG}ZPetYB+GCG9!L>G0YI+-t4CoK% z^42%|dXf8R8Z*E;!O5MP8Wc1e1>@itBO*~~=65FtatISObO29Gy;3=Tf`fW+Zs#q_bnL=q$D1Q2dByF=lXRRg=QjSJX>n9~?chj}Qj^79lf-*{fsJzGZi?L-9@ zhD#P(HO20JdDlB}%b4;Jlwd}Y9BeA;uRL#c%^uCd4k8Etuu#xn-SN!>Zi8mqy|S!E z)?(fbDsojND#z#*ERr1nxNfsHUF2cJ#$o;|c8@K@x+sIDi$uyqXf(s2rnJ~Q{x2%W z>hX_`AQYJYV{`o64lbCyN!{id;u5Avg65igh*Yx#{iEe#NlWF&DA8fnw{fNS^(euS zud;xdGV^siD9GLgoeqQ!jVY~dvmq$6$;C9knC<24x*s4ryy1&FNAr5>4JmHiYdlZ; zrGCra?%?^rIqt!hzTU&QDT4pVi9og{JOnlLnrowp|6unPSNgWiYwM)Wd81g!$KtYz z=$C4UZ+_J$A1*iWvg+8QYMlKQ$-ON{G?v@L6}>_0705Uc{cKW_{J;z3gQC*$XUC~u zUAKdBfJ@Oqro0mFK(reL<40*=x$qBnxE3ZFSL?@BKob{fMg$G# zL^kF-1gYf~=8U$k%(rtU8uN84w>_$M9+J|d0e%mk}U^b#a;p4)(Zopz&qh3hk| z#a~6$oyPob1Xh$DXFcCIdXGZb`Gowf1q}!ZKU=6TNp~!4!47m}d<7|=EG&EJZ=vF0 z4|bWS!V;m{N*$-05bKb=J(MbH2EV1jgfeXEcD<;CeuN$*RZj;EP{_=e)kR17Z!)8D z*7jOLg}nfFYsN?arj5HUeDJ4IEmXVyCHWJg^XdFK-00hwNlg~vbve9iALiK(OwjMe zWX4l%EN(je3(7ZIv1`Cu2^bC6?XKrtqxsd#Dg9)rEyo?Z&yQBcUSW5{;&Dey2=>9I1RTBaH!nR}^y@p%sAOOJ7Zw0F`OCy!5h>B={n-&k@ANmD4P z;MU%xuTI(NKapI)0005!0iWvBjsIeGsWWZhM`gM{kHysxub#gDv0eSZvo!24*veKi zlh0KlL}yGYedd#+7nOUj0YHP;SEe87zAX3%GTzFZ4X^(U(WENO$u%XHc@fk@u$MwP z%H*}EJ?8*XWv-$F$-iY$Zf%vdp0zLpugaGgIodf5U}icv5H*2VowF=S_GPIsXk> z2ly~b=0g#?aPW6oY$Nd}MfPZsme7Xh4kjcgt9sxJxZRy4*4Ya<#>R+q!g7u$I@l&E zshPhO6gXXZ=|eet&Mk$hvY?*^)_a~N`}zRO&{fS_VI80^UW+PW zMZ$ZT4_}XIgiBtUsdZ{mEhgv(gf2gISG?J;r-WM28}ZL}OqNqs zLO=V{ZE!jds+6I&L4a;ZfPEAv>fRQkBfi^LGQEn%eX4o$t!JP2&jEHrE3iiOs_=f_ zheN^#Ig6t3*J8r=X{Yo{QTfS@WymV|gYE&LcK8NFlpD;4+;q~a0x&$ZK>(Qx)vXPC z%*-*;z~l1{J;1B%?UhE;Ao*3Lh}f;tBIBo)$_ zX*q#i2aoU?uc>)h*H#u01DEr3SZAamld zhvLEA;0LneOA^K$uIc=lY(3in0olSCrmmZvEv=_rBt__E%6+H<|C>V{$SG6M(N~qG zFhQ|O?T0k$=vwWw<2~&EBF3`VKJIOL6uMxA;ZOEWZq2@hO8Q+J;(C7KajLd;+!eH2 z9mExYM=FQG+{A_N(+L{oZ^Ud;MGCf`-ffFKe-cy3Sd&R+*?~&S>A6LUGGwvfXqYQ~ zzL5U9?H#v^B%}AWghSt0p^pS-`5FRRm9}qaOv5_o7ToTEZQ&B1D1CFFb?b~Ach)&N_q)J<|qoF znt$mQL`Q87&>zQ;OB7v6sLFxYrvJX|()}V~JlY0Q1wcjDu!B)9kZgDIij9_B$$oS_ zp8w)tyuye%&^hAgEl;7(GQ&w%p-4zl)|FU0wkC7sTKwIBoG_*9>B{(sMQu|%oaP2$ z=mm;ol&L-iae>&3VSDACPQ8t9=TOoxk3$8otZE*kat!^x_7#eSJ_RQvU&_oHD&6~yob~C09%ilx~ zk%Ew%DvbxVATuLTYdnhaqq(V4(uukT9f5s#PB-TzGp2{%7NETwJS&W?_4?_<01~tA z8dn6J5waP-2?AE5n^#t0{4giQyf33>p8u(yF?=kRyhZgSUsa)GW0*w1>dH)vmd*==8vhS2U7uQ*;~r zj5(+rCA*LsgX3=5E(;?Q9e^-;8w6B9))Pt1fV6)$=-u_uXhJTb1>1&2uBP50dqB@_ zU*5iIZMl~E90Q2CQxu)TdGgS}xL5G^P;af2E~&4l$zPQd{y=bpqiPw5$N*aDbYT@S*ZzxDEfxy($b3OHD(rB8Ona!sf!$hssslfqa#Vx*_8iy$Zqsn zwGJ?*&mj~-Y&&LjDmhq3C&?xP1pjC%;rJuhVZ`sf#eWyqdg)e*Cj+Yv z&A}v^+W*KQ3SQTQAXkb^&%)-TQN8^8bmi?}$!+>OoyP`2Z7h@C?p2+m<#4OqAuVz1 z2_=i7?f=*Iih6>8bclL~l`oT}H>Z=r<8(wL<+oEqkPv=JVFgseN3T_K!bwO+rSCda z2Zzd8h?=EXUNSW={$yBhm(Vs*%d47m%xM5WfdBvkPywC} z)Q$gjOF#ltcbUc242gW3fZtmN>(?TWJtG1%SGb&j7q*V+6?_4g{p2^|CFQ+u&bMGf zuNa)HP7*`#^Z*?YhMzvGgbk?mgl8PDfyL;P$Z5j8aK4yNC}qexSJx8xHjid#)k4#- z=Trs z(V88js$LWqf`+a{(=l3Ct=n_7!{1@pCMq7CMB^UrY-=uQDwUMupc1qhbaS0|dd!dS z9pgzmUugGi$q$%qEOiUPg_okHy3v1K%Id{4rll_r>@h0S-cn$MBezRSbK5GBk&#F? zrfWBe8WD5iOGSEVi&mn`W?K92?#HFGb0B1T5q%(V<*~6rcCYMQ1cyvb3IqbR<9h1? zNa)zw$BleV1@nRg4#ZZi)sUJNeYNoqFaJcTEE~}BUKs&?c}-(_mGZ-g0=aTqO4Obk z3=o;f_;`;xBj6 z;+3GbP`NLBu?NyeRQqE18S3{!+=p-k>&+KF@;3g^JfSDvKSl*>Y*+6^KeHspspRtm z?GdjG#WHs#p0Ou&^%+5n))F!WbK)rt?PVj;14ap%bZH3@3iqWGMdd*a(vtz0^Mvs@ zKROY|v7vd?3Z!#ugNAB=fB*mjQURV2)Q$f`vckjQO=;5>xwg9^`Cy$2LFecj?^|fadKtrydol1z=42 zxdjttIbX^8M$wDDjuKgW(6aW)NILUVa@Aw*q}B{biU6BI+_SI>09zx#T;IpE*hSlz zX$=-*THNBQQNm1GknwX7h5NEDw}~j^ZoE5YAmI&t)0pe?+V@Tq=(g<2rGv-YX)>fg z9cQvi17;q~B8djMMeCrCaSgE!-Hc!}qmG0mdYMbso&2FJ33A9y)ED4)LF=@M-|$mx zvfDuf@=XkR+Mth(r{f#xOTtRmC|z)pV4pKDT*U&9Lb z*RqWXGEoK-l!!Wko|vHYxRWAsE=qP_!UO7pb5aSy^-Nq^0Ug09x{+;? zxs_uIaV9_(XK5P(@^siB{~tS6-zce~X8i}x3v)bTM?kh-*>BIO5)!RvquH}tyehzGJZIkz_1Hu;VQo9Y{*i>>*4D%ptPJ6q(W z;7!?+B!8#Gyjc$HN0)Aq@AIKW84kk+0UwiS~S$aHRQ zHHT?LLq8J(&*v^6afCNYfr~2j?DH^BKR3t#2~7Qt#g_5m+ZskZ%dAZ6VdwizyGKIT zvpw?yWX;F=9SH#c(K2(!X|Ygu6EnL;&uaIGm18WOe=wQoSJ*_;^Z#`KrA1E}R**}8 zcc4S$f2vrm79v&<_7dBN>F%<#l=fyaadpbNC!(l|d;ryXoC1hHzG^U(@;2~IF(fyY z4+SxxUl;`M97Uy}ej+r}P&!0A^FAC2t)!z4-buksA70w==6A?tvF ztz!D3XcD-`WE+NYbB>)VpIR@6Wd~$N*^6SL?><_O1M3wfRz)_%~BFz(^uR>GcilHW?MK~V*&WLygF-gj-k4y0i$y55Onw8A}_qTdd}sQ4lavRUnw3f>^1XIcyS+T;U9Gsxk= zDIZ9wyoSmXp44R&B>zaHm{Fjqc1$4@GIRdE`xCizPjaI_;CAo#R)VAAIHwirsslYg zc5EkY0ua;#s7q+kb8~1wE`Zq{uYyBLqrU_zn-Di#4uZG>^Ei&T@Bj=}D2Ok7 zKIp)ynr1ni*1!ggF;Gc2nv@-4UK5mmHnQ@TU0`4(8oxun%~J$#LYUCAWd(p)K(H)^ z*`G6m`12J|#_ztZzXBMLZMwN7hvIb0%$0n=yV0(P$0HP1J&27IjvO>ENjdG;w&jvHaQ#0?!?-h#014C7TpU|M~dm|4_=b}j({~v;k_Pv&( zdg^~+G8amaesk*DD}+R-G?|1A;cDtP7)vb8TOfqr=v^~3s?bZd9EbA_qqnhBAApWs zc<9c>{mj(0)Qf>?8#%1{W^+s-Ot6|vl+=p}I_>c5YDV=oAq+m{)zAL?*hFxZ_86s# zMp;zxW2_q^(BLz=+dW0#r@EmGABYR5KE%|kfKM2k=`1*#wO^sb5EI;#^D0kX4iA81x z#zko};@a1$F6iIim=K^S{^UwYiro$dH8D4}`_)tZejRubjN)uw8x@njfYv$62fwL% zkx4{3T_j*zC~9dUXDfti&UqZ%bsa*NNwZttZaK+4Cp2vFn6pXse%LX*)a^U(=6<~- zYb(y)1Yifc3B~;y_h3E8mw#6ME7mNfB(Il0piz1LDg#I*E{8Omos+o3lTQ1Us!+hz zH0ZZnjez2wXr{*s!+=}#8S)r{^_B&D>JjQj$cqvud|Pn7yYT^hFQ@padZ$$7>%6n#<4wiw)FIg$U<~~Z0{;xpJ%dFjx)-#WZuD0mMd|I++8Qb@m-hEaL0lvQ_s13-fi^K$|kAXmiX zSG1_6=nIWZI$YZnGu3jaJ`rpExXsv;tR9{mPXuwxIHarrybYuf(|E>m68ifMD&}^G z19sGXP6dgEQFHRP za|upOGUUAcP%`5RPsfBlWTR{M;JWKFKGez-5F7@xEP|1@99c<@`Hm&xoxC$*R9)V~ zah8ejLYzYq+gie~BKR|pORR?dgIEA|zc*dWOu%U3&(3WmBdM_*!Y3lTs$6gX1^bQ# z8F;!U^F(flGdh)nwqO7btjA8zeVMbXDRYa^>eg7|L_A1BUQi|>6%B9Y?;h)#3^(?f zb}#9nPaYE<@sE6kAmtryhlo9vW#VE5puq?(bwob6+?e_?ZO%C@KTN0PCM6!BDwi zv;Z&~RHo3AUN-092GJGw)_1-glmhLxR)lFbX-|(Li41^v z^*9-CXi6pMoC|SrX$ROoaUxUGzAhR8!D}>Zr4#5aQ(kfjfj+yD_aO2s*5S4G-h79< zm8|E(<1v`cFSWo1N5R_NLlGkVxYGBbJAOP!aK9`U2X!uW2Ztn~02YVIb5V#4ANun* zB05kAAgLw>^&SAYG}uaBrx2RiG@lA^gumD9-*-Ul1%(wcx|@N`3`9Y~Ub`Y2p9*D= zQ&H8Q1-A8y^zjT89pX7ES*6bX1j+}lia)bWT&ioDd!wHh`j0~4NR2sKnc&$0!|l2q zDx+MpiBL9v7nLO5z5yR|cO_}3boxl9kJ13gt$n0`0008R0iHJ0jsHBs1|15q zMSr?3a_7Mk`QWK)$W}ONa0Kc10;&(e97Wan&>P&7@q}erg9Ah|aK9vm8=VR^aSAH~ zq(tv^m+LcuM2e1R;~NIX`&%3`E|v!E(S-M4E4S*w2Y5@#`@W}h2(vb?d`H5CeVh%u z%8`~ke5Z`2(OXgj@zcbd;dR^Zhw`k@9=JmLCFH5!^=bj-J(nC4e<3MZ!g!2A71w5X z9wS@b)WzM%Jmybe(Om0*kr;XUTYig%ge@dv?G`KL6G{U9N$YzKqGExCKALs-jF@+U zkjGrihe8GDLVp~5vi1MY13Rq@x<#^nE{rwc{bnK>sJ3*-Y(!u95gD!rN$Hwo1%SAx z!H!?8h=c>gxkl7HaSITb+R|VIlz3&_o;f7t!5w&g6M5caX>UpZ?~=(_>snwqowtyj z)pn;C8q27fD?fArau0e?d&ueUSV8!m_b7L}`GC)`Rq;iorsQTD_LwHVI2$V`14A%$ zpo#Pd?Ab{z3S{Gx0j|^Ct2OXFl2vnL7mhLc%oi_@aoYbN3~a}SaQkkK94$(-#0p&I z<$QHBH;)HViH4=;@ke~I-BXg>$CxU9f|gs;(ziiQxv(!`QS=ygio7AA+|J(Pbv{Sy=Qs5NBDAxWpgCmBV9vj~++!!G6hbjpo{kjFKyQ3M_V1k;(B<*&^jj=dAy0{Vx23J~x)N31*%gLn3Z24HZAdoM^Tv87&5usH4 zoAw`vC4uXwgrECocr@wr6dZ)EP64GT>8en`TxG_$@hm{=*G1mChRRIH>kkvn;IfHU z^Z206-D#MxpBOG()I@cD&TT*d016L5nm&{3M8cRy|MaKVPzpW`EYanA!hMEFe_fYz z5}++OW*^pFSpH0A6Os7k(4Ys&WV+z_B_$$b^>6+-acEFk+vDtmB9bm3Eunpb&Pw?x zEo5XHMm&Jty=nbmzPK5ia`j47?DbEH+Rp$2w9+2V9?`LVV$`-crc0D5J2#^__hk-$ z3oV_p?{;#K`$mFO3?jW_!sO})1VVK@T(EcQNAm9nR+TEXTU6Nv9eFZH4+4RUMbr8} za($giwrTE^)@FY-r$A>d3~D_|q*Z=}PXgwYcK2aXkDB6a^`%PXfl6^u z5elJOoefqDGlL&U16g&(8AXeg|3OJcRF|F5K!^<$zH+mYT5i{va4vG*eJ417)3{v> zocmWP`NQG^weU=R`WVZCJuxC+Espj^s6^1);cLVc&w^we-CaO6^$XlL&BId-VevJi z{^LMpo`b7M>EoQ--wZa=Y|Co!jOVmpqqat=!YG@tP%9^@$A>!o-OGGYs8aVIja;@m z>$i|1m7zQm;^pojiQ}Qgp3v1&P9$Hg5YoT~ZJd}AtZab<#81>M?gOE970TSsS}7{Q zqwzX~Z-N8q7`f=x0W4drVyEfT+i`5(c=Jg0sbq+=^YJpSxHgu!=s z&%$PiaO$QshvO@;$bQV7y0S5nV!9@c8WWghl8CaKli$ICcIgIwj3SnEiV3&7zo1z4 z>&{z&vajTj)>+BMb3^ws3!;_FOF1o|S3{m^4OahpHiT9ak=8sE92RkKxwa-7aNZ+5 zxXi3Z_>U~44cCNJYANRlQ>5XtgvdLwk>IB0$>a|Due@LdaJRzGWzJv{gPbdv8Gt>R zgT7@JksnR{phKE;oJ<)r_6AdpO^e&6Gh^|O54b9L2ILOnRH4B;Sky>l$+JB5gFMqG z6gWQ^j2AZWMl^8q_^Smm3Yp*64Li}NeO@t3c)-4wyXx=;$XganeacJEm}z6YXZy** z8=;Uurl)(9I+vN%O3PchI-aLf{j<+=$x`s(DDyp~MM{32uY^DSo&AG_Rp_4wvk#e6=p zF?OAt6lAbq5$7Sz)G|5Q!VSv;~pO=%_~TbSD>TllOh3$y`nA%ZZR8F<{3!sBtnoIcosTguZX8qi1lEOQF!U|uFIb>k}0?cR)@E?;M_aJ-ix9RrJ_v9pp5OY zH3+K9&>jX0uXk0wQ~4X*;n zGzkA#ySx!~9#sSk!M38J4^Me0ww#}>A<0DGw9Vqsu|AuKiGmvPS4kG7Qna;2+RN<$ zq2r1Mv<{=_(CJF;D821b2z6?b04`zx$s$)am<01qTegKBM(IR`N<3y4WU2SyiUEx~ zqQoUtJZMay-B2OD{aH4_3>e`A$ZlWnZTdJ>%xk|03KXn;qePm2R|BAxG2hcOTeOv( z+#TQvJtg@%?_x>u2SNav%?O&rWs2DzI!~S1ei6I2a}-w(OFqUX0Q#=PdIH7scQ$Zq zd(HjT>|q<(ql;AffPK)%m?|@9ezq^C754%qXja?8C+*{#*G*+`Qu-$xYV)&9$Gsm? zrE|?tvPD=TbYSf!q_vKRYaFf;-adUnOK*kDzjMdl&c#Y!wAS0xI(F`oeQLvk{sHh3 z0yAdLzSFGWzuUS-l?QOc2jAGPzBTNC7MZXUN>4#abDGV>{q-Odo9!hb z%3ZOp)LERKu^@IB94E83EY0iO57t1ouh_8%+xyvlzL^9$Dv^yTq;6HfWPr`Y+6Lz;2KIEv;C|Z9%NZu! zQpua18##CHxDYBL;825hp42?nMrP}`dM(9^FM^CV*+tDViCG;Z^vz~jST>3J!!{Gi zw|l)vSahaxsx$^(vG8ZVwHiSZa7Ueghq&g(kA}1w2?+mEbU{hWY}?$kQk^L;=x?H8 zk4fw8O?u}htzdC52OxC3M!mFh+lhh10vyVcmNTvR4VZc%`n)CO+~4jk;EN8U?!8$E z+uHJ17+V2VUbPW1DLmS@yLEK~r%;57w_2l^XM1;uqfl@Ny7+M)0hX)iNIRr6#yFU5@W?q@N7) zr5;p>`SLTzLY2sDJxI7Qp}}NuBh=MeBdDs&c7WZJ!MT_PDG(;T3P+cWp4;xCqVVFq z>Z}X+p`?Jtvp@etCv3hStE+w2Y#4QaM{gQLawrzUBEnZz~3l z5j=Cng;impxz!mdDqYYl@&ez*0Hr>4+MDyddLJZq_Tmc!4!SB?{_V;_L#V9GC8AQj zWrcG+3#dsMJfPtg%iX51D{%Ea^lPAT*SE-(YKtUYAiiGM}NjWF}sqiEeXt{p;k;l2f4-%E+ zX^`;BSxQuTU4*~Fqe%uFUUEHw+s51QDa*OUKO-(oUFS|`sNP%@38f5#_Sg?6P5-s$ zMej37LWid%4{L}?8ifzi^BdsPc`9H@-uwDpak@)Jt(E}XD9oO~c8X=;DF6Wb&c*a=@2*e50D8#?>O+ z+>bfk@S`$=MHB_4H1Io3${x7Rq`v!o(j@==3>f7Rf{nT1k^8EHx#U&Z>5b)B!fzEhpFn8q4I zbQ(NA2LtGmWppqnepiF7JT#WV;UW#n7Qg2p+fOXO=TpJpw6s-(uNHF$T$IeIO78#w z0@eYZTGWsKKTU-x9+?yK_&H?Bb25#i`z{^~JD$`iQNkl8ZW?RF01tr-!uYpV@s1E! zuIHda*Iq4E5K`E6sIQQ&E+E)GI`psA3lB=43E$u0&767!|iK=!?I%N z%x*74&ko=h>vUHcOB*J@N=9*3MeD4MB|>Uh_j~r@>$&g}eQeM!P2*E!PuR^(>6&!Y zA(I5DKB!*IYPvPoBQXj$I*%BN-5Sd;O(5lyNFoSqj8~z8*H%+ocYruCD4?i!jrbF6 zJOQwoV+@xkJ1dm#r>E|vQzGv@%*x@u4Vx&KUFEPp89BM1jUj)C@M%d4zX-f%;{;S% zJLpT3yxl1gSC&RDxRNxivyM%0U%8EQdos?(E48|8*HJK#C*-RdyQ+*0!?^J@Yi3p@ z(olA}eEuCqzyC-I#3KuG50cTF5I7j* zF-%_3-&zw}Li6cGQnoa%YN57F*FAiXmz*N3$fhT0s@Y_lM#wHwonWiVo9+@9{aRUUJZ`f zAqtQG|NpuHKW$<_kZ>j{jRYtM4IYZh4Je6GXbynpBtlmp#d|}I;snMjB+=iAUo|Rw z_mcPvzMA71DVKyos>IZ+5?W+vxLa816NnJ##K7Q6(S^!#8oB#=H4^BlXng?Y+2N)T zi3aYz?}vdvO~*_oBPM231al&Ijr~x$$`AyhOMsJ+DI~2tP+#4$XtoIq5J>e;r&&Ub%HeY{FxBfkdp@-4GVg{`GckxWGOjDdxv&K-Z-28;0Hx-D0efb^06t(8 zl!br=&V~{ihY0OJ1zAoRbO1Wfrmr-LpnY%kl+Lsef9*HFUn|ExhjCi@v4XjT*HAB8 z2i4g#6syGx>fu)?ZELOceVnS}YFvrDD??8^w3ew{N{S_gZ{4%>wKU@Cn;hbTLXe8v zsWpNLs+dD1((ah-j-y$QiIFE-BBeUy)7;gen@4VQp=Wk;Ztoegkat{xtZqEm*zasr zN&R)!`2cz1*tF6o zE`He!$odI|W&$J*FNL*z=u`gqm@^qF3YqjTlL0B`MNnL%9(hMNM?HZ#Y93#;u!~LZ z5=Om)d#RK~dHw&t{im}XTnepL;H_+E2v4lNUyCWrf>ylS1OudvO6Lapz8-bBZou|T z^vwbPT;TRChK2XeS1XF)`!?hnf_Ct-`8qUOg00eW-~g2xhc^4&WhW?D0R6xLqP75} zv>}$lKoL4hqA2765evjhup@;`RO7iO*;t{rr<$Z9V5t$kXXb`ceQmz&C++ zGwsk=7l6Bq7w+iC#%9wJQovZZPwSrkFUOXs^w;C z3A;_MuQ+GBR*{fROQSZ9n)+J!b|-OGAOh~~t?~EX;`^P~asA$p7d z|Nr~}KWL({(5!?L2?!w^=~$}8QsRn>geFT=0~^&}SM!gyKA!l)9p-N>cWK+7>(9rn z2IsC6P5g7SFzvyhXG4xJ>CpAqV)P91&M7Z-EDknns{y2(+Tt~vWinL#7axV`W{C=s zK}@lP;*WfncGG>jHE+IaX0H{f3WXs-$nxniq*^NyD08r#?B-YSFqUlY#}3>@lUCBM zl%}zqB&6EdbBIQj#>vracAaRgh2)`*ajr`IO{<{9NUP82r$1^|O174{ zQZel=nSzTuD&%s}i#lAt3(Ev~DezlVJG(4qpS6q<+b081-$~SQdzscRO%JYjVaqom z3XAvu_xzDdYh)1ED8euWT{JVZnrkhM04@@m13r7$ojuvTr}6t&)aUWcJjJv#fdYyx zyF20B=}?-m-@eT@bXmouK$_RF43fuW0}(h7G3K*gmx#TibbV{Ew<2=$3cCw`37PS& zYf7e^ABxavC`J}N9QPYjiT6Dp^4$_;pysSdb0c&hg9L(xlm!$h zM5IJGi9&GO+=CViD>%m(1H0dPzRM~pO8m!T~|mjmTujkv*l6l$^9?w|t)AqtfxrVfT-qC~(XT(mo-6|(OO zZ$-*4IIzo7c$ZRHda|V##rW4qPhG73($?|qttVA(HSP8{*^P9jVnKWwLJo_URPYQa zP27?`wfL{+_~qY^(5NgdnZyBDcUyNn^9&JLi;584X5ezl&7I|A6(SYmCa>EtLhkff#C@$FoCdA06R__S%g zuDs<5N?0M5B7`G!CV9Esn$&cIVJ#3NRi&yiu-LFt%C(lTb+k8W$r`FB{#-DETmaI@ z{mMdPY(DyJbI`q zZCAJ8!|ZC7C$Jw3{rN7k?zeT@!YaT7d0AG~I4u{jH4N^8*F+g8(^;zI2fO#qMZ&O% zWSWewtZ~Y5?03JAu8;!pKti?!E^xp!G=pHXBFHU%mK^d2}C^t56Q8-^G<}86wA!(9|#-WF4uAGC( zs&6k=z*IuQ^EWgW&`Oj=R~4#2d1~0&MSv9``A(IFGm|w7V)y9zedR?`dNP#y^HoTg z&QsmEmHj`d1zc23x`CEYUxs8$_$P z#25hS@nU;Cy#lDICWUGkhyn;o6|ev-uq+1jeOF9zDC)d1wG#;r;u*A7q0yee1l2Gc z`FEnPU*F?7#gagptS64D>d5Zz?d6GJF41i@GdEy?y~@R03fFf|BwR#Q#Pn2Go@S=v zDMc)mrO$iF0jNsd+UJKXEp8 zoJyF~(UwW}%ug;kQaa)JnD(5F-gawcS0`K&U0jJ^2Gx)TR5`3bUzQXw!3ehf3B;|} z&ef111FzcLL?zD45`+PhXV$3!5CF}h^fmyc4*u!e%L?LgY3wh_LuM{@?zkvlNy+mc6h(VaPXv_^H)8WUbQgpASzQQQ!ee6BKlj zN|g$vLkSi{WIF{^78Za2gXL3|>ULEO&s~vFB#~3Wh>pM7LSMM9P#0abMfvygf|3Oy zr7>ggJb$SDhdi(>a-Cbu4k zs-6EVzd;cOUn9!mQCJhm|DN-|6rjL{5CIr#?I}c&f>1DvDCL>VfKFFrqP-wM0ecP> z)nI<&X2AYv)@M^ljCS?!1N8A(k z7&4sDf-|B7XduUcC>0CKfdIBh-U(;9eya~W-G83ajH#>)_gwc;dcaeifM`_n?$(;$ z5*8U2bXsW*zR#n707q=)%?&qQ(mpHPgNGU&cG_QPx02lQly#OuTS{g87c%^~9ffK= zVH2*~_66BNkFcYAX=335@4Mf>p*Et=B$l@Y%N{ZF-J%{J&IBzXiU1ChMC%Xb^MoKc zOe_8XIw1;+zy0_9RYzxoDhO&MSr7tr)%VFVcU)h1Uf`0h7MZNzBI2kvdGaqB;*N*% z8wSgxc1P%Y7Ty_yxvAf;RGmF_<^qjpZ$j;a&TKt0SamFisf_{(h$*Xvr50YES){$YwAp2^z>k+B zYi?8(7DMOFoqE3s(qo$}&3|4%_DIS6lW~9Q{&p>ME2`EtoM#r75SF;R<87;sYNN1= zrptI9R81LgbZL)1NN82Ijmj+74awcXW!Tj=ZidrGtdWL7z@&Qzi|}l3CWjDt>kX+) zhXP7xtp=zHu?V3;fJj{r0B-?TX7!q02|)^jwHu9{e@sxxk*m!D{#w$B9wFv^5Dfvq zAAC)hTF+dAa0QoXxqxCnPx+b-OF*zhQEWErS8F6L_s0lQ0|=dha84Tgb`p2V$WpO zuw_u!LaYrk3(g`<9>+cl9KkQGBDf+gC@Oj;|pJ&vyF!Toxzs# zsP!J+nA?3s0<^GXarfb-EwfMDe0@8`37M!am4?_5t^g~pH&=BUP{8mK1OcV2ppZ<{ zCjd%x*>CrCGdLNY@R-insqIn{)uQjqpIer2vaWM8ey$9FB1O@DL*l?yDq7PG;w8EA z{O^VKjNlM^|Bw@>R(^360ZcC6%Jx7m07}^yhgB$`_v}x1M!+smX#rpqdAA7Yw98Nj z=Oo)zNr6!zU0Q&(jb2gb{{Wmx#hdyVwg0B~bV#79L1vV)bTX?(kuj3z-S|84BGyW- zSOi2>X0Mkk&7w?T5Xnb9ncl9muB<}YD~DyO`A++ABP-y9koowz_w;Z795J>O#4^E` z1m9&y;{ZM(3Y4w2mf=A#&}gTi;3zKmpdM z-!F6jh-w!~;4~)fD`Y8<1Yj^W6ay@~1>iDKQf{P*#PuJ0t;r4swo6Fcpl9^U)0}Ru zGY|!GYyd0a&ct*67{-JsxsTwYhjYT_xgPKn`ZU)1zR-r zgIZH)Rdf#RHF-Sup#UkJ=m26@sw8IV&q6mw%kcd-Cx;PD4Cqa2Rl_M|xeTgwBdqvW zjYY&oS|S;64>i98{67%nzbi*xu!(VeX1#C>h5qmF0E!NI-#8aFS9}1)f7qJ#F$LvT zetyhzr~yj0#WzQGs@N!D5C~DV2PK#)SY3j^evCeTsUJn3`_!yAjTI)$dLnZU&75aU zHK+iAjnss6M!}yG+wG8U0Z9yRV9q*vJ_~}#*|K!hOFNY{uD;%_cIS zd%LVaFwIz|BH6{ENhsSVmt^v(lnv092niJyrH+Yfx01PHkvByJi!A|wnPGvJ6og`; zGGQ@^NEay~?43s?d|J~1Yg9x5emel^OA}P2N`(@^K^lzS&~gAu8Kgyoa07%LcEen- z^B!i5=FJ21(Mveq%?nk*lgGI^( z97J~_zpAR%ajvd{6nB}sOa4}XQA?(d^S`{mcb+-EIl>ECxkZ%dUnn%Uf{hd}exhcf zr?FW|ov~J}7F10ixsveX4R`&>`8`{ED0DVA$znAd7TLrc>_&ZxotvzXP zf9|d|h1uFft_=Oine5E7oWVR{N_Oo>z$g9jlBkMIBSzyV2R zgt1^MXDS5H0&7TPFAR~hLJ%w+0;KU0w>HKGY4p$N@t;}aK8ddvqvo)0X^kQ4rbE7JjKJO2!$F>T? zS303J)?KC(GtC*u>RjzTteT3aL{QW@YC#^~Qlj5`kM|7%8bqZwKj z-EmofSv-KXf-gcrS>`%AdcLwb9t71U#te+ZDz%9U{@$It@0M~08C_jqVlv9u_Z$6PS1d@W`4;!7v`X7PM zGgCsRvl&af=^1hr|EI+auMFv>->p{`ENffgzkfu~u|$B%TWb3A-BZTyuBa74$y#eI z!Y^n*og@+k=&a?d)XG2#R@xH)QLg%QsO(U6j0H%+K(ItC6AA;*|YL7=o>2U&8 zg_Z>9zuh6cP59fPYGP?3%!aJ`l{w}>)D*3E%H%)?M8G}1Sfwwl1zZ)Y-UVNODfV>( zOOPxGKp=sv5ITN}z81QSGq95)yFEPr|Mz!tZd4C zAqtP*|M=_yIckDA&`=dCi3TPC5yQm_R@MaFw8L0~p zdBR8GNjyNl+Ta@#O;^>_k@(v-z_4KfFT^XRDN~knmP*q*FAGPA%Cr4{lmBf=xx?rv zWV1 z+Sv;wo+BUx?xWWm@C6l{HeHLv0LB}#;3vA#*Kh^%&Nx;82krnDMjpi#revgGkXR@| zA$y! zX}uJhna4(qt4aqRqIWfM2;+b9dEQ!z-Bl8<{N1U%8b_@q^&PfPa7ZtCg<^H_a;~x1 zt}&4ztF^KL1%A1()Bq-hUm*&O-~Rve0Xu1;v0TIzDh$j5019(fqcuw}EM76>P13BI zC=u1?;CTrC3y6=>_`#t>&G%oe{}9guKI!K+LR^qkx}9zWA|<+2{B)thaP4rIIlFCeqpc1H zJx!IPrK`wgeIMfg-&d%`O{7z)+Fy^@Z^ZH^EMP+&)LFv zzdh5k0*R~bwCXP<8~d)Gs`cGdXACa%3~S+9lPF!lD95XQ69)hQ0&)SKT-1;MJ{gB% zAy>|!iwI#rgh`C_V4_4yk$O%91g`5K7DCI$nvj)u;Oox5jm1(ZED~%soDjMJi?~dO zpx(5{-%cKGyNMf6d2Nqv=t~Bc2O)bIa1Bm-hlqc6iq1|Q;^6WT@PUJ!limqd-iwG(5o!O{3SimKKuUVeil*QWb283P1F)^zP znpKV#N2vPSrdfH>>@1^$%aZ%oG`&mhe|2w9-?kI*<1wuvNwLZA@nn)8@+ZvKekk4% z`lTd;!9mrXUWZmEpLH+JV$V`aCO*qbG8o!I`FmZw>A{|J!yPRX>^u{tb?-9lmQL}n z540!b#KG}sP-ivdGoo@WcG6y2{=OJj+Vz?*TJ;T~KW!b7ddsRb}TP*nZivLpIWJ3w)zM|P1|GYe}YL<`!e@@jsZwI^Z;{jV_hBJPse000PcL7GC7 z>qNqsNB{Hn+62S~Kd9(Ez`VQ&1r)wH_^MzCs+2CjnP##4`6FXj%p;*g*g9Ypzf!1* zg87^j)j-!znvqDT7VFtAnJYOyA#HZN9<6kUuxcQL}{ z@CVsd?HtZ!U1J1>U>>toRM}j3yt1R&*LeQn5d4cVfcfS_vs$tL%P98C{lk~`5Fw{^HDDNa z@q->5M}1LB@o^amo_*HP9%$HeS)r(5jwViJC1E`jq~cM(%fKSwsKAAU;Udhom(k|9 zK|OSDUHR8gp*IdE%AAx$co|F0^KvRHMPEb3dSCOM?0!<9t~4*cv7@(9!<|V|nzgOw+L2mzEUl;6dk&~4dHxci<7uM3;1O%A+;-E+ z#3li@+J4G7KC0%Yz{1~T$rdWXaHm&2NZ={y6@hPw`I`Z;8H>WiGNzl$!Xf;wWQ_pI z7vam9)sb88vb9i<95&Oiwr&>v@HK&ury_}Em_|XS{HdW+LH}iqq*p7)?2I;}nD;kd zuj%F5W3|*3ws=;L>KIXJqzjM5PbB6ftMzQI!Cq|d&=Tu(+3?P6<5A%ZQD`9@3?uEo z$}#PhrNLNV^Owk=g~~tSBrO7gVN?ZhQdo;8FxRruq;B|7Fb&Ca@%E4_3m2i`4%GFu z&E<0u@Xz@GS;0BC=@vn6{<*dsxGW1TA?{r8HfqvO63=nzC$e()QD$(7wbqwr_q+jU z{LJ>yHhzBNkvhF%yuy}$irv3!@YJOD`BGC+Z81XIP=DD|yk|?6n0sO*IGe`KIbI!x zmn&BBZ}>#BM!&+117Nd{WrHc@|22kN*EeI}mu8!PhdNx#9{C9q(`H?y#mpZ1 zmEZcGdjY!Nwk`u&Y#0lb-r~Dr7-(juA_V3*EKVe1qDKl8mZBphJicF? zBmtkQHL|&-c`JdNP|3PXkwk**f7%W+8-Of3(uE5%wqaje)i6lm?OT4Nae}Y`L26RS z;FE~04uV^3PFt0)lzPQbGD{ki8TR5lCUT72pRd)tTny;;;p~*|D}w2Vn>LOtQ7X77 zgNJ&DrozPz_d+~Wmul>D)yvh26ZsYD13bko8zbgvK}us0&W4x$mhW-9PXrXQLym7gjQvaVs6bjtXt=Kj%yMDcx z0kHcQ`BSw)d;R43A4$lT<4&95|0XKEl3SWj>sk&!Z1#Eqp6C%HGInZh*R`kq-;6$L z52~#m{?GK+8Yrz>5NOGvTJ8X$L#V{S0%Zo%{+#%e;zuQ52Jxhr4N~sw0##+D8;&V* zaO_>~14p(2m$FqOLl}xpW74Uv3K?)_A)Ky=5eU>pstR(}ah6?;=G3d#VH-omd}JFXhVl_abK+<(MdyyGjyVcf-L zT!ZLK>LCi`!d(M5Otf#TU`zaWxLZP;(yCT4k$bKZR`E$=_{UTS2i)k1QIh548NQ;P zTc%T@|DVN}7OB{(P2hEy&QKegGOQIA}p=_}gyNt)#yH>T)o&$8xG2D5N0+gbmD%RTD`ca;#SGM^UA)9L&}d9jJ4b+rl0l+>*~WM}9v(FU9fx9) zgLiJD%EDCIF9_af#bkfc_5<$+r`|sr{=7U)qE0VrODe54X?dwY%$I2V&vOBOQEV-k z`T*RXYN7(8Y5QHOBj>DtTJI6MelNEEt7tF)00IU9o?z6E|34SLkcZ2*_6Y$Y={n0sN-Wm(JHHY4eKonH?58+QjbA9YUnG+x;`p4A|nO6RkbF-PZUp zG`a$s7grc=rvlu>|5c~LHTjOqzh$Y76xBly7P&D*jCU3~sh9h5iqR??(b)=7OgkG9 zGy&ntjlC_rvOSqL?*}i>pbHr0pxeXN93)M37$*718JUf=?R?yno88j6_&t$69c!ls zJE{fXasF|vAF=#dM^tfI4%iRfySJt>;{irbMj}lF*byAGyPO=}oll2_mf@YPa1F1! zRqRr#;fK-5oq?%kW1bHq%DNKTFyCyTCO8)q?&Uuu=Xw}ECm!( zXdnNL>lI64t3ImOEfe3=59@gc8~6EE7Q&P0f?UOlfnf;(Y9exUXb^;L+ArBD@=an# zKAD|(k=j#U4in@B47C)D1R}R55J?8k+q#J1O)Df9iE33R`djr8#>R>lXfRC)s&{Dn zWtbUnV?@L(wAu*LgTj#4^*`;?YE%4rYBptBBme*kFhQDTlfoWMrUWDZ`z;le`?PRY zxLEoNx;0avRISuHP4JlpS58cWt=JwM}2t6}F4wo)$P zLQt9a#Tzv#k@6juO}l>d0^r+|LE#XNoXz}U?}V)F*Em}Zv5F+Ma6ETU~jXG zmLvL=q@nkwE4K@y^&%Rp1e@&+x4e?@$Ff#&nV@od>^-7Q5g~l&t}C1)Ii6kK3$=ra z_5%n*e4z><5!1_Jw(6L7Lo9uRtUP^97FZ3**lAThfIeebXJl7TDza+C0?{?8Ede`2GEW*Kf&A?-5I|ya(8*uaNodq*r3dj*EC#8WZFt z=KE#m^#L_%X#lWp67R;0WwwC|bkh-eU#F?}QA4(oQZ=CE#vIT>Oj`w!o$;{x-@)OQ z@6}|?aK45F$0fL73bRw(rrjWDA666#@g)}QmohXtCFb9cyn^leG}O;CkETwKZl?SI zVX}z17XGSH>c@zr+S}3(_1Sc*ZH@PrKm^w^%9=9Gx;aW^y`X)a(A14QrlR>@rWwDp zA4X>_G(3x5rqB)qfkDeFfCQ+D{+XaT<+X?{-?^+@VT(NF>o)6$hkK4x zu}#~X`i@>yF`$HV65if4WLWE$$RQ>wA78e{sqwEDX|0K8 zSU!}B5STQ#5X9+=XnF}b_r1RktczEV|JRk z|3Jdc0upI_;}eJbKb2Jn*);k;X*9PStD5}hPj%*$kLg9<9WH$+sa21##nqEGWei9V z&a&bVYm2I;%zFK3XM^Tw-P{yXv9!tR>gN3#p^vWOK**@$`teK1FyfM%U7OkNys!zg zp1r!P)M-kz+T}OaEnYxg&opUfUi>%mIb>lK8RnrpX`&^W&LmG7^-O>#Rr;Rgn{C5g z6q0HSsD+op$$bbQk!%agW}LWmlCs#4C^77MYeGUZy-~E(@IPyYVPEHy=b)s2*M!0L zH^P(%VoYnwZi?5fzs}TVn0DATf)UAJ{&*Guuex28k2e@ABhQTK4#A9v=zC4=?Ina@$iq=ug zM81LOrjpi8EzKrjl&jb(5RPwJxg&vI52?=*Ol+ZN3ayCw<2VG$cL>a{EY4=w^Sie1R84BfdAo0-w zi^C{g>K^>@V`mG9kL=)x@c4atBJn^0q)9k5k9jgXr9rxj7opd)bx$)K3#`p7^cXx9 z`3_x(>eSmK#et#VULWq;@n{~JJyk~@W;X~A_DYes&fga;A*=htKb!+vM9bQXIQO>T z6B>sIbf9HY=#cru0T@z`2vsio zOBvG1&mc>lv7OT|dFafAh6ke0`eSj3BE+#g5VA`CG0pGOqwW zFu=;{-Gunov8xU>Ug4&DvOyIFLYgsLJ%|@7Ef#;}sXtgLruIt=b)Z1+D-Nc78S9Jf zu8E9vB~&B|szgrQhv56HhZ3>S-z#_(vR%Dx(s+McK5RZ|lQL9&NTfXBcqNZ+Oi;dR zrjhrAVT?ry^JE1BmCR}ill8Z54IX2~vKVexpSR_ka7y8#Hr5`^gIfbj9Vw}7WrMd_ zvulf*vIF7=0olG%*8t?77wI>zd3E@@m$Tl;%|m55MOJ^yc3pHBD@yKrSg2})FFpv& z-_QLewu$Y>9V?DCwBc-ZNbW>O3JpFuSABpg_sTMqYJDU<4%BW(ChASwGgoh z7NPR9yHhz}z0pXKOCOjK#{47!bEshU$HrFsjY4F!cy`GCST<9r@N-2=ym;5$Jd3w5GUCHn$)9)qc2iwZZ z^(XVVL9eNoIU{&CK4BN2^g^;)r)k3HMq)%V7V02MNl$X0KUyYs43GGzS!5}gfQCnO z=AmKgGMi{IrHWOYi7;aff9MFB&r8szDS+KqFwzYdR$=bxAscYB?aDxJ(T9yZE=FLYBH9-SpKQCDkQU)Ar<4`5v*Z*f}X z74rA24;fcjR($9tq~s0z?}O@{)2BuFVOFCc^*!>w*Y>G;bg4WDqnrP=kTdD9oa8(! zXK<~`MKn6IxWabkpi#BbCv;#e*@o_^r^`b7Z*|2GrW`jnQwtsag=K&Vu|N<(#GbN+ zYY+t8O0&6!m$QD=D(l>>N#~WZYNh`pcm#%ba9JNQH-g*bJrjnu1lHj+Z4Ej&!bOM4 zqaS!@xS%LTr1MTfP?|Z!bp9ARz*R`lO17fgQc+862K%C&$Foovi*aA_d{OS-F+>D*MNySDWEj+cm6G4T&n8wcC>E1Ho*_zBu#dk1$A_zyKdrIDvpmT zpK^r$nnYRf%WG~Bw)b4Uc{f402jYuCq19kvHh~7gxg<$A z5U5tcoPe4$-Wszv@oX6UE&j8q0I@_1@Ny4FU3GxHQFZlcK1JzSw*UYFxdEPp)Q|s1 zso7fAcbeb4f25LJ>nH%@DlrDGl8bj@*(<%tC{TssHA}cED=T`pI!}00FGIJ51Lv}-VAyCCg4o4p9IATXhCYFn`;cxlCE{`>M!t$; zzF$W9^QQz*qXE}$%ga5z_T3#(&sxM7N0#`DVEiRmQ7Ol&gc0aSJ`x46666gLeu0Ns zbDw=Lxaq!0z_zaYPl!AkScR%->jDw9{#^NlNG+4QJ^g(&co zpvP=9IZvd-z1D2t=xE{HM)uft30e&O(1D59Bz;xp!x#T#XeIYb-Y!q zeo1g{>~QaBXV8SZsFbTd>2~kXeTN^=5k2=RmKcrE2UM#w6FxKj?O3Sf7d2s`P=$F7 z0A*kXk>iYPVCB8i(29=j@3Z5b;F`TI1{wZTBWF9y8@wJt35A3Sqj(&D&mo0xo4ZRg z%oHSyoX^`Dq<=}A<~a*pFar>{lEH@<({7@gJTS~?d3ivCm|_i zx)~uTAA2QP#*GGb6}$id3iUynjFam`!k9uo`!uYfE+5xwY={GBqW1Sg3DAL;ytQ9fUjdV)uVvE9)HYiE(7zI8!}(s8^$2&*I!zlx2(OFGyq6$c@tDpfT8t*`v+<7>zhRD zC$M=J6#ESwQd6Gri3i-iYDi98_l?gC=O#d}K;Q|Ds>+^E~}rlbHp zu6f`&R!4#%QetUhg|J5=Un5Rc(XjNtJLLKKQRLIw83MvMAjP1xyI1v|lXfE1Tv!iuH=*COP^rrA z=<+f6Si(4L?|NZ{QvF;;{FiO3s!wc(kaMx5-NigcG9gwTKmCS!xjXn z#XpXu?BVtLB;6{jrVkme_-B3wyFwkw>X)^?to{#aW8HLw>UmsYS?h_3W&pU>=nAtV zX+6-?Vq|HC@n*d6c`Rzu%KLqWb1P(fm-XVzyhjn)%`pw_9c_}qyr_ZM;pf(plR)!- zP!(pBTM)|BF&m;QbeM4Ij4SBs{NM08BT;1_ej56F;5&OMSn{Q5laQutGBlHEfzoNM z=otuXt#@20l-D>V;3qQDk0hR>RjQH*G&hs^k*Qkl?;*fY&0_EBa$)U@DUK|Cu3R-E z6xq(T*vk|6GcD`Pd0nVwAazwLL^rQy_W_jLLkim`ewf2K0S|p--*!^#lmIz1=`pOI zTjb~24A^&un~?-3tVAgcWCZD?*3*9c(yQzfkeE3hc|gw{lX&p1%AZM2Jj~vlU}{V$ zj@Zc{fZ71BM*bdmJ%Spez6B5Z+%n7Wc3Bl<R}q*VM&z`_&kLkSh(T*EP5wrS}m2^=EcxEgtc)2x++%`r^dSnCo;W4z!zgN zT*WyAA|Scpf`&OpS0DiRMF@aX)OLZ*eBB14q6MY+dol5=9E@8TL`tZFx%N@NfDb&> z5YmZm1om`KK#elCG_rKL9KU7~xG_5XoGaFe<<490SXSyU?n9A8*f}buF$JuLhzU`udpC|Uip*fzliFBPv6)TpWJZ?^c>oVRa*hxXriQTGG ziV`Z+sMP^P#hQsjj@OwrRMGG~}RTS=lqMP^dk#UWX! zs7iSegaquk76EOLO%|ecEKx0UY!W>piNa5@b{rK*qYrb+YaqoGKe58PBT*r#D2@d1 zU9gZCZ3DHi6*4nc&Zvo&bF6=U)TsO~_9JS|M&G^u5F1Q+Tv({WB;Vp})p0JlR*MaU zYcLUshkyflfI;WdqNBwc#RPb8d|%mRY60z#Q`RBDF$zxh*iiyrkjtA1QL}Mpy3`;i z6uOzARJkiCxBx1Z8U$U>AY~V=O~-+u()Qw>+$`B*74f|L5qlSXd`OE$u7{w%p(b{y zMv7rS&K}!$fwoj8U*S9mNPj?vx&+&+42Ce9HH`Pz%qxOxkxQM8r734A2{cgN2gaX^*mv;mMG&xyoz#-g)SG7oM`EIvzx1%EI1IuRk8UB z#WflHWQk>-z_%n-hS6Bo-pPFUo#qz!$VxpXv2yzjY?nlp1&Gyf4&y-f_s;IPtdp3G zqfmYynj6Eci^adA1bd1GJx9%P6W;S1e1<$?XQA;v!aH!bDaX(i!_+iZii`$!`b#STtEJeUkt;_8o_uf>0BprteIP?kWQzna&rL!j7QcXJYS zJ_gTE^7+Hk2lY^WM92c`{-b7kT~B$XKIG#g>v}}>jud!Utvd3CADbc5S`=HSSC^#n zX?b=k=PXl36lTjadgcXmwYQeG5kl#e{@hg0lPKa4Q3d@2L1cnn>+QD+Ka;@W~^Wuo4JtYf`ziK$f}5)lZ&MAfCgad4^m84;s@w zNerdD!u=R4=wq}&ps2Z3+M9?@vJd`Z{w%$kY5rkx&#&~1xSsx?E^!%UN^60u++65n z3a$T4tXxXX>+Qy2Ux0JN>~eB&yt9G6t&zC+(bj3H5t<^wjvFKhJ$kw1q^rIorj}jZ zmi4Tduwnf1_cDaXXVWVkvmL#-7^AEu!W(-r{Lh2byMvYFl`QWhSkyijRcrQZl`SzkTz`4aK{!oERM6@#8*;3BDNOc=7PupSVfPusSVtG zYK`aqE-ze|?Hxw8BkIv^HZXJB=f~<%6(Z3DB&|lu3c}%K%}JALQ;6w(`!nCH)m&sDsM3$oE)KC7SFqDnl?%FE{ zf{8NRD9+HwiX@j2e9OHMnv+1>yl=~t?7UfymrsVl#a1UQbi~0 znG>9YIcrnrrlFP&=i}E70qV8{_8X?6_jbtqD;VJ_#V|H`F-P<<*tgi~j@wQX@^)63 z&&X!QJ^qwABC>|4CxltyWRFMwPJCIBi1=6xl=<{fzfasG{(diOe_Gbz*%SDOWv?rs zTO)BtGTlm-#AZ)_dwhLx8`^Lo&5#;^isTPvQQe?5ZHo)Ya76m*^f&>s4Q=?q-(wQ^ z+8{SyWFs$^&uq|@=$Sof579pbJh(yPQAi}(qqv+&pqCr!4bvx!-3IS_Dh~WXMgEIc zh;f9G0K@4oV?`{aVYMZpAN=f#TT*WcS!P6>3ES)>ay?OhanIYy26qPwX2B+! z(Ci+pd!6_&y)RRqtrRr9i=(pgAswU>=vaR%DD>QstJvju7)~^sKUlOz{r(1gL&#H% zxsyKo^Eeg34IV&FaKwLG=gLzz*L8G1Mc>YD+iv_&Gu3zrL_{NogVGn9Om9P|GJM!7 zNznx(KtiBrF7$Pa{NTK0-xtEoGE@MdAfOKE!v)Prl%Vd;Yi(g4f+j@*RvbAczPd$P zat# z$)*Ix?Cf_XBEZ%gY|MEO!7T0BPibyV*P-pmct7l|;fVm)L;#aWvxK;B*m?pS*i(D1 z$M#+0H*|GEX`X;T>zKxl|McG_rrA9KxY_xL9v#`$({=p9OqRM+zViHCK)L5qQFfs4aD!5#8 zBjmS&F6*%=<<~5J`()dONUMY<)7irtLr4)pon5%N`?jFvyQdGn(7MsRIZDxFraC$D z=nU3*zsAvur)M~YV3%@h=EMhb*GRZy{`7J-U(-Kqrc9Bi65`*PYW#+#%SFYH>qXh? z5x(%0n*X+>6;~R!C}R@&z7&^MkE*WD#QEH@GF1-Jru5)HGGB(V5;35wKKfvaR9iD*T;>qot$oX?|g zPX4U~I8Ai3%$6Pshicr~SAB^rqW=8Jigwi(AYV~il)clPN8=!D2a*I+cIMM`%pK-C zCTsbaWr4a6QQa#*8Rt^7kOB&(S7FM=c|8dOtJWX4JnQf!D>n@^QJAIToqDf(ptK0n z4Z?K$000Bg0iLSVkN;92pf(^0Dx|Sh_^(BasNU5raNmLtH~@-2`n`-_uKPZUpqmwf zmb_55kaeBJk6ljZmQ@~%mfnwYy3FDz()(tu$C5wr*r6tOM1e5eU?j`h2@Sl#2oV+- zyu_B1;un zenlg+(bq#@UzR`$mYThR1H5N2>$$Dk)L($9&tl7l3o;B6!}ZSHiiLiYX)} z`SP~K3^B6NwRNb6q)B?ez!8c`%(R4*UjDgvePjI^`q?boqTcy6E-``g!#-XxaUEE? z#8GK)bg^`zmIwWuG9b4NrnjgHJ^N5#jqv{-X4?W4%wr7%5%;85ZdOp5B5&>z4 zMwI+jyz2JBdvBcyloUFkgk+y37H&vGR}S3kKod({pU z<%^w!Q?CnleS`<{3&6|(m!o|*S5}Jwu-7GxX~9qsu4`BA@hQ4DSO_oLiq9g#w5Q6E z@47c<5-|fJl~HROkJ?l@q{R#nmq_Zl^g9cppbb7??<-6__!Pyb&;#U~;#0B^tg_ms zCJYCqe`a?cx$TZJEH`Itvt#0XY+yN(#U;JFK5u;bpX zMZRT7KBkPoA?$@MWe0S;{X%Y4@y|e9YoOa z$if`S6mS^;@-J`ChM(?uB*LW-Y~{@tn=hpYz@OEKme}wT@b%AGnvS~+#zjZx zCkJh7a^{JK3TK8OfNGKM4rvl;+g4Gggi{J6T>t{gn^93iJ#kASwijm-=gUk{fB*mt zC_$RClj}snm`DHhVX-(J=^O$83yN+-y2ue?_^dodsj)GkZQ+3j5^N~y!{YflEK{qx z1abetH{7)Wl(tK+)0XN`-Va<aAWYgwM~8o`AWK^8W@ZD4bw^}P*Q$7HCea=nAO9vO zgudS?FO*>M6pvG_TdhD!erJA|Y*OAWa19(JaS#U6o;=12AEA2Wm+BP`$)n|aR$Ey+%;X0~xP36S zag9W45NqLowSqt39FxyDDbr4rn3v@D=K|ff)(8QP<{)4P8Zowd;3hjwE)w%w_alOJw>Ltah*fD0XG+8#Ax9Euk-9BhXA;7; zHavLB)!mYb>_LrM1!WM4VJZsFPNOalJz@=C`Ncwv9Jo)ylNRivq6^N*qu=GnWrmedU5u(b_wv# zSwi(&3o5(1iM-OOZO{RAGW1wy{|r3`ibYn&@dR!DCK>m|i(-p`sJkU+o!s;I=vnjS zM@~YuTN$vo;x;GF@R9m=KBZUXOfrjZ(ZNVbG@w91(7!#eX$5>yZ9`YB$t8!MP^N`H z$6G)a`n;g1r1U=`O*k6-cn8aQ=m$Qw(bQ0Ju04|ZS~s7GNgIRcw}oDhF``$PrLyKtIVz*Wnh!{zAcwLkWek1)QlIZnJm+WJ2a8WEYBamRzgQfulb$+!BB;5?m&o zSRTei#824+mUP^-eaoenpO{Zfqa2laJedvoxX+Xeo8`Tcr&H4|d7$F)vq1!%6p`PA zx457%mlSI$4&8-Kl~D>ZPeK_iRmnX4Ri>~}aEQFh4 zf?`<+Iynz#Qi&?U0#!wAt0HxjOIFXi77yoenHEzho#7kh(}{>D#|~|E%wq5jV*FaE_gfPiyJ5F4V;1yx z@(iEFe1OC1{1aoPL1P!gXuY5kwVz?;2v2x$JLYbtC` z$qR5YEp`YnmA|#KPZkp2({@&c#a&3K&VlpSM z2AsyIJ#)l%>quWRMR{A)^4@AbuU56&^|a*PQizBG^&)*OgSuBEckM{r)8Y+GzYQ;H79VM-!KGlfD1L}}oI>PCHFiVO z%vSBKptc5%siY4G_|xZ+i-dqW$i)T&2Iip0Usj94zJ-n26KC9V!y#I4U}X{Sc{z0P zf~){;&s@#>zVT7mi?goTKB!X+2d4}1qxGN~o$sB4SC!l}RM&Gvs@(z-s^)*bZ(R@Z zGvqF}B~nMkrA6~521(4Z&K?yRKYI-$Xx>JhgcJ?M;@6P&poHE}9a(5jIGF?7qt|OL zE29{8&)2oUZnkR?7xBR*5?|tk(M+_{!+Kv1Qo0*abIuKuSd9D$wLcg9ws-X`gmq4F z!R%xBlBf}ZG|j@PAYdMsDP82}(Qq=|E++N|}wFlmH2xNui~SpAK?UxDPvRqPj}4KLO+<*Iz*= zA^XYxu^_OQI(%#0HSR>mL0lEklb!I z?TA&Yd;4QSMw7{xG$>xT5|2lap^JfqOgp&V9(}@Ga)$Tqc12QK1`X-aa2YJr z@oXmt=>S9o8BG~Gpy!_dJmjWnIa0-AZkMTCDt#w##azd(ks!mDGIsBG4~*Ax1j9|M z6g6IB4r;YPt-@)rEW@Ev0U2K0r?Dp4$6Ga=8C#!Xpox!VPPqbkROS%{Lzw$(M4dWd zDv)V`KQZ{+%~Qc%`rR_*f8@uEFx(Oo~U-*31e@$ao~;F}X-hc_wpQ_wC=VEoSF@?1jx z%XsmaM>(09F5EPl*Udk`G%=A_f!!nQ@o@ym?SdQgbdUxO#|wv5TEz{|aHq1qa=ek{ zF!h^<$NqbnwBD^+j)u5SZjA}xs#3@X{o6@;>X?VgzYF5VN)Xp_gX9E>oMCPbHW$lJ zp2nCn5ax+4R=Ve45dYyII7N)=GRRAaRU_ zw5fgJaF|u`quuG+%x_Ywz4~(8RRY948+QZ%!Zp-jI4*5$EdO0gqS zi$KO`7ioUDK^-{65>Fwt#cjq0hg&aWTL7Dj`zXvdrfApzP3{pmYW3t5%AQ?ZW4om; zZT>_2#AB}ur(}*a!>>!oFH9xqOLl;xPa^rtNOinPH_H<^_j&v}U|5pKH(%Lhd0;ku z3hSB#z4T|DkepxY)}19X27qgxR3VK8uPa+41(kEGC+3kv3PLQ9_pRxE- z^Nj|UDPvr{8SjTVqj0_laCRNY3L6~sq`-vFaQFZPQ~9Vc1O%3@yuW-PRO_sZdFJR^ zRQ-9mi3g@AsrRKrISfY0p&sE(+U%9#{z%Fbfzo6?6gc_h4%f;pUu~7p%UTk{(y~~g z9V#>nOuzM>$Rl8S#tF)@7qHJ#9#F}9d!gOWPSB=|%k+mK3gPg|51lyTAw3^`Aef4w zgWq*mT>imo3dB4@|D>|g(e!q=4^_ZcusFC#Lvc=}&@DEDig~?(b}&#+$@pl2jPJz5 zgiMPHbon3nuoPsrkOvQ!!qGNVA1@pFoN0a5_7O2vR_kv~Vil^9hfPA~qtPXci{`?p zDK5wE)2#o%iVpY5BWH2Ub7in~b+)&W=Gjs9W~~G8WZ-@PwU|p1Dwa&M%^cfd8lEer z0|Xmp=mKAMFIV_fowFieTaky>S=%6=Lg2U1oQba3*1eB;f^Bz7?^-)+I$8%yz})es zMkcEXUan6ahusF0a7D;&7bmVOmjo@tzU7h9=F!~>Rg+A)EEQkTA|$txWxX!f;^Wvt z)`1f#$R*Db?)}1Zcz{TOlmo*9d(u~-I)u!kgt$0^sYQL|h7nKUy_oMJbJMH5YFF$) zq!|g7o0RTNO74)Z3P>b7u?s}I1va!W6;CP8fc7ndZfmNPb~$Cmv4gHg@c;k>8v&lq z)Q|sPYc6BhN_yuMk$EawV*sJKxB#%KM&0oNUsin^6eXaQN|#6y^9t(mM&`OQh(cTf z;rmW6GzQ@+HG%-4KwiHZ)0Dj0MkjMNe}{eg&flSS%8(qJ*V%=FSbU%0_-iOA*NIW= zJ6~e3iK~ML7m$mdG7w2{7miXm#@;HvV#fTJs*)r2>eBS;4p;3O%nrwGadD5QVu^gk zEVBJsh^JiL^W=)R`%%xvt&52S9~XT=#+lUIqI@lG!QDYaa#*{(zG zDb+MG)#o8Z+apsQSCJ@QX@~>UO3T9&EtIXda(iRfTkujWJ(jp-8|nR0sUPINRW? z&sD1EUuYEOTAet{Jves|ocJxlWq`L~4m0!8_e%kS*8?i{s(>JC6RVvsk=H?|;VDb*O{j3T)%$SR>6@R14-LGl<}RSC=Bb|{+85_5K4Z^)qRt^U zyOJvfy@Vly8LVqUq-2Ko~8Da2W z9e%+R@*+TEiKQ|6UxK;UBvRn?OP*k$Sc}zyA;8cDow7>K3jBS~mq4m$p>xJI2A z8^gG~1#%M58;ZC?1H$1R<_WrN>Jq2Koj5JxmX|=C1K|>hg%wrn-MGfGr|*iH4vf4Q z`-!z+^QEPb;f{=?YDl$5&kWsB?rh#rmF%q<-EuhmQrii?aDbCy!jk4~!6F7k2>f?v znJwi-}5=(cm8sOOcyGgdt*f3p6=yf1?Di|-qO^ZDhN2<1U;j|4t zic+=(mghe z6Sy(4=@%E7J8<7BK&zZ2-uTiO$igUj%F$xL9`_u72`?V4`wqUS;!F{b00?xVN}%m6 zRpUTxUOdD>0brY4x+YY?>so)O=U-1x~$PfcgKNGqu zmW)*4`(RXNP9LJeU1??EXM9O=?L$mfmj_q-!f|#@#y(i<`)^E*L>t#o3Qg3Gd@mjO z4x6@_17vNoyA3g`UN^Q|-`e9axAHl!@5J~T*M87@|8VLg^ZU8UwE+n&2JAcyqU7^e zI2@+h<2hB!VD}I!Ek6;m9kxq5zI~YmuXh=!cqpc@)qkcQM-EedLG0A~*Q8Kw9OF`Ni%Axj9UIfTKwk%f8b)Fc zGikCwA=ZTlO&NpCf2FV+l#S}tyF*4tm1u= zuiLJx8n8n(jyFuujy(*52Xy>Ux2PRS;|U`IY{-VHeA(rahTO~EQs}%s_6!W}Zx%&e zv?{y`7HXr}0+Yh7A`=KERSa&LxR}V$$cuR0T0dJ|VsgKT8~_FlJHng2`S*Rd%LG1{ z&X3V5Xe~nc7u)oNP-6(nTC_d)o-NefR5qJ{^RrSX&-&H=O$ty0^&xltDbYB+Bpcli!Sv!!9Vf+coqCV#34rPu@@ zxngf}f54k!07j>tja0no8peo^*`lF@vvx1^J@rDHNqaPQd70gaZgLFF24KK{jJUIl1AhMt#3XlK&|HA=2XM@Vr zFcqN@O0|ZBb6Ao*nD`ZHFX1}qm!;M&B|BUx*nQR?=#|-oWz^e8ego3& ztIo3LMr$cb@~Pfc_}%*^Z+GRs4~^2o-4`#4;!SI9%5$k@tJ3{*!}XdqNo9ql zeGwU%HJq1q)jU19(R(22+*e3ephrIck5|+2?3^UJP8Spag*kK~RsjJ}M_Whi{#!8^ z$@TMA2@I6KcUsWK09xh118y2(ZqB0rufE!m}$^cwkn6xm>j;0ue0s$a^lygEo5C|+%EI@8^Yk`}KZP}Bm zuHY-6jo}oS2NP<=YA-@LDz;{18@t0d{NJdb*dUh|tF)^LDXHmtitKx71fs?`<(w6a z(S1h)tDH96DryByR0Y;0W6S+H!{d6MxeoIDE~4A%Y2~<;MB_KA$1KUp!;h6zZ3}2V@m)59yV>6B6j3=^J!~* z^Y;Iua=aEQjhPyWczi0i=}shkUTzkAz1CI43(D;w6fnn|mFYC|;QE^E|LH@%$4IeXPE$0>=Yr01Oyv9 z04mWF7O*Kt?*gY(+;ix%8DLHCdid{SkeSZyEv*y3WA2NTZ;G> z-KfOI@w9DbLT^(AzjYPoH21r@FeI00J(mczm*RgB*YspEnl}Txt!&xP)6sAD9krkj zOW(@54j~$gzu$ha0WWET%g`Vc7?1>~xM`Kf)XdE+E{S01Io6=_sCS3l|8Uhc61xU( z$5y#rXtB}Z?5F-v(jQXk$e_z3eQr9LF=qreVam;+kmzMnytVp|E5o{Bj-FtTHN%<4 zd0i$bFz5Jff5*7mkqhH(%!WAO45-&i&Ob$}>*o^u4vetoLSS$M3=seZ3gm)b&aAMi*d!JTkVrkjD8R)< z?#nq3%ru=OvPS2|}(0v-j}!|CvE(1orTVH+}d_?>hH+@z=9VBIq+^s^s48 zYIWEv^;0pd!CJ(4cKy$8ho>p8%c|S1tdI>A6Ox-XQCsJhb;sA)ceGntSPQxfj`{4J zF;`Lm^s9$#>2Lsq4j~$kzyJU80V`*tv0yAn3mph1ZM6k=G87SNfFW)RWQ^pXJjSm( zhJY6aCO2T_{l7`islrCY>kDs&I>vr{O&7@^td_+cBOrUm3 zvaGl!35~e_pDR6xwpg;vB2g3aOJJR~&tQNU@;3jjYS993Edz8Ti>-P1o3yoJ@767DS- zA=CaJR;wz+;=xU!B*m4&qxui$GoyDnsj3t9utDUn+o$2oXE=i(2ac9eu}ijc`}}$F z;6Ax!LlB(~Q6`B^RZ%W66Bv;29_d_37IYDH%QcN#_r)SJK#gHb@T){kz>xuDo8 zlPud2mLV8>as2%I>I|LIYU_XxVT%X=D+eJ8i*Nt``~g8|gf)p#GT-p zDqx!EJBU#d+wB|gn*cB~D{7?fCB3MSUr?D+4kS#2UA4?0_b%4Np1cKSEN?wixSfJd z3T-Q_`fh6|Zl=5T?sOt>CA7=rE!UN`9%9afHzJtC6ZVaD^FRT{$wgjkm8(k#<^(}Z z?*&7zjmtG1ynk8Z<#&LWLIh=^C^T$#)HR?>q@~*ru;K3P*wav#W*^_s#p+X*t!^j6 z4BQ3Yr)7KKCU{^zg`0{)l4vagVFUTeztAwEKZ ze(Y0P>LALCh?|NsB>K}T$2Dp8_AVb21aHd=~8;0p#-ps--> zN4_$s$L8`BaG^trH|nZeY1whq3igehs!{s9lKBz4jWhZ^7q~r;K$Eu@A&pKf&%@{P zSgkE1S(fg1sRus(zkFt5AZ131W#t7<_<;Tbv%dvW5(%?&J#z1KY;mLBdn)CG_wub| z%WfMnv%{c@|5KASQpWtc``^&k9m>ltv;9p~fTCK2s~Qr*C#KI1jHix^+bvnA(0X_J zXpG?@<@|*SfKpLdf~5!yOoCvDSSWA^C>U!6DPSR11UQB2B`$$w(}2A#nCZaia{|>L z5C%Qh67LWNlGUEGvz1TgUsCvYT`gIu-;Le|7j%ueJ+E;D2}_cuw(YiYb4j2@Awz5o z$VO1O?pPgzz$J#h2~M0W3f|aw{K9yg=q6YygF_AFYAPFbAyQpwd$$)m_b0HSoNYUQ zAqtfpv54wHs8GgXtzaVJc|6C^Qh+US?GA&}yzlGB)gtfJ zHFtIKjlUt?x}&G)RaQ1X`e*<~QHiPB&O-P4O+Za37|a!vY27Zcy)IwJ%E1vuS!=Wz zS+)2mN6m!#8N7em)>(Kr!uqqr%X(GRLX--`pMH(7xG)xl?CdBcD}H}oPNm_E>lTK- z4}?&8%)err5!I{PX-j=f(cXFVy6BqPJiK&`SfF&VBbcFOfE1LIvIIhdV4#d-zB~{& zt*yudLJ$ESF9PV5wFkdrZs@et_oq?mu)~CyT!w^)M{v&SKE;rMQu&@JnTESpm;f5+84(4Lo zQPCaF*n4E6N#%{zPW1oPO~aPXUJ8h6fIcA#l_j}gh%y$Z6Ad=1uIjj}fFT3|kHlx# zmqBW+SIqdaoUwaYdA*|#pho3;%1Y{uvb7x=s{0W7J<-WGTfQog7w$P z81>BtEEN#~V!zYq`}#Ev)#metqcCH>vXtkKXPsBkoRxKg4{uusEQXZ}018-2mGt$M07eG;pg;k@(c1gRtj3pId+h|LE3gqdJ5{o1+Y5SS`c@j+(d_T$PAxPTT2CP^urV-70@(vI#av7Ot zP{Ry2^n2agsKzh_(Xn>H2|g$*q3^qU>rQlmi!~{#pnW?q4%ponRG<(bhye_VW&rF# z2o^l3%T-1Nzy;ob^enHRSuB}W^!0|!ch`CC-WjXsfSg{5W-8|3mlCw~^@tVE#R65Y zV8#OK(pX_?F>)-#3!G_~!1Nc-L1YM^U9xaMFeD8KAQrEUQn(>?!mt^0ldN(seKZ#! z8t!?9Ko}r@D?oC65t1tZSbpukSgE2gy{$#*qi<|w-n|^X-0#-@#oqEnzReV$3;=^j zh_Sm+>aAhQc?^tOq{rYN$nCQ4y-eu*>NXk*M?A!S7;V3X#q)HU5Etn$lZA67m1^cr zoa&+XCWX)ddLbH*`~Uy;fj?%XG7&^UGH)ta+XN{U1P~1YTCx_xqx9bw-#z;*1}P>E zspT0~(ILUxtegC_Q^(7kCA+5#&0Sy1kdZqr%cXf2e#irR`Vx!rp2tfHZ;Hf^+_!sl0vRu^ip=Etwf}~pe$)V}wL!c9UHPfu;!IU~f+~_^OpMIvpSeOXJ zUfngOs!LS??{~5LpT|iv^y|6I>H;gl5uJ|5FhyuSnf~!w@LX%|m)<4T(}86muEL8` zkOdtm;E7S z1M?0Ydm5Jr3pG>`#7Yc6nseNdYKNi0mPAz@^z(4*^zUvuIRK*d82M+ANsU|%#w2N{ z?he6T%U1A%h{pYi(U|`s3Y7htj>U1ZRX`;e17KBpsF}v!k;VLwLV+-FH^$GRrJVYq5$xJ*YJ&@%pCV-SXvN=cfO=ftpFK|nMv4O7~M@qjne`!FacRZ0q6 zyN+7T_@M9lqR6O&uA5-E@$I&IJTR*@DE^|n7-*|GZ4tR=Dk$`DM0IMUE9=HCf1&@f z3`(sf+Gdqqkx{Ij`$3(T&&4Wl9EHFRAqtfpstoNyiUchxt%GGoXsba2Itn~*O=TVJ z7u&vxSdKlefxb3(bL34AF+`xVj;#5*7PfCk1M!NmX>5Q)bcEJ>*v7KRD^o%#EA;>O z+Z?qflS(AWWJZTx=!N1z;KeRBra5Y){yVD#^-z~tmVEXITH zdYlpDoOJ+)IXXQB_BJ@BD$Jos^If*>i#)Z*or7ttTax8CcP6aNK{~O5q(O;CfT*Y# z+Qrq?k^%vTCM)P;Zi2=@+_s>E(~=gJyI~8SD5wF(L3KzEpO1JLfFuQho$KMr0Gc8s zn~^KKj_CRO6pFxz(s&fi#H5+(^JlK$V+3MUA`MuCGKlTCy|Z;uY(yP=6&0zL-9B8S zef!GQ-Pj&v=~QgIdnjJJ^FS)3`>6}=_|K zD3w9<^5jIWsTiF-q-JXE;^YSS5UbC83*>r!w_u!ei5Fb7k(BlM=YwPTe1FCFh^#A4 zXDw(ZEU-hkHxgWXJl_})E>%iMObFd(<|`J~;si-}sCS|yVI603jII$SFN``&QG1*p z+jR>IQk>)B80rDmZG~SJDyC=3@HOy0VenA^<5>&`QMGFg-=38KB0!G702e4}Cy_vB z1yz(8NTe>bN?5R{eeDC8V5H}?6SoGKJn;eF0?9nzxfH$`h&@zjlKNN1$wUm5OaK0T z*8wF;j8)&_AUdj2@s_9mb@)yHPn1h`uGP$~csyT&p2<qK!_}484N@M02w)=#7b3#fuY@G zmTzwK{#EO`7?b!3Q)14Kpde*JO6Ho=dx?#zMJ?*9Ynzuo(2Qt|5fr0@*7p;%P;T24 zyT1>xL3;n=`^ta26<2ZE^PD(xh8S;!F)2i4koL83xx+KcHUGyNMPWdcMf>&mV(Ceg ztdK`r%}|`|Q94?|LeKs7q{36c98my_q8mj82om=?>rOO1>I$YJN)3FW_5f(+0PrD0agd6qumfL;0eGjuxsPjodT}V0X1wKj)#A2 zl#8?&B&f>QMn-FY58ctz4JLI0wr@l!F;RG}=V$?NCg~hh zdDV#=m4}TS`5Vfeiy}rP)~t10qu2lkAxt+*-DXS;=w|HHvq_N=HtMnzyr2L9j4hW8 zy^&H;Qi?!eszCy3e>PdoERlu0!xXlJ6S12~S^q%;rb(!mzdA+h=?2?S@BXrvOTjDpk##pnc`*TL=*d~>waQh5Vcmj&*FbMCE$RoSEKie&UYHJv7@f-eHCS` z_g+1qXl{4R-fpRUQwx1`QpASz_Sh^$y?Aps|3xf*+c->s_pU+k7oz|UIg z*QhLyNRZi4*ZWeWtCC_^^0!=vmDklIye3P27zuKY7Q`aR@Ew+1a+itrYaY+dG%?|y zDLe1-e|(~S%)sPNSfSgwVN!Hiv^z==5Ew+gB&7h-1r%KrZIFqAk(?AlKm(fsb_8hM zVQFDf*g#DD+_x{sePb2dY3df|jIT4yD3*Cr!BDT5)Z(nSWqTR)8x7*~gu)GG%i1YYe+l}^s6>VhHrZ(IuGXdn_ z5&zdiOhioa7)=#4q*=|pF}c3;?=ou(*3aj&_9;gr*S-=JMAfu#25y;+j91GD=E&5t zf^PDkJn3nL`bL{OCHDp60p;Ljq(w7OOH7i`iD2;{`yR36Igy~~`2}9rQV0AKXb{YP zA$pYsmXenel#X?{9s>%nUB%5Updh&jL$pQ=f7Ix1vfZ=*b?(ZWI4^xQ1wpq+SD*?N z)x~O85G&kWJzX>JSr>;D<2)L4+31|B2$ZzQscs4@ zIGhqQRmQW>9D$z(*u++nYn0%XGQgUrDxc9WefGc_OzHFDi46 z%N92T@##!ss|O(pl?9TJ#6qyqLSPW1Sq~L}tdRoZFGE0UqGnH{L<>Z5L^jX|#M1aX zmxAN_h}-^UfM4EzXNc6~*%mYFx_=1mwpLmqYjY3V1!-EMRr2gRFK`iy?kqBQ%|(@3 z$UxN=LeL_T{etc4dZZ31evzPDmY$`|k#cA+oCD}!hP#SF*Q!U};cWDg3TrxKD`KCr zTUBp0r~EFeNg_R06c3?Qn?RJb9Q)QZ^lta+Q^!o!r4sMQzvz4KP@zFWXm$}4Hl-*P z9z_uX06oC8BF3%AAHK2bPyoN_-s#7Us@F z-R)9_+OYg-=TqLoWcV4dlhc*ljd~btwu?OlRl2Rt)Hy2~Lf6VzdhXShQ%y{0YbaW; zEqJl!3F#Jk*olr`MfjlQevW-cW&skd)WV_8vW`DMnP&`}WC2K5jN@tm`XLIBr~d!< zkwI%{p^Ts~>nwV6Fchd<-Ly2lgKni@QmCNO1pgiXI}3lk`riA|{Z|25?X0$3t0GJR# z0OTWpJJWR5OvuR3XkbfevAz>2_NclWxLq3GKU#uLkRu2)$1Zm)V+B!uEXRv_%C_7` zBG)<9+j42~412Kc1QONdD(qMDHfolEX0}$TSxi*Y5a2aJ6+(nE0ET&)r2`5JBYkD5 zVHE?WWW&O}Flnqus-&9pu6B#bz4$d^9Z44LB zHC*QF8eTNgnNDV{8c{Jp@hSaOzBD2ZYSzXdrG6bxla0@J8uaH~HF5v004XumUv*2lF5wgLc($_yx!#YqZzD2_~Ex+;)<+Nf&lxTmVYSNc42~` z7X3okz7^<*AT{OqT*~$~ES^!NT=dtzZLm(392@kFx{wUgxYdGivp|GXRr2D@~cRc%$YKSacHood&>Oy#eF z41I!5T9uu2$0LZvCXJX_44oGcAXs>YUA?C>& zw#C30a5=LwP-{XNM^yoh_l0E_3@aGeKiG%CNqbvF%qh&kCn4a~#t6ujsY8|AM;n35 zX|i8=;dpm+{gUF2OcRom4GMWXd3*d98p6>Bs#H8K)V#!B79Vgq{>Q>bC_Nxnjj@^t znzcHy@3P9`wDvlh- zRxh!-d*x?WV?l*6(cuC8@R~1{n{P76f$#eok|%YSs}Vg6fp6}(awk@ZUFke(mjILyV)gMDz_L<{f~8?LeBE}37&7ttAC zYamA+RV5^(J$T48E$Q|y(6KI*kr$n296oiW*PDS zd_fD*{Ql9~4xX7esVl(M>*bf-T&7nsEitABRs1jsD)gv7 z%~J{6)`y$2n_2xian}A(m?N&Dj+>`=vbQoT7u`@1=F}F^i}}zioEF|T6^LLcV*2!T zAWVy4|H+C4J<5|jiAYVO?d@ib4R<~1Q|-~5W?iK@+2Bj_5S!C)*xCNi4le}&_GT^z z=i|>oxyZJfHeMcyPBL}Ge_8Pf(^LDiw9lcsmdp~zD?w{zYzW`pRWkp{_oQU3KU{3O ze8FPp`n4!*gk zz?Ty@{!D@BZ_5b-4Eu*!$c+l9jXiVmBvA`?5cmHdBeEJxnNZ>|KUR@5?;qoEDzSt{ zTa}t9$3WQ#wBx_H?j!V}NQ(j=zNB^nDS`B#cbDtpYcAb5eF9h!aIEzVQ@IXf`_SmV zf`qF!qW4%6g(@fpSa^fkpdRYn!TMsPqQ0f{yHELBOyl489VJgRrKx`jc2ze$Td!x% z_9Hx0^};$4DUDfwwT68o+bNQX!*{Gw;X?n(onJq8x+Wyu^NW)=>OdLfHtr!>klLx- zy9F?|6E+lDq2MmzLj<3X1=FtqTKOaueT(Ifi00C_>I_~2X$q8^KCLS&ngpp1OqD zN{0ff^RHW+YR%;xVAQ4UK_VyH6d`AT-+YtdDH(SXwhh#`^?-#rb=|e?z=(Pifu{y> zaLm%(uml$1lvEYlfl5>pci}R0QYbV{4*UP=*lvc3BNrCLf8|+cGPz9J#-%Er>yepa zOa)fNLe`DT`q@mgci~!KdJa*#4oFP?ru;pb6Gch52Sdy?9+ZEJ1u?Jm$sJOg{-O9e zPbnPan6D`Ql5DTNg%A za+SQ5c`4~@QFL%Y|E64Y{g@CPjq&1$x!GNgTZDafk%)Ln>6gGioJh{E3oFT)vbvSsq5a>`{)I8zBvrJ)rmn@8tFyTp+&|J8(_Rm6Ev-+E+ zX2#%kRB>b2empo$w$<1vW}rCtC$#bzZ3wC439R!3=RSq$< z*w9rk;T=guzCD2e00SZcp7hj@|7~X205&77#^}3!dbVi1y^*w$lu_{nubIKU95HM|Si+fB8Z~!?eK|48+ zFv5v~Z7)^E>DrH8YW|RMe2;mtHVAkodnk6E;YUf2z-a40SBN;X=w@Yy0u96C(ju8( zWA(FivphK8*w2-pN3W&ot{}^i+_qjGXf;ZcCN=VAc87(+)b zo06~zk5C(C_{y{zUbkQ*4miw+X9ud|)FO+e!G)2SX~($}`e$$naq(NVZBtT+6840o z&_pd%jM(CtzN;gto_+P*Sx0R=>EeV7|pqVS>j{4I* z@WYi88!)2480vl0Yna_x#Ls$U%nWuC4zI^Oea<tOb6G*Su-?A4>i9Hm(=;53K8KhighS1WS^G4+8tu)7+<7Tx zX`wmNY%WeFhkm~`1oSZTQ>r}7fNs6H%m4(Z4& zB_V6hqC4Grz%w7o=9TKD4Y^BXyYISY8|aC=zw{NFSq&4YfB*mur$L(hlj}snm`DHj zrL3S34gsNpY^f0&vsYOkazxu7yu5C zMZZJ6;XS_81FjS#bx1y6_1}E$&Iqpnpy96=Sk7#{rPuZW(<3WXR5Fy{6o!8_{wA*T z%zPpfYjMrN%7(nQ&(xk8AR_F~iySa{x*-SY&3>UTfuZ?>NDw<3-f5Zl(a0L~(8NeAeke}3gvnZi z43dMYPL&HMV)rVru+aA}5UlJtCTOeDDY3&X=9&x`fXkjemL1qt& z8ujpzFatFdg8)oksql%K~OVTmbbN$%4zA!e}eJhj`)lgQVz27G_ND^KDsJfg( zH8t1NwaiAB>T$@%#P&Fo@P;tj_o=lv43Z@?{_(_W+PC{@J`$n{ z$dx7k(V~-?p{@kL0}n>)m5nv@-8TGPf**u_!c;_+tvE2`ldkIQhknY%4;P9!MWmDC z9gzQJ4jsqxz#L1deDZtkdXmE|qk_ICSKOOz`J~!a`lR>Y z&1((`E5}k2tkc6daUpq?>mSy9rw{J&kSc1Kl(+c0Cg?1NA*b&lMD_xL=xr3s#ea;^ zeq2|r$G@R`8)&)p4s@rJOfdwU;X>a3v_`REBeP7}6%@@P`sKFv=-6L~Odneo{zgW> z$4GxWNVm5DR0!5EkFLo}-hnTSIWPrTTS4RTJ@|v9d6N5u5?hdhlP8>9#zdH&yv;2^ zXDbFeow{gGB9=E6lR53LYc|Q7k_pZClq?&O1J_AP=a=)X77W`m<)Gra^B!c9vPw## z!^G3Jf{HIJY9nRriEYz@Z5JfAo1H4Ek;=Y_09q`TbpL)0>{K0GCL+H0!b9M9Jr&W7 zhwM3{A@S^-UpKbQ9%6a;uO4M)J(&22nCt4Bsx}+(xw;)M!ORJW55yriS@K6Hs>{?i)tyE>Op^(M~+ zuA+si>iS58+nZkJu1Uu@D3idAZ*l`^2ZE@g;HY=E>2WQ9XRi6C1BZf}63F(lDPb2- zf`I;DCEigHTK{?b(<@AnDF3eXo5xpE)yCLRI8TOMCMQU0`vx^e4UyKe)8+pi1sDpa zW!~aZR08WJJ)M-Mg7uP0VFJwqfLI7w@4#czSrY$709!EYLjk&>EYx{xlJ|YDbw{0g zzq(!F1Zmq1=f|$oC3?j>sp@2MF6D2P%tXej`-(pQ=VFkO^+q~v%=TiUf5r%j>W(Y{ z(_j$*G>8*Mt}z2fQTCMQ2=6@d9z|I4)mPX|7Lz1H5`yStIDcnu z2uaYLd3i^{?L4=v-eO%?ypw6k5L%`wh+)ECsCaB@cjWkKwr@heCYmYF(7w>OT^lD? zfyBO+S#dSRBE2vOlGDn3unVCD06Ld57l}R+rUi5hHHr-Z&-q3aK{}J8 ztAI;;clN>^t;Xxr12e%}(Y-G9kdq(mPT75HT0KxhYr%j-!o;r!)GC%)Kim2nEW3pL z=}a@4blXbGp$)wk_2Q8x(z(uMC3=`&a8GyDznFyOdn8I<#30E*W^t1I7_H<9NPQfG z{Wcw0Y7wO`j65e+$PW@InY+O0Uq4Vg-pth_z-H`!A|k#{*601+^9Gg^5mfCU+6b>@ zUi3ihQx58Ktwhx1R7YlJxA+Dsbi1D*xH^yipm~XAWBPLU15m=RS%^KV?vi)pznMo?l08sx8;TPyrZD%&7cJ!9R6ML$nEYa-+-qbP4vB}Q_qUR< z?06VvWOOcak&Hk~gD^=x*UvtI)uxWX)$4h|elMhQyU{_&FX9`6levJP!si3%2?Pbu z*^W_?r&^FWE#}Z59n4uXp@_Qv7Wp#4A&lA`gay z2y|edwIb45{{b;$bfbIjcf3#29FKj&x=*03kf4H`g@;||?^4LZrzPgiLI@lS!!Um% zgDZB`SXvZL;=53r1()kOrQ^%_IAC+4js4qdcRA~TU4ZO%)^}HFrzpoLj99CSCOBpz zOo~x3;xIy4x@tnP%aPy3hS~#d@))qrv2p)c8)HYK=fdU8{NHu?CdPwqv<6?nTc8Tf zmO^^^m9M(gook&Cr>s*Qb2g;4{PD-+I5NwU93I>X*}a;9U3v1|+V6RwKHULrv|hTG zsHcY$%duZ4DzT25;!F)pL>ISye41p7Rn@^vMZ32c94(7ht$nNwYJ{SL4^}-~866HY z2PTaR^{l)ra$e_KDoSthpj0qeM%ooaJfUw=_yw1lma?reo1XZD66d-sEbYOJ_D7P# z_aZ8@m?vE3La3yCiwHb;c3iy<+-)v%{M%!ee-5J>M6NT#dk%Hwp{v)^0<yQu?94!ItPN~$Hwif8?!AkMgZ{PH`)6^v6-6obC%|q5~VM)3X?Jk76@_NVdp;isw z)&HnHQK`^rX5()#I#D%`5sK#`*vxxFr0OAJY&Q{p7Dn~s%2d7Cx5D@L%b^QM3-rw*^t69ipwHg&83FMQD@6L>!pzS@osXZc?LYJ$yppM5Ggc zqRD<@mh{>x_Ui>Yr_+jUD{64C`3k*bJ4(28q6Rx!z&KC`-H9at!egxa-H?cwhGF+8 zV9lm1{U3GP-w+6bIv)fie0IpMU%(Z}F;k``)bdIHm?ihfa>9H3*N#)6rXf2KZ~_aF zAYUFUX5r(B^JGrzHD2r*sPc(3PdkCZMT{73EVv!Bq({#NO@A(snM!83i+-A%Kl(yC z=wb8gwJjmb40zl4Y;(=L0E4L6PzK>*`3)Nf^CkvRl>mXzJpo6`C0TGLAZfgSQu>~A zctI7C@QWq_o_`pziK#Zqk?IcU+`qCacjC7=3bh!DTed`Zm1I>4hboM_%X1@%ifljk z``>T&m=0IihqBh}dVwcM16p~EqewD~y1n+|l=cz`s`{e9Qqqz91((1X2+&Yf92VO1 zxBR(SR(C8uO2CFng?NT&Ws9l7`Z|xCs-%Jqp(CSs1LGSqLB$MK4Oop)< zKP>99>4(>9tdN6t%JE@8XZ|4YvqQ|Aq+z4E6Mk#|>oHhny@$vQK$4t#e&xlhTGhZg z7=+VGaci+NKctC-6tU6-as_e)6gQ)?r>68)0$U=3XAS$8O!s00q4KqYJ1kPGCTPf-N2``kbNpZF+5RQ zmNjV=um*Fi>5P_Igb$h2h-=2!f+FPAvE8Am#)~zK2$w?P5NUTNx-alz^vX|tbgfAg zipt!QwW$dBfdP_A$QWF&Dr}tteO5-^yar5W<>JAOTlTB8rl*hfOX9tJnXkUHHTOr9p(P$MBg>? zfV2GPn9w25WzRHbTj9pmRpj0v9N5KSI5Wm&-Vfm4hwE>hk%&pzJT6muXq>}NPU5qH z000Ey0iPJukN;kpMDPF*3TOifoA;5IQh+``HhNd$bp?bkII{?;PIrzp#3X5-Ire{7 z6M?SllTA+o>4^dh^E5;|)SFP<0NjL&Pj))3f%q&L2jYG^`w-|AUm1B204y*;AKdjz z)2q|J(onSqW8k?_LHwrb>IAB*Y+NhY0Cqr$zXku|Q=r7*Eu6;S*qD5}46@JWF%doN zYFbXgu;L8C^^Dxk3F(gY@FdZ0E_cd3KumyYm+ALoP-%Hx- zn4M?u38`A^6J7F`qa2_)Zl&}w4oAxrr7FZS0oGj&pdf|h`HU>-jPGz?fM*t&o{g;L zAevQ>`~plXR$=dbZ{Y6=ma5B!#`^nn>n@9AW0lG|iOtYtFmwtfg4;yJxNk7Mh6P=U z%A$kPiQxWDs^Q(bqP^9<(!UU!$da{&!PS{_qKE6EWfOml{(D+R5vcnW<;V^~pWJh^ zN(e9@dW5+~zxY%91=nTUPY&0QNRd-X4G1hmZu>bBOZCMV^u%SO6mJ0e4-TI{@eq-C zHFM6Ig@}RqSyQP(3ItZ4zM=*{uQ4BVGWT7Vxz6^(`OTAY&6W;7pNgejUT8k?_k;_6 zF$$P7fFx$WM_S1hIj^Q3wp`8vhULpbUTG`RyZw#gu*b!ZN~;`_rLN`MDp$70-vyY+ z8oEU|-cp5)m0a+y96FN}{$0xicBlgfyiG93YQ64#Z{Gbe^pX1=NN6rYV|eO*gg}Pm z1^xpx2%E&Dr)y)M2$Q7TO+ zAHGfD6{ge2 zDqvR?Q)5b9B>$rV2%@R#;H?)=f2UZ{J^ktHM4cW=OMtA@xR;s;0%)1SLte5j=Wr-1-L|CDMYO5lyta= zw#m%=tM}jqt-l6o?@OGD7m!g40dp@+=56niK`#N zVTnq_uXdmk@fyU6QYlFa!+x8(a;@PV)w)xGC}Q4^vZ^SdHR09+{Xk=?sG|v>2r^Yc zw~2e{0d#X~WZTF6gpCDU%hP5FBm11;lCFti*da?&-6ku)UM*d488ru=wv?*$T;7vwbCBKG?M1`KG*rQo(t!IfzV`0;wSRTj&=; zeS{Bh`TbGGRKDo|00aL4pBmJU|7&CZNdvclox?1p*c!`Ig*kAU;^Hl@D6rphrHwX z*vw!5Yf3jE>`HUR{8Do7+X5P;E-38Fx=0H`OBlT0i8H5j03!GzaAv1&CPJiLe0%!0 z;EEfzDc`#%BI0u2_!s1dO{&+VV4->Gnt5;}{Q%5;jpTz1CI?Z*@4@l}!#>-#o^L0C zOwA3czDinFLAL5C=Cy5+AMk{8ovLO1N#ne^M!D6$LsoM9v69Vhw2#b9sq?&75Nd7C zdIb2T&pX3X0+~RbZ1~7ucI$hi-qD82(h`m@S6-Fud;?(7@QDUY;r+16h%CZ z9G5+5R@c_;EE>Q+(!Bw8K4JX56fN~c8VU z@vuF*D!^y@bh-FA$c+Q;8dc1-**G?IGnc6%>$w9kjSEkFi~oy0eN;qY&^rd%Cmfbn zk@^kb(h24NjUrGBF~;xPX5RPWMkB$9E9@SPffiD*w(Gj|MwKZR21gdPz-;Jr+zbUo z0*_?MoQpXQ+!YS*wi@W^52lw}bbRw+rmOssP0x}Z>kFJlZTf~`NRTP5XBqm5&t_=+ zf&Oz*)e~#?kyQ`7DtDon$R9GIj*q&lA391{&C(Wt6d`|8+4%Flzh)OfMW8;fWgM36eM za7X2W=F!S%$P*h*BWnGL%+SJ)@K@!7UY{A)lg)I&pUN*i4o6mIdDRDUtZ$;prok9x z#HOJVg9+SbZ8*jeIw^{!zP}4|?#ae-%#&-bPqRs|2W!1~LlWnd>gsog!5CFcGBvns zb~3E5M+rSy>d2jR{SU%9^g-0OBGTrVA+>FOdw-#nOF6sCAGv1`VXe+qj=rNkv;ozH z$2h1JF_r>{eCMo+568ZF_D8!s-ZwrI(B%@5o~b2i3XN1mNQx!Vv?>!z_#`0-L8j7C<%yge?0DIH*^NMXviSi}!^gygjd1bk-PC1S2sq7AeL`?`k5Gi)Mrd zqsckQQnU;bx(SIYT27UP7)vbQ8X0(7f&4id`oL*b5_0^l3vU&G=wlk|EPPD)jqm^f z3W-6R0F%NVOr``Q|NH2}-!Y=VU|b3TB6T#yD8s%YI%ig?jh!bRCPwAmJh&iEk3fzZ z)0Q`buF+l<`LL8{{mLtRRbb+1f((U4R&;kRltx@Y8Ng+y!R|X<;S-YKoZV!!UV}6V zGjxbWjeP67Y=|5>$#@eOItM}-`z1FAv7iuZEwWTYu7%m;0gEVuusDWD-ntXE^bj@K zGn&cA1Q*|x^whrSE0qd0C%>Me*()_7`Mx+8eI*>XEadHYVk3a`ImZx_QEj-)zDH2G zJcZu+$S>fq6rG|$CX(=I3ZQgUG8GFJNO!Dvkw>A~zH-tKP8qU&Y*TDBt%94-l%!n+ zKrCN(K0X3@oRcE}J|5pu-AuQ#d*z~!o9W~HV+6}_(vcMv>Te)O!-&0?xc?f)xqCb&hm5FWOn5Cn0ga8CTt zKcGbeY?I7}(P}_>nBEJeqI3=|O05CTGnc;UvWh9WHmWm)dR_d;)~Iw$StCE{UnWX4 zNmJ?%n1WD8jo%z?w8EH$xZ3w%MT&t9T1ch`P{*O7Js@^!_?e$;rCWNab(3-+Wv5XZs$f2)$3B|z(wm}>g~4kv zJsdtDXgLF;K5b%#XiENz#@S}CG5P95iP24Dq_gXkx+ht*e5xiryOcxA8&dUVR9L>0 zd-JegTO1zulbs_Wo!CtNQwsi6i{e%NQ?Z#k;$a>f7xZ8WuTzK0LDjCUhj8#{ty`zblcP`7{Tt028 z<oZuYqFGu8Pfdl+v3YLfS8Ca^mMlk@K!IWJsZ4jnyq@5SbwK{4=AP9+BI%NO)aD; zwXK(HOC_4r7Tg515~n7-v}m^=;+Ho4yZekc(xOa>n41itTH?+ zXvze7yz16GB2y=430xF6x4`stt>Kc<{ev{oyLYV!SH8Ftp8vh;88hj9cGrLvCUxrj z%|=9vK_D_~*n}bu>j|aJqu_I>F-n_9)xOz^-8ik61!8WE!|RhWZndAaS~U-;2iiD+ zHce(&z#@L<*U1|zQxy*u#LuR=aPn~5c{5*$H+!9S5qk#!q}3TWh18-5j)Q#{H`voZ zC!G`E=qhcvCNAk-TR!5LhbaxrfD!Me2#g3PDW53k_U6h(tFU>gWFx6C3@0hT`ghJr znY`fh-Q%71)|a69=>-%aIp15T+7cKfo45r$W;#%3B7SoeZ{gqTh{z0`M7O;9JklH!xH(#N|kGf zM?;=F>6`<+ZhiQpD;g$ZTJ{#{exv^&SQ3`0SaSK8bFY8^x5}?5Tp@i_9ud2Kq|NIE z;srk?PziMP6D2CR(%{}@8kvjZMYi0pMjHsM%yi7?d~B7)UNo)ZOuxAO5t8{Z7!mi zmnGI~aQ)XNQzggIr321)j)xg3()l5a)4obLMAh{hB-K?v?&RHBB=xx+Otc)#PPVzo z`^Dyd4(rv4QEqq*9;|rD1vOC&m2{L0mkMXxVrbz4X}Ty?{Yg}Q)`*z{>Iz5&j76&trz=#KIz>c1ge)Y7KNDEiMmE5MuKLvs`$ zz=?vsPIYKYA4{shTJcQlPim>xqO3a^Y>@=rgG|}4zVQgKfrgu|305}l_Bl2@4;=tZMx`V{kz>{v@L~8x+DsRc; zqJ|B6)~{d5C3C{e*I;e?UeCDJ_gl4Rt9Gj;$QKjlYu8(UnHb7$?{7eVq;HZ<=J~MJTg<%qUbB#Lce*@F-{vfVYkjJyTQQDft4w;OEY}H$m@uE(&Z9# zLg|?@Zenf2JS!NWYZsRV{47*kn*gdaUith@&=!_pdgR#U-Felzy!w>ekGg>UTz(qk z2;h)l9qEQuw8FS@FxRx1lElmd%^7m+^I1M`Be+1GFcSp^$k9Lt&~;RWRqJNudkli@ z$2eoo-bT=b>tySK=J=TpX&AYq`9e*Zl4*6h^|j4#o#kQmgdxul|4#4|q+28Knoi^mgje)`FYi^~rc~v}KQ~Qpx z3>jH`JrRFpp9s)WD?@W9RvoD3=uOJz_0rUO(c66}nm8dvwG?Xxaf6lK<_gKGy{xSH%3voqDI` zk~*^aDrTlz+!0lS|~EvftS%%RF1O(zZ_QVoXW^mb9*Wej4=jN{NoKFVd}L9B=Er z`ohLg*SQXLjmblb?T7k>t`IeHO*&l5;TS9+CWA4^6p8*9+O13S`ywj*q!2gZ$P6Pv zz2{>5-(a<*UAB^-KN;b4pUOXU4pkp*3`3yPzKwG@ZfHrKPGch}(a&&5=J+cokGGge z&N(bq9DpfT=PNXF5#%Sy_BKi)uoxk4lwAG|8DK*0uRtE&pebwdwcY|L_eSsl00Nf* zpFY%&|6ZF;{(Z(V5W;7Q4@}}+!|^xCYqf;}Er=-Vrc$N2c5kmha3>+dIFdM z=d;1MsPBfW`uT;+dFI(8%w8v5?%z9#>rxh~jfsQ*GO@g`W{b=Q;*ji}9+Qq)T4$gK z5`N<3WjeiaJ7Pr2ZS*r$@#V+sZabXqWy+6W`P~QQPm+|kPULewgd>2NlX$Uj zfOVj)%9r^04{=Z%lK!9*oQ-$^V%XeqNw|NGV>dH!kFJ;3rg)*ivfXtA9sTNel6I7P zS4MNgn zR^h_+FKvqNdP?S+7)_1#6%EPoQ*wa9W8aoNd=>4Fj=v!W?SBP;jF0da!miPX3b>ER@9X3FIK*|YvpzO14S+mSodHw>%N9=1oydEzIHY{J4 zh|Ba+oOiA?@TANtM4$o8-z*)Eg)nO&r4u(*NQ<9to5yLXQVG$LeK|LNY1Ddi<)Ku9 zGDsNm$R|xi8H>Fw?jVlq4EVdJ)?X!Zx%Ov?s=}ZxbrS7@oa2#xG-|7TFxMzX!$Mmy)7;KoOC{^n6+?Z1&h103-MB@p87>PMRo##4f-xa8Fe zwU_&}fh%A_?(wQm<8{9-t2adppmid&I>m_`=Na$v1=-aKC$@iB{nxzjZH~JvgP%!Qd zO*tp`G5hIJ2f3K><?MY zmBPvr$;=A!n!@v6Tf6k4=pOw7zrAs;@Dt*rS-eQlZ`zJJ{vn-MeftG(a-{;z6p4b_ z$WXaSIdN4Uk~|WSgyla@Q}th0=9hY;ann=7pe{TdjGV^RgZAdF$!EB$e*pTw$X=vN z=z?D2|L!mGOSsfvoLI4eU1N>>oe#ATLfZSuvZWf=ecroZA_Mhc`U`cmSL~goZ}w9Y zkH`ad#$OL)9N(;fPl}fAMx^9-Cp4Eqj5uS>zl80>Pt}~X!VKeJbP*F- z3>}IVGp6{YsoPCChWXOH4l zp}JB?0J5Zg(CnQSn!TorlgCw4$BVbaP816o0;;$t8E(c*I@a*5fqGaejXCCHL?yO_ zyDgUJ^>@sjt^+0VA}`2SW*lEgNXh_SNiii;TwY0d)3XDDoXs1V2usBwmYe0aFPg5LLdEWg!mLV*PfnuePNGV*rNJ1NTH*7+>^m~wmmWJ%xu z&aZ6rS55NotjGy`kA)CU^Cg>)=Z_x){n_Bvww$w&;?LJ;A-FEBL&xE(XpNv&IIW~U z79E%P^|Dzw>TT=E_-G`7uFU_Ex|)(J0wv~Ct3rw7Ecn_`Sj zc6e;I_`g=VOW}W0ovPEXQwjEu_br{nJO9xZE!lnoX>zz zQ3e}gu!2=A!iH(S)P6H2N!{>-+MT+6tM1J%E;*O_KNIl3d;B%4)h9X~Uf#6R_Q^Y^ ztT)08hVKlFu}5W#11~m;5iE~AGVE6y62+Ni=5;*(kYG7wi|%F@31o(Pt8m-S8SM*T z4=LK_pAGiz6|LSV&tHuH1X07u`hK5wW1!t!PYJT5UG_Y4ijeLmK*3f`VwaM%YOMQB ze3Ef9!j5BwfgsqUkdhF>AF3F2o70wM(Jc|TM}3f;W~mSb*-76*=lACMU%|5%k51T& zLvuZgce6kr658QQ`H;v-xsdP#T^DJ9?uti0+PlSP6DHi1(bsC=$Lp3?@Z_l6Rr*sL zV)#0Uo^WGt6&mI_M{~2|Dw!@g?di2!hX#SsY%81RQ7xOz@G_&vQ14GIGOdIgx(wAx z&UK0OLZ{I>mscz?__0Sk0VF-5)R%rj!2+3v4aVLE>DN9_O-Md16&z3-ZgVP|X>H!b zk4>|?j>g{jsCGGvF-_JCnqvq2x%#EOyt46^`9=jOVh1jx+R63|ab{AGy*7>NzgJIF zw6y}YxFYj2K={ZQ6)_B}Gc&}tic052*m?V^@glDO485Q{>g`zR3cPejvW^Rjl_}xo zVQg@}7?jk9f^j?JoA07-hNn3n3ySPVcr83;BxK9_jBD1zxqo`b26_vD-CFmZhkc4H zGwopGh;~N4EZw`@z2q5}*lu6rS2innvRSYqIjrW^lMG>tdMScOWShc{QPf=>GTkM_ ztqAZqCc)!7S=9I(S8NlN*ehvA;z$YsOTm7<ssRY%v_!m6K`;1pqwW{{*%B%3M*h%~dhk$9jbDMp?d&z+ z)Dh8^R^&^#$-9-!fCzq6*6xC56zlX`|Kpp#UAU8256L|t14*I&f%xz` ze}z+?A3Ot51-#A;_b^jq7L}aA%Ki7<^uOlv3**Zh(X(0?QBQ>aa4R_6QFXXi1Pu!l z;DBz40@Ms$X|-~F&$^g6_DfGd!lgVE-XTsc!PX)~SzaGh@G$NH_sTN$eimfQ`T)%q zg(MP42OJ^Ys!`By_?N}nv7h!W^0>N21pI-G?;MVBV4)~az^UuU+%ijwlfnEI4bDb;BkXv)~3*v7Tm zr_=XxhpBlY#V2XJnk4t8v=b#Jf_487PO8R++Yr|hk@Vnbi4F{0FuYlEzEZ~|W1y0R z6zYDy?T2ibs$iF`Ylk3>;W=hXTBvh$MH!Ja#>Pc|e2~3%V|w@r;l`H>xkPc6Thbcc zRrk=?st=O96bWSXi+198!;XWZwhfVvvM#ZKcjqe~Sm*+36A;+~K}Rh>oMN6GZ?0Nr zUW9N24_gRMkecnB&-IZ2F|e7#b$e8w7$8MXaG+9ACT1Nf94Fo|1@>S#{bbJ2Lp=WD z4B{hgC)-c}qT}$7yFj-xpmvQ=tjpy&pdl7S;N%395gCrKdI;#SYe_iA9_c}Xk3_zG z>vEP?4dRNKM&yrkSR8|9UBSrL`=5Y?@URXEu_v3IB6obxx8&3jy>>olgK8M*PP!KS zyakuxT!THUk(%Aj#P)5k+nMo%>Pyp6h|p%!FQhR&%XeX=FH2z_)jf+EE*VjOogaO1 zjbMpjKYYih;9Vgr`0wdyEx>bdGFWATur?}ZTK&PVt`>vsO+HTNKpWB{f>6HKr0=(6 zO0~pDtvL~&ULJyE&=O9xbC}{=6TmS@EAx#mmrlgTHxPFl*doG4OZNXYt;c(Rb+wW$ z>WJh9?V=>dGOVu6s5`FbMoY^EIThyL2~Rs@sP%lRA|5nw*qccD_Mqd>z1K|IWXriN z16$>oLx+QO=p(0n$*Cvbfdbmzp2kJRh{OKD?;Aj6Wimwu2xzcI-r3KBsusHgd_dzm z*KDqI1LTx8Jry+Vhqi=~wH-F074av$ON8Mq@4ptlHr5!->@))Pp|(OIDg036c?fOZ zin+%1#0b38NfZqOdRvkF7W;Q$UzQ!MxQD~x>IOFs+cuTXkj7yEfOOH`Qu5N@XyS$^ z+NjQZ!{2bAf6&4`eKOJ~IB z%_NaV!wbHp&3|;qgz1U+#AkwDFa@{fMU}L{0ue3Le{#&g%U3_t(=ANU9G< zJE1uS60LD4?G(zueS7|T=#PBk!Z5h>!fuHk?XkWY@AQ}e00YGVpF-4+|3`Xn2Or=! z%dRP`KZoFd4qXY|^y>Bpb^rp<*MlO>GOsM)g{I-AHEsHc3Q|Y#`DH@gMZPavv)Hsa z|J?MiuDosSno!IRcZ;YX{(5fI57b@qMZMm}C3p&Vq30L?Dxu_*h0g`|`CFi<<#E=vQnJ z|Gc=mvS&+8c5zKEPKJ1^=xYy9a*Dvz>x8dqyo;nZ<7~O4d`VhOH1}t9H%OJcPBC@& zQp9OdjZ)_-Ecxt!}|EH z7`z1#vD6peh(tjF$O;o^j0&&8&tp6Ixq!2v;B!CQ~?I)8XS8yC*R26-qaa%Y0Nh^gmJv%|DABw~2Mzdh3`asmp1O z##yg12;e+rq@*r|f1xX&L%~;bxcz|XS!c|z#*3Z8KZE;@C7{opFA|TcUep}LP3~mo zmASq@c^9zQn~kk4NHcf$*bfpA{}Oc{x!2T16aZJ-*#8w7GmJ5?0$T5wQfv$aW?fl> z&NXh5%#gLmu?X&a$W66b?!pG~L!nk`aDu?PO-xYOYvu;^cTfYo=V-9+x1z?)T7m5c z-mmx}hSvGUPV!jx3)aRyZkm#iea6}=#^HU@4_&Am@2n*KrJ+Fk4M-)=)-D+U`gY~X zoHL49Szhq6G+czWE~Sg9CE#;Nus#_pM+#a1Ik*or%5|&(WDXTV)Kpn%! zTiP&8`#GncYp{UlOhb)xIKtV)Z|)O|v5p25gJumdV`P=(s)50W{KZNU_N*F%aE+&5 zqBq_A!SNhHF$-&F^HLFZ_JJ&v71DQU6mb8c&PnI zcgqtqa+2_ri`Gddi! zNNQ|s5dxX~d;Y$?N(rg8V9290Bi|NIo9UZQrhMxOx)^0j_Xw&X+hrWQw1auyq=1nD z;lKX{!WkjPxf5xv>BSFNH2wqNxCX5+lYvj6%Lxf4Y$0n^|*@Y!)+G&&l-H^sk0ldJh`r z1%#AaaF`Q^8uFYw9OITYtL1!Dv~0RfZnAtItli#@O(;aGf^tR&_FiS(E#0c_LG%9f ze|9S|WxSN~hLSgOaRfJ1m@8Z+7~znMgH2}p$}^A21+Mg0^^7Tq*n>KIs403G{mOo~ zyR`Z7@e3W&ZYJwprp6;EZLDWN+h(sgW`>Q~+S1%sYKFo9IS6-AscWNo32;#d!eIPL zT6M@AV-!sdIRWx}pj@8Go-!1u$fkX}K34x?>5p6n=>el&sYf~dd+yDi*>kZvP zu7)iyw~{1|ZeLd7oHs&}s3kad*S3avHC?5xTJpH7l2v(M=fUfEnjk&u*o^nrZY9Hb z+VwVOgv|vbVchDSTpe#h0}li!?AO)$#WlawAx|ar5E>{zU_ZB}uhn1pGb#$CmKcLK zzyJUZXF;1xlfoWMrUWDZ`_s<$EJqyyZW9PuK3--XpLGN|6Gh|3*mg74qn3^;&v9*( z`|Ux_YD9f9rD0@YTlTE^GNO=i7T>EsH_Km&6PeK6@LcCUMUlNn&B;iata~VAq|eF{ zt{O8l5*Qy?#z%L3Qcz9V_LCPM{;rym{iI#K5BXr+$9KVZ23mQHaY>pJYyTG_rPMJ! zcD~;y3l<}bLlQF+;VFgf5P;isR-G?9>9gNjFtmt&ZUy{?-nMTrg$E_{m$Lz4v%yp7_1Th~f6Qd64Y&?wb%f)O3PRS{Y#wbg;%gdr_P z)`rXC4T|DjmL$s32l>T3Oc1zcSgtucs2Y%b3a@LB8Rj<6Gn=9h^2crb;s|~^fGcS2 zgQaW6!a-*hHKqJTP56VF-p9G`U_9Tqf9N)=Dk^u`;Zuu^wRDQGxhq#4L^%@AEK#r9 z-!0@TukY%GpTCWEOcPn9lV;;4(|G7}a~A!p<(YM3Gvf9Q_0~r>F8+~h2pdu^)96@U z18_3m_F$rXxgShm`_6@C3VrsV$4!(AZe2%#waDtP4;vmeihxKgg5EmsC8jVvcmX3d zaXZcvX`R+z0-B9QR__*Dd=Ehl+AHW|gRI{o?DKAqN*fF;wm%_uuoAqC3kM`f-a?E$ z5lCB6mvm5Ug&1uUG#MgJ4Y)!^EbM9xYc4~rBt_2{GW0I^OK|J}!eJw(&=M8}2w9OB z(aKKth7S2&^wXleJDUF3Gz3yfbKM~~fQRD}$~oCq%^XUCHb3hyo@OINk~A{+tXZ-y z0rP&Z`4yi1a93a1B{~1icx+o?M<}@4UeWI?hf%STntpTa6u5oa9F~*DoV#Zb^_0QC znU7`5`pzX>7vVE^!=(;Hy5kx$b`)7akjjxw;uPv0vc$W>HbZi+Z_ktlmN<_xwt~oY zPWt2;<hH`G`>XX+q*vC3>h+?Yvg7~~z^Y_p;%w8*GoZG#iI4CuW-F=jD46<2 zTp*^g%fk$t&Bn8%$Ea1WdxR_x-t^M8gd4X9-`>r+h)_Vn$!jO*mm;erpVqxol8H=G z_A)Ia3yNxsdWzgNnAsvNO4vJ6j}N-L!(2)P>7E6_;=$I>hmC5QEb*{+j?!5m5%2AJ zh`v&oMRKh6(BSnz0t-IP$(L+6z(!WWu?3OGVmc0&pfuD75uTXJ%Z1qLad2%x1j~ih zN?e)sY07gn)^J+;Gp!zq_z!6R(&{%wqmna}Dci7#stj4S>oU`#f;Bgwd`jps`figA zNo!BZH4Pgxbmw=6oCzTld5-r;9J>#YY*je86Z6sWSmcbBhsbPhf`>;Y2>A>8kGlZ$W8^yvFTJ7=cpT>d_S zViwD~v3s$2h|ceO59hSpF~hk}8RC;UwGk1B`IQrIf&} z-8?Wa=YK1JE*cmKR>4Na>JKd~G;9!gwy2HAlxY?WcWExgUDQy*Am?KKHV?TjKtU;Y zz&8slDYC}6P8F6`u-<_SBH;D&fl(o48UFBZu(d@YyE0UgTe0V1j!QUZQnVojfnv2c zV5iQ4F?40aN*9WbZ}rPnJv&fu=Z(lxA;!Sr%vJsxk(hMHG*Of$MCxlz97A&>B`BMO zZc1>WdI9!fAcP`_yn|R_AF~_jnFrren#|z%nl+X>z1k9p@r>O>(&$j};9n^BPDj2J7*l zzmzhTTDN|}|Q2NF&^6a~U74V4)zN_3- z2hQrqV=E}UZb=z7C9B8CZ30bW*Op=uvuol?z*Z{ouVm)Zhcu^;S%#oyq6rgTaOT>y zanzME1Nwl3G9^2AEijJ7Z;7eFFh^(#VX@7rIzf$#QcD& z7L)t=lI?vX=z8E+8mJO{^SdFPuZG-6rdCt;Av{K%!7cDvofJo4NscMo-96z;9OB$M z57mQ{8RFK`vs8AdPyT<=ay&soDY??Q&W!C&@5S_D0#@evxF*sBn>1|OHrL8yqxiwb z{j+Cl(Ce;VX!A~BkHixRwGL+7yk$J3bmNN(Q^_KooglOz;04;-X&_KXu%QkIMwZE@ z{R(&C7ywDw+T0C2Q}>@YBaDwGhxT8;FfrqMfV_;xNC0x(PckLqVg6*I4SUm&{|U&tGU8fwvHTmG-y(%kw0kwBR=&dan0yG*$TyJH6U5#E&iI&-ylmS z+Vaq$J43Ldq<0#De1CTRi`RxTpwiooHj}GWmv*!?6ulzvnb5-d-@_MR8w^$qeam6b zJ7JkbNl?j5ggWtQ+)$J*`e+c#!NVY94e=29fKcZ>kU#rj;yDe?AG*xF*kc!?XIH#2 z+@|ZxAe;7Bv@r3Or!)}-4)x@+xei4L(Yf-Kgx69VuQd*l7%X_aH9Vn7;ST0cf1_(Y zC{_%9m>tj({fKFuj{1}u*$VQNY^iW(%N9ZrMl~>*yhVa5G(gQ>b$RUs-eMhC3bVbU z92z;Zz8S`oF?>D+5T<=ar)hw7OPFHQt)~^|;$DT;f$%di;v45s3qu{Mtkvl%$BrnM!4lpKdNtX0(U7H4 z{IyGULSfKVY!s8d%}o0U^bK*IZhd?#`0cwVluXKwBjQ$&Ehc3}$UBwVMj|fQ zppAG@XJ{tnhhd7rcrqXyG_K+J;nIj4!^d>5lT-_}wV7$M#;k2FtNTZ=!um8#Q*79l z^gxcXV@g&~CgrG==U>yMo6A;jqfJ5!`*O-Zyqf15H$l#N^$~%Y{yr4mxiU^Rj=>6l za~52!0Bz7gp|kW|+gDN1#6ENH#GHDow5Dh{Re9fUBX}0-(bzmn4V}2^8y~TDSDa5} zf4u?2``-o+glmb}*2Ms?r$^@9Si}B*E-x6X?;>qr^1HVXYhoYpb?p11OT0yzqTh~G z(%4$3QYKcA8QthuBxT~qz>BTIX|;K7rm+fMA#&zFSd8kY;N1R z(Rgq{IPcXK`{Ud*PdJ0-Ko-!P&#r{r<2}V}CUafjV6Sfv3~8FTIs$fw;#lIu6j0JX zTFlLt(AzBRkl@BJ&(t%QUq)YUJD6_d3zCZkZPt`8C2hYc6!Y6UaseSfU;UEkjifQh zx|Y2U6oRsc@}A%1;6FeGMPIFU{9oVdCbzVoQJOpbN3y|$DtRXKUe!8Rn z0jlLjcx0+TM+c}x9{1<AM?w@Ul+-b5*TQ*#KV*1F2@xy+wI@O$h zA9zrw>W{*S<*I-zh0V>K17ZWtXK&26WD=|Y5=~9VqW+jJztolnh~P;0cn>N}cWn#| z0aaO?DVqS?n5W&IV(ywX#2n$@2ubokW>0hJX zyrB&hMT0kZ-sBKxTD{k@#5XzgS~hgjdWX~&nkoQ0-z=fJje7yn5~fWSs`Ga6Dj{@_ z5dpa#N-S|jPd5scwwzxQcf46g*8RW6_26jkQ)MIZ|5@i0)N8zDtw|R>Mzfd9{V}Vp zHtj(x*y8IuW9`23`x4%c9ZflM$t=Y79$|CchT41$Mr931!@&qWLk@vh<4Kc|x$cie z#PyxSPhq_=%rqNHLtB}AIeCzMKeFF_P^Sas$Da%$4H!-j!=s0T!IIW-@}T$=pi#a{+Fg-N>MIvnEk6_fWs(%O2N}SXBf=g^(A|l9rB;kr&=e zV0dT4PM4jR_})`ue27Ps2q%0A*S4UI&D++&nIYcn+m3)%`{s_hVJraWiHtG=6i>Fy zwUf{{;8G2uR+uVsV6&p}(2Oa%19Co^OwKgE&%H{PTRX1^J3A9z^+V5=hYC$Q(O~m< zTvu-{%d1JOh8Z@XP`P-?)t_j$LW#7|x~{T;gThV&0b0gGA(GUw_ZgXz9A<6v5TYo3p=&Tt~dVg=9_e#wRT z&h*yS$NT%m@`-QGL*h^VOOeTzjgtm|UNH#8=ryMZeA79_Ae1=gjK~!Wy^I7sn{oQM zF&$Wy9N(LZo>jZef0<3du?{K;d1cJQ1-xhTggK)ipV4bocx>!kzYMvqc!JqO^cpTS z1M`in=L@~tJ#-+VG4;sb2{g-+{18Iop<^)*Xq{EIn&Z0_E&V%XT&ZUU1dP>3oCiJp zDt2AKj21j~eh*$oz$9~PN0EPRJK9FYAgQ-_1s!Y%e^!0;Os_?B=%;k%ephVO2KAY zK!;lsnKH%u#`_wOQswcYy~2Q9b%=q6Jxs z$`njk+eHXAav*pUQY&!n8g(c)@#9$xcl}?agdGf$VAf*4Xk0vdIFLTIN$AO z#_?;;4nU^3hMqJI&y>2;3cI8Q8~5!MbbK83;n}@10K+A0HvZ83@|p1>uz;nVt^&fI zV=^+iQwkzbK#FuCje=zXq~L3f;hBI!^E$)atoVa|4} zE+Z3je*M$Sb8s#|G7?(R3&KN?mkcVXK`EVOL{W3AHaeQWL6aP7JEV5EM9f9Q zfpMde{0x^i+Kh0H5>cWe42C|vuDGN|T1bLUQr@L19KgolsMB2OWzV1A*>`2$WSdhq zQ%--+Vib(|lb{Oh8lu1uD6MV#8j)H=PgwT6LWw01~?UfGDgqrO=gT zaZ<-V00IldKm&K^WN8IZwV!9dt90kTIUGCIKF41;BjyHXceck>#+CpEpeq}{0b|3z z?|=!FVj)xM;n!H(8s#%-d_SLGQxvSx-HVLc*CeE^FDvDK`;Of%VK-4hORWTN4et)V z?!G?w`g5BXb^?R}7RNrG+v)7o6r=!~fRT}d9WmXw?y4ZV01UW4x&Q!Bhd>V@3XlK) z|GYs(WTr7-C^!oZ1fvpw$i1@hQjOeXTqR4*5CeJBvN=;eV}`#c*tO21w|enV;Btj? zcLx=OgbekTiVEb!6GJV5r>r}gPz;kw(3|A~RFKp0n>5IB&qeMIsyf&@I{58lTj%{n zlIy7f%Jdzt;)4p5a9Hf>K0L#~R-rFwH7Frd!aO9PEEk%v1jzfg#YoWd_9ddTtU_t{ z9yV)VfAiz$uSd&sRv;vrP!icMgIQm0_nhfmFY`i_Qx&to02iKVVH7r{lLZC=QwYOF zQ@{XSEt(0Y02<-Q=s38l|FEFm{rIcSCta{p8k^047jb9DA$TP~t!4_&u5;OBxWanr zwUt=RlQEWQ3Pc6VhWY<1s#To|&tVpuR8e*+g3-H9skqW6%Or+Hk|pD9Y*yhkuYcLR z;hh(9^B(R~)9w2DqRLrA6hIMW-Y*>&s&2J$cOVxLDKQAOM?6HubxtS%1+sI8!~+K* z3XlK){;>-~XQHwoh!_eaNCPB>=uA)$CS0Yc&{FL#{NO*gxxSyxJXubAq;H4wFxRi_ zT}jRqUZABCBj}nb%4#*QZB1vAO2w-Ldn9pnmdJyulG4fm3&sp8DnYRd!XUs@ z<}esuSRCxJma-EI00mCdX{o^nQE0I_HSIyc;p{qPI>_!931T>SsGXm;D!0Spx#IqU zuCV7r1@|9vN&o<+HBY8yf{K-_ng^iV>rt6Ayb(CyLrf~m+O&v(O@=D^sc9Hv6AqtP(|JVJ2 zL2PA^U`!Q6PZw5=k+WzBn&NRnstfTQF7gc3sRJWmez0lSVbV zo+5@6$!QX``j~UaILzy=S%6858!)nQ1R6k?DUzC2jVXNLq)6EsiPsGlz$UX7*as9a5hatK42!ZcS0j+Ob{Xd~&9! zs=~f0Esj}L-irI5*Q>r|c1qw{<$yGnJe&JH#{Rb6Ich9MakE%$@#%RO{~tRd+e@ZT zZ#GT;J?bF}kN@ZSumMeHgIGW;ND~oCf-`{KEk)kpPQgWqMQ8?lbE1%XGq*qOdrVp# zesJauZxmkFvr(#>oly1peqdggIO>VIEu$c|RFTw$KA3`o3>Vh7gfi#v?Z0l{y)-S- zU+}t&99RoFm64sUsl^JNP)9)~>azkh)4S^qmo3cP_y50VtFA4YfJ>`ajHa92Q0lHb z^Y>_M+^U|Ha=f#_ouQ|r{jLC5ob^`e+Pkb^WPoPj==Z+%00F9Hf_BuZVGx)|CJ=>! z;XtUsDi9a}x~jkiOCS(2wZZ9ZBSW5jAu9Cew%&Zrpb9Ey9}Q96B2iA=$2?_z(80L` z00xt*I1?a>Shm<*+oaHran8ZAwUihMN`EfQ(%>~loal6kx zyx6HUGrkeF5IG?lkH6Rc!~sKWVyK`>C=;B{0}Wj>hTFqsUT^?_19N`l>%W28`4d2p zye1pf9o>nFWMGIS6UJDxjlx z)%B4$FSm=%Kr0Nf(^&>aciWSv5@MKMrcX9lP7^7mGF}XEuU|a=CWYV>nU$Rtm8I3re77;ZZEEly5+9?4AH4W#BX0!+PzT=US|0UBALIi}3OE{Thr5pgGTK0dxiu)G;rCaDB&x}fh zJ+N%LE8{iX0GVlkJ|P;9-v9q}0YPY@p`c7S3l#*RLkPrhZ-zfjbHF7nmMlUGWX&W3 zJIjjasvYtk zkH*?q6cE)$6jJDTnBM5I43(3~aeosjeK8eByD}8_bM&kqbms3Jt++-clt!9M>C8;L=svuFC#`5x zF$w~LfRI=u7D5OD0m0pJ4VEDpsvs?tw2%QDFEVCnCgz-Ck^~kZk*`z|n>p{(WryhkhzT3P>bi$|MG^ z5<*M_&%-FY_>|_iD11@6D>oFxO7YWh3Y)%Cy|2@;i9rD9i$n;xR^W43(IB)iXumBK*E*~zX};K+?FS?j zU)%Rd1THI-iVCMo+5{VKl)ebnWvEEHv=Q10sj7!n$es_OZMI`j!n~};erfJUepq0w zrvy>nCX>CGFM{p)86W@!1)Y;AAt=yn6cYsq0TqaNX?o=~XB=)a(u5ZW=Gy6`07bxLxjuXSoph8S(8~$cYNmyGv^8VBTvbL$#UWU)_mJjh6hZer z)QVS$8}-d?j-Qe6K>MuAw*}<=AqteerV6HjqQy^8J-3sb_qSf92ue5zU4lj2tpEPa zI^P`6UYD7;;vti$e;v&>*n^mLT^sfdSRi9|?EEpyivOqeAgg2na;5^S$KI&vKL7fSW7k<(z;7VrmCL? z-~`pI8(+EIxeK5)qS2r;Vu^0%iRsX!bxL@(jV2;h8bl2uHklu3K*7KK z7HAJ=$jY=37$=Wg(|ltmPS834;obe3T`S~!V~!gg8jzOVc%t0%tyId|6?kvB+I(Z?v=yi70?RAqteuo{))Pp@>Fs61TXPDCF^i;d_!SX<(ydc0Y6Hty#{{ zCIBe;=z%(P^jv`}XnY#s3ZaKwep4+q@QO9dU&H`dtc2yF z3b0_9h{8gxhZH|x1VLbd&=|IBnCl$k1ul)MLE3ubQ-Ee|%hX1It;v9mZ1yOo z9g~AxKq3Nk(S)K=RHaKX5ebEN(@d}~A^-qbt-NuJ+NT&nJCz|C#&um>H`o37;?iEL zT#G9fjSjjpLYkhOEaJ(lValMuYFfO7rf{|tG#KF-S~=NR63Ql_paGwq20~2)qM(Gk$ZqH$LF?UEdA!oLJq-|E<$V=DU4C!GiJ$ z-W|ps`2M7|GF2F1-kZG7J^FHM8!pEK3#4@*Yc(c1! zaWe+4u8RSQ$y=q5B;&p|ZO@NkPjLZ!--|B0gT-H4W^$cN!Hv%S4m*7oZgjCB3$+oY zrN=H6xD*AZ0Gp&5yvQgD35bDX2!_gf07#VtRia#FSjt|%#I(574@E&R z0?7dFieB_j5P+nIa!E9|4CvOAQ6gU)0{PF3ad%!0tD2q197fh61M)en=r_9+mh0aw z6;3z32U}guR77sFERnM5F~~bAXGyTJ7V4&opk^A5ZsuTgtpI?I-^P2}JsbH#>d1E? z8jt_~_wWHbWuz&PPDB|E0w@6)MBYXCMe+y)7B4}R+mGT(q_u_U{1*?Wz8f3HvL4mc zSUhYI`b0VlHP$NIGdg4OUZeSSPiXyKTkH(Oe%s!h?cA|RhL$^I>O^NB>FjaDa$?8N!4 zanONTvneeBoKzB~JJ?N{6ExgE_)PSu342O-Pz8pFQzHaSeK);o4-mm%BG6b4r14LR zMC|Bg7)A@Hv}t#|=7tuJ8)$ITRo=IVJw6@Fs4G_Ooa)@D4AIS%C|2k%zun&~Ye+X1 zZtC&1Dw$VQZ!Og3>q|yoR9w+%PL?%J%g8$k?xu2FF>+yEp}!xYIOGf5fNm6gckFBTdWAP{&z0(vrRNwaPUqIhu1 zS{s2K;aQ3GUBaS-@TpU->oSjKTB^JSbK>9SN2cKWj)x;h3b8x8KV^MUqt$V1N_~Yf za)F&AwK#+hw{~1CAAfO)H6u74qNRWq+J)tBE6Yx8)rm3}pL*4~Pi>e*3*H0*?j1{A z%h+8sgfl?@aIlw$G@z4gvef>Z1QD$vp2DPU00AQhAsUqpv5Ns@px7i4QPxN+N9`b) zAq0SQYq1mk_i08qu9CooF#n%+O`A`+8sc~62rDSTVekt$Q`~!VB^UsJb_CIH>>)3iTB7MO=KlPYQI(A?@k$A&f0U zt?C14?mOTB0gsu3kO7#Vu)@`7RSFbPjH}OOG42E?lC5PH0czG4r=jn){}D)H;xfb@ ziE7upwu}lF$B15CU?)zfTu0mdP-~JAU3;FWsimsEzqd#ic|z(-!F(D2qx9Kcd}(>i z-eJSKjnHl*GM52}m~T}0`e;`R@|JCoY*bgl23@kBSUk?J=FnW_s73zxWCx?8U59=NT%n0EEGo ztar)2AOKQQPO3vg$sAt&+j22zSl+A-08O0d;K6a7sd=Z9YaheqZ`Ze8p&rlnf+4;= z_90hFp5)E(dDcv~8q?G2x&&gjkNSSme0m>>;e$#=k7?NdWv#8gq;}`Gw$r0gtc5CO zwunmyL9Z%Jfi_B}YaN)+K6?a#4WGsJ9B=_u`sh?9othlz19?ac{nY6N{rJcIR+~{(v*@8YQ1gMwhS0ZV&A$5kin<4FZtefQPgM*!x z&Xu`cv+~(QGA)s#IIb&b^TjW*(Gy8cvXU`q(A!6*^zv&gnnxvpTF|JZNXXMR%&T{( z9MD?rO2O5~yFB=Ww^!9_tgIqejT5bz+1Odx6v7!2Te)S@aN4|%;tDIUKduLZ1*+%g zvhM!-*ixf3^1c<*5ww64BNS8?Nm-Ci?!k%nu{U=iRO6Md@leig)$QIYg^f8P zvO}0ObU~UG>xnBi4|UwxI`(h3r;i@LN3$#pD}f%z+t1NX*;U%ceN{DA7L6 zZl$cs9+2`CCG6zi7Z#~SvJGjbAuB$t@`fr&9jhRnT!iz=)d%`mg?8b+wm$~}Jw2pu z9pT_=1AC9~jh`hi#SLjxBWP-ZKDxzKkL2aJbLdn80BA~St!KngxAs+W2a4T&*4ByL zj8rzaasa!legEXBhW9TgY@fvOO5G-OHQAm*8*!!GDvFw6D@Y7s4^022t| zd|y+t>ydEUv7kT5C9NZ&jOP0p)^ok0->HiHs?xBhoP&>8I4&Asw31ypT~za4HPH7$ zMY`q00oOyN^WbP%6j1vugEI#C%-Py#WD_F)J`^kstTUb%-j`-TqtJS8r`K)Ho-V(0$@6R3ITzt4(21MVa}<$ z`dIuCCr53z$*fl!YKE40HQh@_LazMHx~{wh6ndwir2L3EaEF=UG;*O;+LQ?!DOvF3 zdEGi#c;^+6Ur7g}&tzcE;DI7Yf|`&_vo7&oMOo2?q~lC|9A(M>H}gi9rrcuWBgLE4 zMfcnmwK3K?i$TRIpk>%5P&hqXfXgSehl*z1I9Ex#LF}(Tq89%;cakVfgsaaxHi2Uu zAn)s6MGkM0^NfOFKcG?H74NJk(g0^YO#ZWxR)HHZu*9!44oW)?lB8w2g>7O0XJ7+!BCR_%D=88 zovRk9jS25rk>tV)d$DNy8BshV6vjV(ts6tOsl0|Djq2SNhvei?VrUwo5@!ZXi|{bLVKJh6y|Dl-B1eI3u`xRgYhyk2aDOdIQ{g+!PhA0UXSLZI;iRD{_=7TIpm* zkUkpPcNeOt2M%!SM73XTFY*w#;w;`|4^gdwnGoQQ_J$~Fvgbwe{J@G@y=ON@^3Msh zI)5t%c|yiNyQcF<#G0H~VWPD-P%09H7Rt8oa@I`MPiVE_OQDM6cZlfoWMrUWDZ{aZNz92K&Q zK>jXzT8jWJ+GA04sxBIR+3W)95#t(3(Y=;!?4-t0*nZ%i{b@a4eRwo!wY(RZ6GR=i z0n=@2Sj@!HX@v$HZZkcWVSACYZWC2}Hvq{q_;+NqJgIv>)0eSQ{J3Zq05&cPhw51= z_$ZjiGd1MVr6Du&o&tRRSzUjP-}cr1Z8kdw*Na?0;_w@oM3CPX#r}cJi5XSQewCI_ z$?od#R^Br7EpbIPWFbXu$t?`8Zp{-yEsxfzd;Qy(^kM9l#Gd6qRMLFwI9lvIT&>(P zJE~$e+3teT`kRtY_qMY%)}`O%r)e~%1zExl(pAVmva?(QIexG9+;m=tz8L_cRe6;_ zMm%)helpz+ji!yis|$h{Zt%--DI&v()13;>C)di$(xIHav#-nCIJN*~kEhF24SL5< z9>!oy(y7eGn#bar(t%O`D8K?ZUd}qH;-KLf!)M`JcXagrtCSb+)}z2WwxTID*F4=Uz2C4?pW|7xXcGq02c<1akg>j2~W}=x{Ri2ljXL+i`VdW|>w?XpPl% zDG7PTyz&Jq75iGi;S-3hcd4#1RMKB@OkF}xRShC354_^6nRnX_n5KXG3jHDgBI^mg zf)GVlF3=vx%6q^23PXFQi@ha(_TfSdH#9bS#o|MswK=QR&lENoa6$bV5}HZR(A1g} z4zLVLvP0tLo5;3-=wVp>2xTivDzCxla%Eoj6#LS>QR$M)L}b6ms-i}Zlx#J zTfhi}@S^s!_GZ_Pm=icw9yP-DVVx8>d0z>o? z-n)+pWMUp&N1YSAFdfrGSvTAo{ zHNW}9pS}=c2I#@Fkh2w~8>#gbAAwFDNxS|_sYW$ReEo7rwyS*zZS z2J_2~L7CUa+v6_Q#Rr5}llFSx6$W=b2GP{oBy2$FM&B^I{k#A^OfD2-b2$Aulh(H7 zJUETkT6T3v$%^ArFZ{M{XmN8zw?IEA;|1iKlaAlc^?#RKttNA`>HS9#i zCN&R6v@t)VDJGHOr}8c)i+CS;+(3LXfwa!)ODR4M(R$Ij4jp_DtCmg4&e@U<2UsY_ zTn{HF=bU}_vV8;|L(;Q4ICgCsiwcqkFjKA6=5b3U^l~uAk)&4x&33Gt1}_n=*J#B= z$dM>^&*zNhG`mF-9crvpL`wyAzr<-MXj)YCPWIZfI)veg$Sv5{<)9c0OaN@?q84xw z1*pQE0-sATe5-D_@@CJTQVm=1v3~s8f|HN*=HbXWPOxmu&gC3Szv5etEnJlcA4qk54noSGMT>`6qj*9u1J$rTswArr2UPC5_ zEp{V=+*S3}D!*Sc5d8_bp1rL_A=rj80(RpGcJWJAak+;TmM{T%)!wCugk*&3kVl%^t%&Tuzlb`q#oHBEp2`xuuvj zg=TJVf4o`B7|KEJocB#wAJCpU`1kvyQ2mWq$NoTVC0J+8E7~CrTg1+%1pM9!I zNbnj{RJ^u=y8Uo|6Fu#Yj8OtW3BGRU5$3$EO%J{SdyESvyU#Xo!*cSwP|EoG_ zj+elmVJw?_j@g*v#6Y1R{VJS}u}v>*b)o#JB8lLDcOS z9M#f}R@P8m;r?W=8)hltr>HEbLYA3Ld*ZHqCmRby8JYDxQcQ;Q&r&F+hh{eG@hPJD zP}7R9zZ1l4`yA;zp%QB@<^5ohdm{>@q{JDLn?WC)Uh&B>?5o+Ty zc0b?>SsHWn_YScxIi82Pk>lm&p_L|G42*VyHDMpUv?o}Ux2JW5pg##27+KS2p`y7l z!c3uBTnI*hq|ob}qBWfeXn??66)?@%6@8lvH*n4fYwCkR&4$imSS3}+7WICO^A^PS z28L3Ca4zioe(nI|VZOB%DWjezCv)z-ooU!?5a$-uSt>Hu1ph^ORRVfBJe@GY8y@Qi zPIviAkfiDK>e$_W^%+)li%V#QhIocO7Ys@>Ujkiiii!h2{DI&2yT{xiPs3R$<74}q zohP4bQ*^3$W{p-_CLEaR=d)59e_cxgtk0^U^<ADk6iImD!f-Fgej+b|Bz%i^*17-f(OjWj{pj1>ZH>G z<^*~6_s8duqN<7`eHq7sQzJ~x@|B|GtWx-jB|byJ`s#&bv`vC{qLvfoxBO!?BpsMG zwbV7Ax#DgUa#-)0Xk8PZ<1Kqcj6p+`XhbP9G&N5bZ1SXc{o^M0$0Qa#FyZ#|Vsm^Q%7zy6~ zZNc6oR<$ErP(8+y!mrHNox>H5)Vf{e`dJw5o|tYwX%oSt*fZKjW5;_!cj~Y6p;Y#o zbihbzu8BpCS;yKF=822}{`3AS5Y5`xlFvPiTVIM9jkApdpWucm-I@3_GT+;e#5 zdsL;X63kCU{3*w1B7{EHiSNza(Lg0@qtKw$*@AQGvS#TaJ2R78aT@_!93#}fu4#L^ zz32GxR6a7-U|tIQ`YH)}M#glY&ThIN@hoN`-%s8}X=k5J4!Kl-e_Svd9`wYaLg}1& z4+4}imh;nrkz~rP>KtT06}W@yQ>?B;eOG*o&P)uS6fdr;+b5O?r*$;6bJC-pS9OS+ zppHKk<5!ikwB3a2C|(DTSxXStYUhbjl4COS-3&xoevyQYkkdQb(YpqAj-c&9--|NlQoM4sW$kq109)S6RbQ3}jR;~rhHo|V@jWHV zeR?2SPTAb*xZv9X2TJj7p?>8bf1BdQezwRperFtKgS(G>tb zDh=BAA-q+~t;yD1>bJYFi2T#dg_CamF;5k|I>{;AdA^1aq83_}DkB>!n)k~ZJDI|^ zt@l8R%SX7V&7!F~t>qbJN-sZ1lE!g$b{H1Xtf9f}Q~el%bsYZo7VB}w^Mn~s%Fv+t z&wE+s8FL){|BQUxuX;_VNIXnfU8AC8c&&^NwS~9eI}$s8jg^JW`YwPUVozZO+?HLq zTgARk1k^R+AYA!-#v=|2Im^0c@8{LztL|fcJ1|iia`cVOD`SKvg)t63v?P`E7iZ zs;{@&01V@7?1@P7WrE5~13etz2}aT=tmjrel)RO_IS!FTwG#hgf@aRzABygesZihv zvfv+vEEwpVVXkE?w|?D5geKQ%^w41T8yTG65+pr?8m>$A<#?+)1jWfz^w;VR4<ZR}8d_3SdQ?OKHxTj5_3B4Q8pd&wpp6xmS|bZ*dO8 zYv7fXKe$IPm%!jj9iTyq-U6?*>tf;tYBsB_VKE|D(i%$zHI+tg?fKX%8~g(U>a5qp zQXt;@{1_6a(vF`KDJ*98IB^>%TfzCZxyGZ0qb53s?$IIz#}PxaXA=Q|k!gxq%gkYa zZrY1x>RSp<)5BhuVM13t`E~&!7t$ZAO%-=Z`iXw&sfz-TP_-2J`u4KORWU}Vd4zsF*S9ch`he9j#|{W&iVP75+kgXa-*+g zOoBTS2#eM0Lk%mO#q5vA0(^On@V|j~OP-NqD!=B-a1F{-N|lM$h_NZz4UJCg-~&te zU!+k13MKrvmh!@~n06ldMf_GCMhD2NqX#J(bd6ZhfgFlHpVw>Cj zP&69TTwe)_rT_p07y+M<)Q|sZ0!Po6KPQj_GZ_fLHyGDhJ+ReAO&Po>e`;Hs59p;p z1`}001cwFBU{LO}1JN|gRlR0^W#R~ckTR``nCG4sjOtN1S0D+|9OJ>XfrODra?&I} zUYKuXBprNmd|lqa#;@})v#h^_5Cjd12a$fv*e^L%!c52PPQ!PVrQ+-as=8k#2l@9? zJFING+8a@x$3u(IZbRsi5bdwsD>fQ`AmHjkdUAtb?@th$b}@*gIW{7ZQ>djkRd;-K z0XxtkSNwtza?{In0ExtV!akgw(%vJz&Zz6uTMoGRbNvI8?BD!>aK>@G4#fY)Fp61>YMtKQ*Hd1BvPw1%C z;W;2-nfPD)l0pFS_5Z@kYo~#q#@c+Nab`G};UKm`r2=czm%~AtFL%0sWs37tI(VoO zl&q9tR*}xkJLZxO2%7Qlu0u*8t&R)xV6Z~oKYgdL8lu_`kSJHQKm2y55Z$*TvuyZj zG+Xs4C}NVXWE(uj?aj;w^dd(xJ&|=izGHcmY?M1gG&C-!(V$2>Zw% z*vUn)z1Y#D8Q_Wk56rXY4byxjv>upV85Vv4yTNub-Jf_`thAt$G3n0;5U@s-=@TFR zos$K5EUH_hmY6lq;vN|U`G7U=!kLx&%od0hDU%TY7biUH0snusiKi2CJLn78^~Y1_ zfPTV~wWE(yre5}NY~aA-V-Vy&m(d?!sLL$?ECyDC)}o>5cA+X*3J_(P|;7__o)p;BLQ2%xfFD69)E@|K^ZW zSlJ}yFDvUEsrl2GH{W)-l5rgRx4TuU&-)7q;V4YuF`A9NhOf;4jksmN)|E#P5Q+)b@)97JQ?UW zWlZH?wgPJiIc&J$<1d(RhD$C1V0I`CK4lvzWAjWgv7UD;1&8 z97mRKRwk{a*Z+CiS_vMZl8BX>C-C{Kb&Mrv6*U~z!BKr{=X55KMvrreuN>VBctPao zjf8p(zG{w+qUpH9W>siS&l_p07ytkcOF^5Mm%<4g22cXCg<^c%*`||{? z$U;B@cPYN(Y<`RLqlZ8Z$h48`l{+_P2H1vM=}J|cs;}Go6YMo`COr!3CT%H2gyGWP z6yTj9ip=k^5C3ygKiX5eQbw!dkC*2`9!lwMJhurSopPNjh_ZEzwO_mhs2&LXcO$9&TKj zEF7IPooH-PFUHj;H?bUTvKxscVT=4Fei1ezpLe!swmYrTVp)kY0#Skqyuu**q6#F% z6&3=9KfJhm#sscShk}#;!=z1s`Jr)Dq93b-7jdvR7p$&PJHYh3ZRTRNQ)f!#K#V~q zZjYABw2^@$$Hfiut()Pzmk?>V9y!+AsORxOY^OyH!%PoIi@+Z`JorDf-S2M#ZOxzX= zMXqSpF7=?P(hn&#$|L?xJ*z+LbYg|kMx#bml zEP)fctgGx1foqLXM;vB%_7wYGu{D{);$yklwUr`eeigbP;>9D&*WnmrH85sBF}U@$ z%xxU-we3I848tqEH8)$2SNqIZkf@)9p(0h8+;_(oj&dHmKa!WhI~YJ=YEfE)#GsYy z5x+p6WM;aan+HIu=RzaMTE94_&0Yen09GZ3pj#AghZ4K8zWDgRE6sAMZVyE3qzTH^ zo&1Ujv_q4^pi7$RQFmW=c%Bx<2!U+-nUs}IHPgm0aULksM zA+G;KzEe#JhhlN>o-3)cZaGkJAoa3-c%ON?3_me;Ji$#x!fw>gcY+DAp|*TC?+mbxEOQXmcns&Ayd==lPv}FGF5OO#I8hGk6Lclp?J3DS8zC>^ z;ZKWYu>wO0mS+ZF-arSFkc`sxBr$bDve!<>eCky_xl79Vn;SJ3I0eljzO3OpjYCn( zZJm}8aWjz|fmc$C%~lm0<}N1md{iciw(?1!<+rdwDTC%cM8|-uM&jc^IJm9~%JEy-MY-*v6G>K0 zqBG&qHW{3V2Byjop-I0ku#_H&>;K)wDkH*^0!cVNtMA8 z%h#z=ca&6j(s6pic4BrlY^E;U1}08;AbH3X&<}-bYC_9lbj3%(^=zb?4mZ_)NGGB( z=eEHc4jVl%LV+}WOC>JFY~K*eF>2`1sXXBSZD`}B1QjR4!kv7_(aQdJp#D1U?CAOV zNBg`QboHeYjafJIp_)u7TAyYi~drU_C_UV!@G4 z#5JaG%ZmnX;Bsg5|418(yR{Ih9#J!NvQ#Z_QhgU=IbNC{&CUL?=X~&_F57LY7CusRAc)cfC4<#Z4=UW?kOVt zMPmTeMC>FTpOLO~tj@y+l`Sf*SS=Qz@tcsF5oD3gprn82jq!=e*}2f z0ESM5vN(x8=m7k#WwTa8TgK%_Aet7&Op;V^S^VD}Bf}TpF!GSa-ZD_lx7A zGZ@K*!WotDioB?H&f~Ol2SO6xnZ`ilv#0i34SD1+`!R7P5qP{)cz`n5b6-gE{i14% z_!&D|$nJnDlA;RM z&|v<-T2XsiL?WqyQL`?Ub^f^tR>U<(iZIMt64YaPI2fNj%5tI4*2#*VK3hs|r|DhO^Hv2*VKc#*^|Z=4#s**YT>p)V)(`LA^p18} zG!M?VMBLbJ&VDd3@wNbGe%!m3f(S==GG!FDVKx&v@Y+71E2|K4G_otg(At^idJdW@ zNqz|A09$e~>;-h^H9d>sg}qR`iNphdKrrru%yJK)XBE7?CT`7u>kM%cE753Y_*Q3; zIRGy&Y!ar3P{s)RX~X35@Xpe6sBIt=MMK9tj%q7XzjONTd^D9PQk}$^{Bdbmeo-2r zFnINS%r7)(=-_gp406x0MrLey>7!?6GIdyO;P-(}S?C^E{Bl1pHYEZsyQBN)ERx*R zf6^n}7tOe(R_pnvce;vy63uqcMJgt*$t_-)mpmL?o ze4TEkI8#F!IIh30ovu89FRNkquBKxL$Y>dRRj);g+;Hu%yaZ>-`_2L!v-DT~YVc7O zPV#)@L82J*TFbSB0kuKpRdCv)ib zih6R6J)?-JpH|W0f~gwtHzGtfrQXMdOb`4FwMTM}SI>Wq9monuCUJG+CYNw!Y4$qU z`Eoz?ZNr`0K3+&g{wF7q2fes4-d9NzByKPzEqgw#s+-utjmn>DQBaNQ1UDqGXf&+D z?Sea4@F9zh((18DKy9_w4m|7p{YA zp-V_iYkHKD!tYbhX)7YqLfE}Cv_IM=5b)n^IG|U6s8G4=q)ucVGraKvnuN92g0%si zp7()FXy^mGe~Qhp3xKft#fm!!6zG1$v=rPZt^XvrS&bc@e5m0`Ijx;y&}AOpBX)5U zr4Qjchs9o@P1TbBgM*#<6&O+#$8G3mr(h?(tZ{mdkRrUqaIgP(0)|;ei&JqZyyvgj z$VLbba#C3TA`t5;kjo*5A9p8z=)0qxvq|jC1R;hQ=B~%E4xlJazG@_9H*4=$EFC?G z_sF`;6Ut#3lWJ+NbM{JGhy3)DqDYdrN-vqSe~*BC})2o@H`Y?m4F?6|<0|tC+r-!j0V8YZNSqJf7PRURo zv#k~PwCjmG&4Y`PbiXMBmOu^IO=H|0%oe6`S|Fqh>p-8fMl$@;xx*pYIV(O%w=jT` z;-NeMdq9N09hWy52ivlI^;_fomv7hIIv}L#3M58hp?tiWshoKb%fzw1_b#wZfY)h| zsM(NDqKNp*+sdy$iN!-?Ts;%&BKQ~Z_z7HPR*dZS_)9QfT5I$u9hn!%V!G5@>r`tM zJ;n#i+=98c7ith7B2gp8HInz)Q?8+7LtvZP^sq!Q?5> zdbX~H0#7x$LUYxItAb8@V*j0*3gtY8$w98_8cy4R!g93%Xh~6Ex`)u$`Xaa3SK*93 zk%%d^p`obFS=x9x#yflc?xM%i2LdpvOytZn;=4N%v()6i_o5;|RHeo#3aFb2Gp90( zO;ywCn5M>yPD$|X<19M<U@hct9DwdxF$RR@x0=H*y@3ADOSTDTfP(aK>z>* zHvylt)Q|sOm!Kth#Q5(FZs-6m0c@2N0@uUfg);QPxax8*6$VMMQJ5=9!xt>uz?5@} z+Fc9C=^uFfYmr05!=@d_s`|pWgfDdH9%%Vh$}8H)>M3_5W}{ultdbjLvJ`zUd?3h_ zH}zn9Pj(?}a{jI#ekRGa^8(u*8d6PT4oP-);VWaUu(?T=@L13j%TZG3Y6mTZzqrw& zjZe~EfLFV%)(x}@ZY-!vojo9^PtdtKgo340Q1i+#wT|jBXXJ4Y(3Vrd)!D7URod4O z61wR-W^XAzCN<1u*!d;)u+B(6l_+lkjT+!Az0~OtR-O13D5n+L2A%9a(DY0Y(g|lZ z7Q7rCB08EGC4p^%FsW_p+?~*U9+YCQ%Za4+ZfH8L%{W+#wC;vR zK4g;60rp?vLxmucN!cm<@FK7dyVj8iJ|qd?Gh7c8M5m!kUM)7Dr1#E$g8F%zP5wms zVARXOF97BcN`g^XaE%1j8%_Clbm-LBdbNo9V`yVHyHkx%^fW4L1z>7_9szt3)F~3; zh{!TbF_PkRCX8n@pDY)@1x2AY5z)EG@4q3T@2J)T0LvEY;yl>!|iIN^cZ6Bj%RV{T0&2UX*A@eC{qtEdVTm^|!v zMll5PP5z!_|B)}dO#<4Jwc>*=@ws}xa>$afM=x7LNvA&Dgzu`8?x|}pKob(}kf;j8 z1~6xDIpO3(b@J`R<^e)!^vCZIooozfN%O^DZu)g3 z?{G$CD9_aml(HL_ME+cd(m*d1yh{i*N_yDaKyBy?Xy=I`h%vq!AfZLCy>W8!X_us5 z7T?rQSJrVd@=l0lltF+E6Ye0}jV%54*bJjDoxn_3r4MxUdXht{5w;`XhqKId>ViW# zI#?XMJ@-;#VT#Yrto3`t#J1R4VGR%($08whe2Pu`0C^na8UYdiT60zWd>ed$CcP77)t-rd=e zUvf?vIDKG|Cl?0K4pAfK$SA1|sJk~Ruw314b4y{}6A!+-M4xDHIT7dqyj+fNr;STG%(?g@&fI+0Ajq_;>k@FiP}C`+r0p)l+E@lWfI z%kKWO-k-_s+JZ<^zoiTFOkIC<-Vb}Z#58DFl`X4h{w8JPd4?RBr;paWiC4xe?lBlP zdbW&ykHhkr^-iGKYCJhIg(E771FI%SYr3N}$$J1-ItX8BawAOf^hHy}p_Kg5GXnuN zk`)UE$$zTG+DN|0r>lL1Q)`ca`a+)fG}J|hYf5n;*y@SA-?{SS+khA!Zr~~J7;^7@ zuX8(AbxOE5XwLln{|F*Ss#|_A7KoE~^)dCb9W6w(LP->mZ?c$0zTI$RZxq{laMty;TzPvkESv0jf= z(qK0ee-tcBX-b+RI2U*ZLwxBxZKudeKZN<$_-T-oO8N%%ta1@RMBlwaP_FpE6uO|? zHGpxhi!XD)ObcgnkArgrCkF{-I!7#-kXm0;&2KZ}0#R2lqwNwd(bve4EItAr+Hu`k zb7G#BEi)DSn1jxQuAK9!4+XC?xM9Ib*EzK150 zrLMr%=lcEOW`!Yl+b^){;-05|58`^i5VDM(XCeXLtDRmAc$RQX^BEDlVW6o660!5J#P;64BMM;*N4*AaHf#ltta{CtX^ zt8!VMXeOb*Jb;16(P%$zf1(phPR(g2eB6CXI7=E^Cf(8GS8=b?z+(wC~&z(DYTRYZJUH2^>TJ2 zRQSR5bXN=7gL`~%3i>_5BrdHi?(G9jmEHyzhtR%s5cn+Ol%|c8z(E_$oj{{At6-(O zKihKv7KidY=JD^gW_l|DCQgSpXpM)*I@ANg<3T~t7o9rJC;G8JzJFkee$^B?RkRn{ zp}G7(4^v=%H^WT#pO5(|@}youP25!w>e$<-+TO$(kTB}vVhkH)^;*;fs_#PfQo1Sc zJu%TfOZsOE{Dynqz6Eyo%XvFYy_88rc?j}vkd<|XjF6-tr<2&FGz&Hu0Io`cSQA{do=wk_6_lLV0@ z8BV-b5)%$4Ik0$NB(+BXYsCS$`fU!>Bqe{lLOBj_h&yR*na_Y}W+i#}3kPWYVthcY zPyhfA7(tu9m%AbPLm&%X_C93E}wQVekT~T(mq-EU$?qqeQH!>4Whs-N4M`E)hI;7U4jk0(0YI zNQrjDYYY9gU02b_K_$+qU(71s(ix>NR^r0RYz+ue9+K$E53Lu~HH@PHf!0I+Nk_0^Z&SS%Z+9*YRje4d9;3W)oJ4D^JMklHxlfo z*GBEPq$(_POmT#pGJj)6h1cVlY(=%teK4oB#Is|0NTK`m<`7e~iz*E*k}J0J?Dg+N z>T>vOWGhKOWR;b-fF>M~kqw^;{IKaSgrUb*;liv~J)W1}(8vdr?a^i3ZN#zGAe&15 z1ErYNgmjLQyf~;)IRVd}BHFFzHE45UnaypK4I|V-BTVHEYq5pkq83YQZ!nNqpDw(G zV(4#%o7NF^Bf$E2VS`hhfH^a!MU;)c}T`L}yRzetB={#s?P7G}r##eMUB6REfJ|5&VO zT4j*{j`^BXpHRG~UNhNj*eeV*-KIt823pWmDc4CMy| zB7#J1!}lE@$MVpUDn>WO8~CNm%s?1V}0 z!hm-f+$vyx00nJ!<_Rn*iI;}ajx}0GB6IeYSfQ|}$pwhRZ$fpvzURb3-ueK>ZZSx7 zjnyJ^=mKwh#PHIV)cW-4F&BOP8}(RhJ3GD2Dc~_e@0X;uV^2c$FUELu+*~ERd|^}l z6NfX<%=M!-=|5#rYo+16O+Dr^Jvn0?-%wO?;fOkMmS=(1FeA&NYTt`qtyQ3My_?OA zyRe~2`3a;p>okf9C~xxO<*XTSIHJ+x-j1ejpC-}o4|OhF`-T*>KyrHl=CoKViHVK1 z#T_@0gy|V&2gqM7HIcEw^=U39pX(`I&;ay}{b+ioW)b8yhqc@~RBDG|1xw15V0^oY zlRlvB)D-1MA2w|ZvQi2b&?+)e&A2X0n|Se{xW3m4brz=i$o(9?g4D(27E)_L0JX7G zh&;A{4V(=2t5o95cXu$J(dTMMXP2;gYtBmh1mT8~teSy8ho5*TPESw2Oocn4U-Vz^ zLB%Tf1AmTYwEr~YssF{;*BV#^lWe3GGWg_oZ~XK28LC~zpBu8)as4G;gC*P82@Ekj z6T*tyR{dDbLcOMsx-QT%U0^JB_+-2Y*JBA~Rq+UIY=*Q7=Bbax9C&Y6i_TOPF3?!O zK1SJ8qW5_iFC+OobBWO*-6wO;UZI8|Ic8$7i2N$ z6MB3TqfPcR4dKAy*0yKd$oq&dx@xZ(DsrHMeJk+toEgjiGtz_SULHH3dyXoiczakR z)1lQG<5GY}9!NJ&V8vOHQJAMT)QvTXpdyu>eiZd8jj|?zqmGm^8g@04MYLmi*xUM? zBHCI{G+k~(-Bp<&JsQeXLc4znvwUMOX>pZA>~0(jKiN&N^CwH|fL&qC5i5W-79n`5 zA@ZOI;Tbw5Y%@3z2PK^YXNrq}tGrAs0PcJUgc_gW8TU%bEqwj|9yh^Zp#uW+Twk=# zJ%u&D)dyTjvce1C!WMh9EuWT_V<;23wIN8Z^^{9cA7llg7{ILAf)VH|GmRWr&F0Fr zT(!#>4Ky`RRtYUMn|um*cRBwH|QRpTeLVO6b=+#XwbsH19v z59oUIEiYSO5Rq5jO|EGXPub#|yYl1gOZLdg?oL)=KfKspF~PrZKfUCK<=;@?xCS^ywPsh{%p&~O!Fc6RBP;X~K$T_=%dJj=*s}IIafDpqZgItzp!Z;IK8rew3lTEa(So=lZ8jRFii-sD3YPNQHQc zUNcGJlKHN1cWd%x3ormGDXZhy_PxM{?RqW zk#~2~@V3(%+@zj*aHE=3(vO&cpKSRTTrm|!Ah%0P$zGkfWe#gJ@DNYRQ`Lr5pQHs3 z9kA9nLb~#wY$HuV?GVB~hn1={B#Q^9oxlWs*B^_kz&a4F{94Fc7_P8S#3qy~>$>|# z86FoNvrZIQ3?Gjsa}>#nJuh6QkR6<4;E2t?A`f5KtM^_;Hr=s!5>(^4M9MtWQ#-hi zY@DuHdjPoz{>?NnW0*aKUR{piD4p?tw^V-8btrfT>Z1hsHIZ??<=%VF%B%N2eclG! zmI2;2ZQ|tWZf9kwNV)meI+ZDcoCaFur5ezJVdoo&g#m6@iM>O@SAfO!o@OAy;LXB3 z&)i+;buN;vhneu=H-JSL(YsjgM?* z^Gsxb{x#ukyG2|qO#94=Soat#+(xjjQXL5D?dp7p#%`(9IME~-V$%E z%viOfTg1o-R05m7S&oeTe-f{$O_E{BD2adnjR&Kms-Vma#97(>X#A|ozNR8slmdXk zkI%U=eW00R^ahAQi~n@b(MShppo=5i^0ymzQ^}zu!dObR;4x_)o78o0L80+$|8Jd2 z6N^dfG-zey?#N?|S-E(B5~)f{gwC_Ku9FzKYVp;;01DhQ)Ls3r z?^+qfln~4Y4EMGf=|%dXksoJ@DWyVuEJ)Vi(Ybfm0|&p1ytx9&W;&5MCx;W1nT@OS zH}B2DZn|{KQ`G$NIK*T_n@OMh&>Zjt#9`rn1~)kJn#+LWA9E?G1sKIOLk-yo{`F&D zfGWTE6oFZ~wE!-ai&S1GH2`+^wqHQOL_$M5DfY_ZjyVbJ1gu1y$66d$_`S{S!J8*V zOTzHEwoPFvwT2*kBiMSZ9)z!zU6aROva>|Xj;Xy-e^1)goeF2kh+MlYH&HT4+{G=Sab-R3bRb? z3KBt`xAla01}QjfHbeQ~s#@teMR$@}R`Zq8!O!baKo5?)E@DPUVK4Wt;Mtn(ay?cMmx993vOa5^MKy%tniqT`6O(zSwII{) z$|@9QBs9NGo(DPhY~w0SX~>YU;9wn}kp~mRH>J$QQvJ8#VUXYALc{pSya95huzgEF z2cAExX_u3rYLyjPZ3^vs*gyDu9%>KX11=dEChkYS zZM$)$QC$5hMagZZY@d-hDGV-%JjxUR0#&rRdoTTNUZ|pe2Jc<+Pae} z0|Xh=5a@bx!zksZtSCq<7`DyfbnL&Ge2mPPlzipGH~j;@i<~c(o}(h%FsmGNaB36G zxQ4}juT~H*p4Rw%-2pky0Ffj1grJ+x1sU;sJ}De%cb@RJEyyjm8Bg{li6Q5VF8(*y z79y!Gb`*aj(WSDG6+A8&eIt!~G3n`nJ0?ca_y#tfdJ-Iy%b|W)VS2Ms=SL_pz_?~Y z_;f*;_8p}cKC5mtZG1BjL?VW-W!9V zCfj5LG>_ja7b`YXEbw!Z3@cU-5eQDQY54Z^R(~M3v>uYq=&8cZvZII29qKxT2wKM& z9yf1Lb)j^9YI5#(TmwH^Wr~J^vJyRe2JJjawZi`9NpVqG~pC$uJR@3n2mUx;`3t5sX8KcF|*vBowLkOSA01F91R1|u!L z#&6=m#Qk3$sC>rwp3ciLa=UILzpZaz`gd?P#D$`BV8Fn`#p8af*Vt_yh#njImWv^8 z8LN^Ar@b6Lx9Q}o9}0t~CN}b_$k=)K|sa;KCYZb-6c((%M{B;2#wtU_1lmO3w)3hz%UQaxLjv*yW-ap zf}li!_=qzsnD4uKYWi6RVHb62paOV@&)mH#awMG(=9avlkyj1dV9@Ql?OY_LPU)H8 z-qjE?t}n&wKLMz;K1Xp`P?VI?b}RImD2!#2IE}JX!3MMK1S5zp<2vSw>Htwuo0ys# zTdW5Sry#R9nd^)9h5qRe)ZsYb-MowWQ$ml__!8_qqZw1798#qPr&LupbZ|Z=WA9!{ zy<|$3!wVVzfCJbI>&!k4wNTR!!J%>f~{3MeTy}Eqixf{_=C(B4PA3%eedaGpSEBR5U$%8T=m|-m2l)k zbxn?46Y;5$-?8y)S+}iYX}#^J)CSk7Tg}!$;nm@;43KR~TkZG~dNFFipXmlbD54{$ zt1lL=oLH{2&pC~@MrYn8DPgUR7i_;PDFi1)PD0X>f%yIrjQA4RR(Ck&XBBBMx@xz* z6_nfbv{gEGg?tR2`OjR3#N7w@W>bYM?jhvEqHomE( zc;@&ZmL8R)mPn`ivt$u?B9Q`dg32=Yyvv`P_nb9SEbl2?Upn#~a>g1aIzZ1ri^)sQ zM-y=Pm9Lk?BT#1&2=o1-=ZXS?Dn+3i!*lt#2a6}*O%;yMuShQa`LN+iPz?{i2hbK3 z{*?Ki%~by>(L86aO<>z(?72U6PvhC3bIdLGQ7%yrmG0n}Ylyc&@$Sn@i~tZtxH%^b z?dDhVHW5s2x%TGf{@>iQKSSJU+*np(Id)UPoa+D=exBoGZN?n_ zk%}^Mi;ZYzs5SC3?*$`i_>?GoaCORMXh$dL^1U~42%hr#O-6zdv+DJRZkcER?3=Rq zjVDPy#MA_IfRBVlSBQekIm-KaB5YX6#+=lu`D*|2w{EWngo+LgnZHb+jTI@>A8ao17LZet|y4{Fp+Xer65h3Kry< z!gjCXt>Lv?r3k0XGZciU3;(vyu0BZb(etbMpPPY`>9xaWTb#Py5wTeoIs@(gNcYyl)jjc>xEgtAxgDgw|NpRKDi6#s|oHnG`IQ zXPh*=&AFOoh^~Sr|D#PwNp$<${oIEzYXbEPwVt9)a$~jXY{W$j`$I?#wCfFAVSl&i zf2k&yXH6G7k(kGzbtC)UzL$&sKS*%9#j8q=>asnUILuv6-V1B1M8FBKgZf66=Zd~| znn0beN3ma!gYy8m*uMtX6sT%aQ=YRHhl86Z?4aw70m}Vg(0GD|URdM{GGyE`fVVE_ zcD&U!Yd#;^^aTtkQxl(%C0}^d#>cBqTOs{~LoTK$8JNvrF#aNN`sliONRRb%@)Vsw zI9`aOY_};aka^Tda+q{Y$~OF9$^FZG^`t5Yq)f$)QYw6SiV(X#;k57l=(0DaR9c?E z8X~Un0|8{|2+VAF_r!CjiL8rtZ7q!Yiim?Znus`ht-XXmwuZW{h#gB~|EMT(iFHeE z;W-~>B)r~U70~t2Ne8cqecJ1e;*b^4lCtS!(Jaw`cP%*|m_(K7pLdN+SAPQeE;Aouw^LI3m~&JN9cZd>z$7!hQRxEGiH?i@X>U?Th_*Mh#o zMpxOC0%oH4PXTOC>kWFRC;aJxp^5!YDhr@w-+TFM&msfb zfQvBR%vK~8-N1uPxEQU>E^#v%?;c&Abg>7JVuLXNKgjPSzmxZFy$&@7?U*e-z{?b| zW|dLvI1;&F$+c}kn0u`SA8)fAh4S$TL-IGaYG6vU@$A4`A$9lrJ0PHRIwi8PPBlf-|n(_xQw)n?3gStX}1l5Af&`uIR%1@4#}?;6K|E9i%hiuTcDOKf`{bHD19Fsr?*8cna$;5YoY$ zTZ7S$BPXEi4YHg?Y4-Cwm4#Xw0@%mg6nHBVuWtwq1-8uS*#wD5QQhyyuh#Kz;<8}q zLWB9h1$3a(r)ph%T}?4=;gqv(iG$=P1{u+9%sE5CoxCGymwbt+jRc|Bl0-%?kN=KKMaT$wr(HKFN>4dv1@kF-~s|yz=+c0w?f>!ClFtdHjtG9Q1RjO4Z;$N0m`6J)So zh8W0NM7)#?XV2WSY_iPala%<)PVj<9FF34ESsugN9sApjY?nsKn_Rd%slr|fF{l(@ z@W~k&?)&uBZ;g4I@nzBLsAbBbtZ&Uh(^xX}!5PofAP^-H*V|7s#Fr2m-!fg0>!YEZ0V}eFx&# zs`Tp{kzeYU`6v9C8L=dn@hGq$(5sz9IiEFjk3}@GxkH;Jo6yH`UcGW(fv%4MTPcsChZ(9k*t+Ak^56XJHS< z6#FtshbMj9Mi_aBL2db>itk?6lrutujWkPTlpALhyCN(@7}(JNG4Ni01$ux5O>$Hf z>%O+grmkSlFGGkIZ4%YJ-7)fLa4Lxs3sX|`l-knno+j!uRY`PH_NO)7nUjAX#k@^a z50|fOWoFK5A!WZj(18domF2nkZJ*%?r#iHCjxUX0J9a1Co&9Ocz~JOJ@G?+}pL@o$ z0e)|;2I6doH7^2`shPePW`tixEa3Zcod#m|wy@5nM{12mYZz-a-Wr+xEd3sq0Jg~G zJqfbt1@&mJXFM$tExN96SwuMGquu&ywk4$ExY5Wds^#%C%g`Rhyx{$fAU|cI;YQ%o zqRMMfzpD_ZBt{g*p`!ek(Qw5Z?Ualn@FzLv=y5QI4u{W6+o1t|2v3-sEEo&7&hdha z8HhX&YPTdi-D=aD=-BuPC2fSt@_Rnb`i5|}c9qMh&u7R3Aq0a%Nd#Il;7>Y0#jz7l z*UXA@;Yih=m7HhjA4WIjg{ZYgYTftLf5RQ>q1oq~%Ll%lV&vC1R5${20~UX|_CZdJ zv9_6n7g5!0Nw3k+kEJrDyi{5R3}QvG&&aS+)Q7TWxL+p8-!FGYH6F(_@PJe4>5)0W zT{WnWCeX^L6BdL0?hcP`kDqa@;rDHw)H7GQiN+K>`8$;p!9S5W-$4lfHK^pm!jpIa zImLj@QPCsV>}}8dGLl4*CP`Jo@kqvbkho`>W#O(xdXkJ@;l>8?iGQs3pF3Bt6S#U1 zCc(k+kbWCa!&AiaTrfG!*Rp+Rqy+0-MF`{It4WCnfY`{qG>J2@WggLbu1dJ_fTHaW z6+yhPAY$+!-?$&UVuUCL+Fr~@8b?GwktWO$3Frsx%QE+9zU_;UGRHuL8F~n{_kL;G z1e6#=8m9A*X=!j+Wr=oN5W{KcBCMVl%)paNfJiG{GXigIgP8upHN~rk9V*Koj@-J5 zD1!N(A%7c&Pw_7>+F+HQrb@bL)uwq`O{t>0XDO_hB#e(X3j9-!(g&ePgf>St5uIKC zirXZ^I8;OkFEz>+Rd(L^32s=O^bJu+YR`;UMfg4v{i>0Pl2Udc-WOUm`w~kk?ow^o{wX>JJU%dXw~jE ze$z2*kvus}F_Fi0hN5}y`@sb_@WjK3fio^x?3DkZF;-0V0hJ|;z>}@|#{6MF!**wm zB*eSdqhQ<(1N6=CH_TP555kIDAfIz5qzsH}kglBoT*TSL4V6r-b$ItHOsJb4+mF{> zXi2iEe0zTsiS1C;uK4j_P}BHv)3C}I>y4ooaa-%UO$i`Ae9p@K@TU{fcl-2miHOHF z1lw*2*a53%3cGe1d?^iG9NqR6Y4%TyQ3|6ZC08+;<|i>sw*DS zszmf-@lfSO(aeeq17Ut*C8s%GH1~RjMbK^3A=2ST&Vu@iK{c1NqEK)z=bgrl zt*&XCfIpQLo_WwK(uq63bdP^f#0ajX_7;-NQmOME&I%7cytdzha0n66T*?()y_jMg zNiz%X9*>mlr}h#7HTKIZ^XV`^XXc;Kzc|vr4tI7KYrFQ6nr1%U-)Vm^98M zjE8u9467GCwziYpbXtanirjE88oZ|H1vp0rUh+qM!qqq|B?dw{Swc2C&U~D*od4cB z*dc@aGOcb#<-tfBr{5rs&{3BxnpF+W9+*UBh9>OxgN}xJ4AN7?J$}rS)o$?|ze?@N zb4>ka!KPBP2R@Li%s^VGOlox`KeaO2k220QV#mil^S~P&X*B!ZAVjYmD^%8yn00dG2pWxJw|54xZsx6F+yX=?7 zl;-!&JvBg`kDj20y~boYHr0UDa|E_)w}c-lj~P!>@&lZ)J_PBa$!7cDkQY*^8w9NP zv-Y~s>_PJ|2*0J?rn(NqAq50MehyBL)gdAWj*G0~G-En?CPh(|pxniT@8p@!W%iu_ zpaHjV#g90w%Sqj4J+2|zJsVcW(V2B&^d4%|YMGH$G23qdUdqp9;$J1sm&YX_>(RFMHYgZvVZh(0W=+ zd-FAbd{Z4JL??_Dln*(jdV=fH^%5E_#aMgcs7fYg@2G~S^;!77Ma7K)m+E9HT;9j6 z!@U9EPMA5RK9bkye$s|vLGd#s#NLCMQol2Dg5PQvje^?xo1E}Ho8M^&V2J?k|Hml3 zA;3@lG;VfUDKypsl8Inv%TfiFb?eFO#0;}5bIHOgx)TmOGeb@0j_0CMOOb8k{t-8t z?9GBkb%5KGX94;&MlUDEpTmH1emXX$Exlco15Z+iyjUds&Q9M`Q8@9lkVi<&XAYc2687_Cvob0@~wUzpo3tAYKhY~*F)K!gy}SnrQB~E5FXHC z(mC#-OOkjUFjC1I=P?kOXgf7`h)dRln!b$D*M~yR^Gir?h zs?j1HWIh(_LpZe8W|0}(k3C^C>6cf&7nUV=$(C+N(~_3iWr1mX+S-ijdG5|qi5Q-~ zkxr1+M{jl1aTXT64EdN6A)8DRVL+J;q_xt3MB`NPpG*o2T%Vm+E@y`9+v{_%tvDI^ zdzZ1}P3772BVTG`RR}QT$0ZONVb+_yenpVpNHSm-wyg&Mfa);X)9)5n&~0-H`x9UU zZL)i14Gl}M>os0YR{FCLJD*QdefJ8{t7<)7M`#kOjT;6QIqtHM1o+0|t5DUuqBj{f zY2aiTp+gN-(s)`V)SI4vDxLd8pXs>WN!!b+bttR8c6>c+bV$cq-xL`J?V;CF< zz}-KZzoeykXz%H}_!5{4vmo?vr8a2KFl7v}2U?7@NlcM9{JVkSt0er3bs2K#U?B>W z{hktpP^C*TmpL0bx++$PNoi|Z?}!7t=2~6dtWjZ zTR6wgegXu6D}l?ZAcL4WndDoH<+C8GJ{?T@aG<^})&0Z@Vtz0_4IbrRqW*zl1iGlm z9Nea~p&S5e!Nb14f~R1Ir#IMRqwtI=+MTKEY*T&}+EgxQL(zFm}$j*UTV9U>z^K0i^9567iRJ3(& zk*e=fdaUNBsIf6l#AG_|D@w6PB>@I$3rPSS|5tGLCxEm#r5DAR^xk<6s66dIWzR;q z*#Y2eTMcO##(iBkzdijqP7K14hI~b(2BDFK!nsm*9_LYN8zccQU2Wqke2qU+{Z-t) zhp(!BC`|ZKR~P?tJlv!dtyZ(K4E8Q4T=#r+5jhReFLW#?49PaDSAk@AYy*WOHeLi% zo9Z)Z@qZx-kN^Asv;jS2q%vG6q9B+utEY7w)B!0hi)jUgd_*^F%ti(bcyE*D-H+ml z-f&nsHMAN2Ji6NJdBs}?P61~j?h9Nkf~CL$@f+5~(!qVDG0;G5t@3Fl3|7$A{S3Sg zd5yrJgsT2EzK_8^;_3y^vf4L_w&-~P)4cOe@8B3_;;+}ERg3{vxhc>(J5?iSY_A(K z)p$*T>8@e#3#9pg^xqEAk%}HIft`(fHg*^?G1ku468;JmiHi#<<_{C5{3&>)gB-3` zLXL<-L#gFgW862O7H^^p2po^vZUxqc7($@Oahh4nG66%*OxS>S5jULcgaW-Qt{I&0 z&DHUzpJL$E*yg5nFrK|yu9=phX2N@qHIp9q`vQxFE$nx91slQh)WJ^d(uFj%eU>fc zft#gmV0MtarwC-xW@i~s-sumL}6p}AQoQ&I$6cI*ne zHBdpQ=nn~L!^e}T5%>(837C4@i+Q)2b#~N`Sg7~*!V=6XY1>-cZus8ll)ZI$v%jxedygepY!=K&`Co@?;6+F+UCoF3U$e7jivcl9&%*v3`D7}c?|HHd z5HGt4Ec?s0;eblF}epP!^kdq2UC`z~yIIq6KtR3P+FGe;CAY zinCS^6=0oeof;lT3O?_nr(2NQ7{%hFT6bZ1`*^!~0Gl;+Dq`3urLb^(EMQkthPiZr zB*fbQYU6S&0YZ|5g%rt449DZ6q)eV3;@ZH(J`3k{ChE+ zGlu!R?yZrXS1+*9n(^yiC%^f8tLjg)kyF|}0zj}T^4y8^`M!Kk*+}64iNw>LcYJ(r z?nX}DwslFpgonyjuC|ei2;voJiL#e397a+J1yL~1S4tC%69bE-b)Nf|04Z9!?;;5! za+&}Pm0SQkAqtQG|Nra(KWtLM5HJ-P2-FGX^F{Ykt`H_@7CNvXv?1H2@4oo%ZSOd& zgAmQTyO=Fl56Wu8ZY|>rk%|Vz9{F6KWA(OQ4RFe9_(=r{{hO2`4^XQkEWLV*vS5f( zGmkAAQ)ixQ^T|7)5tb7<$!nWVyh$PyYtH4VekaU&#aRq)8PR54&Zc2iJ7z+fUa;f! zb>pW!(=RS`D7&5BCG*-rbQ+=F9{=^5a50SH9VR@)K!-E$jyu!=Y5zqk_cM}=t z-Aj)i-&ZZf)-Z#&JsZ0KsKGI_b*k+6V+)MjZUCce)!y)#g?xHTy;+E?>zjwW z=j!QCO@yC&NE#pw0ThAU^Z2K|he7bLh*s@wd z0KK?-^mSb)fA{;?4FPS`E@j&}j|ZV(MENKDGy%m}5&(%!;G0QaQujV?!Vh(F6d)xv zK;09ccGf3Xd6ZL79l7{<)fx{AOI@axtE(8ZUwO6f*g+6N(9?sBKo@`kyPC8X7)qfG z#X>O9Vl{%?gODU5#DXXgi*!5+T@oj^jHXWW=5>rk066++AOgZnuZOF6;c}wBE$aE( zSjDV1ZGZ)6B{_HoC#WnMx}Cwm(10O`z~TfgyEyUWPg~R1z=8Yf(-qYLc6H_mlY!hJ3Y6`!NXtYC#CYL`>oLVq zV#G_A&a?u&{+~-)K=V2*E&b1S74^Xm_!`SBkE*o_N$q{~c-JGjEYNxXXhdU|L2*aiLP;OZobXlPt0&?{; zDoqs8EY&}Sc=&)(Do?H_Z{nsMb1yFvGq5`&RjU~-MTzPwwFo3ekia$rC{b3lBFk7j z+t#(=CWl~}+ynJAFD(s`VBLTK)_`se{w}UqL~^CNg%MzO(}l&F zd_@0FJgirJ-zRj$uPq;!0aQ4SHVXj^3oLTNj=vRWE$^=B^ebMZNo>umYX!w_hdU}w z$}zPOrW8ve6h*$zs%ypBqp-AupMLJ$eKHm2gVWRg)bK3iJ~}hGjz5S#+5!Eg5ZLdV$XnOqZo^Z29=nuC$&%?WQ~LmCq>hX_!LHHwHftMOePDU<%qZ5aLX4@K2n5-6N7{<43wCBrp_@e%hDcsk%&zq zUpkz~9A^YqWkMy2R*V+mG%Y$0jsW)t#Tuq) z-S+%{W2B7`t==tR;A(#S8bKCXUw}pt6`iFR%nNGJ03og*3m76G0G*?)kYY6ul?m7u zJD>==Zn^_NC#cund~>?p)sx#1S({xSEI2M)`?_WqKmk${<9*;*Zr5ALb9eORWUUek zv?rZ(YCtTdwKsX+r~ls%3D~<(CIc3nNM(-c>_KGcpQUb%C7Tnoardi%znV+}Z|DBK zo(&hUEgRRe=3@lJ04(aRjd7p_dSS*hg1u_FEFe_wAqtEC`~TnpJ#2+ApePp#1_FaM zEwxo$v4LCBp%WEs>7)tR9DT-ktw>vZa@m&o?VKa|BOm>WCg0d-xYYc1u50IN#ge$? zS>it!&R4+^pe+E&0Hl{Lj|pyugt3GNa?l`SGNF(ogf?1_4TId#DS}OEu~b`kY|u1A zI}Yh7Gtnk>Kj}PVadT>{FTd-0@;Lv_20e`xh{rL2fHX~xL%I(d3xH`qsqL8wMTiCG zvS%8PD;#!I0Fe*c!;Ar716JBs#~>P9bbtVaKmeX|npjH53XIGGW4q=BfC|)J>=2tB z*Zy1=Q1BxvxSfp=tK1?C|B*r)+2%vCfib~2m$US;?ZU2c#WSV$LtOdz@bBMCGfOH;wpQ2AeR|g< z){L$d_P@`1Ck+7HbO~P-C2dAKV9J!c0!AKMIE2)m5a=@1c*t(8d?b*?SXO!k>%f zVx2%DIo&7@S$aSfMvFD@Wz_Z_nar#@Y&C6_UP3jakijRVsDogVMg@@p*`EO*83cm+ zJ(JtRS6={$Q@iIV5Krn(f3eXup9tDtUG!(`;}?1Wd_aT0xW?`yI9>|9IOb|8Xt9tN zWaoVKTtFFX!~%)d96lg>izk$TaqqrB08q0PU==$BL}(eR7Q+A+oOi@h7O-ne54Ml} zKJwiD{Xi9gN~+-%ngAJ)zLMv&8`0rq7R%=i!Uc2tO zb>PAp0VcNBchy^!T9g9?Tvr_S?AcgYM6kk`Ag*-lujkP*&O+b{R-*4*eW;{#;RNT% z)9PdDcmThN?Ya+L^==9SMaPX;fXB$$hR^^%AsUPS|NF23H)*1^P@*N~)q|RfVP;%N zl!&NamdReR=oh-fAlNaz*X{fRiNyQ=s&)KIJHq0eM<0x+;j~!s28LMNLt;0&8NyXn zXN1+JN<|h;_@Iy`6tu;Li6E)93Jq7+-P&U|Yz*LvK!glV)UzSO)<&s#y#$ApQ>KFN zZ`b|vaqi`17o<^3&T0+)R7e)&JM_zbiXRP!>!L*Cf?86&s|DxjS+iA%S|b#O1v9WrOwYlD%WzX|4aC z+~ujr3F2GFdX!=@zDW#~SW6nmZT)*xsJOBl?%mznA$~3?Lmht;uftz-k`h=ms=6N8 zY@E*OZ63|IT4iIAA}XWMGMOM_EKp}lJU~RG6VW-ECRvzG+1;<50tp$Ly$@9~M0Ri_ zE9|7EylW5lzhix8vw|F`O|HF`RFz?3v$dA?cZGzJwpTs}{k7**o`0dxfv>rcpJcIp z*5hym`l)KJzbxsg@zr@n_Mobo0o7RiSS%PJvZo;ml>Mp*rb>uZnF@I0o?5`9t7VsH zmk=i$S#FBoBZJd2hH==vBgMaA+OT(D6!X0%*x}UmK)J1Kve{-UGFA|s)8BDU;kTDP z6Hzu*%^ru9iMigYtDyO^Gd}1~w^U)LFU3)W-ve!+6uS)&iajFpshSMOY#6DKieV+r z=N56Z4@4?1y@T3J^)z+tWXnvo1vJ1?WzQhULDe0%9Y~+fumAmn=YR>U2x{him~XDxR5MU+yPSV!BqttDA-6r5Rl>)BCNnL7y=6xusJ(- z&ffa1kfgR)Uup%1Q&0`b{Wmc&sm0MSPEq@u^-vXk#SrrfVQr|0WmSP2%(RY+=d3B- z*CZUlLuC(lxPxbCz&y`@$utSi{e(P{J)k!?{Nio}u0c8m5zip4ydyBQ7@Li-K&x^Y zww+tF{}Ymwz7t=FhcIKx9*GuUG&E&mdR|cvpFFOl>MfPgfSz`;MyQl#>5b7 zGz+jGB*-ejT?zW1DcyP-wmFv-j9XYyac^ilE67vq@{?#>|D7T^%0Qronnd3=|IQBG zRlP1m;HlmTkqNZI`kG$~s^vjJQ2HojZ?krPwbvSPwqs`_)=8Kfjv;bHRaaGtK(5m1 zs=1x22bE_;E*5I+s6g$biewKDt?MmRp(YD#uQM~#1#)@j{96RYvhteKhTXP{XN0)d zzNS>Y)J#m99f*#dA`>XAFq1$GN=QQpfEdMS?8^%xEdWE>e;4V*^H1EO8^f$I`R8!W zTn5Qw(xTwlEf5M}M^z)xOpG62)Fq0@J#q?H7I=Gmw5ZDkHsR})OC#pyeFmoAr)D!Y z*{jTNfzVy>NkYq?zRDO_s&@T{EvUyr!xFvXd_0r1tcYQ7QOm*_B7s@m9T1lVAz$&| zS>6~$a;R`23Y7)1V1^+eM4(?@D4TAYz!cF08VE@c7TzDHe(SflM(Xsau8nS4T?E+7 zAJ;_Yrr&Tw#yTpDblc8dUXNu%tFO1Xu6&Bef0xM8V(Jl%V^`hV-x9Z{)0>^w zC$b+f3MhcOK@bE;y#p=Ez_1KdxW9clFZdKnPY1<6N_=zyqTXRd42#o!I-kR-J zYqe-D!nb~SZM#d8s}ORE+ys>6UY|H&?=7Q}s0Gtg`)@IgkD--e!+k@>4EYu+#M_vH z&uuB>PV(FPq13Ot`{3Y68ch~iYCh@e0W za(bf5XjBrwE1(bqYjk=ij#R}Y!QkPR15N+jBG32$`CNpl=$}t6iNv zehbiNdmql+R#->jW?I@bK$#%n3X}ue(k{~vTN;NT^VWx#5s~Zk_@~awl=(H`s%;Tu zG>~uX-gSk^B><$Sord&n5r!2lsLZ1ip;#!83yBMx?16v;utWgJB+)aWj`S`uWOQYx zwCwvqP;dl?s+;PC9*&Hcpb9*;fQcO2ntw{jtstYB9^7|gkAW~c76sJ8K7muy@bKwQ zIDga_?*#YSc0ODMjqW6{uw}?(Bw@biGc;$RuL2hVk*>`0S2}MT9@gyXAqtfRmXgFtuuzDhfw~B$ z7nWLGE-hn_c!pSxC824b^u|;1IiHo>|8FEG9;xg$&S9YTRvpN#U5hK^=9Jxtlz~eU zoI&KUooc7e^_b^qAk!T{EzYyfQWX6t}H8;6F79Z_7tAy7qL!d1M_0+n_ zg=3AmJJCXbYT_~&hAS?L00jvFBJ4q0d=k*dYH-F#UlLY(P!-n~vz2BR@9Yl$^K&W4 z3oh`BSAI9P^o8v$Dcol`3Oc!Lh^wps@i0h=>Rs;nlK*dTGX&;4{~UCT!k$ifwfp+Rtono z=8kBd1v13#HABFQJ~82AT)n`qb#HE&m!$ps?Zrf!fL-sZ%~cH=hBDiqCNoWkJ8Hu! zuy^F?LjPU=wXkCWM>*=$3X*zLVYy=HO=albThX9&m1+Z>x|1YZ==`$lp)wZsSJ>HC*Ca=k*G0@XO|G_Dc9-v@Gp7_(-w;ce&4^L9a-$vMP-U2x%{t0 zfj{#>PnJu<->Z4tx-E4d-iDHE0lr;@$)$cq0t`I|_tV*vNN?zzkI>%F*)fU<5By3_Dv=V%9X2v`Rp3Y7J+ z(E?&XScoGa3`7N)Ii%VasFb(@!X+mQCo5>yWu$3e4$8oreY4r9$(XOJma+$Lv$BSW z7*PHbB_AR?erd6Lpx@QYbnO4nOGvF-nlthC8B3m>pa$SU7ud&$1knO6YG8sv2Sbd1 zcJ6n9*ab2{xF}44ZVYu1qRb2_n{qb;FaWY=5F{N-5`YUC1NG~}H9-~r2|H`*cnesU^7x-T4TTf6Y_mM%ed zDXWD1I-Q$~LNjWFh+bX&F{y`(rRyDXS93ElaoUV)c63NO$G8>d!1L#&4oI(Uu45QtAX9iNayNUk_*?-sdiaI>urE?)JO6y|OkwJDgYFp=CT8%0edW z-8L}L(>D@A#+TbNezxCF=tmoI`8=zj3~`1qWjLTf91Y=To0Or*dd|t(>!MQoklLys z+d~%7gYbKme~xNu-sm3yy^?1YN;9w4BSLUvdPY<6sR~_`njIZ;zS0%uj;As*(%t9T z;n$@h3A`&1>$8*f3|2B4N@)5!K%0E2_2qb~Egzb4*W>+y1nb!hXaaMC)5ha<3^M&= zD?>xd9>WK(vG=HZOe>e{n_+`fy+Njp)waHRr8IJ7Xwct=#$jM}v`W{$YrDdjcK zX|>m?SKv|Jc&m1d^Fykx~sVpDVH4y_#@GBSYtvp;muy$oyc2sBL#SzB)t;LdqZY2~_Ho%S`2WU)S@;(b;|o`4OP%00i+<1x$&Vp=xIqUGnr95Ucqt?q&mryH;vS z9C7l1Wk}0D=Q?r7kSw3Vbedsq&vRYH&V|xc$8(I7t#ocJcDWOjNmEEJ9F{!b!GnVN z=|dFOp^)aakE3GboOJT22j}t<I%GY>L!_-a?K`>G}sQkGJzP0m=g{o$O|eq zH|p$yuAxfN&)SofCv6OWZM<&@IGnaKdQxGm9j05F6u2PWLQq_nMEcb*WwFa};236L z4Ec`?2u4ojVa@%KKzIjdP=S12vz!>}x==c^yjyNtnIA@@Z4-jo!gF)I* zeXxkGBK;~K@$#gZv)y$Ua2w02V)#+j?PLfSmU)nyeq2IF@rOr+;6Dr-fajxxi}1T9 ze}4b~3(i5C>XX70q{?7IKmA)d03ctC4cqWGF_sux01}XpGQqjg{V({*dFtm83}acc z6O&}2N12N!!y~RDmSQRG7{aF0Tllx7Nf`S6)J^vt9Nn$pv7zYM|*se+}7GY)UlrD=vI9nP)#{|Hm(}3RbUS{i{`?iRBnXw zgC)TL5~5tW1cu-BL@7F*0tK|&`SPO-8aOiLfvaufCnN~hO=0yPP6dZ*5sY2iH89F{ zo&RQgE;5Fg85 zdykw^Dk=8lPB``pWR25ZsTqWA8kJo2PBfo4Z=Ly0HawwGmYidMo4k*_VOmc8GE{&^0?C$wRk&oCUOZ2g(BZwRPgf z-^<6-`>79PY2Oa3=;nu5(<|tZU=MSN=PNUsdo<|uQ`D~Kn&$5s8sS} zPFsK99%fl`iq>yk1Fhhqu9tL0MZj0%DDG}rBW>=jyfgIKAg4m;F%CGTtBPTEt7k+S z*0a{m?v?Gduhul!aOQyOSgrW=LqPu2`bcD|V|l9so`*dgPrk!;Z&zNsR&(qjG=dZr zgX>DR1_5+jol>o=2(^*p6%f+IPhyl-80 z?I$J>!h>L}@+!DRrQM_k4U);6k~tegAmwyhJr~DH#nyOMyzH}rMKwY*E}wn)Zo5mi zKLpbsK0)(uL15w6o!^dIzT948EAtY9I?U%mK9spCv0qE0qWdPN;bUw~46&GI@5Mjn z^hst~7vof1>yBx>sLRlcUX3OrPR8`4x#jQQT*eQTr4UeNlNhDD?w`=xNVHd)(P~rH zo16igdBt)<`?U5K`Ro%cfH)kH!O$qe21vCqg0TZ?x3w?qCX-#GhI`~{P}o>O?9J(IxnOVnRnTe$C5R9ThfVGe zfo#cUb;Bg8I9(2YT%SP?yG8#d@d_e+<90c*7EG~DkFDf7AJpZU_b{1dR7*Kdc$HLsXO8Ln z05=d{=>g^k+jebbunLK$M2dU~Wvc-_6nNX`5LjE<-GB@{%x;o66rWEJAZd3EWD1*V zHW5HD@{5m=&rymw?w$`kGN4GZQ5R)5!tLf$UN2VY&o0L=pC!$*$n>v;W}5UBi!9k% zJlBq)Z9w73qJ zu>C=_noyIBo0+iL2EJQ0&@EAX-o{|j@o&r|i$n9uvUvA>^ww$4S!E_`ahZ7nGgmP9 z#N=&}e!InZYIpe}HaP`QV%y|yUDMvGq-O)H^bq6hJt~J}yE>k+DB{xfrKViOC>HEQ zlZRhTD`Z{XG5(@EE#B@5BixtfH#0j;v(@;xyj)V7NUNi%f(#1@x60WCD?4NX2Tk`tVwE$50 zU;@<$#7(NH|11N_ALj$z#lgXZ2TM3e&Kj3okvViJ$1&~J^KTOdr_R}RmbGXdC@SD= z7X0HX#LeKR5A#WL%NbfI}g2*<754{E*0M(NMDJVA(#dQY2$u2whi?;Gj?!JJ{u1| zAx@nYYk_&zz^n(4KeFFOoHW?OHijgj&3hgE$T=m@Gtd<5nSI@)G_ zZ3a(Hsli8lj3@p3peg5ok5-RMG-ExY8Nd<8U8LPI=?2iu)N!EsA_-Su>!i%a*jk}lORLa9dP@(Wwn#T<$PTL`n* z@36knf&g(h4#EB*`@&sA@yopN4_M%F;&P1@Cm`QN zI~JK!marY78WmwPenb*W?!PSH8|?jsBc^5)QDn<^18xSK^VUGip^w$y9d1K6mQvNoF07Ydw>X6gVHUr+J2Q5&>ZCqcI6jg>x(jZYHJf2CNzq7WSE+BpI#P zCtEq`dg*9~VZc+8p>54E4=P6OR(kwCMig-*xq1Bm87%yty;N&27j@NSSK7sk1z)|I zsElDZi&d6}JQ*@;TZdwM>*T(}cJ<73g#v@JD7yDjtNVQXt#6)tw9Z$Qv8B|TbG)$B zQz(qIeVLH`b=R4fdOgLkRNhTlsw3%0d2PeZR zy`Ge=0&Cm+@%RC73J7Bn`Rb#1US+<+Ag37IWj0WZFf%*G(j7Di1!xCVCGti$0eF)v zi$tx0w++5)*@LXQ!h>}Dhzn^pPP74(5_FczFI&2M%B6qt7G4(6)*7(0iW6`$D_*Pc zm_+m_r=zkhv~jgQRcxWz=dEtHq@@D3zh?r7A#^mehneP{|1zI}KJ%#RaR5CJsC$Ro zt#}Z!VQk2+!zu9)5>nt$7@%AXCNqaacLGSGng1}l0_=nO%myFX1EUNku;Ja3XQUsW zf@nioExFYM7*Uk6Id&skX!lAZ&q3DL24`N43mt2~|VEXw(_qr!r zXFA1E@_A_{wvDVZ0r`Q)gu;UQi1NDhH6)Bq_2^&)h?O;4G~(Byj=>UiojnHt)BhB|BL!T zNg#H%Bj`s8$Rx6&8(toMp3U?=VQZAethH_=iPQD8H}O8Ulh^0k8rPbk5lv zuSEI8J~;?Ir>m6<_rkinf7<&-eKXQ$A7%twF=!=VyhOUGw9fz=Y z6HC65ll8jEQ{3306|MnAeRYH6U@g7mbKql}aWh3@R*~C?_vZDBx~1<4I% z`3iBgy~cii20w~X8S%7cROG}2Ey;U1=X2@|vX2mQ)K_aqqw zvE{Q>L|LfG^5od&)=}(Z#X&_XwrA3(zQEun6b7$%pyMZhn_D-zr^5@PA?GK3(-UHK zn)78F%5+enk)q?%(*Zl&g>dHjthS<@q?0l6`YofU9B}0oA!&2sCpbV6m_h{<&$4DR zB!UO?&75KV@;;NEFnnas8O5K3@%S$3TW@<+s8JElE({c1w1hNqhf2D}=Rh0Zl;D&9 z9aF5;tR;DBmh{)jA_X}}>$A8xNAPqgwF+GlcY;#X_BX(J$pa~2kH1>dI)br9%_mM9 zI%#6?W05o9hs8Tg3*nRqA5ol%4X%$z7^)>ZAGqcrZPBTIP4x?Qzgcj9N7gAQQoG8D zQ*=yUrQ<5TFWnu#&L{g-;rTPU{+(YjCOq`g{fQ1Ift~g-_?*UvI66!m!skoU@245o zSw_OYk@|H%%7f}&UJBioS=i{@BopGf_!6MC*7k)EQ3`qEg^ja5Afz?TVO!8v=g;Vk zMj}wUuX$;#Ys!an*iH;9lv=e0nG%c5$dBDJ^Gx_QbNuikgA~>zWsWyu19L)hl}cNI z8-l-3Wu71WQfE^FBoAUG6rO7<@4RO+0wn~PdHXsMv1vG^cD#j2DMmDMI7$P!K2XUZ zUrb2JaHpw?JQBEyTsWl+RovGl~`Ri-~HU_ksHtt7GMLH%0*u_aKi+m(%E zMn3_qtmpeTpTaM%0jAOITr*8glSHTeyB<&meU72`nd=+c4P8~pQB0ATne$6%hYF01 zpHil{=hZekW>N4>5ka&F=oiYpE%C7@{|-*Gm_AG*8jTTi3qWg~d$i^bhH*8tI%GWX zm4eD25gtNUwksqTW>cTbLqU#^);x1fZ|v;Xms}3x`i$fL2Zn8Ezj!J|lo{-LJn6el z1XWBT8?sd7T4;Y-5IY8@kG|?tbEXid zD%c*e`V!23lW>?{R91cV6B#b~J|2 zlEGI%I6Xge*Bm`A=g=jbuGI-x;OU`I5fCVlUU+s1a4fxBHdVOvkGb478J-Z`VEmx4 zNHmuh*9d17v_4%hs-+H}g$L)Udz%kZEiedUc%rsSnDg$}Q3F3!7dpX>>mfwY_7N-E z(^sJ3sB0s~qtyh69{H+Q=SBbs6skVz*GCmC-n90zV#7v~l4%N3I@|(6J&u^>Cc&DB z%6;1psKQo0ZMu}a%!_k4PZ~>0J2^Lm7uG<2iPd4r@`sf9ms<&$`RQ_Y9Q{aV{_1Jyb(G`+Yfq=WzdTWh>?-u@T%35N>>CQ&TEs@20%~A(fkF5+!7&MsQe2{dgzNh#?+r z0`Q}^^oN+=q(Rq}bP~S)9*1S^OB9&PKnlBBHlJcEg`gubR1loHd1jcnfkoIfX$yw* z>d=*uvXB?Nbijd^A)-w2PCyRz(vH(IjSUMNQZUcn%neMKdbC~4llWHxf_Z`Q<{+i;fh7> zp*_Q4hVb{Z4xeYjKW8It%I*+3BC?3n3f{}P=f&X6IZ(O_gb9BxYHimoIwEr62{?Lt zc=~#ZXlNhu)U2p*@dRdI4O@u?DLD!TnhpwH)5|CR8g~MPG}r{(Pbtg<3>S8nofI`ltZ0%M1;{ zYh$vC&}u3$8V!OpJ}f0cn)~V$@QUjQ{M;G{_SI`MF~h+T95?2}2VnFc000H!L7EJc z!X8Yf1b_8lQlmg$8is65aCj}w4aOsQ0qGyy;x#0KCi|W{)HQ;9IJ8QIbEOmU$i5uWOBcv)v04bnGF}nesR>6zKZkIF0LnXvnToOcew3Hz99J zbbguga^Ed%FnnMh0N>tLMp`0da4cVIbxQF&O zZSnF#rICCIrr-SN|Nnd9qOnS{jkjd^2+w*2=&$v59wHGt+ACoi^hBab;Cyf5O4g*| zSx%Ky4!9Qx4CB9V#X`ZlJzF)R4TQSAv2;6rvKmYjbMpPd0Rf;XQjQQZGjnPS<@A*J zU5cG7%q}^6Z&RzrPw~ppU|wA#T_Wysco*E&Ok~cd=?RXOJta95GHC*#0(4&14PiTZ zXx_gOfY`$$fb6iZ41UaYuYzM}+Y{A0uE8|3jN0At{xiW}fhD z#UZDw#~D6+wff0TioCr(#A!p7Hbe5D_3>A6nm5=O;rNW!PM0=N(jkA_yxa|Y(Y+1= z__o(F#hToNOcC&GE_o2?Wyc}^$(SwBQOaY>G$0NM3<)zm1~TU9U@3u+f{OqMA2?2K z1t!GH(~Ni971;;eK{TIah4k@gz(}@u&7J8m3NtZa_-FLk_r?x8ISl(kW4{xpmlQ+3 zV;n0axGCsNZgj@!lu(j`D@E_mQB?DuHyR`QsAZ{5u)LK zEY!QdKN6zXk@@@ZmMkmb0IJ-~EAAQe6pL}t9{;bs9D7!QoWeo&xpZ6`9QbCk6Hp1NYJ*(F8elH1)M9cnpJRa)nAudmScc~ z2XP8#58&_5UL?d`L8&ZLEmKNeXOJVtnqmfD7NAg6-8xGj`6~n_fqPK}zq`R`$xUQ_ zzUWE%s{5iFEg!I$!Mr5br39yvCvs8-qQ8v^$t74AM+P^ILkfK~A^9NDdnEOeO~SG_ z-3zvjZFPM2|%6b3$7ajHUHU)b;gV~?`qMhKZDwI67d)M}R`B}neioDGUM?75?_bp(9 z{Z5F8QNv-p`6FdWSTfJSfXr<`Q)3+8BQthL*?t4X8WHW4Zs0KE3;?Nh`NMS)>E8h) ze%hRloQE000FB z1_8u?001b?L5PciU;gx?_!QD?L@?i%AMSHOW z92N25)Q)o4{5dI30jFmiC~XNhb(9Q)t%yo5FP3+Tp5i^EXnZy(9$vX9PlCme?*9%a zet!$zFe|jDh=$$eJ;pM<;rgR%NuS7Br>O&lpTUsDO5;;;c=s9X&FIVfUT>H#%}w14 zSt)~3%q(Sm(73C1N=RHpJ?}f8Hl`L}eGqOd12{^~ClwO`F5(XDrTNNhKRFh3axc}& z>=LCSm@Q|#Xl-H;^?B_>^&zb9qglNH)88kvgqQF8?M(UiDDa4;0OP7Z4Gc7(Tme%x zMbJQ(_FeZ>1O6oOx*;V$KTS*v9R-)T#J_8c#$71 zsNu=M?zz!Jnuw*-I@vz;hr}XGNzU6JkBB5onsp%@v6x zM z-2({}zQ+~pNqqWF74!~yKA1Ps!22sKWgcFMYl>WWasy*sHn13dI)g`j;yIE^X|9?^ z$Z6kcL~|~va@WmkTQ5$dy_WEXM6<(fiaEefA7Rn}7l@!CsR*qsC502xnUhd*vVLK%oV*Lm?aG!DXUe^>iFwd8qn#Vv& zj0>$r%R>&2O!L0Yi1lS*MZe4Rzn;%0Ff~j4+OA;?$%uF&RgAel!r3myGMp-{9dSpy_;nLpL#PsHGHiM);sAVg z;Dn42bC)bSP{HW}fX%99(f=g_jnOSkM&`K4-qM5o>d@(-(uFYy%T>uP{XT0{-H@7N zTU{dvA@~6ifpRXi(5!dz3C>VBTX@T(Z;s1=*4awiurGQAB@DpSe%X|U9`^j zwI(5q4+1o;|HdS#sc2r+*o&sD$G2Q*QlD8Do|leOTrM0Tc^hq`RgAy&?o#u4p`?rCt(Nb8#{#A z`q$qaXd`e#&sejHiBbqQ93Xr+QP7`@O89WD5(-HyUu43|1QLUVclD85(i^#kbkBn! zgyCD>2>@zxbP7ZpI1WEwJ1n3P>5jw{~cm2c5-`hO4BrM%jNOgO}g9m1Az8e$HU> zaO8C31t5|3eI|$Oem(Gw!G)fFhR8}7Ira2~YiVJEv!pc zN}SYCo9EytrNZ>Uhe)cK7z-5Lt6hp(Sk96(4}|IBYjS)jlibsQH;7FBI+4SvzZVP%%`*X9ePzGUWW5)j^py0 z)om0~0lRT)s>Tx;En$VTX7$EYwU=SJRfQllu^+->@FD?xfPOc~$R6=W3m9QR3>()VGN zX*7u}na-u3gVPUU6JdS<9EglM;9m=iyxW>*XMaDTL5W?UU^D8>1!G^pV}lBL-PnP5 zyC3&Y7Nh83pRD2Jwp&a@SnIXZ&II|%WDoDNT_$o>uS@umQPE*wsQ3H2*7zpGucnc- zeXw&zd*CmcaU^DuA8USp6)##veVys|V}b?9K;e$Vuy7pO`~ z(5J!^k0~t6;a_n21vAZxu;_Sm`EC$7D}-Zv`uZ04ldqt=wr%q8dP)S?G$Gk7msXt? z7F_%G!VmtDd_CLdAK>A%m#LL|=gW4Y6olmDY3u{Svb_JewS6pV0oC-Qv|OqRDWgI) z7bjxe6lXuapyv@W1QNWIzKlQ%AENu{@($D!9XbTD)W>I>M^T{pA+TuphAK<^pXr!R#~<<-9J6LiEMFX{ z!>|$ss{S-y%KqBDb$f%k5KXKUDLDx-T!m@91WIy$yj3Sy^veuM~- z=FC-xbRi5F-hu!K3Ng=U!^s^BUnFer@GL_nX%saaOW?!;xhh6MhfJPcU6mXzj1I}z z;Eg-36l3?Nus;~39D+Qk< zh4frve}@<&HX|SI!D#+cLPX+5;dGR_W8^KU|NR^7ss1<`Z6PzI=HK|-)PV5Q%|8^* z9~9CHF;Mm{IDgM=Pd?}8My&$;M!=`~&Yv6(hq#Q0aT#(q4no)}{IA)K*eeUBNCDN;=O?FzJlP(8DkX;{oR8OqKL5^U(^k?#oEN?ge*`zVqXn*(&L*y17#W zWv;)cH+@21fg&DnFAvFk|l<%fc7E_YpKbxiv%W|XKE8NVwWo?2*!g8Q6_ zY`5%)5lF8hCpn3$|B5_l5ICJJx`&19w>SM9&rQ&eW|1Vi%=a>r1FOr3sVu zd77%7%^l2}@P7k-L-S;vX7U~FqFvueV-HmEqiLlX+8!FDW>%FDK)I}*?2Y&K{3q$_ z@n7~YbeZKCX|j$$evqX|1zBj~iwe5?C5kfQps6_a)8jMnq8LKp-p?-zMODPtW>XeG za(;A97GbN?KH+-m=hSPkWLr!jCIq1QB6&fX&aJ^3ioe z`V_&9_Sp#<5#T>$X&&Xc!a%5rfrYBK-xFU$dbdGH-f63*4yU3h8a>$nGe)lbW&fU+ zdKS1FvVG1=4=6<&eoQ}Ny8Dm)#L0xo61DO>EnAQwSN`3^lA)cuwdl-k@C)Nf)O9sa zETgk>%jvEDz3=wq5g3I#SE@J*P(@rZcq7;&J4P3h%hgE_3n-@{@#W^v0Fq1qpXI|`!*1qMmlm+b7PJ>eN40AeJ*%PoJgh93(xkwH<(38_nAO*+FWDCPuk zDpDa47KOdb<51WR1pGyO%u+29!z7c~Tx+lq?s9{xAwY(kf-a15-X?xexe03Rd)f=a|Aaf4#YHt3aHJ6{tKSAT7^g z&{Pu}TOga&mWIMq`-3y@f#$Jc`1~kSn!z)vL_`H%s?q4U%PGPCQ18* z9=h$HD{Ug%1xv!FabaMgK9T&*LeHoBgJC_$-U{2AVtdOFWBZo37I|NiIc7mx=1IeCSiIyN{~W0Y0ds@v1T01{2M9j{7X;9)mIAgv zmAvbJra#KVLdYIFkuW(vzznomKr~oi8~6ipQeIn|--4qV74&K?LtmIvU1j=uN+(LI zT`!TxaOwNYnuC7nGo>@D!;-ppaf0qMEqNa8q&d8cqLb~KmFLR)Nr#xjb%LiLUE{J6 zXPv+P@1OVgfBXDIH@y$ij4l|TS-w}+$IS#oL5P#W9wG*9;C|KW*55z#`wiIvZ$u*> zS4$^+;~iUnL!vAKFj1Voo@3r z4C`tBw}gSSq%q1;;#r3@z}Hf%^kpa9MKr4^uuIH8fisS8W8rm{^@)Pu~AZYxJ+oY2K1*mVy^E%d#t=?MpQNCjs@Q%^(k0?dd^2w-e+mc z(Ss1Avtcd4&x12?RdIEfd#}UFx_${lrDAy~YC*nkl0Hc5%n~K)WO&MmPy(@zJ;EF{@@u~%;gToy=Aj1Kk)IV`p3N!{Jn@uavhiM2)RPrMQ%%6pb zXbp@nyJjj162Tj!#hT6H;q>P~Gss4s;~ERWMv=o4G`+dZYnpc*hap+1euNxrp3&96 zqEBmOZ(gc^bxz3vsnR}d;ylYjl50R60e+~L5<4wUbGC>E)~LuV*(ZIC8K7;Hl&{DV>u7)Q#hTPfMS=hG<V*4EE6zH83E@LLb zo@cPlpv=>tvVtHR%JtW?FUP{2VjA}os?*kvVjQj3^CPMXFs7)K*iq-@M`lFG?Sq|A zvql|(`P-W;clS-efl<@7CadTYWAR|!1VR|1d_4%BcDD(20E_DLBg*m)M!_T_Bftx5 z2@>u+SVaNOmILwPFg-idk>IMu%?|-|H=@O~3u?BlFB21ptYIks2~~wPbYP92>)!Aj zo+^P|iPKVM7!M8=FZw)MW%h&~Lv~HX5EvipEPQeQg2gK=_)$$Eoi8upSLDDbRGLDZvFF)jisbPf#^V@;uUG6>!Ajj8k*&?s<&;2eaIOpjn%aAW(G7f!d(Z30to`$xc30oyk=eZ+( z7%C~b(5uz}PugC{aT46wevDg{=g4O!$lL+9IY*qFDXESaG9X-c>l+Sgls@s!6j*D2 z81d<|>#4s#vQ`*w7KJ2(8J+M3;J$!#2|-mAG6^LqE{2b-$HA*)yOWcuINOPx9MCww za_u=>Zrds??-F6_B*ZrmjQFtD5Krw4?7v@dZs5%G{GlG^&^ayyE zw$v2{?|f-pEfHIB_gHD8ye{|#PhcZd*E-(4Ca5;tDpV!2q%EE&eE#KS|CUGA?7iD} zc%4X!e(|B<>Pvkd!W+RUm~mwtkp;#G>2-wq?~9ZCNr#(k0(?xnw`#qAVB*A8>_nRP ziOkpFkwG2@U5~o6(LbVO?WL zLiq2ufPa2F8Z*dBUlWeJkKA>X7mSTx*UydShxo*=NDQed@AN58=(OL!yNPksH++{>UOuN*8qj7sSV}pqZ`wL^#?N%lz98@|3%yb z*K#_zU7GEu*Le~^?JU6zcw={_1-2eaq7lmHNlwxkwzHADwdMc`l1XP)YSv3g=qNQQ z=RsliC2?{gjkvT$WQ;^)4EP#7Nknb`YtW&gEuTt*WaLNCr3SIR2+F5~@U0g99QXf)#Eh(6e7zwD)+j z4%e}{-Gb_}x4hh|Arc0dCOV?1%8oac|Mr-zXZ&OVNkO+>qWsF5tt|G4DBRwf1;CS$ z*$-{y@h7r&vxU61cj3BHpZApRWT2rmhBApGL0u1T4GTe(bsV0Fz~F~>21i%a z0boe?ZhQt3+6UuuE{vHL#O=vbN?-etp3S*ha$fG#5Wr%kxSY*w6h)ebn$FF{h)){X zY+%g$1m?3dS*?+yeik(x23BQxe6x~R8kp@YrTOYlOhLQV(AgN=ay;1D3SyZ0EA9J+ z_(LaaQgk?zvbYG?2nmFR@n|9dvtZjfIlrDR5-*h=O~*hCUDA5^o-`AgB$pjKOca$+ z!3o*%mJcb)x^KKkf>oqabbB1_ah|1wJYq^sHcIA*`z^LDP#!C$N1Qe@@>BkoLUp{Z zCrskv5`#-r*@?tUOI(R?P)?F!nGq7X&qYC>oM>Uo>U@CB@h}(hFiH(qqy4*iaJqdU z(J`L#rjL}X1vCa2`(akyAn+SY*^$@^lNr6B3tO=rie46)bt24N5cmoIBa21$Sbs)0 znETK^&v9W``YOfm9P~mWTss;;x-@*6ta+=L`76;nT$w~217Zz<+h!M&l5;^ebI4hL z$S3xVfxfuz)BGyO=lxWmr!lfHXl)%+)<&oWM&G2pQ7!c)e3zk=5|;^7l<%9mNyG0n zJBbJbQ0vC-FWf8seXDzM*llmcrYQ7;1Mg$VNZXXV|But`RtsP=+_=!J;tRFglKM`W%WE zZU2JjlLuS~UivoTsB>tTky&QZcI$b%zSTm|SWt^F$;85H_d$1yh8k+NXR?dGk^MKH zjhBG%L)y?VOV94 zux19ob&mu_mgh-BOpa-w&)Bp+qFC7yqhc2o-R6WWz?VSZ`-LI!YZM~S^#aFLoC)NpZJl0u3qoS9e(4fEoc?o2?6 z&nO=T8xY#g8k3ftJ>b}v2<`Q9H7A(j^t-m+KldIhu>vFiFZ>GQH~%~DKjwDjgQSU! ztD8QY30bTL?sEWIq+0@ri%6mSPpjxOb`x@2-KaD=6VMn;i6u ztb3HATCm+Ej?g0wroa4~uw3Ppp@{Z0-4F2oo*uZI`3uN$%b0p%h@~Uiw&7O=fkV6v zcdoO0krK&%>mG9J6VvAQnq!$%F(vmlI6sI{N=$c1Ja>hUe$;evf`Xrw7tJRs1aUv1CXzt?x^x82rs%3w{)sv!AYm<*Cs(=pEInVesf? ztkyQJ!*QT>#8p-&@vAb#+7tQ9uMeOQjtC^fXB(ZNQ>Ctl^xtUQalZYc$ap%vX63<$ zFNUjE88npGIHNEQB)vCuJI^@m(348TX(?IUsv{kQY&&zv9HHD+wxyjJhnQF`s^L+qzlFoO2XbWkCp5bisjFGq4Khm+kM0VMe( zF0y)!2fOI`qlYN!!P?vU#SM9yOaq_n&mepYILy>11wz8l2a9OLw?W?5?JjocIR>~M z{%WcdEU6f@Qz8jhUyerNbcuJvKVEe5MW`F@6}pT8voeaW4yE^L=+BiD){QgXDkmUA zeW2qvdn&CUR;7C##;xHgB>R?{jH5)q|LsZh#|D;$jQ6|Q(r|71>Ss`%F#9yP_u&%b(!t`&8>>|xq5f~B zrVZy=-<+2L_p)#5rR=^YnXkE>3VQy{yjc%;>UH>;Tz1)dv0nI+4n@HX{)Vv<++df-iWF^Z<+>(E<})4f4ct9=G?dafxqYh{DGIK1$<7SoRSQDNU<)mi>;pG)D=w|{xrU}J_3D|{)2%wiePB1c1Ag2bt zH%?zAIZdf6!416MhwPNG!~<>6^&t?#&|!k*1&p$8Tr8tJdgV8N{&+jahYM+P70fO8kDP!V%LOd%|;04{(7nwgTDV?avQ zEMMmiupl<`?4grpmUe?d!`Z(b?mMl`QIA6fED007<8@F&*+jz%ZP_Jtn%EJW8hhUb zEpksGSeM>E&uAyFhQb+%#g{ts|4^ouG1nT72Q7ts!vAu> zAh+{o>u7DAl22ZkUlji9TFnZCKN67*|^ z?#IGH9Rm8m*^K{}y3h&Lmv&fG&Q^&byVKiKcxI7lVAzM+5xnRe{k&F&r7fx2+_&4L zA=0(|j`#B(gDwQ}Oml-=3+)N#wbh)Yk=n@m+!pFrngHMV+9|u;%zG#Bjt8bixI%m3 zl&)+Fc_-%B(==cj9(c!bmO6cgXEMz^e+fc@uSGTKQlxBv^@o;#P#Lu7sqAP(5h?o7 zbs<3705>|8c*5&hbGRnau6z%tokOk|rt8nSq5?yz zANS$l5W2b!^RK_e1gedeaxyShg?MSBVaz2t1X1vh#h%2lw6D6~W62zFPsxUKc0SQn zH4c`yS#qr$fXpF&86%3+0OSMIg%l$uErYFXV{$l;MSDqWyMSIa3fJ;H~wGuN%QG6FY2MX?Du#dZyF`_jF03?s2QNRPPk z$B+Pb+v-^N0Vny(R(hH3yVEGUX5beo@>WlB^gx)9gEpYuFzhe;+o`h8*;165qnA1lDf3b}P9{G@B)2=PerqcEC+IVHP#1^4gs^Gle#O|uLZ<^x z!J1lJReu^v@G&^1*zm2{0}b0_W)en&;sgtqw17&2y{qwM;zE=H*oFn_ha2n{UK4{) zj%;)>ML8QO`a&=)z|Z6llr|~U9BNUaq~wA+8L+8hJG4c7m+j^d6InRNSuV$@d;24a zwD=N7ZlAx=J^Kg~pXV4`HRYJ3dzerw?z8+UoKcw<`ex2bO6Buu|l!E4h=E(>r<;;r&OydO^&lf5oER?*Wx?m z4PY}W&~sEX>It;uo%JoM>G0}rz?b_h9~?g`))~*;Y0@rl%-VlA3->7g`!pC?V#nKf z<@*3u+dml{Iq#6buM&Ygk-*YtN%I}n97tmdcdAkewdpPAo-3VodKRiTr9CXtrU@u} zfnw7$)rSwgTaCBE$N+i*;TZD9lor%<9e{6(^L>q^y=z?{2Wa}>tiN^#HhI{`ZTmkUb>s!x+c=r19S zZA%;!vwD7vV`oXvf;5wYTW=XU@p=%#SdLe zhdvnXoP=C-B@T_e2bctzTxD;{p+a8qXA%HzmoDU>$A)F% z?sRs9e8(oyvNuq3H11*|epVbF6eC5?UH`E`Z8N2qczh$N@$E=}<~CpH5v;+tEeqH)lYxmbwccVTbGM*n7ZtLY);te^0piPc)aP1E&AZaA;WiZ^ z@&XBVpeZM#C(xKCr9FH83f{8fjxXHaaGXECl*E#VB2g?-d8IDlm>q2!|8s8m(3<8h zn1_}In{Sv1S;j?~j*pir-cFZ$;<*5f7Ja8A>gB~shP6{{?#e5T(ar?5y~LI28YBSl zTyN#^A|vCK&c>|uC?dEQpM)DAFOQl!_#xUm4xGgnCSQ107Vxh6>(n}5ux*F7D$r=V z?bn`I)z|2hUeC4k0Xr4GD>80>pys;Dhug5i53n|}`=B~M>bF8~ zo}=BK9+c+UIYsGKEW(8psz-C#>i8-u3{ALrqLX?H7_75?!KxD5dW!4a%703Qi z>i4O*Pn!ZEWatB9_Yzje({nLNofn+B&O7_JgV(*4@hgeo&ttI$P+}upk->yh87Q--S(zY`N z$0d|+xuPF$pX)K0R3to2zJn70R8J9fur80fwciBK0p^!%N$%bR+olMkoAonnnw&YP zj&Tl)Ir{^-_=~mM^?KT~xs0vNOp~_eb_sz>(bPQ0H*p7|Ke8EBfmsR!JrjDq*R4rI0|2 z^eTES!v<(fASe1)RYobEAcDU{rw{W_qQP2V^TZS`GHTErP(2!>m_!CC^=jTl>k%fk z;4)t>K_krHu6IRGJ;m51+ISyPF40O5@SQki3S^ZWs;)-_WxD6ME*1tvG+lnMJ2U*B zx(!-eND#=jBIo@t%`iLw5)ZS0q4R?Lj50Xt`nn~T;n!!9#vgL%sLD}W0~b}P-3GuA zNQ`cD*fA+^9GGb_Ec;JfIzd1&SMx}PsILNjjem#A*VTmlAo$tibY%_4I?qTn6yrTaTCOdHpCC{RfjS zJL)BdO{VqZl(-Ntv+H}<7!%~B*mqLafNr?IAbQwiiAJX`rvH3WkPqThgI zU-Q|P^k|DnOpA?vqqt0V3H6@{fPhGbcqA?0g5InX^Iszz7dWY{bFmQy%YfhAtrUX3 zM)jdET&Oy8+I zAI@klSLS4aGD~~!@ewYuASzn5>D`yrwapL&Ez^r^!UJ{S4wBh}-;%1Ex+MbBm=Nwb zLD`JkrX9{kh<)~_{!r-i&DjHl@zTuC>4=c6%(M1CM@;dbrPvto;T^f3G^BLx&}yQ_lc=`c8{!@wz2rt zya3aZnM7cr-+s4rb&KdZm(hj+cK6|z$zN0A)kNQ>s-WJ|g^^i?hWgZ(?@<)m>i0w* zk|4y-XU5libRs!&UKw_yq^+k*lg3xZc~|YfVh|DDY<2w&yxjnLgz-FmeA88)Ua&5G zV!dHmai_2CN97KMmiV|8Q_bu_!+`?@X^_1%(LDIVi39LEf(Zr(% zXC1c8ySgn!F*dhnN2DeD8{C+w;vwXl+U%S3Cm7N4i7c>@Lo_v2+xdl43yMuXAXn1$ zhr9t37Sz8ZUcY7#$~R%BTr7_$du&Op`&0ME{F=Jq!wI|ji7>P0U`t#mct;}#MU2Eh z4wl`Fy~2gCO3(ct{)A=4;y?4}Elg(H82ElzI~!sok({dOSw$fY*-3zl%KT=4jv0>UbUt`)oAo_G=xh*suJ$qZPVXk|U6RJXw^jRFP=lSeb&#^eiyR8&&@C69m(4CLwa zY%bA6Y53N#hS_RVEFn^kirQH2vz;65oXZKhF$B#8XP?hXlhPx#PD69RhO?V*tHvF3 zOU73~heH^U_AI*K3*zLY$H-s&)#t#SR+s9A_IpU7%WZLNH)d$Ee2^Zo5_y?QgO<(z zuPcVAk$m7mII4ZyDUVGV5UX7I2bmg5C?dy46Bt5x{sbT9L+LUOO=dxGZPW}FK`eu% zLeXjAN}a;IZ*M&Uh}7A*{-V#%7Oz{rnS&85(7w@YsN0$2f%R4=(9OS26J}%B@Y3@x zUOV7w$pS~YTCYrkDW!8B+8eK?#k8}JQdJ*QNQduWu#Kz-0gigYr19`dBA9u7wuGwZdtoHA zJ4cmH><;>QgbcprOx~E=XV1O!jZmXVf|7>KXg`4?s39-quR^tBz=nj$0ptJ3O7hBR zBva67z?qNmi1e*-zKzVSKxX&e1G6{AQU_sRRyBpmg=YK*^|_>d06?6;{<3VLuUBf} z+nA~#GC*DHO#QfB$XG@-5r_il2vy)Mjyy(#0g9aw$Sz~%z~_Y5Bf>`|m|;fuHVDR| z2c06xB2o7XTi9h%o_F4l9qs=&uRS54NCs(qbR$l+XM)bwXiX6jmSnp?auc{L9Io;Wg6kdMQOB~ zH$i>6Oyw|Go|FCDNCSdlpfS!Vl!>E4Jqr!g9j17+cQX=qA`<25tvA4CxbcoJyvrn_ z#Vx`O%hdGfP-juSi_nmIgVF(^zCp{!OKl-C9ptSxkDC~!>4G0Tj~dPc<)Re0IsI7^GUpgy(T&Y97t2XgNSeC$x`vf7%*Ll+_$)hN#uGU|zxl}os11O3{9d2$OEfp} zQPA+XZ-D9E*3%C^T<|i{uSe5 zTcEx;>2W&4OHO=Dn3zvesqu;yervg{pLE*KN8n`g17{X)f60Lb_+x!%XIM&G@|F6nedgl&ughD)Ff9W7P2uE!M(};@koUvWzr+< z)VnMpGcH33m_hX;&#zhszXJErpMiqJTAq?**fSp_)PdsI_jblrhn2Zg)F?qFB7$pp zUMww(0hZ|vCLzeUHj3QinhKr5ab(MHZtK znaHMf6^EdwjxNw+Do%Gk4M=(-1KK%}+d2^rgW)KuK|Qxc4s%KeSkY~@Y(Ci&&+6Cx zfrcM6&KKLX_CJ-Ac~a+jg^2qX8c>3#N?qDDu-Eb3kJ%RZng4#_T^2dk!KMSGy_T3ee})mq(~n6^l&v z9RUo~ar7cX$r_NOC-!bS$1E&R*#FTAXVgqBLVt3GeX_()k)EZ?T*u^>aoK;vdx_PA zq?O($H^v)`bt2JfgY5l~gsC?Y@hPk~{~eMGL`(xR;4mrdVeI@MyZ`_M%>kZr@<0Dw z9Xf_AYCTL;UgI>|Ca)HZKBfSNxsRMHa5YRss}}{{TI-+z`2)DQoFJq|ec)(wXg7(M zRF;{6yM!bkrFD#%gaR@eU(@(R9Z0_;(i0Wr*PP@J9>2u<()mwMl*1nhp3tVYTnng& z+oB^EX9%G4)Fobxg>&>Z5KBYfOqycwlvl^N4^Gb}kqq91@{l+|hsH-v4UAo?vBQ53!=clh3 zBZdTd)nWZtIS%}~ppAlboXq@5SH|ukr=WeWRdb2$6&f=+2CLq{biq^D(kTOj+w!nP z@CnCnzrR0@aZ7I<)*66fG%EE?8-6r?Iwyd{opA2(_6$w}PADKhy~F^vz*&{JZyC*_yc*t zq_9&G78;&R+&MeqwNw2j?7D9XLK*ObyF8n06WEJc(sC9b^f;!aKJix!YSE^!!?*sY zb2-Aswm72wMZV238ZlXa4TaN_ug0OEqFD<~J=vF;#h`MVSCPELexGj37A=)3xgZEJ zob^*eepLkoWc(x%945mby^IF`ct^g0jQLEIIa1i*0n58aV&J?^9eH|E#wma-7}c%> z=P1VSH8yHW4z%~pF&O1q{%wygqe#kme~N&oN?PsHSdedf;S~D%hFW$gIpNZ`A5sWM zLdONut0wzg_Bw90t;3yJCS+gfg!G8NMECkK@Y6nk2jp&v-_`S`@z&&(U57drHJ!Xl zVpc}sHrAs@TzSWIdq@jtmiKO$;sK>~>2Qt12cgehrcOt4A=?Ep^%MgB*d8&(PyFq9 z^Nop`@Y;xyz!&WJ?`4jWmO)!3Lr5>dsx77VlazdfFAFkYYyjQ`zbtjX?5%7V9{N+k zGI%8QYH&PIGKujy1t*OUa$Ih~5jd%wq6 z5aKLR#F)qX^3Uat0;$~Dl~{m3Apcr($Kw(G-vbvVeaWFOHdS-&OX#P-qN96y^v@&~ zkNH2q(-m^wX6wQ1oJMwY5wn2DR%-c4-O4!sdb2%8YF{fKr#EU`1XOB+0_a?qOQ8^l zjk*jV#gS(3*dchuM5px-9rX7#Adqpc(W$*7IaQM!o+0$E;aS3scBehd@ir0oXY{@d zH=hS6H{Mp+<6@Pe5zlsNrrEMD*M0d?21LeJ>hcZYnIV~E-Lh9w$v6?k!rQ+Af*Y$@ zgffSzB=v1`ni%`Dw9s|drHSD6QjR&xuAM#e_VIZ}nZ#I$|Fm@a3ZTTZ;3CHR&DD=I z^w$+0AYclt^SVnKq+*aWI-zru!3`+!4-%~#;upI6FqbURJ zpfeQSA~6hEU`&<`6TFw@9vFHDI%;bQwp~5m1sa>foU(j&oYgR8f4p*BT_#Swg`;)d z4)`0g0JbT1&zJ?RlL6w~5ttvbEVP=X1(^T<05S#zF5E@wz2@0Sx0Wo}AlW1C?|3pc zG$1V?V{dY0ATc#HAaXJ}FfkxEWH4rCGBN;w001k2Wr&0TSO5O>qxclkY(y~Mmml+Y zSUa2DB!ChtEy8KW+`T}@pu>b`M%1ZIQmy)Lxaj#qn%0*|&N%?MQO_wyT!OU-F4dlE z1Gd2~G1(SYsp3BM9t8TmmMK{87Z&=E{&Fyh*PytsFG;g5wjI(WN_4h|MndRlTN4dZ zgzGjjlld-iaX$Nu=1KvrD9&a3stH0JVpet^I-=t!aTgr(Ax1C1;&CXZf^XIxb%J6q zPld%QanMo3JvGOdE_lEA9ZLY(Mts7Q@OnIH*=Xhf4* z>sMm0`nobhFxBOoHj6K3DZb-M0MqqeztWwWAh$1_O}LVNetptko0_)P)#ko(2v?G zX@qm3hx`%8qzC1;4J*Yi00M1MIqR?$?v~`ES8IDj8MqNU2tW|sMlCX`z$+1dv54r$ zYHT)q$3wBgZ{s=NMj+cAVdeY%khp3Wr8uE*UK@(dieFMyM^2bw{AT(sm6Q&uR8bLm z0{y_M9lDVS2?&B9*mAo0JzXNHDN3LfoU9-6V`ddD^`2RUfVLW^pJ*V!HrvV{Y*L3$z153j=gCa zKX64Jy!AA2`%mYNYF-7=0VMnY>Q@n9f8b!4A(3eVV1miLn^r55K183z(5Sk$alWJi zjlU_;^XK8193+GK#7ZT)8LW*Hd0ybs%@ z!|@#pjyOcLR_~d{`))nbl{3!UnQ)R=98C;V7B$8)nqy#@(zXDVu-HP4&uW8r^b*SR z$WdfPbt`Ynd40_zKBapEM#YRj*@c))NDG}ePWy5Fi*$~L6RpzFOb{km2rq2lwyd_- zw$hAw@;D6ki3Pi17utrlYb4QqHFX};iev(!Bs8?#0Yg*!oXltD$1BtbHFhcD?5UF6 z+E(NKnfQLY{XRWwUu$QQ?N5Oc;{1Z=nmWTmK<@L=dnOm6g!fj#PYtY!K#n#8LV9VL zFPG%8UY^MwVdqO<;s}-ev#{Uo(POZ?HTvXh-}3BE8y;e{0dV}xNqY7HDfQ3NH{}7A zNqEJSXGTI10S;dTjS`7uv|fl9K-%^3)H^J%t<+zv1Z^@$6OS`4dQBQ5u%h~cJ}vi| zUEb1AaeZcoN8B>K*2$8q2_53=*M)HVjCa~)EY0`A)JT8B%MjzwyS7|y$$5;!S!(*R z(rxA4Y>q~NeAJw-7Vq`gcBLDInNjRT3bnR%6UX%iDcm?yml>sT?p%=8Oo>N`XUy0sJ|TedxtnmyMIR7lBc917b{kl?cqm6>N? zCN#K71}*|}zVdbi)!S!?{-69R($Qxn-Knp*dDiEsBM9G_O%&0m^5%mxBVZ|;A_Dej zt-w_`06nX)O~*l=M;tH2c?<|ITu`}M1KXfaZ1Aa07cUr<4aS^kcChV$G_WvWxrFR^ z`==LB^xt0Po(%wA7BK^9LeIo1B|&?w`b%1@e{D6iX{J)MaK*7Wn!30`Sy*pF5L;I! z&gu8(7bBS-Hw8;kE+ufx6Cug0u#kUrO9i_zS>l)TYIwUIJK;wn54l-F3<1m7HT{K# z8IG6fxiZ~#BP&&$X6d{4=D9(vCrbSEO!O7nfX(HR>nAM=-DW}Hfy{H@TQ*AVHr9;y z4nmR?rk7hxh$l8={b%M*5CoJBUE_l z*V*B;gQs2O7_0R>x*}qUctv|eUC@GIz6r}XB?Cbeb+rDIkjSTHmjJ2T0RVwMVM97g z0hC5b8p_xowHy~1ZaL*qkEr}FC<~Em%@ik4;@WzJD}p;FZ78c2uAM&%lQ_!~Bdq{o zrZob`LU57|UMpyezSxYU8mYvw2XkfiN3yR9mjhRGzSD=nS*+_4QDeU7P^@h~UX;WY zY06}`=pe^Kr`i9WiXsF=&tg;C`=AFcaXH1e*%9rGUn<12blwP$TNJthRk2Jw1ozNy zvHW^MixW`x=X7Ry5Hj@;O6AY8(4bb%2yD6c?@3sYJ)W`k6Q`N|Np4P=AxGvMC=KXO^&Dcz2|Hc--Nu;`bp;o=++l5!l}FWb*7*5_lSH{9)-1F&8{v!G-1$$p3HOD+M`O{*HR z_N0i|Dw(;uUO#!n39ar#jayW&Y?VUChf3Rr-6-g>2jcUuHACneEv=Kmn6R>2QT4HN z<$DW}3bum~Jkx^q_JYgLbwk0+12Jrc+KdPNKlQtRCiRZ@L<&#$rW5vSfB?#k(j2Cw zC8d9wF{dH^CO?bW0T+wNytNobN!M}WiARkT`ik3a%CvlnnHsX?Yo(@~JPKo!giry< zij#ALe5D8Fg}9Q8IPNNljHRD^n9yM32HFEhHY&i9zl0mc;@rjCu)Uf$_OBwpVV4h7*~w9qeccMY9tU4p!(wgV@4G&8EVDvX^I__^ z*YEv~X$EWcN0HxgWOFtha=sKBww4lHMic-0hC)XK($0|8f6MwYFHQW3-E4d)FW8ue zOT@PynQ2z(ocClkvH_CPhF(!U^agMfT0LqR{59Cw27Fc--Tk{sxE#dl3&#J8=7BaR;=DUQwm||S7X-!k1cv9awmj4IMHoQM z6ePunKl^`+(0hB8lw~h1G61ppU(s%zg0(j!JcR&KdiKs3*zQKmFep?}$7=ULzm0-_pP?*cCEu7y9YUT;O8$NLGBixSDs)h0n4WhxQzzj{o4FA-b6JQ! zab$voLMNN^GYa%xgVxlcb@nfaSV;lh0i9f6 za2FkOR{`+`BS?fHUJL6+ksnkUN^UQ{({-5u5bcU050!^qJaP4g&zPs=Jh-0xj~}X{eF32vCk=w=qI;tZoB@_}FqYs?o_z%+K0qBomjx9DS7F`1URu ztli`DHR%$YKEg=K-a_c70n=Fpe$9nD($z=Uvl=uvF2eyvv;vW@K*%+ZIqTWRUA>8jnC-Ac9uRv$sEW`ieMyZN~@D3foBzcK4i z$y7vSLVL=gUSk#Uw<5xN@7RZ(Bl8{x>D6&L^{EOw+#52%6?kzVYjj`^Q zt~ezJqAk3Au;yyh7)RWe-VFV^J-5$J_<8Vhfq`gUmP!=W)H{s489?a;?+~clsd-Zf z2=}Ph+FhVI2yvOd1m{^uTCPvZB98Wb7UdStotJ3RMh|-#7?76}@SX4p6}#8n0jF%N1b5s{#T@CT>y*-^3FJ4X^JZ|c z+W*h8p8?fj9DW$)uAucW2xnyP?jZoKNP)Nsk#!fAqA=tfgfK`GNUNR}m}NBnvAD@` z3Kb9;dDLTLoiO-ncmNI>kIL5*GtOFNe4OoVW{74buB#@|M|WmGp9r7ef{p}gBf0U5 zFrb*8UblFEhzTBN)6#dxn7}>jKgZLPx`+zCjGc{|@Mcz;UtYOIL z5aH$A)Ffej#rUiVz!#QFIyN`cgj1Qo>MoXH`-ov3;+)}v)hh%H_tZRQ?i_>UrsTm0 zoH9o_P_Yt^tGUx>T`?R(;a7?rnOFtAtU-&IMjg``EvD&%xrWHG8iOGH?sAU_cLS8U zPkB9^<|NET6yOL%5$O>t2BWam;^q93evV?}+R52a`Vfl(e6fjV|MTlAk!?ILzOnHT zoIK8xk?Kqi$Au3=xe1lempppSf);Qt2jbYA-z|5$kE5u6OP_R=m0`nxM(jMh9UNro z3R$4?=0t##WICq&#<0apoq~F*?z6j(yHC!C$O~`Ny`!~#g=GWe-=B%GLvIggU1opP zk38HH(>%g9rxRgG_7m}%ity$jJM8!U%JOAHySzj+^MX0KOWo8+qbD%_fy+p&r2H}r z&Vg#w`s~UsnU}ikPYsf5qfQ<`dWSQT7J6J^ZZV2dPC5>2Vt%e_f-04#W}@aoxaQ1o za|Q(G5Iap%-1Q8Rl{OjbGgXub0HqE70x+4yvq>cP0;^_u0v{4F7);j^35aY}2-X)z z4TKV&5NGz+yJmS&2T0JSJTB9medxh(!b&h55LdZt8F-SmN|O*?TI<1dhA>~&=;0fu zmA;mf+i8!qaKx1-6=lvH31P_JSIPc(dae>B2InOYw_^{T__B7(zt7JGb>|9ZNh7!% zLvr^n>~Oy@aoK(AqH^6I#*F|=9+6LJA##;7*~8!uluogb*F!B->d0yP%_^StI z@1h<4Tk-B5K7;-Sq>g7qu{I38-GnvUcKD+6IZz_Nt2_0BY@+)`1N&Nh;>ukhcsp?# zN|*p2tLnns(sfmrCdlEGVDPu5qjzlTHB_hN=*zk7wZ+f%S&*SPquFwEkh zxmyG_?gQ0yH;8G6v(rqa+9|XFK!@(P!@2b39C zMVpV+hAFTxQZ1P7`2oHQJV{=lcwMi8h>f3UTCwv9G+qCRtL68S$13|svU;J^+kq$W z@uA#z#i;8}4|k`JW;i%}R72vL%snJD8;B_)Cfjc(q4E*giiA7L?n;^l`A;ZGr^`{= zJ6|VvQ$Wc0hvZOaf5p3sum_X_}xP6>?U-w9PHYQycV9rs(W`(^b%^%Hdle8g&BDb`a zduph5g3c& z*sAk3yv7fIJxQcqX*v?$ti z(!y?Q;r;5fNAM4g_aA~9izB$%LPe=UROYPf@VM(z4W@jFu|am*2?$lyUq%Ax9-PCY zv)8$|^Us|Pyg-shn8Sb^&xqP>hJWJ5$H++is2}5NZ7vce2SsaGei?={aQZAW;)x@;yL)^BBlV(Wq)^}ivvO>Y@b zjk2U-JalYRdh2HhOzFN}Wb`d!cbMy2S9*}9nkplXPzjacILw=6;Ky4H=BeAlVn?tZ z171}Es~*v{^kZd!>C!Lhj6jxWdAB8Pw7MS9IuTNN*PhW9mZgjvOZ!80rv6YL5A6#p z&_Ao^=>TIuoWG5g{n#nutmI-surGvUk~~n>=#J_TLSp`AfB!e1@%P^f09qp%DqnNJ ze<2e%uF@gveUL+oqC48%*s}0ny@AZAw@GkZU-JwIn zS|rWv$NCB(?oL-%z0TpEjxEZM=Vg}4$t=eX;@uyu8?13&RV>hJtmR)?ta0vlGrTA} zOS6|N-usB2eTFK(o9mLQ~9TW+H#(W;=-$?ZGnwzF^+REGxQfhe8gv|7e47;0ox0?t%9D9(|y;55= zrd22auvGdMW)=Rn^qcl!j^{pRcT5T+1x)Fwar%|Cf7|Bc%ly~&(QhJzCyqy0ttiit z+iB<<(UlK;`iP6y`0=$AD*QmXQRKdY&>inC{t~?uaxeMiM3@Vqgm&#z7|OV_np120 z!e|ksCf420_eoPAjLbb(L5$+ithBtdt9oJ0^`1^Q7m2^~o!-a?DpJV(^(|f3y%JC_6iU@Jt) zTbjcz`e{nKt<+q|S`R$eNM?j{X0Dm_fIyeZv+x5nOz~h}JR)9TVS0Z|hQVE1#35-l zwJ|8`qUf|;H?yZfhD8DyN7VuO*~z6E2B7nK{CVvHR{%CDQW+xEtBFRQOhXsh(wC6;e`#yRHw`o+j~=PYwc7vm~rmEsz?5d>kYbv*_a zoe+32uO^YxpQ9d^1>xmo^&+S?_AS;Vb}oNPTC^Ohqow6o)HPauJ?j7&q)8X{IGNIk zTRBKMrVD4U>zg4JT7wYj#T6|?V=>scUBb&)WZXod1b#)* zB}71(ertr}i;2yBwMNC457_K7*Qa+%BGOqLJYLbNIye2#Yj zlT|I+ah_u;aTaC}f@7{|x@Ma!7zk`D6V>NgYhm5~7n(S6twZc=8`6G1Vs=RYM*FCT zMut0-PHs2+Rk4@?8T(J)9q3CO(0F*$2Jv(40t$Byum*tFC_klds;i#&cu?)`;6sS4 znAiiSGeF7VXM!uNZed*8xs4T|z2G={AbK9yO@I!Kq4%eo)wCy_M(RV@No%3!a&JDA ze-W%WBOa-se@fuf38Ej|{Sv2)^J1*>H#Jd6=%_nOcD^O$a8&QuH@x@%p?Udlz3wX} zm6tVqYiPZIu0%iD!ntMZg5rE$SwvWQ%pySxX^MY*J%WM^62H}&_vQ_2K4eN9)n>Alo&e22KkCcMZ)Rr%?4*e*bd-eGM!-QM^?E!um`lS#(^CIw# zKUi$f+EHwTNRX6l?hn$W_4|A5-JIVr&w49dLypMIqAL(h_RUWwULy;4P5X6NcazFz zl7oD#qVpHMu{__~L)&BmuX2Q|wYXY?`@l{Pg|_c9(4= zp1`ui^+7l27*cWnL$(rMK@kNq2PeXuPYMwog(Udq=|`K*s~=OOwN+Fy?C+YUb$^Y&G!KmrT zcessok{3Q1iSxFof&HHX%G_2eF4z<~j37;YKIwqX73piD4q6ESUx?(M< z{5-KXe>v})RWQyT!%UkqzBwohc-H9#KjdpcP*>0;Dnx;W1Qo=0ypGvTAFBFgvL)8DZ>5A6uy)u`Xl=*hg=( zD(l)Fs!BD{Gm7XD2JI-O9e($^KVt;Pl%J}G(Cda8B>TKOpMP~!BMXLDP(=~3So*{< zj2xSWf8)#EzvGF*4D;ZxX;tJg$w&x+T-eT}$r=4E#)$v76es<%k-h;|N0mwo-bY4! z!+#W0R7mwp@FVbY8}n+wrp`Wl=Lws@JszAp1dO_{Xpy=J{!r-_i^zYJcgG8fKsE_bm z-;jc2g>Q{gfK(a3SOoO6>BfAPU#p-Q1F^#s*foX|CP~D}*Q_>e)CQ$ueK!c>wM$FJ zl=#YZ+vvs=&Ps_TOYR?^Cq_tADm{d-24b6+lxcr{a?S_3pL^c9t8l1%r~fB0KJ8>< z`LDGW&P=-P(?R$GHm%v5USi>7MpbKXzo=RQL57xkK zs?e!(oI;4PoVHM4>fS(l+n%erQ>r>~VknkRf$Ff%1Bc)=M>b1qV6tJ_+GtPa&c2`h z<*Nu^P{Q}&J>t=<$KCx*?Z_B+_w&lfdX_8JT@o4hqFn5(50fk3UE#4Z8uj2cnB%?{ z{19yjeF{0JN&xstDgVC!egGYXE7;u;_KwTPiSAUEeJCi=DLSxy-uCXd*RR=))J0no zW)|-90pPZDP-a;7l2EtGb~C{v4x|k4C^^-GpEdNReYGZvq(eeu+Yo4Bhr$ICL+_e5 z)J+@w$?B@tx`o)(2B1trx_ctO9$G#D`KaC-|6HUG^1}}~2$j_W+ysV%j;d36+Re5h zv!(>V;`0V*)ZZFzhn^lBO3q2nL@)Rgcd5BudPm#*h2hWlzsxI$rmx&J-lD6`%fKr> z!SXip&k&(HFH=LACC>OyJ6QyR1FRsRKe8ixSFz9&tAX+sdJs$Zm#u-ad#%&VPo~aB-SPXJWRCulA}UKENIsfI}8C3)~3wU+sWh z(WHDSzdrAy{M{oJ`(!h@E|3NG2pAM^!T>$0|CjbuPTr+g0)Ivd6jXf+N-paeW56qW z5LERP<~iitFgXRDg1u&mD2%jk?|jUl={(kH0XrX4%5%#7M3v2q92wxG6@VSGhZPk- zsw6)lRQ-Imcm2Z66*p7JfAmc8d_8VNRnY90OZ-&l*;Myc-_Lqi&D(S`RRuQwqB4Ns zzuhBzKE1ZMe4jR69~^BbK|xhoVUxGEQcn(vj8mLHOjZp zfuWQJdf^)>ZLE%m-BcY>Nuv5@t-|!)b5MLwV&1JD12W-w1H=IXm+@xjRe@RRV|wkk zx+D;UdN9MT(P0Ly>&iq_6!wNq?KSfni?A{z4}B$o+E!5b(^`%#p@ll8< zt0OMS4GGnA9y>^6m^;4@RX%I#nHeC_%Tu1(K}Uh(eg^US3m1Jx2@?R~R)u}U>{yCP z%<5ioWX)G~-%XeRGyadz~s9>gbUG=TWi= z{x_JMTY>)Rcqthi*Ea6qgp;Mw*XTkYZX8rZj^{0<};lB^j}zRmD;xb;K#Eyiv6&+yWA$1AjdFSdK}{L=!> za{ANo@({?Oknk1y0}|<2R*2&doJfOY?+Q5!ApZ^moRGHoHlMS5uH#s&cojxk{Btro zA0uF4MSeIbA4Y&d-sTw{4YpZh_u)PfK2S$+51|~>RXpIab5rEBm=#eceKdl#idTpe z?lMHKn2HPq8Q%;hHp>=5hcm~m!)6o04)Jj;-XE?`Waw7vYoG%-7A;ZxGs^gbxwnh- zTR_H5c~Stue+UEX9S6`uH`2ODLWF(?ybBN$6x(8vwjuiQ{Gsa zqaQcC&K^gxv}=-o2o-Jpb`cVWah=D`-Z)Gkshmsk+ZhAqwY7haqsqFQkA+-RlF&Kb zbI>zBJ^oHs7RvK}Z7$(vLO&MHdy0(yPJwe2k-5j$O4m$F{8D#7s7>OaYaKqqen#hA zylD7k%#vA?Ejp06gD}DoRr^ysPrHd|8rH*n5F5_K*TR~Eu;6t`=Z+R^_!E1Vt6Ik{`;e zClu$Gk-|bnlz?4=Ll(G5pQbs>mprgC6!UX6H_!)t*=j?kC-g<>`=c{qyfNn9#RiEM z6UjkU4tXU(XQBT7{m&u>Qdilqsk~m8v#}C9)=1o0N7wpERNVG3`@|u@ea8_J7|70x zadD(hs@SxQ_Llo6QzkFnl)fPcf7I+|p9M~E4DR2t6#|G@J1*YiL`;aTgdjE`E=ZT7 zLpmEz8(%d9%L%kxq7=(uiUf)D#TVfWKBUH4D=giyCIN%GCNUh|TY_jbU~fZ`(||OE z+D>N9tU~4DIG;tBQm^0ajAQ-6U_gjHb4f@izH89eQf+HyvxZ_C#}b<*E7(7QI`MV;{)v6TL0rT6v1|tk!-GfvU{0H!ht`QVM1tQtDc)%29<7`l%!QoD23AOa zx6e7c#4Ho0iM4M+P!q8M8hp}Uh}CX;E{@o50Nh3m0s{U804l)fPjs+DI-36G z#x(Db-+K7xP9_MgQB&xrV)D*C%P=mp>Vjpecd-G8w6hJ3`lYUBL%{fEprXiKn}X9> zqLm#@v8ZdfH!pFyU-$06KF`>Rl#^?5)kmWPe7M`y^b9Wz&P9b#EdH^=03K+&1p)Zs z-E)lqUeK2fkitu0cPvnb#N6ydsOEI-GSdaqp@4zjZ(!%2xqHN6}ve z{|gU$@=cTK&O|=HyUAIvM|~|>nlMam8dE?rOX6@1=cAE>e~ruBfkg2zSVZHhQh_2P zu1}LF!Z0=J9VzBA1qk{f<_2)IHDQa4p&-{eRKYq;jFyq0Jq%hIXE2FDA>u7&p9!8) zh>Twni;3I%g(tJsd!HvD7#z_-G>#7De(x>d8sF^nla-a;_muO<6X}8x7qkQYYycGt zUpJ|C;cyW!KcdJ))-+dn0ZA3M*QHM)VRSjhD*@giY#?`LVt}-hpyr`|DqHH9i%J-f z>dd2!y|M}aeoce5svCaka?L9kwVjt$uDZ`+nK-C1TNYShERgHVP(R+ieG<^g z+`Kye@KlTx!CFo=_%6W1)iQdClN5lp{V2Ds{@30RcBT-Am z?xp~O%1}~{j;LU__K*m-!b<8I&Eko@K!Jrh&2YP=!GlLBR;mT3CV;hYVb1^n47)*^ zB-oGt_oBIg7Ed#XB*AaXB@b?nruS)_)BV9BKaR~unL%zq8xV#O|B>UgnV=_dzf71d zWmnKIA=V^@yzRg&R}%enW*{MgLqmHh)*++ac_j6bO#b7)3s8FMct{1t_2Sfzm`91? z!S~>HFnd}Al)hTRF&b_5FW2cij$b3zJSH*x+@92~Vt&65UteC#zkwH-jk&NCOZKbQ zW@)Z-4X|7MVh>aBIkrS?J6Pe|Wt~~_ka`6!CJ`vy(ogXj{m^BwePS19d(D^)pOni7 zb)^DVcn_*KVor5KQDv)~X@AGGXfuR+`AjQ9i;-A@F7G;Uuim4sqNRbdiDf-l!|2E; zRP;gFi7DyK#EZ;60t$@6Re^ZGH9zfWkD^IH)(h$AE0ZOC$24g;Sq`K`%!&ZG-XI!LE54SV?$D zN4wahcQljMD0L*B-6xDdE(PQDIH13^lRwl#J0D4P1)1|0fLXLpz5ny$oJ!nW_5Y^8 z)_3KptJ5EWiKHUC;8`~b+y!*FF+ma}2s>n`KbY2)OMEoD2l2?Ci-vHhjGDfat6M+FxK~@8=%zJ)pp})&0mir3~4wd zvL2VW)b6->Y#w(>(2r7*2O_e9gT7Z+nH*`rGN8-lAl`y`tr=g*e$zub}-*N z>~{Q;K$D{Sg_Oi?Q0FfEyVcHaXuj>xP_ys&(8MU7r?Zw6QeA9rV69_nCXo;hmRJ;# z&gL!oS;OaW7v54!IC12lp+#e2mmBca-)lG7}fY5zbwUh~KmXBlT+WD+8tVmr7B^=JW_kBJ2)3 zQbM3uKFft3Z0H8c2t%cpn;Vefwqn*y=n9)Gi%-AM0(r+eHd=3cJxu%I#tD;zp_9$) z8{2E&R&(&! zCvUzO1a$Rc6CRS(HBm==m4TG->3X0k*BUpcLnV{bv_|gPRlYYut}oN9z5-27uT)DC zO}!rMmHW))D@u8I7@B%iSg8cX3Y~j}^4lyY3+5GCW##4R>VRP*b$^(BsPdVLoCC}4 zSCV2$;`im=WV^OlHK$p=f ze1cHLO*+h9kU5Y_-<8P#`G4U5dQ+AQO%~-XmWMv&veIAW@Jw$oVrORvwkDb}EH4t`0QF{8tSx-n za^6Wje4`q$6j?p6{lvl)y{*VuYiKL{!ZtTB78H?vZBvbpve(cJxmS4@m$C%lv-{l< zdU*x<&Hl;Cu^2f$k&TtK<0gg-1vndPBBa(WNx!E7#YmZqoW+j3e+~YZp!@3giGQ!B zOMCJoFyiA!_Qu*Z-tCLBl+q~zGY-i7Ci+udNGUjCZJ$| z8JV-+b67G7kQ~)g(g%@wu~1xQ4md?fLZ+tQ@*WaTo8?g?5RT<3o{TZ~C9qyB4zq3< zIs)(GFuej0oLK?WRIW#278K-C7&m!RvmkvbV2Y!sf|m4b+7kg z8I+6^Wzh?ZaS-x}*5^O8S!sNdUE(+v+RI0o z5M5pEuC;Mt#FiGJHS2O3t~#-@-iG0yfEnYr=$}$%oE9Uqe0(LR8Mg23l?`Y25F1{B{v%DPr|QlYC;CCeD+^7N|7QSRs8s za4F#%vLU=R#IJeve)ai2#*#4z130?dy*r6X3+hfK3M>T`u+4z4J$HbR5>dN}tRxVD zy^jg0nEF%yj!B@c{RS=>v%a-lZD*ur#fT8@bTm<)~vyzq|q zvl@v?oC{-br_Vy@jKBVfTvW!N3Nr!b2$-O%I+)dzv@)DudeaUVcUhlD6w77o{sRIz zsVo|>K~J-($YF%Tx)k0XqmD8Q+bt)f-TD=VRcZR@A)Vj_ZLs5q@V(uVTeJ^G38tKt z{u%>zEA850yDGv8!7AVxdmOI{IiNi}K^V@F3$8fGJz91!GXR|SK}_PA$isRS9WL^p zMrRxYM!-S->7t9!$&h$Q#edh?0y=N1=`Z}WcPj^^0aD|AT&X2byxBd7(aLsf>|%z{ z1UTLj_8RYXXc~Kxk}UM~fq{i*b{_Y3hn=Doxha#%;@2d^He@zKVA{8n;pio z2f2t$JV%Y)7EEQ9lNzBuc;A0!7|PwS-@>cg+MOni#`q$%R&|XTjUqnJS*>^!4<47U zEBE&3cP1*m1C{Mfh>S5I_Zg7-Y#U3nB^py;R;gLY06$dqg#Rii|DV6L7pHY0?lM*{ z%R)eWXB@}3*^Qdlbp3Tf^zm*@V7loi<8xW&4^UKVpE6^pj|iyCq{nS8V>wIObWwoj zOghQgPRr9VOSZK&;5i>-Vx=&+-%Kn!)R^r(p7|l*8RQ3U(=ufR0=TQZt>+|8iu@Uu zU726@)afMDF4yF9-b&nRXSQ-OG;J(d9AHP?(udABhHI;~Zb?{?-RHnq_2dT1Y+H$SAbDV zE7r}jW)Sj|FI|$WVecm8W?@FU>xps0OoswQG2>-O!it#5%TIhCQrM;e({4RHmk?P^ zzVHar8WS3?#T&(zhWhQtZx?>*_P!85n#_C#swG@>`u;$RB?wY*UDeVrRmt?YX05*E z9J=Dti}0|zEMsagjXt07N+;gHDG|lscDtcGRFeF&7pN`jQ@UtzaQ(xHux4zRjzp-Q zs;_;w9W?woxX=sDwctbMuMjIr7LZ%eZK^MI<$shzrcz7p^<63AI*u94t5)bn7ubLl zr_D!|uBHa%)^STrG~^TIM5@QPmm3~9EbA8gYM@(fDh^=?Vaoii&VC&)qh+U!Jv2#< z0-SJM${uGDL`0~h#XB}gYzU=Eo8_}N%4g@kJK*_mvY-BYK?sw&tmu>!O!E$3CHqOUdy|iDp)5C918;1hOt!d0nEW&EjM3% zdqG|X5MrA1O&}34o6q&X<0lcdJCO&=k*;7u|F1EGSiN-)C?_=*v^U4!nXAVmJFH_Z z`b+SoVZzki`0o&>(zxdrQ+>9S!fucstb3hayG0vmxepa3scf39jFEgzHxyB6(t-4L3Y!)SiP56NlL8b z`Bnz~6_X1MtOIx68}8PqzJS8`fHQ-!H}B+sN~*03WEg`dJWY&=CRJ^F7JPnQjj8hBkgDfu`)&g?pz7MiZTJF)AaAFbV7S7!J`V#geM+|zNbHCKm{fD&{ z#n9q|(>z}$Vm7ITXW@v-Z#W~~-J}U}B941PKWPxNz#`{coK%hr^Ev}#ryK}yz~nE= zQyZsX&|Jupg?n;r;-{nSzWMX-=F^Zm*y$)**zF#b5nT1X^xlt}Id@LcVP@I^4>b(VY&Q$zdZ!{Fr{9Yj& zki?R>1;mUZ`=`{5Q^X)`oegr@{(@!KalE8rqkLsf8LWN+x30PO2tPSw>Qynsr1oK7 z9BSP9K_M!X{jyAgfgqqPL<U*6SGnk|Nsh=y8PSza7xRyX~l+ujM=$ST?FuKbISmd=XBd8MwUa zu7Cb7b=fmA!4{Ch{+b|;2RX(J4WI-S;S#5-e@^@%6f0gc6Cu*6FdX4`DmZ$~Odi=B zne0cyo4lL?TxC)x1+xoPw$}Bp;nj;$0WwqFr|tOrFfRqkW29sNLsrOvB!Y(4vP20? z9|I0d%NC`wN5MyDXm8~xoyW@LC_V8vmtfV>lL<^xxuBZaL z9wAJ}OxkFSNGqv9Qf>v_q{Rp$VPRAaGO)Fuf5=|of|SUeNXPSi^xE@X4I7`3vEAWu z)g6zvz1IHq_*jiD(mLcb-Bn;UVt2`k+8RM190}6;2+HbPEr}ATJMwARugYu6zL9Pi z=``Xr9jMMYUT*Dc#p>gHF+PrI>P(=T@tMc*f6%&FB3#+3*ZLz|%b8WcW7Ssx(%qjoC8(#%+12*f;Yw z7$R=2WGOc+b}7~I3r~w(V@;n4MVF^*I7hk|)j0`x7X>*NWw{qcN;pi=i69ZIu6t?(s$d>8t*498KB}1HOfuD7=5CcyaobDwE2}$qM(cZVTMUKV z-t8yfYle5Th3hGTAXA}7b=0Qm{H3>U8tu{*l=InSChJ(vNtz`EMFMdR47ReBL_~$; z(h?by)Q&Ez;H}yLUf^0aN%=2Aa<4{xORJ$tLA0OT?Yi69Ozh>%X6~5Qc6H+|lY`rw zPG0N73#-(Y&Si_rh7VA*g%jK>0eRA61_g)i3K-)vX}}?Rl=Y?#k0Xf05r9lSUWeLi_~HKYHHak z5;{i~mW!;Yrd7{fV89l7APt})Ie8xkma*PQ=5<|5sxH2CT_#-S zM~N7@?uu|HSJf@tXOz+|H$5>?+>BJf8PlQLy3V-!P)b{b^y_6p9l|C0Ry@3LfI2`I z0U;E?>6H-&K8l1%o1KDiOjY%UV{!d{y!iJ^#-M{M(WPg!9Vmh@to5Zv)ZyK5Q$I zZO+b_O>=&g6rzq}B<+pbmM)RRT68)D7-qve4fJ?=&)D(Xp7+jr$#$Tdx|mc*>f^|y z(^PV|jM*xubCxU7)rB!RTPYjVmnU{7Au3B&tXA;r`oZmxH@rm(e<_Zlj( zH8LKBEC8jmsYS#@K#^+b#$|mi_qp*}0<3l#M_ub% z`@71c)V3mWiiwH-6B8G7OR2la|(yVE{^ zSVX5;q?GIKu6xcf>?aFJ@8`|Cm|$cKmAQ)+Y+wDG6PRc}bWn&G{1SV^7~%~VXvl^0 zjsg~Ck2god?>q2*?58k8&wLhxsXq3tl+`y04yQg|A*X>uj5D^gFx0yUPysA_HaZ~+ zl;yF8ml6tP1CqA01j%yksMJ^|;N%DtRU3IZcJt;5r|$-?4SL^ilyXP(X*WDg@i}=u znmNf27^cDP-u7En1JTKFx6^zZxekL4-`v$f2Gh~G#{n4!x}OnU-!62-IRMarX`4%9 z0-roXjOBbVvE|MPkas6*o7GCQc86rf0M!vry-gMBefUadnk1hxELmy@q+kl@i_C5% z5d=}l%BorfyR9v?yI|-R^pi4My-SK(?Ji%p${nwE{QtSf>p!ivF{BG+f_lz|HxZB| zg}H9o3NcYY8ZP8Tv^2G#|3bF+Yxu-F%@~ilDPuiy1Y39p#KwLoU@c zhLY1?tGm>vMENF6&J|P;F1+k`x z5u;d!B_8Q3~O~4s) z+fUYu7USeJu{**c1JkgGg>iHyG$RB$>yR<9{4xG$w-h^}1hCzd>Z!L{3D*#0#+8^1 zwO;itazhbTvX(O7k&Nm!q2d%3<3W|Dl`xplUQ#n7S&2~`VhX(PS&^u5iR%%tDG91s zVk2O^;!dh9FnL$#nW@Mc_Vm>iQuwF4(!X>nis>z*PhiOr7HZotCiIplRgO_gvgbUz z`5CbQNT{@&h{_Tmk?ma}`UPoV0M(Zv09=Ilfvc?}Z2IJF!$04VJwYBUcOh?TnS$Pc(64dez;VJg69mj%@|*p9o-5X>8~8`}W0S1G&(F zRe025Ik*xiL7h{BNJser6r3OG_GYXnLG55~he!NOwkWQji*c&azz$l+#?T9tI3XI9 zEryuINSMfrytPqO?xA{7yJ;LXZ7u=pqIHaC-q^Omy?y^0;&<1Cy)XX``8L;NxGNod zTG-NKB^r&gUguvt7?$M$B(h1_j(o{Mp`mAV5wc(Q?f`y_qB^9r8AiwX1|i=g;Xt7!mHX!ovM=L91sOiIgar zG{CePwv8ge&$6LdSS(@p^I|w{Y0sh3C17STuPr(9tu1QnXidNFy3Tm43X7lr|M)>sPh&t> z=rcGB^4iE0rPM6V2?m%0->q5i&UTJjzV>geSV&q;n2qai#WHO)F2MjC$0SDFtbG zJl-}nC<&~^ddHY_FeTr9a3V)QAwdiw)g)ZAhWVvzQAsCmp;BlH)xyY~GS|xvn$wy* zqY&cM#PK3p>LE!<`JFF1r4+=b87DV$t(oWXdW53s*$#Pnk0E#-^tvI~8*xyizjtZe zJ%2&$7cU|$E{|vcPLl1o0JSWD0F;FNq*%d68I`w_eSkC&O1Q?Cgb3%jG^}VdGzUo- zv4;($Ys=WxC^<^t;TJLSiySZ4GSE^`a1aHI`p&5_IN4(ket_@fb*hk-TjybHqlSH$ z#as9;atnGquyx9%kyW%(D!G924m-&92vvhP(aOQV=y%`N2!-J8^j{J+`F$s_ThfCk zvJW#`Z*i$kqG@aK^_xIWjURdeIkGawAVTy$AqtP5`~Ua>KWu{_;4E|*s1*?zRn3=3 z%~Dt|fnd-;1imOz$)a|AAHL9Pk5bwnJ2&5^+Z>Qgz4f&g2W&a6nbdGp6M>>>h~pDf zNei54g@g`Xy#S#(*bo}jT4M3S5=;L$`EyveIGQ<0EoKciBmjD%W&(+7x|BC$nE+%~ zFs^UD&o*KaG9-#<29SaTGl-sFFbS*<%4$^V7k+^rSoyeARBJg>!0vq&i~ z#NYr^p-SM{7v5>?>nsI(c2x1P{YKlyf z-X>)Gi=Q1SZ*g0%<4fji{XGyyIuV&W0iSX^%QDHHTrY^}xixo-_rBr5gqDWWUf26F zJetE@2E8+I`RidMpzpFArU&O|r8DzpKXY4_dg-0a7fuASUk*S)X)sX*cbZ zNz1jw5KzScnvo|y87|CsbX${m7)(vDzD}=$)2r{&rr1X7G>QHr;#_zE9VB;<@u7;q z51qgOx1RO7MH3-;MsVwEBH<}<)nWywbRuW~D6LBu3k6DO4mb}LVzLxx0>CvW5pdLd zVv;EQeky#$s6oP|vK|&(1QnCEJM|0Tx?hf_K)Q};IsCl%MAX=)Z%Rsx7k|Hwh)JQK z#b~PSjzp}1Hmbmey7AZYa+}T#8lqUBNz|Qxllvq|X@LTlocC8RIslxMd90Pi6xkFWp# z)qy)~Vz`*F6bp?8Y8I{7R?Ib$QtAkV;b2LE7E%sv>h9nsli;Rq@jSELZ!^+Nq0u`} zJ?sb6*w%q>eiR}l9sJ*lIwzV_8LV^z5B~p4g9CakD!uh8fxU)dwK3m5GtlzXYYI#( z1QNa@7FTNGLJ#1Yo~Grq-gi+6>h*p^>g{EP##BTzx?QTe?b|ULdDSdZsnGI%>dCQs zI4Ri9U#b1ua0_ttUB3><26})Ol@lrn%G#h3+)rND00kAPW`a?Q1xaN9!*^&|GR!o< zU$~J!1YCg*=3{Xe^}y>Zz_;2eRr+LLA z3Du&RxtaR>`u8ZrScpNjjymq{-t{@d4U0| zEF`;MT7d9aKh!7i`xNOZ*f(e+CRgtF1w0FpP2Gj5ows1I-wtCtiW10@Cm|=IX+dd2 zL|0vtKK+ZU5z3xQOu?2URh|1RT-iFau&uyc4)4wx=qk+dYV85wd0(*Lrxw)I4_dU* zmMd4|+D*gef{_oqwn!oMU*Z#V6Es_sc3Y8k6AG-9ND&~Zu_QFEMQMlE$W+$I3R5g- z%J%)nGLe~uBE(7GxqK2(Zuz8bYI{<6zGF5-u7N9_7^*eGpsT=4r9{XTWh&@O^#;`! zgUuJ2V%K9idNtA9!>pRgLd!1H(O1kDBy#0#oA$i)Pc<<(N>BlLcZTPKSph1bq1{P} zo51NHTpi=UWj#W73uh^K6fXehQFqoCM+d<-4k&R)qHvid%>h4|t!k4F6bLD)CC_Zg z53K)B7&*cn19{G@W)Vg$yJNq@mf})rb~Y zSs)cL(G^4A=MpwT#W@eTiD}`(T0|wx3aGm_Zq~| z6;_GTdE(=(0sr!sjkx`>F-xr@`lyHip`)=4M8rS@7gQ)5fC#)LF2G%%QJ%Tmkp~X9 zn28E?mg#jp{31mv{9c3XlK)|MLMsYGa}lD4{T2k@H*Pu@%MzrJ4%> zilGg-EtkrF(ff8`q6_oTW-k<~@(NvwoVR$&hPT5`kB!Kq>ZA>WuD~$>9tFigUx4`K zzdzk4>!<)mKSkU2VXC{^ednk2__t4md_D`(CGrq;?q?Na8+bGI%>fPI0!YHRY=vR2 zfmsauYIV>Nyh+u)+`+)?zbi#7s*-BfG*AO59(%UUK8YjAFW-UEfVNWTK$(N-y6^xBD@YAi?f~m8)q;POOmAeX zdj2#8S&7i0-r10M=&_|hUr4?8@zJ^adSZ7BLKcyk(n-Z;9Yzu(IY<)i+O!dkyj9S2 z_M5J^6aJ+V$b~4DzVSDg!+;Ta=c{Ln-mboyeIrSs;cj|0WC#F54Y_dHy>j7$rs0e6 z(Qi=7^G>JgMab5XH$VdiAqtP*|NlF|L1}|A;7C>q5KICkMoG0zc;6ek)>=@w4J<4C z2$t}DN1pN5-nzN5;5>%HhThqUu-6flvo=lSu`dBdXIOzVx*YR}fHIh6l*TDQFnH|G z-*bYD37m&V@nD=IR@hV!Va~bG6tfu%b(E{yfH($&{>fMK^j?ac@V82GuA$k%b{qJj z^1Yf{f{bh=&KCjKFAa#$FI>FBS8V=k!CPF$bm&a4e+PVU8VB?fi_2j+AOD7baF`>f zroI;ihTG34DT0c_MsussreG2)*;$HHU<)ZU3&11l`1jcI$c#v?zse&@z245NRj*)Z z2_;fiK&(Lw`~YV_n7`*ERRmpX=FvPPCbQKrT@YF~F>GeWz7ImnwX;`s`Sha~iPk1N zW8?dJWSGMDn0s--ZHn*4V^rLNWqjnH8?bafWDu9*x<>xMNTcD6bO3t`=-w*{cHIvr zt+rOm5_Dg?8UP8xJeUH0AsUbW|NrCxL29AF*(y;$c{%9t=73d*5L<=%6cCkH0%I>B!Pt~3J0#oqfl33(29EeX1K$&^UPSMGkNh?UnAqcQ( zz8dJ~IRP*bjOi5AY+m1?xRh*@AEfa?+nCIV5L1cJkFSUrEx)%opv(do01aDv5CJX7 zhWaBd0?-Eli7Jt73aoTaHS~I86H#!m$V!*Hyt{NpRsbm#TF%vLkOAdWNCH#7&AUKD zgs{S&jer$V@BpBrfMAPO3W!V+*HfNG0SO9ONm}eRU+Q$2G#JCsg5*`$mHh~hWf~!7 zEn{3kL;+pu2M8|uzs@8?3#6Bb)-jQNJyl9pF9M>9Ca80+((Mx>wXVv8H)No2fn)S?~@*#SjnqcLbqcMAm&CQESja8*_SOu0xb9Tv#gN;>WS z$y%WSu(%DHgZ{Nl+G5x*S%FoCRQQo_0p|I&Sz&cmsl1!e?G}^}yWx}~LW-6J6k;2G zt2UV~9H>wz5lN~!-$4p0;eY*?5ITw_cta*jtb-?|%ms?OxIri6{0Ij zN=Pl0FcLTbpz=t5A!P2Xs$q{lH+xf#_EsK$s%i$(FS4vRoXI@ckdPAv%H-F5_v!@& zuy)2O@7^p59%gl2qHSF@A&&l9Mkg0}Ym=|(%-d$UM%~WS;eIUwI=i}10KIK^Ii~M8V2R8}+S)fSj6epr zUyuXT507pEZ@=<@eqbNoc;(xTZ(^uB)Qu)wAqtD%|J{2*H*A6`Q6?fN1SMfjgTQ31 z2>}+dwMi{fktiV8gR&&U;A7Vgx?`l}&_2C>B^A@@rX?tu$PT4d6l^8ii69Jmk`M5uzm6SRYi1rWqRfI{`&9D;sfZ7T71Ni$Rhx7#)+ zxJ3^>5?T*nf7qp}J7@aI4VZzq1qtH=`q@fGUr@xpaahg)!S<(QJL~VN#O(ym_xv5y zTxl_TF?G(!wF>XLwzs~5+vCEKijO_!p=i61eauveN`BX#QtyjvvqUjIi zwFI3msr~ze#BC2asJ$byfv2jV*`F*?FUaEw&UO>RlpB&NouY9}K5~vZPL}MfUXOlf zaHx>iSg{h4^7pM~oY75IrNA-^Wn;DDiZdE+jzlU*4T=S8=qK~t+gL$AosP{!kInr$ zn72yp0-VXd?&VI30Gs?Ty$>FJ<4ibawOVY}4lTD9uiNXwZP>WKyKt_4z>w{nq(yN> z=~EsC&kL4fn`ao>SdMUK>09m1rVDD}*TZ}Ptl@7~(*Rn}g1Qk@mf(Q55v?J2Jhi@9 zMZpM3>~lgIxSY~vwE!T`G31;2Q3-SMi-}H8^i^`IA+kdraK!Nvf~XdbglqThr4^&7 zBY#u!HycF>cR@2utCq34@Fw<*0AP7?-olv{xgk#OXywM4@{*;_Dn;w^aj^emBt;P` zqGou`5Lc8CKf}@gSYPoNo;pS)W1p_J7S{~H8pTDB04Kq0P=X%8sr)s#1P1|u_Ok#J~e-OG|+$h9JqNFvY=3>2QY>mMX(79MHK?}zdP&?^8|E@ zU1#sE0|LW0ky*#$L+X49^#w@w)ic|9%lD0KjduFEwS-5Uw+%LXo+2lk&=NK(c5qU! zp8gTxKnV8*N$0nPD!Z8W{mam{eLx_zB}bsgh^V}5?f&is`HfPM14nXvq$j0s!Ym8Z z8frdI_W9K)UBSFex<+3Rj3ma`4L_Li?ug8vCRwJ^-LG9~hPZQ+el45nDrO4rw zA%NCX@Wp5V$PH8MAZ|)>dIY5maj@Io4L7~#|C$>g1WS%4i+SaqNsx0Rg-;y1aClHw zB}BD)T?2I!d1=9yV$de?RWNK^4*@w7*+G0KMmP5r!P7BoFZaVe&cm= ztjAPd!?lD(X1SnW#?oh}O^FQTd~7A)IvWnr?7}-ls03RdzLli_BHDjPrR?+6JSN84 z>Mueut$0tazbj{?NSb~LYG7&BD{EmM-y3C@mzp~En;3dre_?rb+FEDZG*9x1W*3gf zfb#<;bFPl*G6`@4yoa(h>wnH1>ut637G-M~CK`IJs zId%p0`CSOvMpNj+Z5VwjA5l~62IEw~KuHK!ov_^qeqS61Nh9uG4(<^uBi(p%@aCno zCJnXu%!cYv)`4QQC-a8IzK_W`8eN-T?b`PH_z z(KM61F`_czphmEtQy;x=g;54$+MHZ99N*Z#bF`#-k)|FDNROuwXb_8~3}QuuCm_P{ zjAM_Qrv2@wH*SlN1(mISGHeW`?>ySk{n2jf7IbJNxFCeWFeaonlZMv;Cjvd;-Rjvs zT%~3+RV=^XVg;J6BQFPltDuA68BWxJ>|~*l#$UK0Mrnrxr?h)}1R-C&)8-WfkVsq9y-fqnja;*iPH_w1yWg^IhPHedu zX!7iI`&^)ARHa}7u`ED$lLsu22Yn@`@C$>8!9`VN%WAig`ZuU>cs-nRIz4=>7+VFY zHyHsj=Hn`n(!850>U9DXue~d&h0vYi&U&XtlyCdh5X3-Ee#aNdU zBQ~^DQTY)woVMcJc&?j9Xc)&s5p|zWdX7-8RV1`Ne2Y>gRj;rt?-~3%&YMK1LrQiQ zk+7lfO&w$bn`+(pcGUSUz)2R0$6!&B4Ox z;ItN_fHIlW<67+EZDWCn?U1Xi(P`%OSh&l}=YqA8jcMd2p5ced=u!QLqxfahn9QRTOcjcw`46=`qL|5iZ8UREdla0~s5p zOAGYR(tpz3MC#ki*imL%YD#+sJ4MB^&EZz3? z`DsI9Ql~Z~T)@psQ-7>OBT(l6%|R7oQ$Y~8gZ?%?2`e^%IZLX2x#%~wMU<84mXysY zew;o`%LzNkbDSF!7X13_oj*y#fb(tlD4Aoy-c3RoMsOMB{ zmOzUqD*b9SP#Q}f;*IEav+C}3s*y5#3i+lBKxp|2M7hA+@KXO_0?ibQM<{JLs#!W> z9iqC8{M3>!I&2GpfxAA-P1X8>QK4bd^&~`0*wI!Rf>Rof3qgbf!EWE(qz2#hKE=9b zk18aqCA5hiyjl`U!@(zBw(_&{GcBaZ06%oXWPBi|U!QH>_#)EE1!MDz^)vJek7`CL z7H3~re{%t^TEU&J&~siWM^ZYexQ&8K!h zdnql|N8=mjW(8p#VkQ%Ve)==6FLaokid#EO%fbfZd}9?w_l4_cmo$pSn+UYxR-Cfh zumoIMiVOx&r+yRmN6nDLy7!`chrKxVT2FJ#62(ETYld>OvD`EXEAu>>19aynx~`o= z$X&ghB-?0}d*{U4FOp);d%31( zFs0RAqnW$2%20eo*gtw)bAlStUMQooqMQH#1rhID_oO84Kcn!D&lBZlWz^@G3Wt!6?pgR-Cz>bfB>AXH|D zA@syT6P^(5`;p9#!Ded~+pSTEyZPmqi2MhzWrF&um&7;C?#d8{htDm&ejrLQlp7F9uxZ_#+kMH~7( zjh#f7^_V;?#nM&Ar!fWiHhBJ5Iixv@Qm>mt-b;a>emL-K1kzoqfAp{8IU`>YY4~t3 zl`DV^hUOFIVKx!_ma9=Eo>R)ib`fgsl=~z@nY?ee zC%O%)n~3c4aQQo*K^OC7`ZnB%-jk2H?P_||Xjs*-gjA8O`ECFH@K4mFf4_wGv3j%q zu=@1UNIV^Yy~cFq>AVUO_|coz#?YD3arJa>{*{CxW;Z>RGWWMpvTE@tqHhCsW4b=_ z)yhATITiw{C&0;p;uK(Y(J%hEs7*{}m#y zk=liJ|P=9C{g*(~isJxy6AzmBjAcD%D z0cPUynWFD^4w!*3Gi>n4jLu#h*>;BN0B(s_BCJ9SO$p1-2Uj5yWZQ7OnA4M*|ji`3ny& zu@s(sY=7eaTp1 z^14z@fAiT4429ZUa4Y7nD$LH897EhBxbBbm`krd6)xcA8)!c8|L=oN{A(^(h(gp3= zR-SMP!h_Ut1+3D(&L_WlX%FdLl{FyLtPAU)o`gk4BAR@H5J4w5*fORIZ z_q*8MC*EI&uoXBMuPOv$xa>W4ttDT7iX#c3000WHL7Hxp!X8Yf1S9|b-Y$tQ0B*mv zsGx|M#D2|xEk%*ID}N+xBl6QN;7okPT~V|0eyY50pdD#8*&H~bj!>CuaGRu(*Wy>? z&Ij5F@}(sOZ5w;zSDytS+>?|86&uhgF+v`+`u!aeeuHMXe4xNl-_VlyA>RLH+d}OD z$p8(LG!281S)73DsWP@8C9x?6khLkcNDQ^uAa!SYgh_$psiiqH6fW$)D;+|$R`Q`n zyBQ??FAEb$jf(dUH+T%&E!|G;T(tmN${Wt@oRh7*qx?ESS#xL^%*0zBnWYMyUVN17RpIwMeGDDi;tMrMg|EQxFT6#)(jj$BJomRM+nAh|CO;viPhw~6XL8Wx8?*HC zsK*r>=y2suv7)Y3NLQhZd}&hljWC)pNx_CJU8*GEK!;}3jJs(!w(=TjZI&7U0G70c z5oQynqOZwDqn_eWqjQH>PclGQbec@bNzd`5k za{5MP;S*;V#sF;(+-(FA{KA%~uSfS2Q>+y;J@Z%Xx0;MOGovBl(XFDF-01@lZ4fod zdt1%w76!o6sOZ#gAeVf|A-XU0yWldC`Sr!RHU-{Ralhd_sZ?8?+z7v!c*As4`xg@X9{2pr?N60X;>(J#Z zOpmLtxy&5u-9|0aI%T{hC%kF&_l~mf&XdC&)oM#4UfV6w~Cuh_emyOMR9iJ-MEl{ z#fW>H*NYB*ivXYcy%BgEoFMg=%W2b|7|`BH#4nf4CF$qXmNX(UfxFq76@?=B{6{yr zq#=OYj7(#YMgmIjANW<2_Xr-;Dc2pVOQpP+h} zBPU3I^S1hLVhxLS$Z-tG|8bA4p?|pT!}VKMj;COP{tD~TN(zM!#p6d)!Xbak=fz>s(}VYD}v;#}>y z52KWQGQw5^O<@5l%LblRD_woT%PzC5W`3vjy#k{?xv(>W33>|?nsaaBNY~wV@1;Jll!JEKt^ZbRSqB&5vASm)J@5(TeWkZ0Cc1oy92D)+>-&g zyP8QsqoQlVLr|rDTQbJKMYo zaJR*sUZrS3A-uToYqzoYUM=z5=B) zh#GCs1Vs_Cq-t9sbA;wenSl><=?!CI6f*1JZcQYTTbciM)EFs(q46|DBxuEJtaZ)l zywd^c{n03i86fI1W-ugIA19eM7(#D{K@nr3##P+xOJm@f$J!R|%OC%O)^=y&9HhqF zr;WYdK;brr#$7Z)WfS9A-bIzI_zq&hlAVJ8gk4(>bUi7$A)bfq^|Kn78`VZy-lN8E zgW|pYxI32K0xAg5QZmKMWrsP7n4|yH_^jw5BBcONxfQbcmq9?d*xzT-7oP@`DW|bK z0d;!$7?G?wsVVN(^*iG5GiilXTlRKMbHRZY}B!3ss;r87JPe<`_7atwzyv(-f zNxYUJjXq2lD<@wExb%xTE9C1aBSR3!qpxmB(=OR7i>)N!1?Hlpgx*9M3#AZl?*$L~ zip0%F&6&z7y+Gau7mtQChobnu!BIp3tlg{uoWD`~Bm&7UO-1c8mTTLi-At>L6D5_ch z^mbNbj&CUg72Q!oq=egyFc@o_sn3@%lt)2#Bc9t~-dhNJ37tG1znD@#1?4yr`8a&K z%#@K^Jq*e~l23HiEpa|KzBahhmlxN|f1d4ObXQXXuPM0?}eB3owSNlf6SIABOe}yRE=K|GQgn zeC799G+zNbg{3$bTk*&YP-(Oxi78|JTC>R*8Bv4sw-bVk!JX@ zIUQ?zmydm{!K;t_vEnqj4KpRCYc4{!TZ9vcmLE7U?hTk^*qLF5iE{sAM>vn{gZjM% zomPNT+z6#q@M;N1uv_i=)ngFIfZe3k25p+~*w4a*u7j1lo~tgIH}l%D8B=hr_SUZw zB=R86VEkrZ-g%R7v-K+~0>}UfC?!X*|NNP8W3Cid<6i#FaT!=*g|t!6o_TG6SRdW0`&)7W~@DgrO?q~Bbk<{6bC6OGT7Jpl9-bPVL8( zCBM0?L+nYK3sbSw=bJI1%WY!dy7ik#2?n5E=`AM8X6J-!7E*9QGu*=R;l^7Oh#cTI#Or{qVO{ z6zlS9y6GxgW~3(z_zfKB8^Kbu-^I5H7Uf1^I`y#Y8Met1bL0c*;|kb${!RwiX$FlimW$ z21W5rR)$A6h4Svq?~17`pAW{(h3?WB?+Uk$$%#suWAmdP;6$AY z_=Fywpa}*@5K&}k`|K1XZ{n|voO4=){^3?*tMnCqaORfS2Bb;RQ-h_4f;i(U#e!x8lk((h)KRej#gEWlozNY z^gwLLkH4#l*$%w31tdIoT0gkqMEo9n0#kR+*znX?eH@{>o-ex~@nvskXkJmoyeVaK zd9>}m;>itSN^#&ZzwuShosZ4S^NXQ$x~emb%PDRD%oBJX&&nKKrP3lGK%kDUR|p@1cRiU<5q?l1&N49f+{!4GP0m^Gd_3L}O=* z#CDv@#QiHkA`f30Sg`7~rk?@T4E%GHd?3Z1ga8`3$W+B%gJF0cSV>f&zu7LQ z^Gb{NWVMOUke*p*_jgSFh*rUsY#E5a@|^+-;csyn?bNyAM1Zxi+0cvQG7Dy1tf0ec z6Y(<>P3O=mr2=RmA0yv=EK~NtTWGqWISY!0cr%C->N^ob+8g3h&@87_5}cc`dq=)E z(t&L5af>nB!5-mti>RKReXMbG0#tH%U}u4copWsvb#Sl0qKVQHvImUUX#K`8AzzJl zuwBww|8(J~c8rO*(ioyDXj`i%yv6Q^>hE|Puztfz$WL9NC|{LV)dfl9i`sPzI-LZ& zbHMfVN%^aXY?((Izasa9(vKD$nB3c1Gt;-3`syH|XFh6Wbgzv^jcPExQFhErSlg5( zNoEmzZG~CY#AW)-+5OR?+Irs&S*TiEEN%{r@u4~mFX3ck+fdGaQ) z9jG;YMX^_+b&(0j2}?~~8!4ESger7hV9MV!DyLCF7H17Oi83TW1^CKCrwP3=ub6xl z5Gs6#9GY?;=sC^TF5*H$*LUEtOW1qtsC#7>Zs3d+yeI#}FwI1VxAd%uw%WaH(c>+~ zK#2=VhD`ZS8=ITjb*4){$%P4BItzM>yp%`jHnDnna?SHaZO=^HHECUhOD-h!P#% z$uyT3v~Yku>E!C@*+T~QQv3&&ICBX#Bb8vU)#WNjwU~@$Y{ta;Yl0#HSTQ|fLRun& z_pDvV6%x&I+By)C000FH0iKN1jsIeLkIh8GmDc6DR(%t3`^?3NDw;R|$NHp(-Z9C~ zrq*!8$gesteDr$^v|!7tZ_|lrZ0a<9<*ZHRA8EkzJ&N_(@G=noj+-j_51vdJW5S7G zbY&8kK5_!?Sj||ZX))*=DXD}z91xwx3rYIiJ*l4A3t@Bu-sz=|{PZOtL}#wLWfXyX zQ?MIAKE()M7EW$C(JW18&2uOS;1e6y!cUN$$9-C0QNGHkP?Yn>| z&J7j?4mZW2Poy?TiT_QF%PELo3`q-*`3>us z!~oel0~MzO8K8fnZR~P^gUst|kh!PAX1hCFRJvMdc&vF5)9`JOsQymwC#-Mf5_`|P z3i0W~euO29sCG0{cessqQ*G&=yX52KwoeIyQo0G@WJi2M$v#(xT`FOk#W+voH6hGc z&Vo?+QJj%$xBEY?FQ%fF{14z&0&por^RCXmk4+&rE^9om5N3!7U^N$l38Bx0E|GQ$ z$6`O&OdY*-%@NCacA`OjY_S~FM{Z)4>){O2MH2)jOt`DM2$`_7zd!!h-ko$4~fQCE9%pt8#Df7>Oc0`lLZK@TF1v6Cv#PA&o zUFx^ib#eV6-VyUu{|Df;NPDT*>f*O^AXLk!uY34LXMl|ZSU4PrPgdmXhR6sESwx|{ zgyW#4RKt{l<5bP(gm#)X0Z9IIbn4?bv zs2;57$)wf8aUSoeW0^);>Nj6_H$TT@(-J!x7VJu%sqqSpKxt;b$~*_!^gz9oTysI+ z2g>^zf^6CJ!A}6R9?(Gec3oEB)wjkS_2S)8H3E$0q*wJE9{Rs169-wN^YrQ(M#?Y6 zb~1+57ITDXojkNNUFh2!v?@MGyE`4Qmh-(vT#2-^LKHnPA%T;at3pHL+K$|=H!xzlT2;1+?@gYEW}0QfQD{CD zURI<)Fu3+sD77cIn1D2lO-2F21X6#?d2}``_UHWJ>+-5tq=4PMXHhQeVXDazqM!yj2~S#Cq=V z{F|YZkG+~-DNN$dUgZ#N7~^ll+{wQ;$zE28)V10yvy|sDRX`5lO4dqJ%{T|$xX{)q zaz4n}1>~>MS8KHzTCiOk)g_r*_8wLhvVx zcTkv{r&onr000f2L7J44!X8Yf1b_F9VpNUYh}Z$FPrGikQIk*q#(2^9{#<;7WFT`* z4tku1cC^BAgaHcF)Iq3i{lZAj=1(kRleV5V`AYnOkp`14Lp+M)(CIaG3E(`!O$jdx z%aL(pXP_Yo=FBTci-mV$J(C24G+N=qd~uu3B?}RaPV0|@cy^3$jf|;AlitX!S(TYo zIs0zLMs7Gt&JF{i8-MA;4a&V4@q-4dLrsMYl1=rm@td4A2%1;#U?jOr2>~3rJ5|n# zUPsGODBa%xDakz@$u0|2%y!Eip9n$Wz?W`qG< zL)L6J5H5cEe{BE>_AI<=;VI(8pO3s4YCZ9@Jiri(=5~nr*%KCJVQ-n+xhcz-V_Q(J z6#n0p-|H2(x{C<}0mJR}fy#`=W#<6m&RZ;?j?=MzQiE&)%w38|cQC2B!Nul#>ya=h zvlmk%>rPIV8YZ6wVzK4ygxN7zs4hRyx(I$;=Dt(bnP~P)`o-6w39%4^A9ooY6 z0n;_xIA3j@&Mb<^J}vS*K{Fz2ERrOL0gm$!rwk4G1F**ij)=)51RkQvTc}Xbuc*#C zZ*{nQ7K)U10N?Y`?<271MM@84A>*T03*Nl?Ey*^4zZ?UKW#_(=S^Vnu*-j_Ro+lb= zzUD)i!`k|zYC@wW^gIf}qFX)HK)+KMp8rD#GlZ}_P7xq}e@7*e{C6b_F!!MyIi~4B zF&8X5?`aL16c7G{D4F~9s0M`+cH_%7fA)n-=%V^}wWv42vh8bZC^e=W6%5^Y)uC%ee!_a!_hMioG^jfLpzvHMmKKC^Z4D1fEL|4P7XQkz3 zauw=#S!>sWoO3d51(?W$NL=DmKnyChs`c*7#j@15eC@;*>_v2R*;hdR&}h>cdAM&p zxVoP7<{6a0GIl&mWi-{&rDlzb4z~pc0A}p8rxZtLABx)Q!y=g^qy#ey`_t6tzfjPh z+GNt_&Z=`IrE7NgVmu--!R-Is+T~%RY@9A`2!~#_dG4ZT3}%90q-y@e>1>l#TI-H! z;#<(8;n4zXymtF}U>UOZbzk<)3k%dq{lQQ-ji{lCmK*Wh;`eQo4SUH+N3&A4iP0U? zDCcokmj-8`92FRm%Mp7m*kZQqBB1=9Qk4gTNY9Sx%?`zbOq~e1+LXs@H<3S6dc@5o zpR%IXuKox{T=z5Yz7cTxNt;}5BLWm@*=itbXH=BdvaT;OGy5}P3$P7#+vNN%;8)~x zeoa`2hc1Hhn~t*!mrTt@+e;7bhj}mrQmc~=#qS7^U0mxVE&8R=ff7G%(&8u5HT2+@ za&AjKa#1%>H395uDyKlj?@GWvy17GK9oQ8yiG;B|)I1qT#4y36Tv z%S}auK6a9ya%>o+p0}PxmapX1pPPfwOnoPI*we)yN*~Lguu$FOB=Cjdb}ekyQJ^9> z?xW6Yj2E(!Y-=K*L8T75*kqzdFJZlL#?zsbH!=sSFoe}c$aj}b3MOdu{2YrAUXCDZ z2{)Eh;-E{%cGB}z+*OwqTQG9QC2`RR0H^YYaHvh!R^pAm|MBLgQ%-s3U!^gn|{pQr9o z3YI{@1l5r9pj%RyB#b0EAY1&5biTAXwf(vu0T11QJ2g}m8TQ4u73#F|g5|kBt#8Z? z;o(v2Vtq}(&vE8KyS{9}ArDi?YQX0oQ=%GTZ-X#=kPtmF^=ci5gckz^8Z;3Bv4F3% zi-2piX#UxJ1((kr7fS^&YHe@n0`4zM=`pH}_HlTry`cv?n~qz5xPFh@Tuh&@<0wr* znhS^KP=X?{Mrd<$KeuugLA$V4X-2g{|uBoTWZEFOqv05xd7} zeL;MF2gAu}Zt1H>DZKL65I^hBIbC{}3zu_OO@J9&Nq1TU^^h&FSGmkA09BNkJob;& zr!<5c^tP`Ib3qB5&D(2bCnGTt>+z=)$gX=rWiv60c8q;D`c?W>r*lt;SBR5g+7{(} zZmLYmXAjjh7_3N%Sar;0Pu75pj`rugum4W^LxqZf>3q5jB^Sg${OBG?Il9~}ZPp3H zS^U*z=~dsOTjivz0_xqpjG1j?70S5A3hH?4Vv6&qa#JCipc!tsCuLOnVwV{Vds9rz z?X0?RycUx>Xpn@5*Kx;Uouc{Xr+)4`(jXj7OrcWPleMxX@~%%(IM^WJwND&%N$`F+ z74+|&=-J!|?<=L9CFZ9HUYMHsDD3f6*#t ze;`*bH&dPF5JTScRkvZlFNcHk$HTg_n5B*Tig~A`52q>D1_DqKXZcdZpbn(^R~Gya z%Z!;wx9QR4=-S{_1jlI7>(=Vd3xRm!FAOFPu^86~v(SGFUy@I2fzPH*@y~wv?*pDI z7jGGP`hGI2a^a0uwr9cki5y0nE9N_kwt+Dmkt6}?29;&yaR+c~kR@(yzJwQLqM4IS zcy~Zi^ke^%3Kx(l?l|!19A%vN*|b zi%FrT0)NG$ii9?ycMYfh63O{Z*hpe){KkuoND(4w(6}2vt5$tH7IMe1)qT6hYp2K; ziI0AM0F7B0Q={*^zNdEXc%hlLcM4}$ASp*t;+=1Z&9oupQ5YB^Ki%fKj5YdjV#|eH z&~m$R|49>%2S?G(sF5a7bj?)arHOU*449_Cy0CVgHTrwg@azMwdQJ@1lpIy*3YF%)G0H^$ZX=G7^HUX%G#=vTU>kFHXkQ4 zWW7I@kA4$$=FAZdCQ5I_u`G z90Fwunn>Bno~K5^deutkRRp9b<(RlKK8VPa@>;CzKKJR;XFZW3aa}t-bPk!K01D{F z*!a4OK9WIVb2zY*^Ias`;hlmmT04f`8GErt`}Ae0<^dUyh7T)_N9+?Z5;0uL&DDCaUN2ia-gP8@=Tc ziV@k|9Yn7by#=l7)u}O7yXLY$yf|Ed^=9`cDsIB*o+ezk}PKvJU%>u$^D-W9)3)KUE*tJxY2nJeGD!iTPwpJHqC2;{YL zgh|k4VHbnUi?iQ;8Ow+c5yU8RGVH_lV@_gi@2TmU>okMbJxn7sUp5bVLwcmX1E8FZ z-<+17g0k}}fV8&Sz51u}S?946MM^4l|5WI{BiE0H@)~rgO4B>Q+T2jkYBb428JB;8zym@{{*< zwclaDjCeUd$1e#lWFDU4)UY*@0rLQzs71gkV$QQ@otHB5n(C91K(06X zR!p7t$ht_3>0|wk83=r}IvL;uK~(Y14W{#~c`xW|gT$rBqt84TSGB)9(uYXAxFyn1P5m*CUDHLwE#{1r+l*-lzjslJ@_qWq@EX9IpfCA7vkeDCHeplu9-ZUk$i;OW$(pWvxl3cLvNbAky)tkI)8 z&`P?P?w00^n03tL=Bz?1aU8S3cU>O~H6NwxR4G&hjA?9zc!;##wzQ{zBCKqAY#RByQG2k9Gz3|wF*-fABVB?4|au3Y(` z4TZp_=leRKxreXIb01;S2{Peo`Ph*r=HBl9VLJ^ia*=P!R{yrtbl}^F{_;P z0EmBm6XAtX>FI{<^EB|6?Q%A2?SF^>IB?b|DNl<^o-hMZ^*t%h^P0dzjG_y!NFm9UzLFV+mmU!;P-4?iI8-ZsAXc8Ja|vngvY}W^ z#<%ZKq#+ugHkR~S+NJMi@PK5xm_JVU5z4WrT`68Z(-B-l&%>xfXgQT83^ zDm~6}y^QrzF5ZW&&+U7gErXIj8JugMZ_-b3qVaDHKntu^$dp+d++4l;gFoN^j$2Wq z%+d#SpjJf%X(!o{4@Ah_Hf+WFYj1E%EoD_Ex)8zex)S6sh9}#xFOWhuLYLD4A8A%= zCv%%q2}gyG$GO#r0T|$25NUP$xUJ@()pixP{>*J$HvN&{$HtcwOP+2X9rN0Ojt|q%a1KA# zidI>b17-(6_WN;&?Uxkr%h1J>KX|W%v^lPRC9`OY2w-EyH}Jr}^!V^Qp`_?p0*n^8 zVf|+V6EC*zIwn)3ci-5@H>mg8BQ3bXE(l&>)II-=x{tgY7r03v0t)m{v}@jiha+Zd zj7dklnL?hkeXl251wuRg1dQsJajDOIfbU@@qo@Fpw$>SS;hh49@CM4)cfi!yQ<|$&Ky!O9+Iug} zcjZVat%I~pFZr|jm2*h6pEoVEq7X%~cDf*$j%@AC+TvaRj@FAnF|6xcOI>)0cNQFy z{RNr_+Q;tDlcoLP*Mvq&{MsoK0^65`BO%MH(3A_%gWfzcp;tqDh)&^G*^s2KQ~UD zggD;OR_cU(jM@Lq^^2B$b45;W(uncZeqx=!!VVH)BcH7=inl*ver9N@pm`1UXQbZaf=9#-&~t7; zSp@E3+N1TOx*R@oVcsUw+yI9_c)#vF1O!7Zxc#L*>Shcji+@-DI#eTmJ@(B0ep>Ox ze%~YNAbUqbHdY3sS~sySiz7^;{mep$f z1IY3g$-93QHqKL@T{s=YT_umN@Bv^tGIBsJB=Nb1Q$197F_1cCE%d0!8-=i4K zE5FS^VoFo6JNqtAXU)W-6GYY9-LC5ndIqvdg}Emt9OMly;8-tcclDC&w8=g&!gP7j zbh8FwR-E4jwt~BSOm?K}L8gb8rDEeEYLPX9%nZh z5dko^B}i}V_xjKwh7ex~a()0w1U zrxDWmrn7~rfT@w+y_>Q>>(*>_vrwh!M%H(?n7+ftJ?LpbbAfY_MlX=u1$Ulx000Y& zL7KRe!X8Yf1b_FCAB@ECjbH(ybvD9E{|70jkVpQQgrV#b-kBja==!libBF{zg_HAX z2uGPlsi@8@1p|sWNpJ(uIUBZ~^oAvxlr+OdCpfn**`>>sbE#=9^GGM?h%n@X2V@mW z>ys!tf;q`L!!cKGnkxOyWzG%8Yppu6gH1LfKAw0Q6!>KpuQ%6+TGUyC#sAIoD6m7% zBytza^|xOS(!AIzDm)ueRnAv@ypTRdYG5*!VybK9yhu45UMmQGs=P zKS2Z(4$pFK-iNAFRENOZ7Io9Zr<)AtI&ZX~y1OGCZGs(g4oZuj;b_ z^lLRb*Ij_luBv(=sM}UkfbFS7LN<|v@Op8PwOp%f$m^l%ZD5QL#3x8}htylz2!uM5 zovOqeHfvD^+*`Ofr_4)%RFv}|Z7(m`=Iumq;y#e8QM=xU){$oixH3y2h9hwS0i8n( z8xU}P+fDlvIucXHatO+Qou80oIyl>(rxzZ}#H)mjR8VmB`M*TKUWFF!YSArJCTOGDo`lSOvh^LMdyLnfeeJr6@kaI+_M6$LPZWs?H zH-_^pnEBj5&1u*-cVU15$px+k%9~yci|W~#vA!wrI;ud*%NeQD7U@)4oFrBl)Z2z9zZ@S0g}GL{EB*?pefkjRWffke@$F|K;V z&fI|Ye~C2PfO8^LCVzb!oLz4DmuB1Rl!A{l0A~CNO3N5tm{leDz?`mh+@c+4uMlRj zg)v?UJRvX3Hl|UM{@CNN>MX1?4>;Im;1#;EvGFOkBGGLe6$-0lE0dHaLsmEZU08rD z?4C+%io(eASp|6A;PJ-w?ICzY<_p95#Hx&7klzB<^fcUIes6XZ)$8vZfTS3B#RMP0 zj0Rf2`U?gdVqn9B6t5nMSdsR7_K4Yio{klowPmzXQ$vm)?^ib5E%^8$vh7e~!4!?> zde-NRljCe}g!(}uW^mlvWmkVXSPsji*yT4Hy1KOLws+Z?Jqq+WV?Bxxt zSS)mN_>(WOCON=oSB=mKqtN?f=G3+nmh$qs8hJGdI+{HS{KN1?wHv?FIFOc$Qcbp3 zon}uj%FxS(f%^gOR7@u(kZp^Xg!C9#-@V78imNQb+ufWYz{JdkAi5noRk;D?lQA#! zI4=2Yv`EVvc(tM$B$&)fe#VjOcW{3E^lQBRo5YckniNS%+RxhJ8N;TI0CN)9k-t-n zDwN-Tcx@4zk)-AGHCwK$2Ize?i(ldNz$ikU4Zt|1ej%C(hX1VA`vbd<{cCc^Dl;X{ zutR*fWUjycp1ifWaL@oI0a7K1NPu?g2@+S&D1=JZbkhhp%a&d)G@R`)kBKp4Xh422 zLnEQqrf9|+6Xn?_zRK+MtZQE|eI z!7%VbzNg%e=a{}*F_Og6IG9%gC6D(f(248dciriaVS+`1%@Kb^aw5?Ej?F=-NxI$2 zFqtvwHT$5j8xE!Yt};zv-$9OFGD@DBur-Pxsr*H=hbOAQPf`Rlo_t!QjedrwS24E8 zO;@zSSv>>NaxMa-+PN(54@91f%un=>VOP2Q1ER?O%-r&7mLdO_OkIMDD-%5C95f5+ z4{E!zY*=LYFWBS->XKR;-;bc0`ZLBi2)@oyG962w=i97e^SXHqDn`oU|sF6G2kM$#DP9%tptcN zIxKpWbgC#?uu#OL2ldM$;U!wUE>!!u$pxawQ6x^LtBzk&jozqiaoK-={L&Y`v%~UVp0BGC0Y;b zacxe=JqDqM!_NQJbe*{#$u&hOdSEhp*8Rd-zbSH^%rg5SJ>8^PZ#Q&S(>2bYzUr(P zBzDN`IG^&dud6@VNMwR;d*WTuGp=!3@0amatk10N5N>a4DTf!H-vGgKcnKXv(hgOm z194106pAS~Ujg0R=Ux{)jbUh6kT{OO^NFi~mejbfIgYPO!wFsY^eRi~U>32FYH35{!3i2D z&rWm7&P-YaBybg`GAI2sXz7LwV3h`t&}~Ba|`AZ#1d`uj^lLxNSZctvclB`o_U!2^L-@K(^6|$T_PuJjQ5Q zL$SpvL{O^(5D}W9*FShiN#2@s6VDTR#F{n_IHQ$=an||RME3^+=|e>742jG;2y&;x^Ghja?^YJpqCR_u_S-QDEdh5N~leb z6&#Hy;(Lobr;euD`lE4C>0sQRF&f^Gw=hCR8At)ev-7n000DQ0iM=W zjsIKKw7#B7FD0Jqp2w(o zQQbc_XHp@l!y(fP1e@D7du&7XMEs|Wn8;=7O#-j#TP@6WcOn^yKF>nH$~184Mg>gYj#fp#-ro0A$@DG zhO%K0bYMz`BZ zt+{mDPc35~ktlyC9s~nkY~&0I%X41==Va|N7u7w*V+)@mZQ`bU{E`{2O4Gkn0jN9i z*0%q>)qXgX!&X3-6)XZBqC1Scv1gL`6Mt09D2&E2AJ)5cvPHvcDe~MaV4iQgz+}N)=eKBgS?)I;)}Og>B~#p zJJ(B~W)(7>keohGEM9tC>AQ+!NCG$Hc9#bS3xEB)8`~$F{|K#^s6dm|`0+@bHG~jH z#<;p9Ya+OBviD{_r~Y3XUUP2u9pUO#p1eXc8o|)+`4fNummBIL@HrgfeH+ zjGxU7s3i5PMQv@jo~Q-w+>6&(HMR^#MqW}O0ilRtkHq%wTAXP!Szv*@ zYnrKEI*Jv)(H|E>gtnw?BRif^h1HaBWN4GB4_#(xL5gpEJgXi5xyASYscjvLG$!dv z>hyhw2gvL>PUES=1)0XD(UyAlE`3w{oMvSc?ef)ISoht@4#6KI5}f`U0D}ycLD`5@Vpa>O zaek?Q%D@g0<7ky6lxn=6Ri*-iCp^?T{Wp#TG*r>%`U6P&W_aFNmb;}oa(m{NC;u#9 z_J^&b;t&2LR4?Z3P{28`^YGlAZw_5RG;bLyz&Dbcxrq$qSK>8aAAbh}~O{ zli+^WNXQF{v=Q@V&lXrKQlx$`jQ=I(okxX67y+w-D?}SA@)e_gt%XmWge-WZr3l8X zbC&~QMui%Cg_urqc8A5Y({1&^PglnZRG#svj?=zX&Q7z97cv2d6&BoQ0AV4p&zAkX z$$~qH(22723J3zL+ZR<}MuLm9&E~fDmhsqpw2W!fmghmD(I<@>-eCXciNCCds+FhZ zWPFQG^BE26LQ7x4C7=0NbD<9?a?Q|E{4*!Bq^(eKb3$nc$#KRJT4eQb4D24CJh>$x zK@SzP>1%A5(JltpzG^KcZ=w~Y?b^4hDdC3fjSO=sVT3REDD8vtO*gqSxl217#smgV z;z=0p`*9}eQ$$WEQSr2HslpYJNGZG)(|ZBuD)+pj0zTO3ykIci7J0PqMBUl{xgLKTK%EwF_yrhSb!#kS z5L!^pOyTCj>dB4FgFE^2j7f__4`{{52@i7!t?A`VrC^3h)9Z>`-dpr-Q_3PoMN!hB zto~hZ-S!02#_OXM1jIj;j3zasJ8*%mFGll4PN?5~qe%>9>oDlQZuLhv7P1!e%8^+v zC;-?u)$74EoB%#CVaofrx%B2x%>83)CR*$YFl3Cf1Rks_BPl{^qzArD9;2OdXu#i9 zi|-lupCx>;r(VONP+U(37Wp%$1VA3z=>$BXJMMtyI!x-Rm<`vL_z&b59i(b5F6s`z z_r~?f)9hL{UWkRGxj@CUIh z-?dqfeUQ*@9QMuUs2-Z{V`dcs@g9(QfaACX%fqZ&^b+lvWv9=7!qT8IpW}b1i+y03 zRE-F!Lk|Y**||K12`Q+5X@F=vA$)$Gd=I4tIw`LzZ^#~5Mfpr=`7;>@@V|eV96VnC z^VkxDA@*XHqN`l%BWEM@7`fc0GWp-4;tJhO?z5@ddvdR79z4(O;#Vh zYK%W!NS^~WZb3kvmOe8~NpY6IcG`j2%|2BXnQDU)mo6-kL~*M+%ooko*sWH%^>FMHqop?wqmgkbogA?j__;k6Qv=L#iM5JuYD(vIfpO{QMWdq7}2Ey0_HDY$g@>e3a>+07Zw^Slc9EZ#yIsUl*Ne;HCp)WjoGfF zG*w;wz$y7VD#>B@<#^Xzn6ljw=C36Q$f~9dVsE9gO-;l#`KifU7DE!UHcl1#C#hLpR1n2Y3`U$R4M2k;sn18Kz*2lzD`2LmC2U-?&0YQJK08d{ zGScT|!ZO6IWCWMgPQyzln2%bO1P%KJn|!w?&wZ8WEEcRb$9ZWNyWR{;j{ti?=c|y_ zAV$*Kc^<39rjJ!01@Y^#F0@jPN9DQJ{Re?QZ2R9|NO=4_` zsC*m0({Ian34b+DaP)`rfeyU$8Ki*~hNqNnAu(({ePpB@bV4C+W#UX9;dMOu0#(dp zkf^47Q#G2_=>r0pB$TA4tSL|;R?r_I+3s9%3fosAc z#Ml@|ljm}16+-bMa$VL>Ry|`+;^2l)DOxUOq=@5I2P0Rv-fM6Wi*}b?IdG}r9TSVz z*qAJVnFIJiF~UZIm2qLPNq_6{LcVWX-JfJIkZ+g?$sP6l73uUwDy^AwSkH;_ofS(Gl5sQ&2(x+=JB>Hm^hL<==vjO&~8-@ZMcjkSx3@suj6k!;6diPj?*{ zg1Z?c>awpXrlz|22U`%~H+Xr0>%-xV++gGT3P}#i`&~Fy+M@|88#eZdA@Pnt46>Wt zH{~k~b61FLGt?;}arBD|qm*E0%g;c;F~#^yEUvL^h_yWO15Wv1RCo9al^vnY_xd#E z01L+mlPk!ZXYH^z`MwWvzF!u8iPs6N%S!VIdw0ev$gdb|Zv*l{nxJ|a>ayLby|`jl z6)(WK5bG(3>+lhMjK`AzrKhhf5+-rx6ls$0c|Q1-zR+_p2#9$Q6|;{Ud0-xg)CPY0}Cc@T&|*8B*tA1Q-6y@EXx zNm69)q&f38&KSE?64Di_w-Hv-&TYl%Uh2GddZlTA_*G@v6d+y;L8(iPT=& zWVd24ADxFky>-Ub1(*PY%Z;SAFy>iE$RB>f2+9R$BzcLQ>SD}VMzPrzLkpx+TUN(2 zmcFX)PQ~~Gsgi5YxmWCcqdVQWu3aIg3$zUp@^iU)705(KfG|CxTHx`ZrBADTwi9iG zWSKVoDgXmp_}OMr*AHpy?~1qNnKxRKN32*x(W=S&{nyhWK!Zh}f&i?nimp(^Rh*T+-)P=aJ>Mpn|cI}y3 zq-Uw+CZf1TGbh}A*n6Gg2&Yig6)lnKHAVeNY|(y4FvkkN`ORDdQ2uO{ePH1>i%b?> zbC#qPoJvn$8%=}Va=FG_;=gai@0HQ>=jsB4rMvm2`|#vXU5dbkqDnxqv7IPJnm5U$ zcG?e*m!qA$DYi0ypE?1xN5oH04oa_b#9%$%g2ckHa);qU5t@15O_Da;L@REiT6O%= zK{PgrZ#t!~td|{4YT7WOd|9$v|1X)ux28d_M&n84xKY8Ad4U(M*@i0ZjdOal@>i>9 zERe4sk6{a43lRwu_taKiL0G|p$xG~VADv&vi{lQw;c!a1<9z!B;luc~&o-{UWo=9i zkqXZrhfXe14&6$w$lOgMJ2w@d8MpV)T>`hF#%D;2oia+F$b**yzI`QzUas(fl6!&( zIIBhIu+)i5my_xn75?$^S7OygmaY`7xBcj&((maI;Ztg}j`&ORmm!Ag6MxmAe0OBEKs}LY4N;VrPEF)&-FAg^XVs3w#V=J|J->O%jGruP-;Ri3hD2b z8yihZ)!9jrNC5F1HNq)pG%v0BAxC>2lzv2Gaz;j10D+d+mMs_VWxLe}4V3)kpYC!- zAwh$&%WjTb0RTq*+5xQ7kjmL&Jfi1OjF|@CR1Ym!ey)^-Uc$Bl1vA#1!uW`+!Di6h z_rI*d%Wy+Lz-VmiSMq1TL2mMq`s%LtG4Ph1#8;hnDfq@EqKS|iY>?f3*Yv;VCVI=b zZig__jfnz6cG0$47)H)3)imfD_RoNcW+O}xNXJpNST%E=~2JC{dUAWnjhdYKB%cL8lhD_S6&Hhdm_72;M{1*&N=o-*H` zRdwj2c2*O1Zxv;*a(C%$AkSN!I^h=h+CbWEhXn7HtkW}g%Ov727jJ_7ksU4KpJ1n~ zVvgSoV!U`o3|V2#xnyb4jVV$(P+YX#8c=9*0943h8C90?pbtbTX}utT2YZeDX-eHL z0B1(OSj$E;wkq2}slk?^T#qJgLGm$t?>ww<#5(4!)IA zmS&EotVpJ{{1%B^3EIRXdIg}8unh>IXV@aq!=sx#3gZAeAqtQG|MnmOEox%9*h*6( z1WW=kx~?4fXH;`mECS&T4nawA(EkG84cI&k^0h&8?mMMFY9(+jQ*A(BoaY}oIsL8T zo{x_JuLj@Xlp?VBZD@nL>-aF;w}IXE=*r`s3x<|u>N(f|%Ae;x_pnb15DXt3<~;f{ zD4c(fN58byK)O!w941-eI>+68JqX2BNCdUMCxcJ3uqUMObowrr9O(feu7|B_LK;v8 zKVP=I^ClSCXBp_#3IG#IBGT})JDp6yQ5qY?Ik+6{t+v%PDP@Ae2F8uj$a_Z`ST49~ zu6Uq?qf5S^N}^|!=dQEkasfajtZNAb^*<^#jUEnQip*o3hI{w()RhJE;jaD`wR$%> z;m_mzv;O^E3A|NaBmfba=bukX_X zNz|L{zx-ePKM_HeI83$vi%afLn*E-(Ar%Wz%cmmpZ-ZHg0m~r@kMI8PKmjptbf8>@ zLMD?J?2Q@lXyyGEjbqfDH$EBggAcyJO#F+N zAmE7rh-!t(WfS0SrCoA;R^p+-+YT;z{suBk_|UvH`Lf|bp5D7t<>weRr78kXA=Ven zn7lgP)A%`ia6}^S7~+cSlNOayc`~{@ooXl zN_&weaif9msECQ^;v#Rwv(zlU= z{Fvn~HeRGIQZB#&YLMjZlJ!6ICy`7$q zBDH0R050JT+`dHKS;R;&2rlMXqB@MGCL(|e@~!+n%0&AiDvj^||L_4VYl1l#a3Ko~ z#DWl@Ou!*WCxD`h$j&P2wLpN3HD^d>-r?NS;7H(?$v9thR7&bUWB=&j2r}vY)ZhX~q7i%9uKq2gy4QajpdLEaHH+x})Wl01o@|kck)M2{LtGr5l$VJ}L zMSE24RZ3N02GFRXtNKLzAQ81ab~e`9#DQWnR3!pQ8w{sn zP_Jc~0X%c%glxP#zI;G{P9(YK(*}MYc4=ztkh&ATtw3`4{QX&o5DWouMc#jxJWMDq zZ=+zY(@NKO)!n_DrV>aYtxFw#z8z4uK|n4Pxx=TgJ{`#I)I=+GxS8Oasp#|cd?TLj z009*%w5m9JeoV|DKnq3ccXao9G{^xtFRRN= zcIAF=u@eq;d{_W(M6#=tPF#us0O>HM-3z7!q1-9ASXfH(U~Uzq-&&Cq(b`)-zyq7- zAAgAd6R@qNXdwc3g3C_>peAW3b_x}agERn-vn-fkycKnFOkEHlnP2OB*;5&i2|$d+ zTBkUQJ&|b(iS&|M*dHO9W9f0d<}L5_O>lnx?9dwku1Lmpiz?YU1Hdc5So5p0i9$;} zK;0U)O<{sw^Vp>lj5S$MvLRVj^I>;EBnVRoVIs3lge%A7daflC%L`vR{3=ChLT0k* z15J7KK7M`*%p@hh|MBuR=^9oNICt)!kKN{RU5^A+6t2Rf2O$cJ|NsB60YhenvJ~QA z6KTVq`nGOwMYhr+wE)vVT^EqxU_$6Avn9t~bvpvW-DrP>ewOdh(CB|3mupkyV6WV* z_O)|afVrv&$%@M+N%sZEYD*$ZD`mo^D;+5`*t5Kp#drna^_jF=v!9k`MkpZ)wWa^b$nsPVAQ1{VXDHz~Rr2TY^Y?bDi<(8D3}Vv6W9P%;!%O9L0#Xu{Wa*b~ zD3UE}Q3!(Sw@#c2fg;&901tdPS^yHm>(NaZf6J%$zDiRE5r7@hixGLNrp)UgX$z|mn{MeAgo%|wWKU#o!ZVl}CH0I&xk3XA{$|Ih(NY-Kr=!hr=?RYgfcA^~HI0dl+&0)zJF zxKC9}AjE7dVaKv&-MWR}csuI)R^wc2NRmokdFa(`L$9n1Dw^wFmM|g93Iw10|CjJ; zB+}>?n(x;{6{OyMX^d~+_8;T&ZLBT6Vk)g1iO?@(Azqu}dM-}uyz;g&c-K{^oe0jh z);Qz9{l41i*KO&HR9Z-u1amnT;4wuJDDslFvPpK!8fU&WrobPB!cWJ@Q9OF zTR#)i^5HpU8JPi7bp>A+Z&|Yq_*33R$Q+Z(aC=&{(`1JGUmPJSh z)OtNQYKRRjp28xacKlL+2O$cN|M%Ze0X=AXAqE11HUNR9>w0D&N-S1@UV(8G zn2ty``Z)I+KLcvz=g9~9 zFx|`*JCT9`K#74fCR+hug25>k0?H%c7s%@GF>F=!_AK)j%8ayc;~ zP#Jke3OVPVsC)VQzvoevu9Sl;tyZUBXBd%qfg(lwHA?IH|NZxU8pg(Ci(S<(2rFi{ zedzwnO0&kQf`YQkVR_G8>2G&ewHxV)C?=-NK_2NVS#>PrN5kIHBf_%DzsD4Yk zDbbAeOI*=g>i}`AC!J=8SH0%_=bEI>WQtY6skdY&ezqNN*5S@o-HK{+I+;eh>8a1^ z{$EGOe6^icNfJ~@y1nw>^XAc|$!n&&PVvG!Uq0S{;O=_@!Yg0zw4%;%nXJ%TC^Lw4j0-*O#Hu`8^Y@z@F zmP~(e{hzhuLH`NM3XlKh?~(yWZF4Z)f?yG4xKj}CoH~Rh!+UY{quZA<8H4|9gho$Q{IcGPitYLMV97BF4rrbE* z)*Y^PXBV8@0-`GBw5vwB81Q)*&iFECG$Ec+&Z~A>dfbfiil9w}-epX2r+T7r08^){ z^y~mm(d#e*n`D4c(%y6JC~fSm|U?(jcH@aBLD0<|S^!2Dl%yIKT5NMx20H8*r~Y3!2bP`tpZlIwhT zojg5zXTB0v5?dBHzb4i^>3WZRt_7Qecl|;W)2A`#Ic7k^W_dG;E;?M+(N;{M;h4 zt^Tp0$c5Kww}Q^1y*Gi1T3hx}SZdbRd|K&nh3RGL|HgT#qgQ^W16s4&f;SdRj5LY4 z#MX?i2X{u(TFkPFuGLO{SI4K@&Xp-_W`#}Sw(Ir#bJ_Ry$%~tvCsPPD2;sWEh}3fv z5H$FGf8Qj;LjGF)vH%9`_W%XKJ!pKOR6=3iwAlwBDWF{}E`a8ip8R&s9u6xH1=KiH zdJ&0P;i$e&+Ne5c3kMgx16Lh6U1;{zO140n(HDe*Ym4zZ>6*t@peEpBl#C~Ib=PoR zD>5eut6s^No}DjGq4YGfmJ?TzoC0YH!&=yDYe|?E7db&X`<-V!=uS5PWg|QFjlrPI zRjPnkE}JKQ$kcb=4S)uYKkrsBRO9G{{1E^Skq|v03XlK({pA5cYjLrhP$nao%mQ_S z81U6nKwe!gmq6%WH7K@LA;;T}Sp}&X`-}944$f}k25X9}ks!5E|L1YHy1r2Pj12YAqtPb|M!3aGisPHl){0G*@Lb? zDAN`N-$2G`J@JWdFTxN4NQ|)ypTHDlaJAjzDh`FWR6Iwad&M3zgQja`()boRoKHJj zQ5o>PbCrT0!TmGUHaA4{v2jzklc;B}z|zVtvA+-Hx%;9oeWp}rj#QSJjy*mt9IC`4 z5M&vYKn)gZi0kL4+u{EoTZ*?hN4@*EsQ}ngp=<5#yDoq! zE7zC+lr0be!%xC++#) zAM!i+(KrOa0~4=ysw?H^o^f^sP6z~ib?pD%j#qz06jJgOi>lX`El(K3paOtj3i#)% z(~aCv0PCwC{afhifR_J`{1LbYGFZgNAqtQ0@4x&3J7|MCm`-F7p%pH^a=JR^fimV< z79h|O<*dI-@*Pv2D7hv`Rdq4t)(CSyPNGuQvgh=CPn<;7=EQ5SWC{h3>VM?Zk zbI=U=6>O}r34s<3(hb}qhj}~lFHjY&rKd*xy%hp>vG9ot)dT11@8T}NmJo&{U3X?O zC=|$~X;U0;;c|ciKnmsP=-ozfAQT%5hP@caZub{giqN9;ZpL<7vtJ68%z})SEkN%< zVBH-qu7ZOA4t|XCtR{&7V$aJ-FbjL+0OuhZkH7!-@T)OwgHTv*!7vEk1viqwF~;Q0 z0sv{^jP%&!`9MCRNTET+2eibx!deBz6 z#y6|aWk(@pkKuEdBD-}{92K~EG|(@4@79w0KZ)7@Cwj=-f*8WGXUoLBJ}h~AjB{t6 z%*0;Jwq0Sm<3~?{+E1YS$kNF%O3p69WzKuKT&_POl`|Pc3xtF)g*b85V|R5n3j$V7 zJ2KCQg(v`zU-j|p5C#q)06+xA8SY|$kXR;zzT9RZ$w@1KC0q+A39k*AL9dW~Pxp0U za=siHZ~!ly3;?hzU``w@FkA|1VlJ4BwYx3cKJsQU$pU~x7lwQq-<3kF6<{pR_4C3w z@+wQ95a)lg|8=pYRJG0u)L1~Q3`feJm}A;2M`=FfL;{sPc=g>w0xSu~qbtMr7iqou zjv5(?=6~bs?`3I#t{uEl+W;@2Oh6nV8kEhVkiwvdV007=6@-Lfkc4hC(x|P)(N(`S z3bksMAlEBo>{@Sr0>hj`497XpkOq$vL!QF_sLX za&obtG-v<-0X`5Yb}wal8&+I@PiGgFeDc9UpfeQXw%oVQ0|B3}<^I~JZbLR11UL^B z#Y+27JPvb#ZQ|RIX%NEV&af!Y2x|g{1(2X2x{Ca)RWPDl6PeCfODVu%fGyx6PYY`^ zbCwx9MS`LLCqMy!70(ov`mDcj^xOk$8Tk!ve8_&R4F7}$zJnFaL5SO;JoX8i=YCGl zP9h){RRW8mH@3-h%%3gy$!Npu>FmY$==z46kthk1RAnj++{Qx)myUB_00qKRN>~=k zSO@?PLds=CYb%CUSNz#w9@nV{$R+?c0096B1;mTv{$~n?c2RoP5P;O`HN6)6%pwv5 z4N*AW%zP`yJTi(iWjN7vp~>qsy05;3F=1;IOySB9kc>EUmx_Zt+{;Q(Ni#GnzN z0fKn5K~-^N22jH!PHHyX+1^Uq%HG-U0-@e~Kzn(u0UbUX1>10X0EU0acl$Vh5CHf} z8vOBja*y~1;G;;7{QHCMc_KFre!F9Eap6Dl$ZwkmAqtEC|L^&ML2G6>naD9)^RZrv zR*OQeveyuh&<=R|XH#knLU`j?yM`NlQamcC z>2iT+nW2{1K1w%YImfr5RrKQ^uZ2^OeAJoQmJc&%6spi{q6y9?F2x3e7mE{jsm;I` zaUusShT(HOWVbw?7-|M=n@DTq*AvPBFH{{pIIxg00KCUMPQJcA?1TX{kyR=S#`vvs zDT;})7}Gg$^?WMjhx_{Rd)jOB#bV^#7g<_XuUR^`usF@clps+$;m&9`5VGhJ6@Zts zjbQ?oL9OVvYlRt(d?etkf+tybI@mJ(&$ zlIV=2IlEIX;IIQO?4r+6g;M|?@1d1y3;DO^x5tr)kuSOAy%lzb&$xXW3gnS>Q2h{| zTt;`2p}fJ})m*}Bx%-?cOC8rVtRe`hWEVV6M>NTlkjm~#JBT~OY^Lh{_A^qMDWHIr zD{L8W`8uB-I@R8H!Q$aNFGSeA+77&G@pIXX?%_K^fd4zD^oG~iWigD(q|?B%h=-B$ zC&N2A?ztg_0tcCi*rG7+ZCPdc;o~OqPl?+ujw%M~p%rQVTG^_q^AoTENoYZV&1iNC z5CUt1z;X*w5Q$Q(8D2?lQ|?MO;1}sTxKWb3O~A`)qhqe zlef0lFJ9UBnyrs~1dDs_v7w9C1RGf3Hw&yQ-bvZ{y)mxf{tI4Lus)^M zq6)A?i5FroCG)QdnZN~1(xSi%%lv7fF?T07^c5vH(Uuo9=>XI5Jy z%S6d{8T&~)yT}}DHS4RjG1O^E^=DOkj-?UX=>D9uYOE|qmnxn#oVt8ts}8ld!Zn-e zm6sf2HC_Gt^>t>kSI!wo7n+Kr`Jb^jQzRvvg-Y#MtULWR?;s1Wg%pC-j&NMHZW`n) z#*9|0%I-3xtX|+*txJtzxp<_GPo3rWthEP)9LZp;twj78vKcG@Q_>ay5*dvY0XXM? zD!>~7pnwp2dPp0fv_W@;K)5~u1ZILmrb2+e6zvYVYTF}EU;J@Bt^qa+ItJ`{=W+DxEz0mPatC?p1Aqtf( zvD&3WnM(F@I+gZ9AOb7`!V@K7`udGv|Ie8)ooPogbbI3=5)ihFP&ixA!xSR~2#4%) z14Iary4fN;-1<_w%0YQ&Fiw?HZ!I^c(v{(0C6QemZCwoV@$SrNrWS=v2B%Ye=jHz# zBx_QdyN{OeCi0$kp-BbRRY+NBF{|M`-*3I|`W#k|k4B62_J?mYzfpzy>tvkUs*YJL z)dS}_vTu5+OD~;@A7G5LSc2VWRZ?Z>D_{bKj-@kz%*Znm5rSkvLc^Rg3j)ZXDt{Hn zU)r+Rt)h4;NQgK*eYM}or~}nWj$9reJ}1yVXaN|qbe_&j&bh9e7xbO~|3{ZRk8iSy zu7)BA&Yn(-Aw@Hy&rizLtmve6X9{5y|AD9Dw!Sy`hVe6F_$*W?yWN?c7_%aJ{pR`9 zLZm4Mo>i=eoqJ}LI{wGiwvv|$!dkZgIsgC+#6gxsoTEPjCq|1*5n=;@6yYQv48W<)7 zPM2|WqN7Iin4Vj+?#wHXCfrn&gf`#V$I}!3=v3+eb~} z8Ql|27kfv6iGW>e%a0*W1=$sbw7T7@d1h-7pAHF~`&x@JxO$A#wb%0{IhV{8P;vz6)t=pp7$ zc7s!E0{~(`oxeyTM$%BeLT_h89f6I08b>Uv)yRe zsOyIj4>$8SJmEPD%pJ4%IeQ`Jkfke?d2JO}p$jEr_bbF0IXH)@!XBi+t*}N{iE9?{ zg4n!uaM`2STRv)JxzlnQXQ+542awRWvG`(6X?l)@HU;23L?PxM%9%jh(pEB2geJT+ z=asqx3H~862Pm)%FB}V_{uv1HVEt=&B6&_BjC>82Jig6D%wrR9f*fkKNVQl1hBOF9 z0b{QnT#Y&XKXh1uypktapL6>?nh8q|v+Huk_2!kk0Oedk;wg*v%+qC>yXb}ca4}py z_rxi>S4AM}@$KAI!Ht;~k|6+R zL1MkR@}%F8|B4JPiI*BCxy?_>HB<<{HYU4VH>!islCdgTxG{#_-{aWxR?{&>E^KT*Tlrm-Fz^~vH(IG-sGAFJ+ytqQGFssPXq z;@O)hIqvepnoi=q5`oQnH()@3W}gob$~uy`0;g49F%VcG@n9Sw1dmPnbdDqxMhSU3 zE7JSd{{cbjt6#DDaBZ`#vxmZnOYPxlRN2B7UyC{KxfDsSr>Mvh58LQk#^m*i`^0$k zDdt5o{R3H~>~EGqgvi^Z=%>{Q>~etcE=5w4T{5v;%AI910}4M%ACVI(5)ab*%Uk!+ zh%l56fY*{#OtCZg$zX&e$qfmzB>){gwLQznH_R&k(y{!r=Gb`GIVRj*0e@+eVTET? zp7^(Z>5|sT^DBPM>yJJZUdD*_xV^1Com&ZR+~F+B$HP4%%5u9KzU1A;mODg;0RHA!@Cm56G))3o zuQ~BAz%|i#?vGb$N|q6gd_ z!dFdm+>3r=Q-XQmV_JIB=T7Gy5}(J~yRRDrEb};8)3d?exjZ(;;siL=zq#EMe;KO9e^(?ac z7{6{Ejs=nh3$rz@W}9ZNC&^6=-P-UBo1Q!Wq_$mR9*XU< ztn;VlWc*Qj*@oBM8J^$|CoSMDwTm47+~^Y-%!kuMb~J|Kq$a?Axh{ZGJ89(@ibz-M z@PzTocLGEutth=`D6Vo-sHbVwv@;?Tt7rxl3E{prlI5{|_~ocZpla)wL*EU>e3L!- zwZ+zKwD;7lATtLg!ExB|PjP(T_;{M2xP@HOQ4WUUHBezNv`oNk(L>VSVNuI@z5cix z4mqjnvC-;+eaySKCq(00+%xcf7P1T3Qt0w2wtEj0z=xIr@n?28=`NgP^a9pb{fk6B)o-w1i8UX82`MpvL=c=uOIViDyTFn>!l$O!`CoH$+(kGCzC+_5-~>Ta zfM#d3|E2dH(FwliUrEZ(|Nc^7s7aIz14ADRDD7JnLu23pfYUJK6=xcNLG;X25?k*N zuWs->`9l6Z#gy3t*c7q+0b1b(@;eaoeD0{yO;aHy8ma}Z5dFaOhM9l2imx>D!s-=l z0(U4KcmIZ0$R3FF{V`n-q5yDWrQC8i6bMt1f4+UJI2L;XQngoCzD?wQ^t7&Z=7U;Z zL`9{8deBhfFyseH>FHde4YF&Abq_1w zMdCZ{(vMJO|0#DgP;LVrk3nIycb>dP@3tXxf`?uBGAuE8%T-0XKrGGA{UU-W6pvT2 zQ80}E3Q6FLz>Qzb`W#E$J}u9lz&yml$Hkkm)pk$owF94H8??WLAcEl%{ZiYK@=N%8 zS|zOEoe-q~q4|WYx?h`9&0tpBnD0sE!8%XL)Czo$7UL}oBXXNz^5aBOZ|I z#cnbu9T~<&K;#bUufz1NyeKu6DvIg@>j^{2sbpcnWOi=Gt0G!QpI!|F@&iK+mJ{yS z>#Jj&N!p-_^DjlP1&yVE#zNL}9&8-Mi79PKwSnf0XJBoX$m7^qnF zBnnAR7xa7g=|ZNFAV=H$f7UWMr>}xo$4$Yi?fBt3u4!Gx)tQ{StupYAVcF|F{oQ6i z9feItyQY{JgEadPQ41~yxO9uk4PTg?f589%1SJ8V9@LHhVP?}?K3>dW(QJjOoXxc2 z0i(W$CQavhde92J=sP(Wl>Ibw^ogq#U$`3|ndf&FG*_iMsyWzxhv)v<_%Atd1w<^j znla_^tPS#E^y@6nF_HC%i{D3YweZQ36sxsPIi>q9B_vgXN|#E(eLt!sE)SyETBQy5 zO-Y#?poG`0AEAzADqhREg_q$*ZV`-As3O%%JF|N;GH6D7Oknu646KEWjC?e46Mlf5 zUrqxb62WdkroOTCPO1Ts#Kpr#fK623Ej%mH;@hE3ZWyUJd-`Hd3kX2)v-^N7E!3Ej#gWgdYkHsbmn`(ZJ2T6Ey{>wrOOcB zeq8gDc^r#zrt9U17k_LS8I6${NRs7Gl)6!$ysq{-0(a+?v`{_4)O4?bro!XJJi?-K z|2RoRdJCgAnWqQIJReHP8NE#O-*qK_6WKfTPUF-I@r^41}y z$IYK)FU{(l8+_>k01XYywbWtYAvWH3c~I=q=@aeQ35`u#IM7;N?fmS|^A%xUF{0fD zzD)AFuRe!)RGR%CY0y}(Z$I&>>quFY=8R!`#Rr){(5hVa(Xpa!i4i#_+4?sMo&)huSOSmNFMrJr*~BO9s}T}VdG85N{wZ4U zlQ9T8q;gy=rMOZNGlNsBI2hobjY-_2^pN}9dbo$?2jJ*&tTnR0+afkudCBuAoQ}~X zsQH=ueIZj+b|b=}KC zlsikpmYRw(UY20TJlT-8*d+5h8PM?g%AA{b_R5%oN#()u7^{6ZH51rhZl0`r42N?) zi#$MqNLVP%Q!D|}tfy)%qco=`a~6`mX_*Mlly>9uR)tS3Ob$zX+&qCniSo6f+MMf6 z)dHCI!eHW&{71?6`6V|B6zT^STBqko?s6;RZKp+ml;x$fW<>v*z@#HJr08!53D~#l zw{%4im(q$qR5JEq~Bwk(g3lfCEh(>}?PL z01eJTn+B7@9!#bLBme!77N7tUl&y(+pNjHW#TluJ#EptnMF|<8k!rXG(vi!ak24oy zWY?ufH{P|fXd!pW{~pg=SWiA-VoS-BT&MbAN&NUu(Q31h+CH|&6W zNt@Gl^)2N%<(l3r5~@EZ!j^s4uJZwX3=P)CpP$)|K$96kY%oKUUu)y=jWcW)Et|c) z$6E=fFE7H^lu0&oUOWW2h6J*cUo$N;$n_b*iyn5s2`naDhvrv>PVm5wB=*mxcJg5V z$m2^?WtDtWSavT2Z4vD@f-h1@bmp+&7g+&5?jQg_dWeJkO#437@3Cuo zeflxO~+`Y%%!Nv($~nt(TheyB*8B) zC-!#E8!*2u5VF< zyCZjCz5S|uL!|>9nDqhDV#A6z*)_qVD*2hIU%)W&5X$B5#yyCMWQ=|cw?q|n@Rbzj z1swP=mc%$OAOF}2_?LusT~A;|S;DnJe`{spxU30~U`@@sgEtlv*Mckm@I%kS)d*pD zZ0hO@Dqift@3o@7!n;FfOg#!{D6irKeA%x3E{bBx03!VnU(bG)*z_CFtHt-LJx{mf zsB0b-?F7x}Tv3ZID`%xn;T2wFoDVP+Ul;L=M7z6<>-B)7Pbg~bEcUkIm!X444_{DZ zg=ak}tnxysFAr02uKCNvQ}n8prVHU@`M^JDjVfP&Jk8$&m_1$0^>auiF|c1X+{1)W zaOI0#HT40A#P6Gc1L!UP@K|_wvXY6B>!iM?TpH+Bx5)+LKTMCRQx^8sP4EneC}5Hc z9H@i8NVHV3PqtoapKwZrq9L-4{=@u5jHho{!L3)C-DbC+oZp9u4(}8nQCd;npD1-XtjmPIl&fLZmUk zOY`;z<5&Lu4P0byx$D`fd8S*2_uk874K+|Q;tM_&MYYwOwX<9OX81YA?L@zTQ)i{t z=KEcvuGkvTwm-a9HbeGzsPKsHE%n?W+&4%~GaT^0Cq%^9wKlnsMepacgXZZS6b=u> zr_mvK$@w$E{$u@WkhopaCV}c#U*Z?V^(QogUGNO`lcCFq2!y5Hy`7Fr_q}0%CC*u9 z?U(DMb>uDmlv;^Gw*&9nF^>jZ~%ADr<=>Ujd3I%|h+E&#a*` z@3;g18+ibgDQ`3JdNJ19zf71G;B9zQ_}7E|Og-swX|}4QO>YDXx((tq&HSkHTf-U9 zb=kiZPwn!^gd7}P4YJ+W}z_#Cu_d)x(Gz}MbZBBAo7)ea4B7_A16$!qZBODenqM26a}A1v=Rwc%47abW)shf$&PeWfVaSIQ&!+yXGTTM zdw#;5Goj3iO;#2LDhn{uQ)L;VKoq-18r81|DeZtS z?$Jk%^Xj#AwLUg>#y}ZS5&!@S=Z(&o4a84o7cyfP+unHb+Og#1Xxj|dmXC3e0Ogj`Dw2Ah*UUP90Gql+*&LL7`mb*Ha@j8 zF!tdTH7Hn-z*1uV>Wo$gU7P}jZ>(IWa~3I5%Y(mEt`oCIE}D7rJZbr>i#=Q0*QKb& z4rgqQyHvx8zp24vu1tGOT~FEWxhiyuKC9vF>#?AzINH0wJt}Ihiq_V`Lw_Cz2;E5U zPLCI3;E5Bq@bl?U$G0r3r3Qs+x-zB(*in48VfR}iE<|=@iB!9mFO*K4Ib9#w9AQN7 zpG{5nE_rN)od8@fA z!2W{lbA>vg$^634x>z8z+pzxQQx|CXn9CnYzowz0*~TP$Voc|JapXj;*l*fXqGn;R zC$ivkP}LOYr`7haKOD9>7n(R8loS=ZlURU=u~yc^sHiCr`})VDp#aA0;y2RE`$aSq zWcCA)!FX9qhqydA+}jZbOu<>6qn0-m8x4lYDfi6^wu~oa=p|i*gtL-Oy$6RGaC?{^ z){9#8=xb|MNkLKb>v`7)ESx{RCKaycWj9S{e|zuIrp8sSPX}8mon&>=IH*}~1NLEy zV&oaaiyw7lbG+7+`T$w%Ek$)VHzWaML+V4eyN!KF{pGL1gGp!+5SG((d!)N~ald6m z7cwr~A@eG3;hdP<+T%bhAT_wTYxD`lV?#}d%-HrLa8W3rp=&QOCVqcJ33+G5e{D0gr&nF?z|x_uGM+=IlEj*c5N> z3T&fpY2#CO}dy1ydqkm^3qx-M7^GESWsnW`#h!#3+r(R#DPv8fPq)swPP%ki`54-HaW_yju$s&+ar)4+|Q2>oI{5DsmAg}j_1K}8M5-h#H*)e; zUV!;e0_CNN(1_Q^&h3xoNoqu>DJq zZD$z-?8{!4kb>q=$qlqrnOYM{Mj05&7?Zz+C0xYPw*LS_uEx|Bi(CAOa;W3yF%lg0 zyGeq$-3UgwQuQCKde*;EE&O!R)f?E56zjk}vjY>YOh=EHhcFRPF;`{N6jZsZ8g9zg z++4A=T2VRlX>jW;t``7cW}ePqpQG-eHxAjZm|3Ou{VbK`+&Y2^ZhB4_RR{v@g2d=X z6ZGh>VOqJI5Vs_z?*}Qt?qoB3Lq3Z{C|(}Su>~RH1_Da zj1;cX_NAMEA%-I@D5ghIPoe37&9f41!(m38ZXX%^h*NlmW`4k`9-WDA@0x2XMo~V) ztRWsu(PnKUIsroYgauLKYJ?~?2t}W)lX@!al6$ex57_^&FXZx$h-G}gvCMe=$Ym^K zumAuA!U3NmRE_^)T{z7(F<{|j(TcuPXs#NiB2Qz_MHkqLBMG3c%a~fY2&AK=GPac~ zV)y2Mq&}~Mb0sb!Mp`rMkRq^vpH8(OIwJk3cOIsCFaWUL?AVha9ovu~2p9}N3=xu% zUD7e6D>4H;g^vX;@h+NWC87W!fv|vi8!N9j>V6gOt2e<50?kI^IA5o-v;z&tg&I(! z1Mq!Eqq4e}r+s}UG7bRT7lxPdEYJ(#hGCWMzQI+p?1L~XkxDO^>sk)qmD|n}rpDHV zk@w|Zu1zK=@niJY1ZBBgO?I*L3%wK!l*1I4s4EzpeF>r#2w8k(hM$Y)1Gd0`5YIyd zYPs(bKJ5AW6-h=x#e%fCok$h*#8I=%n38WKs1?PG$$Qm{no{~q-A|CZ__{z~PQ!Z` zVWs}nATDQX?%Xmwe-~rgqd6E0W2pf8Se^@PRv|oE| zPDVefQ`__nLT63qjp!U`k*&@eIiosLTu`i)P1TN*Kdj6HobbG%9kuzrPFx&P8-8p|u`BMuneY32+RCA&~b zSIo5L2JbTTsDDES;!hI3)|8p^W}&?`zFC$gxj$K~%0@N)pIY0!YT6l1^cJ>^R|16) zfQ_4tBC=($s~LIirTo$WP@;p>kLCF1ggk_Kt|{zGzi zAL0>(Z3Fe_9hLPJrgXa&0=KtRBiXyobJ;%)Sg$D0pP$q?fBeKu?7o!93XAR!I=F3C}vniDqHthU1yABB|Jg8UU8CzwSKAzaSfyYH$o+Azm7=9rxfms4W zVWg;5P)wwT9-l1&eH%gHFv~p=gKhzq$U1(&4^6lPZcSN@{idQs-5qQU(asX^uu>bc z6w-~a_)CTO(Y*t+?dIaC=!Q+05mCmY-Ns(9%yvQ*YN$X>R4Od6DCm0NEF=;8V*>q1YO)m-rxPrx-pcQf zDc-pycR+ne6S)W*L$^22hRFRC?`S1bK{s1Na$^y8x~YY|D^|fcgMUGUcd~}sorek2 z`#A3 z60?@;HXCN!`zwTQ6`)3A(S~18n5<6M}HfSNkxx10aIJD8F?I-F;Y{L@!8j98buv?Gc&A8jRPNx2vJ&@W`nCQr zVDv@t>XPPJkV@B6Z11NW4tdxV##f2_|zLfmhN72BD)#;%3awS0Y zy@Ql?2wlrp)VmmQ6Is`+ii4<|vFQXwgN!I%@kpi84 zv8hW7xd8(cYFE_rJ*R>CWK+GM{BqXymU0y@c|8mF7Zrwf#5y)x5m{O9!wFo6P$r~G zuV!2|;aR;m9GEE;-363w$tS=S^-2cn&1e5nu@iSnom_0bnG@VessO}F5N#p%?(kPB z4YL0CZ0=KN7T^~F)RdNSd_igWGp6@2qjm02KVO zqqx>;8{Kml5s9Do=gBoju83MCIM$oi`r*l|ZwH`9PI5srY~Ld)>E7A0NFXDF{Er3h z@C|66z{-ejE&VQ`YJwd9aG2-~R>~ABnA+11(M@0_bOC zkuZeP4Ft}_)A4|StfD9R`0vex$4U@_Sv9y>WVtv#!rMlr*`t#Qiq60+C&{bF! zpXoN482sjGZF)+RJnQ#Y0`0jv7SF^qqwGZ9=gN)q-ls#$%e6xV@&_FgSQ7r+j0ix@ zgY6f)>bTjjP>m=&Al$0FGn)r4xMNB;DuuIzH;LLue-IOcXo%%P@raZ~xxzYo&vlW} zIh*rDd$mzkU!xBpGA#K@9ggyuj)Ed4D&fnee^m0V2FwguSs0n8CBV@Px~?%pp?)pf zUqn3Y&gN!>NET}+Lp?dd?p=q0z|jAAuXyNAG(DUO4xZjyeN&*;|GADME-RLXG$@E+ z07CZydR&4ZJcnXWf6|0?(46FdhPXzX(>7xq0v8fO)*rAN%3jww*7Mb|i8J?R@Dtg> zKHz!vvcZL&cny-sScyhFyFW2J4t;EY45GW8SB(5XN#6r)U;qFN9YLEclfo3F%3w$T z_fV?cPyy$P_-ho-=m6k`Ei!^G;(pYCu+rgD$vPagqWcoHr>qfl(FLjmtmh5*bCR#7 zB*+<4^mZqGD@g$GZY4reibT$8TH?e-l&a@*s zkVO-vmg0zrJv3NtKi!s`2KZ=*jkt@)AguWVEJqfv)V07#42ARAy(aLniomupIT`DQ zzl!eM{o^B&A#nGqfeXS_V@?EtRPnGY3+$6OTP*utCh@#^`~}Cne?Yu zEkd0!{D~;A=B7IYsjnF;Zcdg)RgH z&W~jd!Gk$~k);y{WkqJMylG+*re|ljb)Oyloz^F1jAz2;uBGtK8Np2`+Z!ybg)Yof zJh8d_QQhu^DE@alejrz5Fb0SN<;od_gl{BV9-V}OeV198Qx_zKNcE`Yd=KMkGTkJf zR0BQ{XX71brs*@C64-Bn)rZ|1b>|w<%cvjMqbQs3X1f1T6R6=5A>149H6lt zk?=g1K=8=rJ7QFFx;1X)j5Z9OLKBQwUKumxgk-*9T-kC>$g&y1OtR<;|K04%a50^j zajSn>yU{GX8kbQP!yUANZeYaHZHY}@L9<=8JRIwdJQ@`lTB>#9KV*6OuWd{q<=M18 zLA889261_6)ycheM=-X{tw}vN$xjd-*^&Y)K_%lY8?r+;I9Cg==jDhIR|83qfz_xt zqA6}zP2FW~|KeY9tEQm!^Hlz?<gB7T1IBJ4!pS zZGXz}K9yr{{?UzTo$k#~PXIcVkL>rv_a)X(`H+_p3BFlc;K1 zB(kIHv4j_$(#R|k6~-eX6e7}X2Q!y;)Y;*azm7^jnd5&2B+DMMY4={UjA4G<4->J6 zqNV_*?I8Rbg5)21fhpi1u2t**%hUXH=qtvKsxP4|y9rL}A5lJG^A|D+JYHvfl*Y)< zFgl@qpnb^q&-^=IjT)1|P$VR6b>00~m;bU3-s-!O*o$Rx`R2S5(CMzw{eXGICs~G- z%^bes4AtNJXOYPv&ebtk>pyaNS+Te_g_>9!zz{Z6@5bBHRpjNVvq1h&bM&p zLc}Nnvgq`MbZ_ZupMPB!qhO}eNJ-eHIo~p`buTiv=5%gBUJpo0IANZ_8N+NR3fHyn z%4-|(3GQ|TH2mqe_sl^zp#A`K*EB59^FdUySXJgybC!;b@~)QH)ah?a`N>FcHX`#` zaFQSVe*s-OF=?)TQSyFIINNlucri`gqL)I~e3_mDt6lUnSe162CKxk%4CVl{c=xSPOMFVD~jDnOOd`SO116D<-Ylsj%1i3G0KjLRzY46?Jqy zRT&IxrI*PN-)Ejq6cujEA_do|nlc!dV3=Bp$HFBn%XY>`L8ls>oeaH#HFjvZ2{Y*P zS|Qk?ZqX7tpMdYmm9b&iOpSw5o|AmZclB_jTOyqNA}zDR3|(b6Ci;Z?ZrblIqf}fq z+$@tGw?($1rI9mpW*TYK#o&r=Xc&X~X(GRxnFU?7=0(WgPOLbBwadlT1fgd+brgL@ zT|7w&kizg2k}Mljj=Opy(!Ka06+ItBxsfMImxc$n)uuTq74$P5~pC zmxj?ZL!GLPHXVD$UX_@zD9mr^W^ah1E?O?V@VI*kzn<~ z$34nVLxV}C_73Ez7}6B6)dO1OJ)^DKT!WXmXmANG)7A70J-Pc-G>up1DF9tL_>gxa zgeKCk2Jy?{#cli)u%_fMZV$>Orhe4IO%)t+PeD`?3W8qW9Q+n%+!k)63y@CeQTRI9NDB-#ENZ1K*tzbgt=PDVSz-`Iz6k2l1mI0+ zyLLpSWh}oLNsDi3`E0R!Pxx*kLz36sA7i#>@5hd3dF3aAsP<;r3*!6AG!gKih)~fx zBYD~?J{V@PGPmd?0EZp!b9uJaEkENhLXFY5mP>O=HS+?G5%zfsxrg@q4#{C2vV~*v2}+JyP7pC~-(wJL@kLRHfB*=fWUtoTndo9O!g0$TU~QBv zFv3t#MGf!0G%N%sTpl!nRZx0u)ah1I=XkVtICXzn|v(uXwrJI~u1_7EqdsXsM za`_wvUew6cl6brP1$&|+KBu|T)6V4-*01bXJ>*NeX}3ill2{!(n1OoX{oy3zGuKtBDNe}=41Kk0iNYsu0bKZ)KC(|EN#V7(rEVJ@u_#Ube ztsFo*lxCdFLbs@Th`HZkaoRrx*YOq)Qh)~j+iJ0mz-cPH?nzZ2Q=`MAN+P%rbzs4T z=Y&2%w}qL`MB9rcoC&`%3V>y_eJdWNp>mLn!1#FZYjIe~2{Hh)53`!r>oMsTC2PXN zB7OtZJyW?fLGZ>Q{5;&WG@y&PnMn1L_VEFxA^vamV(GSo7{OkzcTYH%rd95J^UG>` zzDNl>)mhauCC~_UdpoT9jOdx|(B{Dt{G2pD&ZHkZ0Z6=IQc=&On*-_=;^J4TAl|t; zW$$D1XdWI&(j~W{Q|!t7-d=x3ld@d0T8 zSM$3RQppCxtWq#BUp&Y%)0ZeF)}{o+F$|Hcwx6)fIM{jE>^nEGd?~#&Ss8liv;=uM zPtnstL$4_kGW zSAQ8niLDX4rt8*XV!Cu}LdEAkT2FWUAp!7epjiA#(k`!zh?dy&)j}SRhN2i1puwwj zHLKp4{s=9)S>oo80?V=UHjs+J!byOY&Tkj!AD*ya3SF~NT&9^ zj8H$+()A{8dpA|kHA_1RJkU%R6GP>y_RcH$R4QA`oEp%R)4^e_?e}z4yXhvsf*k#z5kU;ho3j#@b|7V!^ z6EvGKJ!%T_>}MgqB(n{l>8v7Cn(G&|`?Mv|AfymYP#0h&2{M7Sp<14ny0+Rp&dYwA zrb`%%ZTW6Mp&0(U4l7qCRf)LgGtTjZn+J8UiSDz2b&bSU16u&?v;9@+pzsIg?6K6y zNVmH(9i;=00TV%pGwq?|6;g0$da7%=xk#!g*yPd zZiNy`x>=v%;--4N&E)&f>sfwdb-DA3A~z< zLq65@>`$OvizzINqKv0lS-B^72VeEo1SV&EfJjU#4uW0r;nV`*>0edSxN;$m#~hPG z$i;3&;3Xnv%gSsoE;~3=p8`}xWe?Q09NXT&!2PDwfD(0E!7Pj&Vg8RHFnLeqpx$&v zTXP{0;~J-WT;0MeuWV06Isn0lm_q1?{Nz?Teh{}#&{ZcsX;U$!vMr)lHFJZ+13fH4r;%yn8%=r|Cj{`?&*tH&?jM?Xk`2E20Yki z9PB}`drq#$;)}tQuSN_xyQ3>HM-v6T}xFvQ=T znw~G^8DC%L;|7s!_C_NxJ%hr{UO`{{Lr6=&UJuAfP;#$oXnJUo3s+8KW(v-BMMGXD zz`%xm*@BNEy%yjuNVQ1sPa)BKs!ceVBLqvd7_VsMdly!=6Y+sxAu2elvKpv6)1?Rb zA1!Y(MCk!t?nyzeutY#=RUIe>fMb zyf?dq+N%b*KR3|QMn){|okL!6(teeIUZyyaD)@vL$3i3O5??&eoD>P6YG+?(6fsRz zqT@&F9R-BS@{3FW15t3?TLB@rNgc&-c-&Te%J$gwH2t+z1={Rbe+&}Vh~zUuc&CdK z?yS+Pz3ZHgRv~aBp|)jY0FOWoipdF>1XI;$2)L2D+%kAJXu(B|ux{TWxBkl~Iu_x6D zHA!(_bJpa%%?Z6}^hLy7ig-|o`n)`d{6q>(h-!}eVoN{ko`KO(lEU#=M%6@u&tGuQ z&)mGC?RT>DPPJ+-X^9vH7FxalAHJdE-UyO*E+xsbnRwU0z7X=1sYmBt`H2(wM zWNuNiYPsUqt*T9Tp5a(mSc<-Dgk>ib_v0j)U$P9wYKRxmc0UKpIW;qhLVCIkOP~Z? z!%93PBwCozc<}_UI;kUQtFuo1(G;5C5ZAjVY>jhm#O{i`aOZX;DEID?)T_2jRS>Na zoBFoz>?x>*MoKH?h%$;Z-inkl7ts>i{$@4@UkN?_lzrrOiU5ef)6;gDmzw5cFqCb2 z*S@n)iHeK^1l96}v^*9UjGs0W)!%%gr2+yX5Sh{X&xijJ1612R@Grcr^2i8pXQHy^+G&X?m#vqDkCq90y z^Y@zS_M%C<5GTIX)2_esn^uGP8orLSJZ;W(pMGxi*ZP$8$Utq4xaHxtG@hp?yBh_(WnT{l}i%pIc;b@CkMdFrmAW+UCOT zeB_u{gHj-Edr~p=8x@>L0XkEy#d&gcnE$@iTbZ`@urKQhr_5?Zg|YWIt~PGzGFQ>^ zf}B?0&o>Kb1E2$&aBvTF6ovWC(iOM~Vt{#*8-<`U9#3ji=F77J6uz7|E0FJiX*S}g z%1`<#TSFkEq|0}U)m@z;@Owzdc0ViF^>Fs+8aOOffROq*g4)YKUZO#;4YK6%O^-18 zFb}O5dP$%yFVQb{TF8|kbv zn;x!VI@2rZ@Q)=;HbLp08_eLIS=TQw0_grw7kx~;%O)$#VmvYJ@kq8MVVQoBRqRnX z6R{2J)#i3t>(;b#e2XUTpGSf+wzg5Gw}_D;I>l=0F-??U9aneN1-lQG*Za8Dtji8T z=R3zBiemj@(nBD4ir9;UY(FZkUwO8ZhmlwItt?CJ9Own~&$iFR4RO&Wz=HM}>(V^e z;eFv`lhEegd`jE{?%VR>GYdis6R`dtTX?Iz{;2jipANjY`1Bnf>SSni{$=k+xzk7P zJf=AGFp{ish*X{%J#i48 zp3rPzFP>zb4=RB7SU_9Oq%%}_yv^(bZ~eJsahx^er)V zTtO?I=};XhzqpEPr)yA1t3PsP$9wcmhwUyQOkD*$p4kl=9F^CFUj(Ep0Kn3b zX03@t&?Q|-%#f_Ve|_r`4JLkk{MH3R78VmLS!$yn3F3Pv*Zz(Z>EOyJsAq#IA5*Pv zsBAp((RrnYGWBMHFX{ysrA-22Xn@|R{f-)01!^_TXLs+;;x9M>`WkMnP$j;ha0Ocn zl?D|ntwIA;0BCzP;`!V3d}=~D#5-Nj5oXBRb@<8j77xGwh3xxRs1ukJxpIlsD$TCIzF^Q{*VX}nop0x z-R>4$&P|>IEN}GcMgAZy`kf;|`9NVRg3vCu?L9u4fGP=$-oD0*Ix$eW9RB1ti(-xV ze}vdmB?O%zsn|mjsi|IJF)*vz(Uqz~62(8bTZFywHPa_2E$4b5MvM~TxkoHDGuy4Q z8>X?`;B@$R0D3@$zfKkZL}}YXjMHLny~ma6Ezcq^bh8fbfS_=C?Rx;s5SeUL9gp+} z^*f`*qYGrZX>fZ_<}4CT)!Vd=HnYuXTn7R^2KKTM5|DGY1L%jjVI zzCP$|Z$LQR=B9?e&F>`Fk`BfUIkYXJxYOCs`Bf3$bz4pSkt*ewcQ{27UGRknjc6DPO24Cs+wP(V6$ndG%@~5afE-v+#h3V9pRA&$HWr*q9+W%uCIB<*JU!Y`J;*00EGS;D zQxK-%r4NKyejhwfhNN<{(Y17((RR!y`6KoJ8Nqlb{cjPnH>{sF(L{@kT?w{Dd>})1 z@+p!Ed_&D@tt6k2W|BGslHke#Y78bgN5Y4&oUwaM_=cBs4?r_T>J$B*07uXl_>ay4 z0jBF6O|==puqkzW%XP(t-2y0&QiB&dPpQfwH619<1^wg}_d*5Z=W_SV76IC*J9+icyyuO*ZbxL^d+`3nDQarYe$*{6xCa2*K%Wd)G=`w zVkiDBoW~r7xy31JsA5>)-pF)0UV-2y9+r`IMd5ukl3tC1!y&NMt^K6mn?v6wR+iN^ z=ruJc-5}SI)rFKprER!*mwrQ4zqBgW9yR6H(g~5ed{?{#RQ`=+keebhnPA-p#JAU9;`}a3`{{$-m z<~@mtJtMUb`>+}=4Hc4}4GpA0!KZRI$v}XW@{d}EKG+%gH3k0-F-vqSBK%&7L2xA< z9$G0Moj22Hp4)3Q>n1g3n(pTkbZSC{BdW`N&?@Xpr4shw;!VDq$*%=) zPi^rzsroizw0vDbc$nZkVKz1Cuwkwy6LK(seQ74{?}eF=jb7I3Cg4MKZg`i>_g7gSHJ#n-SQeb0!6bF}ez==g3QMsJjE zIIetm;CNf{gIPJ~j-&XSnB!6E0gX?@R`nwyUm9Ra5`D#0F9KcT#R>E$szg6bq|Nm! z(vNB{VJj)6u%22rUe<7HdiE6;#Oij5C@5GiKuE`XYO$?(z- zWU`uXZ6h$y_NM~Ac;Zhv;^i*wADgGvEaH3G9j(L;F`>=5fT(}&=+LGvcv5##Vnap- z?zVIkWX2RlVQCl_qJ))!`io=WNt1wwaW)d*Sv&??mAeaB41)oq_A1O0eXRz04}KGa zdk8ya08Ki1{rEjj&8=m;&b2&M^1BO{ZX6%pucKO9N)OkLA%;+A7QOp zo2;c3n~_=Fh&7C50M>BnEN}-vx&2IW;Ykvz{U;oxH_1Xg!urp-84d@u?zqV;*MH(? zURy=3O#IqVkX+Pj8^FfeKnp|XFx@p#u<~IVY$#~P_vu_6^mc&&3hv6ctJ3U~^QXcL zorksVzc$g=Lrp+jx;oFJ#|t}(jPWwY;rB}Bi%e0f+q*sEq!C&R z8&=efJ?+?j_pp z4N%w-@xR(43X>GR$VUB4&^2Ry_+j|gi-qcO#pd3Ws7L8EWD-{^P04x~M6J4#+-qR} zTwp=2Y;-OynT-}^y~XvH!jcN=@B#=`Z?D*u#qD_#gGihbetak%SieGcnUf zYhd5py?5foaOHG%Z;{#;X=w$o#ja+8(Tfcq7YAP%EdQP0vjw3>-xcN1l%UG0&sXAt z!W=&to=c_dls51NIAwiNN^J6W3cKWtp@9N+3^gRu1B6}%0P)tJaz*&^i2h4^BfW&n zl*Ed1TK~z>65sJ3nxohBUsX~*ETEuFZL$}6l?(zZov;gHp0K{4O4Pk!M57Y&5eDce z+;3UrzNw}n6}K6x2&O&NIM8%Cr=DW}YizAlzJadm z^P69Wq}+<_H{TvyCj)&jSTiY(@%Kl$<1XT)&)3c3VHitZK+m|@1{D9QojgEqmb!Od zVe-j>=wFj&z=J5wOzf9TF2~K5g-+$LNYtjZOb_0t_j3bdg>fLzp_IwIBw0a2vU4?kJ$B}SxOD+Mt&+)ar@UvZHA2P0|c~l&)rKw zE#yt_EY7@(51`UopwjOBEx=Aml6Byeajzr}aLys!7yy2Uj%M`)c_cofIYfu#LVb>n z9%PO`5<%Son8hB%hESW;z)&d?y19PG%_c{})bs46Ghls}i^3th0+<0)LZI+nT^}+# zU$~?Bb&TFG_YW65P7rYNTwZfPCS{V_!z{cf2^DZb`K5O2%-D>>9YVT?mJup}P&-zx5^9v)L5 zcR<{+77u)L1f1Tf>a&>b;lB_cLX4lQ11iYZl1rA6xfMMGA>?sNywtW^>;!{FjTGka zp=u-h9 z4$C7M6Ol?25EQ02mnwJ+zcNbFLu90lg!IoRL_%KE*C}u>@19{AgfnHe z-Xf@|)(8Ap8d`}jPH1dRk7+#oH?A9b5NbI#xGluu@kNj5ezvnnv`xSRnq7=ksL4EU zRGy6%V3W){e1hj|40pQF2g(H8S~x9Ti0?GC>sR~|%D#?88(8Ja6wbNDC#od;61}WH zq~9}awjcgZ^lCzb#MmlsD*==xp)mb{O7j>3fVlk$4hpc?Z!Lq^Gw1UGgi+=M-B$@3 z4Hv~#rWjYD6Xk`c_qbtHtZ}doJgg|3^j^&56{5kHpyPuDTbS&cT-lE?*p;emfP#%* zz5jNs^=izK4`Gvan%J2XD(&ta38<>Wt5DFO)Bphuq0#PV=oPHOYZ|cS9$o#2p|$_B zU*9TPmf#-}S$JY_1?3_%5XkhXgTRi8{h|?kzZ(WEc2h_Zu&sn6)@p9p$0n-k4KW#?-upAQ)H{Y`C9zp{+GPp< zu0fL}n15*D@!y7brP~(}md4`6#8Lp+%G}ZiCS~Ded(&ze4eb=sRgg_W zaiA{5dMEU))8L!8t`FN^t03#`H9_~|%%WZ52#Aq85Ki)8gjppWPpkzbB8}?crpfDB zSX^rR?WQ_n?`J0CMpv;j^n?-(){0$h-rp?-apaY>a$8FjhYo2Ys6gOYn!^KOLDd0& zNK>ZA%s$>+PUL&p02@LS!N794gf{$tvh}F1W1C!Zte7M713$nVW5|$6I zA-p+R2`TR6jM@eIlPNJ0&m=L&M}40xCvffgghFu&@56aFUwuZMma|31IF1y}3_MB9 zQ%JqLE}ZWFyi=dv@9Gjs!bK&aU%VMR+P}j(so*vEv3^Irw8pKVJ^-fQlSP~=cgoUi zcsD!lcfm@rt3>!nSSn`(s#>GzibUZyrfX`|ObShoW@3n>NSPPA4GJ*p{*KiXC468( zx1&z>TLxx0B_w!7Z+`m`XGIc=EM{=__4+SWbA(4-6%ZvNsdf(yf?axY_{+ zD2WS}pP1nPpB07wMLhFM5|FTQ=arkD&%gix0$u^1l2ncVaax8-p9FW0JIaERovU0q z8Qgh!vy%%s=XF#!*d9m8bpaB508QOIisKR!nP>j1ouz@m$!?iZPxGi8M6cPHn{6ZZiVtZ7PEfl(ZEoj%D})!1c#r+JPAk%{H{HWSof$ZH8M zDb3`iS8+Dx=Dr{jVDIGzse~Zue~4`*;r1 z0Q~(FuSFQXj|vP$MRK6#r}5uJWpqUQQhS@Hbf)QWq)pgF{_Xo5;%|(}D1nwh416*w z@?NXJFX+D2PwYyDu|aM+u^RFv*9Ws#aKid)S`G%gZ`F(>yBdaai>JQX2<%b+(=~YE1L=FzxUfYBr(s>GZ8=PfMlvM7y-wfW1Rc~#_zbc({Zm#7Lv&u^; z?!d+Q&z$8`aan<fLC9G*cT+vWu}is=(=Bb%LuCyRk^sNuJ$4Ti;}1z^eDr!R)+VTT^PxKN;x z1;d>?3;`gU{OAK!bP5sbJteUyY+0qRg4J}MD-k10Ui40)Zls@|Ysi(i{oL+zrKHE4 za7JVfS1?TpvrQd6AqtfRt>tv46G-b@;@b8Y>VHw>+0;m z-9;62g0rbb&)?VOy(?84ytP*uYaV!9@4wIW{E#@VtJ|(Ql2%ITi)MJo-n|kVInjZ zbs@5S z^1I3E#=U@yX^o=fGH;5j&bMVe86jFAYY`H6aXA;mWetiLZf9Ly--bnGRM1j2TVZqO z^h%qUW>GzJD~g`k!aDws(9+Jm1>_g(A4e{Rdejr>7VHLNjQ5GHRzYN1BR$(Vwd-$Y z9`w%PQp+c}qt-uZ-d{~KKGek{PP&>YqXiQR(z>q%qHY2J6V#kWsZB5WkaCx?1kw;kWC=dYF* z2HTp!(WTXOm`HZ|c;gGp8iY?T|4ld-5n`$qs$iopkDh!G1Z8>&F$+Y^uIMyJap0g& zA&?Dd016_kjC(&eXq;fqD^LP6x=NwO9wF(L6i^9cNJET365;Qmb1Na^WZlekku0n; z=LTe7hpj`p%CHi1XTe2LY)~c;T7tF>Uf{I4E?auZ`!RRRlg^{!1aS}}*>=UW#HMTj z6jY@-u^0gYqeVq4=b#G~L;|GV>@)!+_g~l``El#O99FI#<@jA(@D&}N+U&{C+kLo~ z>UhqKmWYX7dVlyoPa;|e6dxPomd((O%F;cbLi>-6Usl%K;;D8G)-V2bTl!^19Luch?ancsE`{^C|mgnC?yFHOf#OaTX9Sd??Dg;03V&UP4mGz zI>~b!>SqdjSaAA~t}qWzfV({s;7LOwAe=QlEh1CtDh2W;AzIvzk?Jn(smt2HY|lDY zTfuwvy!$8tcw?3oO*V)a*F$8^z(~&Q;={d1eNyNH2q&n(o*{Trxn2Z(yDDXH z6^v8HEKK>w%5lRJIC5qx4my5o^GX(mv%UhHZ2T_>(NES1(#u9=i-AbuKroDz04J#m z!!o=AQKxFM{4ZcdU0N-T0QJj+GJ^GzjPyR~tNGyisb+XOxIUbopJ9_31!5#KuxDBe zumt?~;zf%{-@==YE|!98C?Oybw`#%V^VS$DE}&Qgc*q;NjGdE06P0{{o3BBEsyq^=Ch zD>zZ9AWlF@mEHA#1BEK$McO^QEhR7tiB#Y^m|h)ahN$}mrj^tzgPL+c;)Z1rGRUb7 znK|oZUQ<{g(tm_IuR&^Ie06c$y)}yDqF5zb6848`r3gbni4Ir;(Wf>74Ht!gQL?7^ z6yeaoLzLr$8Vz{R7~0yJ#}Z2nJf&1=uUH>t+S=K%T1&1hRDQjUn7;YpG zpaiBp!PmW;0<94!G+4~B9f6{)=G{Q73-tKJizf4(IWmnY5S~9?@fz;o@ip&x7Nzt^ z!70bm?VRSXUxz`{?=(u++v0T?muv#}Xds%YFHNu5^NXxxN-ITsUV3|gC=v)RXHV{MRP!ZLGyk*)!WiHP8k1Z`id6T#!G=-!>0Bqs5FHf z6o?`sz7QNCOl?eAs>qNlH7zp|2HjRDM1i+h*+x>%JQn9tiY7=~bt=jObElp*hsTUR zj=h!vS!edHnD~l~?Jv+d^cH9>$i9=1oAW;9$oAf-|MhqCS&5L~IWI^vVAwD>-x-Bh zbLIG}7o=mm16oo%SC*go67`#W&96*z1M>-QW;yDNSZ@#Sr%)~U+g=%EoNdqDWjhtE zI7bXNGtM--qli{20lf^8h`QIt8Bn>(>tso_&k>$jjdX)XVtqcnAtK!F!d>54?wO`C ztPWLY<1ms?CLvc`JN?e9q|H7UH>8tx0E)g9Ag9Mp1YqeBUu^2Ng*a(Yc$W`;0pbpp1Bh6f`sr$nT4+ zdzh+k(qChJqn92+5`y0TlSyN9EwuNfCr-bSceVcPYG!HMl+|Ta@qPHRG>G3E<)X(a zL_iGyO@4Z-(VOqTH|ISHt_)YWLdoOgvXu!knynSqNpR}~If*RvUu1mIDGP0l(^Dc> zIP?qUr_CQu-eV~$S1hPIb?d*STIxu?C3rjO%%)V^uhn#(CY$gxsNe{jETyRwj@ppI z+sIO32jxqNLn@A(cxN_=o>?MvFd7-=Jt2CP4WbB}5s@-EGn5UX7ndZqu3Q5dZX|@a zlW{)7={~y=*s$oXea(^P!N28QYo%LBJ!v?vQLFVYfAirG^d3oXz%-A~dkv3O&J;3g zIpu3F}zQo^Wes{js>z<6gN3tM+lgDlFx3>8W$D!6prfTNHBp{3d^a2ZWzGW=mf z6YIRe8b}{l&&C9-0%kZrNFC3qqdJM(M!vx+mI4y5Wb?kk?p*|z45C0J!j3}7w+M}l z>k|C>Qj83ETZ?;dujjq(1BB3fZ>*p8w^Tmh$;GS#^2s5h%I`(|xRno}Bb&v}$)=&v z>15dagb23QAO=hu9U%&o<(`hhN|8Wwdu_Tfsf%2TTyYwZ8<{$pJv_oA2BYl_-!d7? zX`RKAYC}g^u?`1ySIl)C(mdL;W|Y(=4Gf)Y8yL`M)Oq=VW|en|8$BNbrJMvimgi`R zK`-d46)9hFP!O{Y7}ogKJCZQW02=1~z<$qHd|d=Ab<& zVjWPV`Il`Lw65D00{Ev2b2kc(J)np%YZ9>B`8IBK4tOF){j+qg+qtFZLM`2o0Jg9( zg9jlBl@+m$ks})CNY!J#(gkB!wcWKP%djKQS9DLFc5eI16Cv-&c1F~TJXIP@afDBt zUCIxIxd&V!)4m&8Zwp!EH51KMqoIDvZIaHRepjuJTAtDjfLwt3(m@M`kTs8;e-lDc}sJDP2o+Mf(TQR6swBC zj0FvekXS(xi}g5)z!^gT)vaSo2f5f?%}suNF+gjxfB6~(lwQ>VzOXm`fHp+(3{K#z zst;gF56~#-Ka9ZWI|0J)t+tjQh=UzG3)rQc1Q{Od1ape5CQp@Sy>@=*qAP5q4=&jy z<0e5dlcqa`s8?j~Jl$%AQ=tLcZ>hg9q_W6k^u}N$$C+cBU229PIpMiRCeG4M#sIYe z-ysT>C87w%Q6or*5hF`OBC&?SSG!!AwaZ$;7CWW_me;NW7slIOHB4eY5)OZqw8T-6$`NXJ_vjjYEkDu5Ao2Jcjp zq^F(6b)S!^)V5vBmnK}Tg;-q2!XYxk7r&=V%gdE_CxyeTtB=uL-(_jVU9$35AIZMZ zC+v)5F_f5rA)rWrd+^gRCzv(iI2<(;4ae|yf=V9l|@Ww{{b6wR;?a6eRh6_Vx66fph zn>n0i@t|F7GrJsYs93sP^VHGunDS!^&J9P(Ka?4?1nmHTbS?ua-^&e2Rc8~KdAWkv z>BNT4wy#?eXdEF5l>MrViDDtd!3w({V(^=-RfXNOMS+HjeetuMA5)IJ#it>QQcipd zM8OW;S?11c)dSnpI(>(m2K|4mJd!-XOalP1$wC?SAus|4Q(2@C9tufiX7Ub!)}n`5 zb~XM*xh3qJUVZdUU_ofE)x>Nd%+2Lw7hovh;tEA( zF;#{)bTw`p-mrvLHVCl$E8u#j0!0E)S_gc*W^VZ~T6j>8q5qJbzqk6my~_wVm(p&~ z0#M`ots2@nF4HlKB!;Dh&LIkpGEoA65J^gD^P_ZyEJ)C4pl;Zzh^s*} zUsyjJ_KEqmC#tmdyodFw^N-eTrx?g5y*VrkI0rCjhTQAJ8QhgnkpRHlz~$ILVFgfJ zMgn5!SU8(P0GCPO5rHDgsM2n<+LV@mEMq;Ph-F zn2N}!^|57D?=eDF3&fiX=3{e(1F49egHa2Ky5-NBVqo^KedfOYuJl7QLlgu8#LL@7 zJXXrhcw}$NR~Ui@07U|F=h=nJ0#3Q!4rM;YA%d_G`6rUTYu$EXDWS z0HEI64KF$H_}qK5sZ0qN^=L1_iWQ`yoVIP?VBB=sORS~i9|!JzcoJL^HRWxjp?-#b zJ?1LpAkFDF0WAPh3+I|5j6e<{3Xkvq|6l<(YJs63OgRe;1fmuzGz)s(X8{5VT4-K@ zIpi4^t?j{ccl<8)&It}A%1)=W09h0Q_ixSDa450%GUwZ3BJf|m3?1!TcY8VLXu*<& zN#7fh%GOl~!YR0d8!#kmvP;(txOn{~-R6Y*qrSNWs1Q&BN(hgx?EhHO5%Q)N9$?iw ziN*@}zJC2ey1IKYaSIHFdEP6x1c6Q3D@3UDN+2%%y4YOB>_#f()eT+=s1R^a4ekFi4@|6d*BkBfd={zAONw=ILkm0 z`ioj%@E`@fjfjRX=RI8;u~gcnJL;0~02TUq$Qod>Dn1gsN^i4L+q@AAzJH&S3m;0d z9ox!rQ(J2|

7%a=ZnnJ$yDG6=7K3cquGZ?8NTsGnrBlnl)9$Zk;ZMf74DaxVcR| z`eoLo#-H!y`YiyL57q!y1i_R6>me$S@BaVF0X1lYu~1Az5|~iM3Z+u2N}{x-mm&=S zPn6w#meJS&|fV* zK%HYukOCR%0+0Ziv?8D)BpQ_nAwiJ9MR-&pfB;HMs|x`m7k=*c9FUdpR3&Z)+9|d3 zN5nsp(kpl4wZoOflHV5j8@n5Thm%Q+`erL*y6si06&ftr3B8~KY}Zq_P!bbSYrLUq zTz2Ep7Q4+=rBcSMKf-?>nf@)N>=e83E}IWx!a~D&$&CV)wYbj=w3_lH2}|(0*?O-l z30$JaH3igLwQiCsKNAx`0VfQtfEcB1Tc+V5OwCN$rp(|QjY-<294WOO5l1paYYZuC zb`X-1{TB@=Yd_&P_irBO-30#2dc+qTU7}+tM;jF|+9FrLB)!F!z5_I}10kPfpw}X& z(%)k6y&Jo_rv@5paR!obA`Z%lvY|b;dM;$*V`cMSRl@8Hhh-KHNMyZVKi2X9D{tsU z&6Yjd9)1bOn&%0r&->t4iuE3r^feRYcU5Cp1`Gil?|8DERz$9#Hvr8wgrucS-{Oln zoT|I~V0ZKz4;9L2rLUq*D96KYOxF3!T6CfhW`#Reg(ZZj0e3?JizTX0N|gyfpH#9D z!L*&4j_{w9ZUUd_X%0))h=kFW)%s)1+Uj{&yVPvt;~FbMwx@M_M0$bDW#+ziG$x>; zf>33a;TV`nVkw&$2nbDJ0QAdfxiWyT5`LD*XSvp!{*53KT{s1yf_$UKVEIlV(1o_I z2^!9{FeMjD1j5h+K%D{u{Eg-_(|7pSNisFSr|A@R+4uT!QX(E>U^DPFy{m|_RI?9d zpL*Ut4*7#C>7Ks5FWmGI;Z-?uXH{8c)`eQ8j{jD$29jRNyQK z%ccvwvh}vKcJiz8adGsvHC^hxCWguuyf(Olx2Ap+I=(!*wm1EA!CqKipvr(@Ulpry zZMIO%FHeeVM3~#!zm{ZY7LU9Xb@(A_i~s-s{DDJigP_EyqA&zh9m0V?P?EGNSP*Gn zB)A})?W#U6NNntrrG3k@rIG$x5PTmREy?6EjLhma$Ys$XnXp2p=FvnbqDh9`1+%nm z`of01*=}A_`p@L+r|IuKZ<4p}C-o7&M44ZS(7?eiA%3+Wxr1d*)7pd=iXM)TqbfbT zdZVN4hAT0p))R#8JdB(JQt+}p?qPc?tbhs-LR)E9OALlnZ`GdJS^vyXfm+YY)`@ro z#+`D3!Qw9OLxun=hq z7y!RqTK_CKnGhtbb;j*#?QjwL3* z0Qxs_On(pT1)b1;8=%8-h)C&nK(^?;$hC(LXyMg7!6x5$Panjr{oasffr@xF(q zX=iG9(pH%ns09SL2jSp6xNCV8i31J$PnOax9kbXo0%1l3Viz*Zn&zQXTbPj0<|B%* zv?ynWjv!lW#7v-r@3=AG)22+c|HLuvWm?}#If`LwFQ4N)rPzTf>>br?3ZY`*2F!ag8vlRI* zwolk?1r68UrB|V;KQ&Zr)O;NNPQw}XA7FQqdvGLJ--GAsq>HxBT5WAay)fevtF{gk z&hMM-+AY0{2I01eJ(%(=VY3nj2sKPZ02hkO){}MTdQufih6>9$fcb$nX@OZ$areVp$&dh^m0VEE#%6*@Q(Nb_szZk*{rq;R1(4QxWT}kbId%Jw!llwv%`$`xc*(-GTeO1mLaWuw034R1RLA$y0%?ODw z?0Kh}tn5hwS|Q|0^EMEfs+STxn|dA>M}T?+ruz7%GTdgX+kjd+2+n~{&vp>^Ew5xo z9=jq2Z~=>6iLXw5X)Z6NR$tvfu1?-Zj}W0v{;-TwLz;@u%Tt@_9+G)fQQ%Ml?Vr0@ zWQmt*nD>gXHX2f=N>u5-**G>{#Z5cASHy=*4=v4Nw+?1rttK)9wn5)amNIS>$e~V# zUEG;}Yy0x=zI9&_1)4H+IRjgRcrotN?RY%LF!wRT%Y$de+|={GXgMwn{ogF7+gnmG z(+DY*NOAVp4iwyxi9bs=u1c0$hvhsjXTTKp1V?31+U8_K$d8UPl0`KS(*S^)6& zUz9@tn=ZU_jMt^OZcye%|F^c{>$Y4N@cP2M(h|+P@zt*2=tiM6H0hV3N|B2)$|5Yl z&ET$-#O;MpIG6srXm?#Sg(>Li#J(z`GlJkfMZ7_CvBnq+OMUrm4K$+H&;;yE#a)57 zxxqevYcl}+w?_UH!JB*iOKyUiA*evlv#;STf zNWdcZRfUsFX4SNo>*t>kz$LO7$e~@sSIlcH#9wfGt+JGCdFLU_UyIspgDPJr4!w@2 zwjoM}L4}txC9azvKbL$v!3FchV)5YmKR6v%))upDj~a~43uL*#Wu6-B?;I9Sw{{~W zkMZ8gNR~q0N3)y{+-U4xQTh4am3f2Id6_)B6;cb z5jVdZfHE5Eq5|N@w8+eE$08IWf_=QZIE7Y9?=R9t*!om?j%I54J&?>{?<&iblHx%4 zxz;QjqT4qeWPRuSvcoU%WR)@DQA*MF0`R>|Nft>LvOi&Ld0+ZUr<&1xs1?W98#b^3 zJDQE3`Ley%1|y3I91GPBG=cfc8X8L2w|9_3Uo!nkgNwkeAxlqs5WI_kg$N2gy@=^- zxb_+2$Rp&KGdJQf;6zJH-@%Oyt~4QeF(M)T&i(IV^W7)>ZRMIyyhcPiTu=~x&_HUl zsxloa?-{vWr8V{HBzNm6Zk8?{Cu`$j8tlu%`Dml}3j;b$CFf#f33bw^fe4NK>Rh7TzgfX(+&Pnp4%;&X?dL27k>16I;5I%x&obj%Fi7>uC=&1AgOs_BR z{I=$gA#0jtfX2vG3`@}07-I&0OSCw^rsJ}8x^GsSIGvw1y7pX0=cxv%fGUHH(Bl0} zgZNOmh7Qx(6Vhx}bczTB(y%-S-(8$Y!7^~LY2&2nf>D}FhBg<$TVoGm((c4sF(>Lk zG~-Q)oX#J7Pf5f<>xex~rA7&M&SLs}o2XYHIoFQh0g8$}0+d%|1W5`hZ^g`9kE7~Y zPL8|GpmQ8>otmBq)FhEP=Ouk$gQJcB;H4NF(AzxFsiiZwiM2qgqoCKJETXpPEEplr z-g(1a28K^uVG%pMSqLl_fE-8QLok~tK1*4gLg;i{;x4H#!o|SB*Sl49iO@>btd@;( zd+GF8a+C3^2dc2b53G}$yQzmtH~I0y;;VpkT60w9niW$^08Wh#H7Qfz!A%*9>R&;x z28NPFD#232)9TJc>ua*RWk_;YqJ80KkrVY3ji6!pN-Zt#R$=4iG+bifCtJ5X_z?%F z7mTB=-lZ~Xyas`JSU+euUr;D0hfL{S{Qc@k%CG^}Mm6GLI+ka%hJRM@!Dga zJ$iCF8v7f9Cq3PXe4X0`$Mq8%Hzo6y&u^MtVNyuw4X%d(d?sby_KW$4r4Iqt54mSDKC!38*Clrg#Kr$P)ODj@%>ewDLNUrwBW^ozK&iYC%-^iJ8QtaD>Z znyctR9kS5ReoU+(l00HoWq)$C*%x~7RLRn`*|gTf;%EbgSGaQML6kn zb^)qmla8z0|6qVw07&K_&O-eMicFK@>w|Vnq;M6DWDY$TN#hEQGDPO)hZEsDT-+d6 z?8;PH#fz-!UAoHYB2b;mGWSrq+`65;Mdtw-QqNLno!wuvg9$Sv7{z9Y--Npi0H2+z zO=^CS)O>E10h@31{zGQfE`&buXW{M=PnP}G(D6xKe70~5B`!T}toytsDo63yMi-h` z^NH^oj9G2$tz>MRo*%Z4OK4cb3g5XW3LuKltt-N&NLfVbobMGw)CVmLtQ!NYkSLfi zAKa1J69b4RwoUbhdE(S1anGuGYIP3tom3(-R`G3yL3!F`)Y)M=$?$~p#UAxUHum~b zRP=N=b{GZ9d_E^^z(Nby4`V9i@SU2~?OPy!(2;FNCmBbbfKf-J?WQv)xqg9TDqgQm z6%Z168<~z|y+Me#SqeH~+F|PBH-PLFVJ`RwcW#`xBxaKw(1lnjWVYpP z`U6s`O8XA>Sv+3UJJYu{#_diG8T;#9BjpP|`e9{6>UffR@*g78_%-*wsi2z)u(!>C z8F)|6{JHdms?n=mxDv^5x48m4ck52JUz5>d{t>c#?=BKy%V&?eA}(`YK(VgJNQ(~G z^e)M!06)M0EgJCQM&ztaLmC2vUn)!qQcW;Hm0;(84C{d6WAUuBnE7@Vg3uiDcfX*! zHahCjP%$>p1}e}hjk~Gz7WTT>=sBceH4yzQb<;WA2RgEs+Ff7kg!M~|a1o8On*34} z`{1w`F#{7J000Z7L7Tjj!X8Yf1S9|bc02$Fz8eQ8{jBMl03Q(Xc~XQ7eJ@!pgG5H2 zez%IPAVY*K!#KjJoAS(D50jYGPtlLea2mx(M0M_II{WBxk7%-%{|l`E-P-T%k~rzh zoR5pI-WY_of07&TB1u`Nyb5NeDp5ThkaA-Qm-Q?Nc4tt5k-{+N;AjB9~v;8-?xBe%k6Zg|i*c$XHVsvb+8fDuw7);p}OjS)kOo^TT03BFYgI z|3Cj122dXgV)Dn+4i?u-GTO*%XyS$xoxEqYRN|P|p4)SjkV$8~q1h)F;K3t+FZHA< zYas{kYZu|E$$6Cu7`EC88B-eXLpC7X4rlXxgceLa4o~~-vS=qfF-nrLN-S;yi1DUn zX!p^k`&W=fv~#Y%keJzQnh)U@q=`KxMYKEq!slnhY-|yD1=AjG&Mb%KY!-lvbRPEL zP4~(!dB2@4_Qh-FyuT{dz?S)!vhEXh<)9Zmn1qh($O~{p@Ocb| zR{V4wpk{PjlP1+MiJQig!1OApRqr_hE?~-;#nQD`@6WUFOwI3d9@ZNkC+l3*hs&b? zxbl`BpE}N0Y^pu)5=u&M}3RzuAjZ{tpt28ku+kI6HI9 zi0nRR*GMXJ4f0Oq!8|(|-h@-9<*O%(V4=ByKSY;Nh|ClWV$Y!XI-qRkK z(0>c+_@o6Xl}>vDVgxCkb|4^NgDnkcC55!w1}9Lsp45h)dswW+(zp;54%|IfH4e3a z97sDyUoF)W{Bm3VDIcsV4AUuF%6IIi4x$h_-0~rEjrS2339U%!Y4-CIv}*cjPi3GJ z---A-+^$>ZAp^gHWgm=I_idp4J08WH)S_*zX&&c?1Je%xX+W00rHYx$q8oxDQN#>B znenxVjk^ksa=>PJ@E`RXiLT$XF0K!Vi`dn=9^FE8LPHE&wn3mK^^R1mTtJDXcl-JM z3%f&Gp}0}0(1v~jOXyKRs=ZCfhJtO%IX}(Pz9aVt+5Q!$2GS7)_?Gc11%n0Fvaq_) zQf-&e`_h-5uv18AHCxVUG0T}EtBdjG?cd+Hj8ex^`}TERTe*xC@=Bs~;oLjyp`a4f zb8mcZscwheRC0$S%T=tc6w*m=&Fw-h0MxcoPmRPLz%ZYq<2bf0ZHYWsIdwaF5m0DF}rR>r3po-c%Imbp(S>s;f^ zlEt)>d!xTvkYB#^{thjUOgwt548CZ~-u*lc|C8W2&CcGoAGxwhhO5D#<^iecgh z6Ijzd9!aW%Ci<#MOH%D}wQ!8kds|cP8Q-~M#ysOm1hAXip+#>#CN7p^MSSIOVT_Ng znW>+p=ZrMzL`cD@vEO$hwK}UJ(HaM2%JP=$f+m5lR_+^~E%*wB*9eg)Bq`(5ZUFuh zhJ*O)tGT}3RKQA`u`z_vXIvuC&BeJwbB){VWs46)@^rN}l4mQz zv;c#%cgxo8KmN&)!dL{C`e|sQCZk3)6h5+&c`tqi_77W#JFpXIL2&k6)|X=@egA*$wi_P^(i;S4N9 zr!q!{@#<&%=4AX)uAWwYY#xN6vSVDTdS|E$0?3s9PRpZoT90Xq3Z6tiR@YTz)w~PJ z*G*!;%Q|`9zjgT19?Or}TS?U=^X8oW&QcA5aMmk@z8nu%KXy%r8tVTi31i@(2Y-8o zX0z+D+prL-y98Hxj$>ZphK~$q$pGBssa3%kk4ECE=fl!*z9o_Sq$`k0nZl9s!7M_j zxWHuXF3Qx-qfZZbQ}3=U_-K*q6!slDHL&J$`C?km1~Ae{$P4R?`S-~ODgYfCfqdjc z+v;B;46H@hqT;d&*eFwH%p2J*?QDh=kI3JZ z)FufvN)x7e3#YTYD)=so1JZuT$hME_+LrS4F3(IImXc6jI=rV|6w zq{#~=&q?JDqxpFA))KCC4E(2D2UjkbRfAe*J(H9+Sj}|~=Ur239W<4DMY^e67t@Au zd!;JQ4fpM{&mi9ZNA?)1N3$}NUmK8RqimXpd^ptIB7R0)wEb%Vu5?yvKicl*gXtA+ z3Zu7(FvYdS#?$slX!T8xnICGVi!ih#NpAE<4b|j2aIs~OX9c@;$O#lD(72YkR#OHE z3p2YnpFqxR$izyp>*W?7;1Unjr+?J41%Vn)mx8};7V3y^;Ye01 z$q{q<+Ou9H;N7(f4#rPb!y=vH-m;UE}MjR=mp_a+;qTC!lv zP~-Q5r@P}f?YCr2zK>5jEJ-iFYcOhm@Qo7B(p&9M}$y*D29!t}C$^m=tvpero;?+E(8?j<&f50gVVW=CA;0mFZm5p*+NQT#+K{ zV#?L$ygSAWP$~qm$6P&yr zcH%xk`VwRR`*GDBxE(f1Iv}PmA{d`;%W4LlF^hK_nN32nas00Z6upW4)o|6+JgAZNtg z2-aBOf?bt=qO6gXD)lo19a+1(xrfy?}3Dv5jT(h)9m>LPs zj59SUyy{Up0*I(w{!UxUt_f7574GX2In$j2`Y+^)6ft~m<*3t-bO>;PHFu}na2QB! zF^dYZDD#NLmX6C8ivjJx&mWb7l9{s;I&`l+z3##Rl{u@7Y_B8Xeauwk?zZIO@P=RH zki3UPN#fxl7|EhF+Y>x4oyE)q@4;F^KLh4%8ki+11P#`>HXtkASaXGU4Owyt?eL_C zg}dVu?i!8i#v%=tB1o%7k|>z;>Vh|7ay+m@ZMUDkw7Tpr?}lT-8{3WU)V@6XHTGz? zoMCr$%2}H}9b@<9a6tH4#&N^nIAGs7b3*xx0+;ZGa{2|SJtQ)4BGR(1XigM=z+w}6 zNT!|h06wZuI!^t%=|^jpUTezXEK5$SYKkpF=WY-Z8<+>@`M%eyHn8LGRJ{Fgn(XpJqK!Jl(xP?6P;jjD%R_A zAwRW1GBq;{Cu(6YDTf<+buGH(K)qSA(txesTDo3vWTSU{cV;l`7{_+>0|dLMw49#= zR85~ym3v#{!mv3Nhp*rOXbBOv+#?e*xQDcTMt;VzUwd=sa@#404&1&WO*WBM{x?44 z2^Mp}t}T&W%4mu!hAIQ_LEiPY>Wp2au9suNV)5e2u9v~^I4GRlrH_b`M{tx7PG0HZ$Oep>Suex`{&W%Jt&@{ z199c+Ai&wLcJHcA*|h}B)cgK&l!z4zDcO@C&E1icirAoE-ZSIUH^~Nm_k4pZ65v4z zSXuh0csLWWf5o9^b_W=I!?L75=>Kz0V82{@$N)<@RIq@$|Eg)u+ zv2WI;j3XNd=5}BF8VEDz`RT7&fQphY2*p`7+j@W#no4fW`=ueETVTDDWRz)s{MLF) z>u$Y1q)H)Jm3>$)#_pJEt^7EhpGMC0l_SRe_O*zCjVrU)?qomb5C8xSe?gnVm%<6%*9|9mhm;@vL{e07O1}$YTQYS;;=y))doVfwPF)e+}2AEsrQC}+Q&XHhs za^7`x433~m`eh9nbCW8{^*oir*U)4P9j_hB&|0X_-iu<_DQo6)vL}^!mza6BDQV)y znf8OcB;Tig3p++uu}TV?#fByfxMErSs}BA(K@*LZrY--RHX*7@mn=@OY;%d37rQFbMnHGP$``C2*UMLb z1uM^LPLivl1lc7{8Q#OS6FJLd&TzL!+H6_vIYFs5s)mW)R_73f-szmsHNIlmGFE`z zvfaF_PRRE%>LhsBs*HhquC(FhXEmtoP?)Rq@a!RHT#$7VhPF^1n=LJ;0 zm_+#cKpBZxk&q6rsqw7bMhiAlaj33eR`(i{R#GgkhRPDNvB%Tm?z&Vd@wZ*kl}ytT zgvm`G_#e&EUWsFyyA5|yS-?@GowqvcOf_PaNajnPc*6)4!*9CH?z8K>dk@s%-BuzeOsI|g( z3Ge_x`QLL)(u|ps)>Qd*4V%X=X)2ERLzotZNmSKZCLPo+e z+vR?heEE$4gR>>q2SIVL84L8+e0g?|L*DKr{#4<a<8tvIS$}{|VqaZ@v2=VCLf8u3CzR5wV zmXZtv{$9s>WSmV!ts0$aFlSf#DI0S;3M(ZRZC)FMonbNBcxvmC#2xfthqx1ZS1L+B z&5@l`0CzomLLfMdJNjs4J7SxXUwSlm(T!FgG`h&uU|373ke)bkmOIU=?kW3X;rZor!cI>3$Su?W@i5?9T_Op zuu(TF&LdHFi$cQ}{p@`}E_3uA0dtVinWi&YvzcKh6y7fj!$fZ-oM??~m>#9aI+qrXp;Q+h(3P@r1I88PV~Z zhltrI{V3%RiDWV#s0|+5@_KE3*P^zZ;35T|jEB;&*RY*Ri5akn!CFqj*r91Xh$nv+ zx^wtG49;*6u1RQL_vGECV2^=2TFbKAj2 z77OHJVU4Ymc6zA=CCpsy*in?@i&{7Jpen4WX92Alk0!1>Y()?USM?&G!a--)r2}(< zjO&1EWwAZSzKenX57foU1t03Fni@kdeNnj1INFgRryQhn%m70!pr1D!Na!O)H6E)u znX(>6GK$HhyzlVVM{zmgC=p)3X=e&Hb+dU}c8($i#+_DB7~ba2vJ;i{kvdS;)6VJ* zAsERf7pWt`&kaq~4T$kVWY3m)lR@WJGB(eZ+wxnq4i!Y388~82+w6Bv)#B()#`MQY zQ4>a)R^V`Vzgc%ut0j-uvZ==%fJ#H!VB_)}A?^WbtMl{c^eOSgsAPZjQ76_+M&?a$ zk3ZJKHeKY5Z@^b4BJM3bTU1UMU5n<7zW@QtMvEs zsThwqM4ph$TNYg68LBDoMq;c+2tQB!(Ei&S*Qj{`DLxnyE2E$z-a~8WR)USzze=_y zW=j5JTT57N{u`nLD>gurd(q&9^)fXLr|&2qDn`?UD1!KAZGhBbB$a{E7!JNSochBVP3cEjadCfd<^ z#(00iGxX#12v*!JN_I=l?#E#Z;qOObAyXI8F4Id9m2Xg+P}zdRx||_yK$aImi}@W6 zMX|YexK)qynOP12zyWzI7tz7033aef%8n=6HM3@j|B*h3*lZ7@_C?uq5!r$*XCM(< zFP&={(RZk|R0nsXkWD9mkvl1S=tk?IN2(IiN@=AT1p+v{jw^iZF1N6`gtPbO@{ZYV z(r?KoUN)!Tv86(z?(0&;wbw0|PTGPk9k!&Q8SXa5rLHcbTbglhJhy)>4H0$+g>Kum zFFVO62R}g7l;O{D1z`W_mcq-V;WHt7;lFIWU1SAmsan!7EG>LR%iE^3a|i}$>Vp~V z6@UgYxQV?d03@XzfsQb`xHas@RzwU=z10$R6((GC-PM3+_Ayr-P_oi-j3}PaaTl6u z`;|`_V#>k^8sQ!ePe42YPkwpGM=nx19o*&Fb_tqE!De>z84w|F_ z2A@Rt_iMrjcygu`22Q#$G}e~uF2KfQB1p~1d&KhOqEZ4~lfnFYqF7tw$ggB6)+)_A zD!_t&2@c?Ay1Bk=EVhzka20PW+OEE(K0S(yAYP3SX-&~VRcF3gcT=68op5MCiOxd z_`eKpx$!nIrEVBCK75J^)qhf7Qe8Kkwd+hGV;>s~mAl)(`u`OWkozcVifY6$B||M6 zqk?)iLvYN0>H9bmIR7(NV!sHav_v8(2{Njjg_Uw#1K6S^Yei1poW1M#FzT3j9BWIx zBU8^FzXbcw5d9F&_!s^NHhtCT(B6*qfbtdc)wWvK7c(l8o8XpSs>2B*d@JawE;7AgRwE-|#*sYMgv_(Df`Bx4700&1 zhPMF~Jjzgj-1ZRqcxhRgI6Cban!ewFud2}JkvzJI}mS(f}dYd_|5o7S54FHmjf z8;&|<#d3NNJ1fG%E7LhDkXNn|T-qcR+(&@s zK~>1EE+z8L5*bHN3fPZYDe&lINmRk(5uob7E+)jj+=iOVW1c0+v50C|1o<<#(dWDw z9DVM=U_kW)P_Bq&J%I31eIqwpk;Ed|-H(YiTkV(GJW^|0!j5*AzsWVY?re#C{yz>N z@-uzBKjemrwmGhK7$Pt_fj;$M8`ur-n^rHh4^7+mE-@Lc1~ER?Y!{-;zur>Fvvd^| z=GLC*7U~+XgG0ZUlayAC7L9HTm8s}MqAx7x6Jexy1tiqD2{5#EdP_za)g%MBc&52h z=n0>b6_9_DUB(X&4s!b0c}l&H&mij0I-u5RST!}D-yHP5jMn{0pzzEetYR=G^$UyK z*lHacEM`ns0REB4i^Yoi%?~A!OfB`E+B1-FrPRki+kCNFO}#*f0Gy6B#Sa)|sAq{U zkVxJBQg!Yk%<0jVl=%B35h{v$%N7dPa2Z{&hDWsb>)dV>i3lo{7JaF!q_=j)-5#3| zleEY-i00C`m~jsE+VDjIk$^XCYMNspsmy7? zrX=;6DsZi9r){KyD{7$YP*h!=cx{oU-ng_a77tWbe)G{D*fWDRhSCVV6eI)ktWYLN z>Np|DX&Yc9Kcz8sr$w2_IxU8Aj5`KV&Q9Z=I>$rds%NaF&x9}HmzM~Pka|J2sRD#P zo-uWC8jUhDvZ3@kT)^aiUqsk2000F10iXUDO!rBYp`ayZLvMnNMubmQPXr5Ra9)8lbxF%0Q=@*DeW-*%0?7hIy#xe2QhMrvo2F&{ zR7S9cfBa*u5FcWL%Rn7s!Fz9RFdqB#jF@eQ`u%(dTxy`FtZ;W*3)TfyF$B^3jnYb19M!=aXf7i=iD0Y&x86fbR z#XC8EGGMHUN;hO~@L5G|^|;n7aB zp*^Ggqp%#BRzt5h)$iLBXk)_A`^IK2_)U!0Y`JHtpMk%unk;evEJLelzm#adi*F<_ z%uenc=Mi5Yb&BU@PTC1DGdm zkd{4dA0FPlXr|a++%UAKXc)E!>MkuGMrufe&zUcDjxo|@i9Ys(Wu@~=Dl2Vh`r7_QA{krXhOw18X;wVj)pVdx0 z(^yELklhvG{X!G2p5K$!sB1WT3T_?M_QBpj%WvUK2>+}d-XpAgq{B=9Lm&q%x**pS zPXfv)KRHRCVdNeDOEJ6i!;vnnq(+XPs#!#HO4Xy~t2;EdkkSo{IfT!iG;XxPZ0kHQ zs$>ulVBo3c#X9<1YZ!qxvwVl2TMF?&7xlFl9N4qe8i-S`ZZoWC$g2`*B{p9Yer7Fp zb0tXOmQePsl&6AMUkUCjkeK+q|Ka}w14k~wowL8?DONgwjc~ah@=6*uL!KO$ADXDP zh0LssGW&8)3C>MLF~G6?lE;*|1+FtFS*dAD{ztQ5VABaWq4-4Z;@FMP=v`W%Jda=l-H!t3w{q|YXYH()nr2>T6+ zq9tBv8nX24*UYp7lKwI53(pE_HmrG;rsR-Gqa{1KxhzBi(Cm(x#>! zx!h=Dd7C+dg!~KS)ZUwlA2g@veoNFvF<_9{_>`m9Ms8P&+-zk%oM(R@4os|D>~e4L z=gz9qzK08G1`v;LXz=f@sh45jZD~0WS46gFfhOo>F*Uicd%ouCh@P}Jy(#z{!Hwm6 z!5A^U5f7HOhVNJ>9n)^Nu2^~Mc|P`+MLm!&4(Z}OYfrma>I}{P_=u`ERU)i%j}(wm z000Fg0iWPhjsI86mok9HU|kHDt{(AfeD`3{hf^Cy#>7F-1vcd0fd$paH_UPE^NggV zC$elbY0d{6O6#+lBqP5@WLFn@bf60W*a8rW+U7QC?&w=M1FEBKh55lM0n$!WRJG)w zQl1A+=!K4eJtKDtYbZT%BQR20-TkyXe^i|s@zf{m3cQkPKuQMYKzN=-XSElKx^Z7s zXr~RR-hd~^{V6h(`n&P%SKo8rbA4nh${+j*zl+b9d@G4swF-9IO+L^G#g$ zL8!;=I80YYRJ#`#w5$kqJ~0TG$$3#MbmT26U@P<~VVbOAxaGGz;F%-;Z?W;Q^+e->ZbF93XOFb{?Leky~m^BynhXhXmy)<6cu zha1dOM1cL;nOP*xY(0HY=zibAF4Z&cj`Df;D`_VhnG)p|^9L}SI{IJd+@osIGkNgGeO+~r8ToEO52sczOTMYQxP3wHwa~L7b7Y5e z0TAv6=iUlMTUB+4urJNP{^0lLbBN)~?=1mXk!QWFUb;&7@HnZ=+ThV!gHagrzk%i;Y?irwxwxGzojF?+({c*h^i$+i8;s+^N9PID zvi_+;A636yx`O(?n+)Y>Z>mFCyav2Hu=qch^So6$eKamxXS!qa?onQZ0>~f5=(zt_ zIeAl?WU_0?t?7}{-wp#IEDP^7RLhs{J~nXbu0(Cc7GxWd`JT6eN0Zpd)*yP&jNJ~s zLGvP-d!>8T8oO*~=@dq2A%@G}r=exFE=BZQGH!Ms74%e^KVuXb^2>ct>nuti| zwMp-0LdAGOPwelFU6scG4*t`v#B0WwPLJA&p~>AB?44;}zffzIcTm2kal){c$UiiA zCOdqaHeveq%i&`de9w%0W?Jpf$h7B)MX$Qo{Jq>hm6sUu2%s?&cN}KbU>gj9-NceZZ9{zB208=G-i@#%9DrmeUX|8y$ zTCf2lZejZIM?#|dY3H9xY)a%a< zviVCGcrl$~Oe04V&U-7Ark(*snJ2z+=@y$?u*zrJE~~k_bfYDRy0D2c^Uh24zidiQ z)O+S|Kkm{9$~({QM+)0`Ap+6W*!rHA_N9Zv8Z+t7mS0P_G``)~!kvvS}#z_sPa(>5{Pw?0H87H^AvSg#kdq$io*-<@oJAmV^CrDf;rEv*WI0Frg^mg?^DfCW~j96L;mdJ zbiFy9qgRYur1&Z_^$c3roxh^hsO_r`i@G1N_lGjh2a4d*q?9jOHoi-n!!b9&Dj~#)MbLwafZ*-?4AJi{u0YH0PrJYrEV# z?Q*(rWM<&sE%g7!;;vQ@VNK(CBr9~P|)V=_+xmP;9xyI|a7#42H# zsu#p$BFvgDcaOBhTvL*Xs;>dh16BMV(*s^5pUR4c=loC#%(n8erb4g@nM?}cNpj(O zi#2SL*X=SNu|m+s2Sy=1mU|4o{pb&KN`+-m%l1)gh_vL4F#E3@vy{+$1!E=@##j6^{K zOX`_2-f;l7E_53w^V8JU+g@MX=G~q*64DjyR<$ET=b}SM=#aSt&h1f?tbZg$q=}Av zI2)t6{!;lon$`{w-+00j44q0DKuL|;A5OlgGXp^wrz(mkX6C{Gj5~H;Y<&jHlE)n> z?dnnB9fg8-VrOwF0t1Zai3(#uMq{$nhQND{YcJ{->TkkL?@zJy1jB2Ct))qwZK}6Q zh|TR9LL4H2sat-dXuQ}8;?eNr2{y*OHT8p6O-^a*Vk9s@ck1^l=)M?lvHeYR^}C zf2pZXSqbsanD+E_<;|}|U3buuAP3?cTYG=;7Lpg^{s+BCfr4|?B%Glw?rQxSX^Hl2 z)}=#nFy9ajA6sNu#!?xOo?LU`bFu_g{C}1GmX>buQPGp6qm*L;QQfRAzvrA~X;(VJ zMMbmY##z(cC2Mq8+K|<8`Rjrfc?9BUNB`FD zfvyT`U@3oSBpBr)UhBnVIETBg(?Cw&Ql;qym>XF5F)nUYwN^YS0E~7nZ?0Chq5t$) zhTYM*@GNTOSZB=HDWW_9>?lec)#pB|J5obEE^c%z&zobbv#MB8?g3xlo26o1J~i(1 zVEv+mQ+#AM8HwU;hQ3M)+pmA^1Cq%B(w#pC3e5ffZLR-P{=+b#NAkLAs`Uk9j|JinE>)Vj>vm_a_SPJ&_tm|6_R6}^ zIfUj#2GsM_j3>cX_$RKub|E>b)`e^b!=D~yK!s}K{P?$R)2t;M;s`~=KKI2ykn=c` zyZPefn?@sGVAs*+#UN*fHYSkmJfQsVww&4&vP&RnSqJqlKI{c0HpynFmjq1q{co5i zR^C5lF~OC4B~C4C;IAY4@45Bi0A%`y#$bH9#|C#+^a@od3}gI5WEt+P-h|Pe|0t+9 zOl|h=6YxlBLU#w?-3u%P#_t7wtRCm18M@azdqx|-SEyqg0JJ9w+K$rgg~bA{+02kA zN@8q>2&YE|@KB)&q*LW)=;Eer5fgbIsE-{1SPmif>5k~LZPTIOwa@PNCRkS14AJy^ zZ7d-P9v&&FxTr8~lT_Q?MC+bsR=VT*@_(E+V6-c0kuuaMY3ZhS-o4K`>I!qKtNzL{ zT3^G*{`;2`-d{t>BB01B27+HS_ZifmL2c#CNP1k2IxUCGPu%^1>kC}$#e?_*?jGk| zbT>V9+^)P$_A=^3ID=GkPfc$CaFtZdhCr@TLvzc!m3wtyX~P?XOLMX{V{{*atGlzm8x2#|WiN$B0e1Ic5iaNz8&m z#y4>=_vz)WaVnnm3K@K&=Zd7X7m@PX;Fu5g8ly1-vd> zNa&=krF9nQ6aH7TO8eiR#gHk-^tfI(k@aQ>)xSl!S76ELm$tMgdCVHQ0AEIwUjU&5 zgr>DZ=Vp2Ze_b{OQ2b{?ejcr|JQ^3$R14WAMtBPcDCJCiS@d0Y=&U0B*0U|4d1${1 zH$VNI-4BWKe*PXc8^P~1=%|vJ2_<97ysCY}=@7%M7@3997NnAHy;MjFw&dELxHnn0 zT4eV15H^j2rH`CbtH%#m6W~p1_yJuc{z&(gk#ki*zCLB)ZVBh=PiL_GC#FUzhRu7; zqdZgxk}Aj-Fho{-S1P#QWmx*&kZuF?k~CVsKB&-Sq?Q*nq)z~#jM%_@OB~7p)Y!3m zWiii34LhORKiB#5&1PS5Ee+9sWDZW*9J<99jx9&f`g@J*+AdFooF`xw<>cO7lz&Sh3~c<+Pxx|LT+i{t|i41OUB`)i0MzC^C8)EtCTG( ztEVr&wB zMFl#GF!lpvIJEhZ1Ix+eY;N@732;{*2!WN5w9#8SXr&Q9(O~M_0~FSk9lGlY0N935 z%a*?PV>D%@puIYUV$Hu~MxFj|a&~o)QFuq{&@a7aKYVi#cN3vi)gP0XP$3>U)N%Zz zZy+H!e8)v=B~AZJUrClz_fv{)#%nN<*>OxOP1&N(zaq(cEAXX7iqLGNyGm(&#nr^ru;=fwP~lv#B%hsc^6 z;ZUK&-jvX;KOhOj_J!bzjK3GbQsrVqtgn6x2bYPW^+qx|nt0=-@Z_}`4Ph5H6mc2b zA}mrh%l8lRMkeH>#f9loR^rg4)dQ&x{>Rm$U9+UN+0V<~aWl=zAWuj`1*(qUmN$05 zU`h+0?Z6aM$-=FS@{)a7B=IHy_99c=`lcPfsn~Mz$`^0lxO@qj(DRA;Du7)p6Rd1C zk+@^GoQ#AldvbH%pDPu-=0R+Xzbeg<)m1)F(tedG6cR|ML6fQHGZcsas{9-UFyctr zcUXaP_Wc(^<#2wZ0Lz>ujb-E~a8~J>^~L6FK~50!N;fVu$kIcoc!1-) zQ(p}x3H#Y0s4y5s50n`kSRWZ1?4>XVKvnV8|)qH3@NFgDDgQBHt zA_pkQED;fmT#4n_S?JDc{Lk2Qw>>Jlfy#2oy?0WDHwMpXDr5l$wn5~kO>A6Qx&jRa z3)(WKcrA~lB02)HV$%ta{Af{xC2i|ux*5s_hWc(n0k-}(l5j{&ib4yU#t=+v{|oNR zc{j(nQ53)`K+0Aa@!$9%0{y?(QQ4qJ+^4*#A(E3ESe?+iaO|8ovJ(4$Lo;)bPd?d& zAnKRg`ZU$3k^KqxYq4A2*Gerq?uhsRIQewrP`yAC@mo^nF4&?69QS+gJ5^Y9nni{k zanHHgdfxSZUs|pn)|tnc->pSZYSd`H!t%Q_&KogWnLfISC46V^WOe~mF->2VR!JgV zPY8RrX?$!#>aeb@jBZti9N$0dSbSlGnw4sW2JCDGrT~B!Ghj1(>_ZTXWd?kGr63eP z!?`IYz{nwTw@Q_F^1#!!YPEy<&any)(Lxqc0u=c|O>$Wh=;5A0^;GyDC z+NR=Z{o5z~R3&0>Ql!q_NfbT=iLy+*I7 z_h!f^HPkRvNjh=@Lt%|x+9YZ)?ravLD)p*zGn1`*^?K-gRHBzAURwK6 zZ|jJ?Tb{nIf9DvcPgA3ql!7OqaMki&C^=3X__RA}a)qSC7{tgKxH_!+0Oe{g;D+c# z3psd+7V?k$uOk3ri+Hy(ZrXLQv0366DUt|GYcyqS4YVHq?E+O<_C5fSGJ4?Daj8$4 zUW52;>i7CJ(X2EZN%thoM;2f=_D2 z)bd{+y`Y`x7ULY8{Zo%m$Nn{0Gx8LO?mN~U_oOh%gyY0`}q1MwhS7x_pBXlZ+dyx(36-Uexg zr&Rc8BCSqNT0+a@GSH!lhl9Y%TO`ktM0N{4sSlpff~~_VP1(2zPk+pzM9LUJ4i6~@ z(l7u31ziE22GouJVt)TXC&d+o>9ZysgAxC9wJG>1C&;u#UntZDx^U#fD;J??PVC`0 zuf6@au$vSqJoNxo7p0~8w;*c{*vo$z7ctf9A;R*s%$Uqyz#onDwTg7tJoFZ39v_i) zBO(5g1t9bzK9^^H21E)C1crl_o+1n~DY*a>>kXBbEG4!~t0>RVfT1aRxAwumQ2wND zwsZIddguS?06P09jkqS5M76Guh9n9)*|h2?jq0pb<&l~r_qtH~6$AuPF@V6}9#&Jn zV4=fMWks!G_6mAjX+fhJs@t-3J)n0B{+@j;A3PsEp#{z(32Qy&T@hTMoxN*j;g~3| z2!Y5hf=g>F2HIRY`woiH@oz@Lfa0TJ2zd7Zlo+6Q9dc?>}{ zsYQ+G5CWxPE~nnR@Inp_BYD^bs(m%OrW1Nn z-vQJDjw!h3;$_c(9@gkuL8VIcAWPVj(yzj28AKM!T*#b*d7hk(ggBVPi%Gb6Tg~6U z^$YLF)9Kv(8`mI@;BN#!Wh$sIPmJl~z_zR@*XvRRGvgvm+_B+;O7s1 zZ5Xx8b0|i2>juf;gLlD~keH{1zAr$CG|njy`$5;U%gnOujG?(N5FNkkJ}(H508>@Y z0iW}+8?>}xPe3IIw{sDe9WWgua+X2!>!rExIpR>>xPQmk1R=1plt`$^Guhb3j^j#g zx1y|S645bZek8(_#IsUuenQ)gK}rAPkfF%4%>%y?p}IiA$tnY!I~2Ne?PBVU4I?NP zNKc>8H7rVyrqJ6yI6$JjeFRv^P(SWvzgQ|X_;#Z)prq=^@_c(laVY`FE8H!WYp8oofIM7?s7Z{xA2!X~zX*>}uuN5&)AMA4RCbNvWA-L`cSThP zJ8I~~ba*wZx>4+=@kQRxrj?&{-AnC=V&DJoUgV3&%#(Va9HbN*g;kbqm^7X5y-)Z_ zNui3Pp?KK)SX?`L0U|4mDKdSGj+w00XsS+dm?`JGYJ7ESi7~XZ zO8JcbbyE0@1>oJ1t5+)Lp=sO4AOD*JS793*u33_JawLrC#pNn2UP zZ1Sc6Yz_RpljDKthD#-|g2=CpB_b?LuzG-Lx?rn^5vhziis4|wz)%-%sK6cTeHbvA1M_UxOgT-|i5|K|Y>Z~5+fo8NpB%OBJH<2XXaHP1FPqulI*li2x zG)6>~KZwF(4A1S|A#SmH{CE+8)`1gVkTInI01AyknhcY|9!#bLBmeu z2@<=wtEZR#8*OhDu6Z0s!DDy3xYNZ3;J0<+KYC7V1{x8v;S}`|u2f7li?^=KxV!mm z*Xl$2Lr|&bWQ(w#KJLo95k;o`1VI?Gz?qrDM#@NaDtM}DR|@Rt{_b=;n|j;Sn}3~g zU6$jL$e;J~RrVyT?e(+Pahlb=!y`!is@rO@(&yr@?(tF>6q`5iBr=q+?97e_n@(^Z zrxk5xN(WS>zUdxC_MoEaDUe~VNPYT&;|_CZK8LMW{E#NN*8fX z0(($;cJ11y+7RzXd26`r+|3I&x>&equVZ?k7I0ypvBcK5!KutN=x{mpY0LT{RD|uI z>q5%TOu$#tiQ`egjRxw)EHtrbyW#)&^kmtPEFm|TkWH!0lb+76q>Sl5RDSe>NPx8z z`<<*2)@aFJyMT+gn~F=ZAe4ZIG0r8ppnK57^j@k87>9aNG@I$<>c8wBklE7`AFyFjW5xp{9k7T zFq0S7>H1*o;cS0|q#k96KS84+$TAV8q;_GDMl@a?h_B!msqJ*3wa5?-psVuKfE{)5 zE0Z{jASzGwqvg2EzfHxc%z_1;oqA!WxZgkP50%vqgT|C9jsQNTv!YeH#WVD=pXCdR zJV?j>N}JZkVO`>n?g#ApC-O})92EM#c0M8mHxN$4mn6m7xxew!4)E@|9&A9}3vy-@ ziaYrym>3xTpk#nQ}w9EyLX&b z6MW)!9`=pD#a#8gN{b}OgZrHenP4tIQ@3_wO1Up6K&1EBQW&_CA*t4R zuv4nXK+bfQR+}}Jsj!LGkN`Ud9A$GyCu0;rwFYOtltd}a+%PQ5tv)zVPwozWE$45-LRjwR zLCWgE&#EYEG1q9K@%#%+nM%NoY(SDadPUCBz`zCX_=ig~YYYD2AoRcPNwf#j3{{yR zCCbX?P+ZJpkw>V7FW6!0Uu_CYqFa@gWKTheo6q(t`&dUd&g^KKfYmOP&G{>9514l$ zd>1E0r6Dd+zdY2!Zd@24&IEfRPpnykC)cdsE%&n~NudlG#s+$%Ms=~Y_7mu3V$fSb z!%Azi8Y>oo0zm9R-6(x_GSSJHuu@7KNx05A^I(~W9uC|psWK=e+LfwO0&Ikbi01Ok z+NIJ~B#TSE01G|?`nPPMDacnXSokN}idGCGZnER(YJ~FH&jrLM!S(88y8w(pbH8r% z_0Fv&2K8?No1BpbI6Niuoc7Vd@y0LaBjOJ+zl{n{=k|#Pz5|!HsNqJj=e^qxNmElD z40~@&lmw}b)uWVC-WL&&k6=OI+uA$XVrpzdcb>~Q|L`l>vm-Rs)B@|>L9Ez}$rDo0 zc|BGo7aTfj`q)}MrPiFRn>1U@3$+RYKT(dUL<*w6_du`LEX%g5BSqwwGycB$p&GSaGvcI>Ef`sZ+^b3HKw z>g>=tLRD4U(sLWA1#H-{SczkqfZ=I$;v=G>qplnINn1V&;)nz|1%*Lld@{%6vhAu15; zsME&dGEirl;?sD2?yD*UMMpf3Pz1y$*XseO)Y)8Wv z<1U3oT$hwYBT}lAfwycWwPfIB<96~Y3YhdSJ&rZE>b_@Qs9x02PyaRmHQ!L0glg`V z`7yYit>allmfDRQomm@ff8LeW_Mu9SlIyWksP0(QrqH{iqmUi-(cooZ7n)n&ib}Z8 zs7yj%rV~~P%@q0NxxTesFDRQ!1c|w^WQJV5FjWC`u$xe<9FY&NtmQDB*rOgt8Igpm zTPZ#Jri04?;7M>hwE(8Ll%{k61i%oduilo+Yd3@1U7GZCS);C(wv6@3yc3U~x&X*6 z8-&!Y*kf8K+f=JgfTf*_@*rw8-hz%n|R zuCva`D8G34HW#wYSyrscMyL^h#!b86e5$!fCR-sFdOX)paxoxo-pfBz8n|N*n)H+W ze^^;*^17!E7_hQS88W1yD8H(@uPNfZHp(A%7FZr^phMK z@d@b3EqMZ4n~mehoEqx1W{jelMsj}1`8|n9vzgR?JcFc^==3ddmVOeQz!F>l2W>Xr zA@d@HIU5yisO$2=M~VCr$_N=f0%k{7)``IVj*EbGW* zcV?J?IEXTp<(YHVby1<4Sn(6wnx}$w+LJiwfM=Gf1CN=Y3=1PkKy-y_U{8bLpc7jt zPotSr5|FattiubjT)TKVS=ruWHwN5w6$g=?UY~@iHQks38?_t!9(*s}?AL$n5lz%w zt7uJqr1Ojjov2AM*@7#eCq1EyG8b7lml4Amp|ObtfguW%{jG|nN&rwQl-{ewfUQ;* zkcENIX@rYOb)TtyYv^(iy^iS=X}sqg;7H+WrXO-d)|E`O=4Jb~8fTZ#_s-%|xCV@4 zdCR|JHP_(@&hnfG+N?U=hO861QNwSqpoW_QBeZ2=4E|E3*>&)4QNK+}l^-S)_Kcdy zP-Vhvlw%Vsvq{W}d}&Z8_SC*)lxE0A7Ka6k;@SDGD}V5+f;+RVzdC4;qHl>S7|9;-t3BKj6Gw!$$E;1{o8I4E7iMi})!efpFA0Xhtp`m2wLY64J$CIq`wT zPYtmFzdkwaC>N+{N*d1m)l%eeWnxV`s~vi-&x+| zgA=-4+~+ll^j%IZx!zgDR!jL7sgK3g8NrN+P(lLKt=qI z7Z`AmCM7PO(2xOl$AHhM*POANZqZ#1ZMewZWcYByzZ4#_nwl*aQ#m#*(r+qT1U6gj zSI$>3)7__uK8E|vnT8hRovXD1h-5oZ)=Z{A|>u^ont84dRiqzQl zN~DrXb?Mo7Mt3(VnLUNqS^6Ogl@+E2u0beJN)#yw#*5*Ze8+Tgx~mALfGh~((0`ME zNSxjATE4E6g2l~K%^l*}e1#!o_N~P}ryfJ^h_)G+fZ?MNT0nHnVkWLG zp&9m1ZY6yRL01T0s#UE;=9UkE>Robat+5S!5c(=&%Ojo%3$0O6|n0dzh$ zK)JI8$~FU5CmLer~{A!SP?KBp#c~sggcre#y#ZPdg#-gR;$hW5PXUqa6*B- zhypM?ywX!OB9a*=f|N$Hq-^22(2rXh|H`=9dgk@M;Jl!zZUY~_+G*o74(zRTGxUo` zvyRHcn8QXqEM=C5lwj<;9sLgOSMX!t*Yo90w+YkugBZ5ecW{yQYBCa}?mAKhlpY}p zl>L&Dt3j|)B2iIwDDB*dQmrcJLg-jK8_W6L`~GMS)8R%$<#Q#*FuxK*3{%I*v8|PF zhJPU~e?+|uc6j^n^YOO2IuhMure!+k)5z}C6w|Fsj@`)9?k>zTpjU8I&uSWeS z2+K6kktoe#K`?0Mh2+q#L<7#*e}9V|rLT`)Kc1k`L3~8jT4Z~$r_t=>?UaBQqUB~1 zQ^Ou13XAvu|MvkyY-6Q>DKa4K;H?O)0cj|32be*;(VNoE8Qs4rI5-|>4$zN(pEM+Pcxanf|Xg^6oi1T6T zzYQIz30uSmi70?1*YU)-Pw8YSzHOA+tI@ZDhJ&@zWl-Lk7h3#-=0D5mZGzbn5; z#`9L@2p%783Tnn&susag>T~nw$tMBMSl3Rp@MZ^v(~(ubQ4v!KEO4VBFyNOhbEM&z zi?(uVmO(lLhr(^-RhCrA?|WpR7H1zn7qy}|H&X$VbRi0q{i+VBM+ks7ObaUsa;93) zivv&IcYGT_(0qa%r_CNm(mpT4Ij_;QPk}yarib0f336PYCZ&V3wNwv9tuX{g3?PIL ziv>HWkKf~kb1^m}mKN!TLhaP1_+sO?m7BS%@5huCtmdaW5Gy7Ev5@jj=Rg&VAXUEK zF^D)4Y~pZSf=@~tp|>FJqW=hog#olapUQ5hA(pBWNe_$0i+LRFBoOLa!vSrqr@FMI zvc>`+I&FE$?|z6X+cU9Xq2@!Jiwm4w5>mn&XaxrO>`nwiWegPx2NxoME@W0!f&e%I zz<%q8DG0IJJ%#;+xnfMk)f`1C`5+>swM2L7Xuls_8I;W}we#Cd&Ob@dGU!ry*PrvX zuZxJbMyfZI4*3B~B|XR7>calN6jZJ&B=nkXymG{jYN#APnPrxIA4LV%MN89p;P-eJ zh_xL6GOt&>t>T9KvmL?=={xWt3Y86_5W_(+R4f!gmp3qr z^saE0N48W2u;zBgkWz(S->q_qD zdRL1W$piW}f!^{`*6D;V&{@uDReU;?_C=*$gW)7l)kdI#KiFkfL*th|g>wp2heog++jASID{3mg>G;Q=X;gdhk5EGQ6C%Mh@Hd5(>2;qg)%KQL;HB8jek zkMPgdIN~HjLPfkCwl#E6O=fQwS)Oe{K*pt5UOiEf7oL_Cr5G5URpIf1Gr;M#5JJ2O zrPo|`Htw{%j$&dkHeM)S4xO@YzaUl^y;;y-ighr^;MVO0e+=5I+20l``cAsUqJs)~bgvQVOM0`jX2Tq+_E13?y`;$X(EiR=86 zK$G&lsE}qtswv6^+mbrVI${s`Ut)H z)eNO_x&g84|AgQwWC>&h2t2!hu@RJwAT%n8jd$tQpa6hc{0Sf&Mfg|#WRrl*cHF6j z)BxLJA-IY1pu`Lm?71c6%wJ_cje^GV-?kdbZgMVh$pmfLUsf2w9QY~T++CWEVYJNQzpfp9&|s_*P~ zW_Z#|Z(8T6v6q&pN8+F~)`m#g6C_U##}fwWhfYsC@O8riuwYJbx_CTM!k$ z2nP<5LQoX|JRvHT4XwvQAi%^dq!640o=qv~-gy8Em1+TFq54a3)Avhf;?$#=U^t}# z`W@}W<}zVa2b=5p6C<;QzS{i}d;L**`Umn*=mrcJCS}qQ6VDk+V{zr^337FU4%vrd z6LISMDGG`MYMm>3@$_bT6!l;LQALglu4j7wqdiM{>58_?(-ZbfE%NPLKxL+_ zHF*4wPfY4x)_p9OvR=&e$@;Uh_s-1!PPS)a*gsvTqyvENB?-f{g!r(o6~;8_e?C1) zTD5*q?;Q7)@6ZBL$#DT`fjQwO?66=G3m#P zN^dgLDxKY?j;*oV9A_S|NF$84DHreJEoDxz|cs;SG_o_l5Nv$L~k^jf)@+74{Jk!Akk=n6=5 zj-h0#^4GFIxV1y>uxKqB@a<(Ei8=YEz=wu?obIoK@8y5V)%v_! zRN+R2z)wl-ajG(7TquUH>R62FO8idlpQ)BugNqUVT6a1k#Aa7Mu_q`rwY+J)4{{oa zx%NoZl(b0i{C=EuR}r^2tkMyhYT1)B1$8#3mPe(fB#4MIJ47hh2vV)0G%m|UvL&P) z2cZ1JOXEerv=u3qELg_jt45{@cb)9Q&y50t|AwgBps>ji(QNBbD$N3FvRanHiEBJm z(G0jyWn?tvr9Rb0~KQEOU=YE#3Ue9_G_&1ApRa)WF;m|>2cI}GU`w0+gkSF>Mi?YLl1*Ihq1d3 z9OAsUcMM4J&8dThC$EJSosz*ZE&F)r3Akzkc`RJy5PC&WC{_hPz=OW*E_!;`fulPz zu`;Fl3@*_CAPfRGig$|tneYI$lB95@UeaIg$$Sr@Gfbi0s6a+eHjYtMul*X=wRT#6 z&_iW*$12)=bOO}LYAZoKjkQ6cXaMC#u~?d*3L6_8Rz^~Z%xeGu0W24b zytV?5N|T6>K>(8&rP-RshHbM}08=XC@!1gt3yDv|?EF`}BoDyXIlK|WB_Wbbz<>k+ zK2s9HduE!xog|z$!$4-EN&zWiadp@B;xZx^sky7_>)Ts|EnJ+uw23-mck} z`28+vMjbggRd(;Rm6_tLtDp}DZg~MTz#Sn9kN^MwPys<|gEAycGid^(6;&Wv2nQES z1;vnJ(3smau5Km8al5;8y0%V%dU&XgjR7XnFK)++Sq2#vnMpt(oE52SIYkI@_<OWSY|R>XYd(&`7XCqJjqIE*qwJ#IewRxSDQ2For0Q zKt(qocoaYdmM=6!g|Zq!DxGvbL*iW_uCfv7y{0fJ&g^0nBg?24KuU=b*V`1QI16Hx zAQH}{;tf6+08v=h04F-M0z)k4fD0nPL0~~BhgmpQkzXx-_?}xZYC|N*2jBGIz-*9K z`f?G=$RQ9(B{pvq7y{R-kP9lS814I+>@&qPdX`rT zejy5r|NsBM0Y`9wu^=iIA+--|&^Z7~&H&9c90oGqT)7W4=NQ{l(i?MKx~#gQt0a_1 z^tH<)cY&Cyy&V~W)LsQ14qzCrc?q5p^FVp+BxShZ8*7l5LOLB+ND|`~0XYt|m>W5? zXs{ju<;gJ}V<5vPgZ|?XI-Qu-ZngDi+=>eZq>5o$Qg>IL*CusX7*a?ec@k=aTJ+K2 zPp<9N2*-=;a{)Voba8Zr1@bSFSc#2jjcQgKn*p^I!CL@VQ%nMq6sa<(&}vgVCEkV} zI66PtGfWEiXS4*ne;_!bSBv!4&;YsK zw=uf`VGENU)jJ-_8R);5SV+ymaX8zwZzaTz(Aocl0<(A~@M+bm<>Z>m%`UcXENd%l}s45vk!rZlYr>1|kRGH@~kBN8oUf^+iTgT8BGxqF!HC6!4%HzNg) zO9RIlDK0Qr7mxtru#~c>ItJL{1t@5UF;Y7-4I3N}5)-nO&M^BVx{;}hdMVMCQLmP^ z9nZ{aTMk`gXs-EuE%l$#7y%;;z{60`^+WrRgQVl=T%%+N~c_27@zz{Aly*s%M$ zY3sV*FADa~xKi9~nO6=2ZNh-ChU5!UEx?l7_|gn(d7+>JcEd-NslX^DD44_st3G}J z0I~!CBx=?c_0ecpU5rY(Wh!^#TufBX>1-VBpmQg&_xvr;gf22PvGCp7qbd{xLb&qe z%xF~NLB5#r)Xr|#<;XWq?}YA%u-1v=ag&xZf0Z^2=tFvo?I-{)xO=ng-r5ZgiN#+; zc1FY!-dWEYk9IXE2Yp9}EipL0b60eQj(3-ysT*|NsBQ z0Y7bnu;3~r8MJwD$7Lu5Sb-OC11*pUx}&f8&mpscE4yFh@bm{3KXk_&l`wA&XJq^X z-k$kVf{rNB$0mvg6?;`G*W(r;Se-^vM-%U$6{@q~K*|pg#s+}_OAujqjMIt;B~`d! z1JJw_Jb%kQ6>FQvmIb+Y_;qS)>wKqe-M7!9T`j!Bj_P{6S0$H2SN%pjH&G3q ztFnv+#69*|UcA_07QU*CZU}}1vSix?ve#eWeQP?MQ8%yb_qrt?0J<0kZOvLEz1U=SC}$%{b7!^JR5LGF$Wm= z*bgcNy~m=A%@hP-!V+|L!k);SP#X2kaNHtwSzv+X^OS9^Lo+Mju)e#=h2Cr@OTpNy zHTA!H;czu3h@B}WP}9gQR9hN5o(W* zcP&7WF1F~RQ~}5B{Uixt*`9X_@lIh%^S}ifH36ER8^9>HpaOo)1ylf)rhrLSHUNMj zWKdWBgy>$K(qjN=a*MvK*}_SA4#4_@UI1dR{Xz=a7B7b$T7tW`z>!+ew0V5--*Hp` zRrfQwfLI|Fv;dUdM8|(0=^3JO0`-q)S4aR2d@tNnkwLGqwE|JKksRdFE-jlci+^3X|g$X^hG*{y&WcYBrw zGgms>7M6k<1;CAke27Aj0DgZjc$nxH8K4B3K}yeOXpw*fYoJcN&U$&}=z_FR4N2HZ z0PwcDz+k`t1ks3@eS5KTQ2_!5^@kQm@enMWO(&Fx5Q?-RR#L$_g{v~}Y1|Xd zIip~t#)tA01yn#lA?8oo;|z{|04lHn*&;`OS9M8N7G4)6E;VD3@a>9OU_iT8S)>vT z+;rA5DyuxRqBYUo@cq21fCCXX94BB2tbVVb)9sAXNDJ4$CHkkyYdzBk*`yw=-+MEAXq-dmgio?g!c#@XT_3X3iO|Lg%bZIm$7 zY$I3+rdhhpBf!oO%d`VPI+wpZE+>`Yd5tSYCNJwQI%o75U4U^PF~!;Hu4C=_2vW?_ zoV+kbmrWNRK>ICQ&o~zqSq^DhI$pJerHW*Ukqi3l`sOcT0N)cr1KSz)eZMYMQYz(F z6~Fh#-JNcBT1_Cnk>$=NfCZ2dk?D)qR#!_q?`2f-d7Zx0q0m3^x@R9<)zox%DWw65L(1<<^e*TbLy5Jy)yijwZqs8#QM zyr%(c3uhho00D0~@mG_NuJTc3wIk%3O%qq_*iw?H5a#)QP(@?e+aG+FX* zJH4F0kAnQ9A>HFWGIiplKyB4M8)kPh0N(1grS^aryhfPTG=flQ#cOW;XcctW`v3q0 zo&laJ)Q|sMRhsF9Ty+$+9L&qIPRVmP??-3?Jazg|AayPTh%i;(>p{;bK&lbEpHb6e zqmY}A6-$)x5Q-agvPcB)6z^&fXp29VT;$^H8{b8c=)m!h z90(%WL`+4$l&+hR0FR@O?i4*LrZYPpM6Tk6R}U+-bpYDHn91BfXR%%&j?3gZ0EnYO zh)F0CA%Q=074$Sqa-bK?=W2qwTb_0gQccjna+SmO{d28kym+FQ-5G#TC;C-zVgghY z9bmkJs*r8t2eHgG_7r`ar=W#IFVDse;87q3hc3gm7=h=asEnWNa(RSwVPg!?dDQvA zrPM3IUG8Cuybn;z(jUwZ;^1NY^8hmtAwF4kvn71Z8tfH*jd_O_bYdvT*vR|24MY1d z5BKm&*^d1ou6UTAe44RSZ~Y4ZKjMFo1M7@2V1&U zzq$NdNqiuxs+uBwY@>YVv|HgkQ*+eD*v*=EHf6xwFk&RNdiiLufdii)Y@+m4VB4mN z-Bu<`&h&BwIlF869Vk?4tJWjuMX+=s5e*_@^#~P8(8W~bg~iRm^>Zpy6t|pjjAocly6en?{LQ>NULXNjiijI7i`0SM z@L(tOU2{K(xK1=FCF6Y^!>ev{lSx+xvS(CedAqrR6`|8#x64@oUz;>q!wv$;qiEC8 z#~f6T*y)}`sfWKVx=Wk{sczE&HW$2*^U8pf7!5n=W-^ry?Bmd0F_W~ijX;9v-Y|6A z-S>aj;UTdMquvdGBD~+4;FpF*ScwTitcDCtu>O-(k6^D-!2koALl(>XK)mDR z-^zdvT_HNhy+9SyfSk!L;|gEh<47K5u{?p~0dIJ(R~` z01J<#IX=^WZglrAN7NKrl;(IF3Qph~XZk|o90H19@p}H9)rH982?qfxvE-NJ+}OXf zo%4TfV_3lX&>E&)!?%X!M|^h)lN?J5YZyx_qDya+=8S8R6wVfA5eEd6iGNvI!;K;C%1y;s0yY@S&T!YV6-%rH_Cwk01Spfnlh8Z9!#bL zfAwG2gX2L@G@mGHI94#(BZqaJD6B*cvzM3nv{d}1rO408uC2kK%&^ph3f za>*2rltVA9u~rpKa+GN z7TpnFk5gwF*y~nz)aNYyuUpK-!yiv14K(}+clPTN-zKyC00SalD*6r%qP``|** z0{8?*95UJV+W^bVgy1b#2?>#%aD7Z3m3?Iil>VXd>Hbv?F!H)(~!XzQ$%u{L^3I1 zsJp}}9J+sPfw70VuRiH6kni|?E7yN}>!+f2Tt-Oo(l|8fbTNCLAZR90rsNp%O@*3Rx+im7*{Um$KpcUrM8KNa%#_xzW~~&hV!b_fya!M z_G!B{I$~aORibg(rvL~=s|Y6qD6mp9Fup8h&q>LZEm#fqay8O8>ZZ8ewya!kf+5G+ z7a|F3G*ML(qEjzkSU|tymf4Y8G=Er*7m-n&; ziV{H8Eda?uC?7Wc?v?oMUKIKYdh!m%VIS{4jZ(%bOYL?c_b9afeu9&|;vvu_5Q~K) zj7@=Icl?RL_eKar-Qah=#gMyGc*0A~2EVBgG0)rAcEnV z&&kobK#}uyF|-Rp3cjTeq`9lAgc*JFH{F+GNZ2HV$u=0-tEHX^gPh&t55?DK_jnV-QibPflF9N+sV3KymH18zDEQLQb2xa|-U=YL@L zyp9-rYjZ_ZFO@Kh!Sxf0HVdv|7z?3N<(#-J7)+#e!6WvucoN$cD-p1f8-bujUKPb7 zI>CF`g@Xr(C9Rp&nVzktr_tI)37#Xv!bsIKCaK^Sb?t#m_tRhG`f~F$A-^MwG=qFW z%^pb&+z1{f{_irT^rBK{{#&jN5t4sCb(^giO1>lW;=JE8o@7&;VnSxcz29Wfd>Q%9 zGlnH#9)m?C7-GK9$B)kZ+MwcqCp(cd)a7)4sQ(zqzu1)O)=zey5}ig~pOng$mk6kA z=Y5$`TCwoY2H%;qmto};a>$eBpFcX!+-euwPFtyzlF?g0;6kiE#HWf|JZTvM8l=^E z=U@e|s}QV{qPrL_>TG_2SG6J7OdyXbhfXgS>4EuG&!U+S^my0{#3>>SZ1NDBzYR>A z4hJrCYIy8O8_(fWnhxsZQ4X0xL$|XC{Az?YWm(vS9Dk>nL!J1C=5q=C2c78sm<=x* zfc-&$Q7K>maAd05f=>3b}e_GQv1Z2e%$l?&XJwxor3|nE}RqQ$#yo10lR@oz6iWi zMbbLJbiE-?2Rfn{lM6b`zP^v-ul1cCx`~H(v`FKT zR=kj4_kDh^F$ec_?-np&Qbor03v1UUyO8cFsRYKl1)rbL1_oi@JjmHne7(D?11BH} zEI89H7mtuDd33;MEz-%TmUA;GPwnUWhczd>JS$o(dM%5F+Goii%D`}6w)|`6-_55; zGp<5Q40BS(ds;oKfE;s_^~_E`!+vOsWoKgbdlGNr4&jZIA{Lcv0^G$r2*U)AO$G5g4O8$(bxoejM?1xOfYEI|2}jMIBmYyd3O zo)f)SQBv6^g?7Wo=>^Z9Q7yTUNg2*-b!K+u?g;S zf>)vkDz$P4cwqyY}P?~gj<-W zBUK^>a%yTSH*v?!Cd@5gZ*s&CEgw=T?tD@B84J9}2c6G{~ei5iW&wR2)#g0T#^lhXL)&WJ&Vx zPI`Wd_=-Y!w&5Vz{CnihS3WUQobY6p_xDu;csxXQFwNX<^!4giu>&u_aGl-Aob*IE z^+329g<$+Kb5mjg(&nrPf7iae1Td&2S8qiD3e_@}8ej_txu|6->US9L3cMNqt;l0^ zqZs}^jr$%s`xW--fAy{KR9{!JGzIgH0Ds>Au*8WszThO1;VYSX4_~!TAIlP}EaJ5|N^p{xR=)c&Y_Z@1RO3d)wLI9Gb-j^bMbc{IlK3ybbCWU5~nTgW|=d(4v z3}+k{CSvWiy{ykdy05{1xEB$Z{8X6&2oO@H-(6@n)?FF5u!y7QtzAvab>SSG4v2Kk zltv{7odW0^<}kvG_N%zn1ymyA2>bO}NW)QdV~&Nkn@wrI#r}fhpDT%~0Pw1O@(1-! zCw?@0Wy2X!H-I;4>U$~r=WX&O@~Kmhg{P+cyu_Ce+;Fhf!xxd9pY_aRd}y`7_bdU! zY!yiU2^jy}sXkcKg~Rftaezf;_ZdAf42y6Y)W4XUuh}j;^8!Y~R{(+F+kIK^E1;g6 zLfF}b3C1{Mr^A(gYRFh{6usHa(V@k52sFv=+oS|`V)UjeTcM+T!h}l>%oh(>iWjt+ zx_!wUHE;%lLtC)+%|A9iI208%*~z{kwv`R6;FAip`^1w|Jgdm?vT}apJ~%o!Ls^mN z8Z$gU8*2wz@?>Awv9OAu8N+H{GkW#`fAU||`33Y+ z7wHf4$U;{fG<&kKO`2^{%0OIo)J3^gZ2$lT908tARFD5g#F3m0^Opb$fZp*8Qve@| zC*8-BKy4%tbzRKXejHOc1*En!o^o0kFj&9TQ>L5=*RZIVHhn6yTFmfXl~h;LLpHlL zEN`{V@l(T}FMo0IMdV#MDS>kxi?DuL-^Tp_PYmtBgWxlrcVi1;O0qtHjcnLBK+k4c z3YPuEJAn^wweL9TW>D4teHqgan~}jkT~wNHS{Dlw#_*XiT@+A_`p?Uc$cC?9{PH}E zUb&1j_>ANW_-%sB%k$pKse?aLK?QM4#vsk@069UeI2$No}W2x?5*EuD3VE3 z?wJ~Yl_gIHoHxXy=N+J*v1D$uU@V2RXb#Y1bR?V&?d9wZTLrmBJ<%GYtQ%bc#;!2D zoWdm!1`(1{%K$9{|2_x&U#lU@vcH(eX{@Fgkndb2ARBVdEzgVwlK1m{J2s($ryx`f zIJ}Ez8GL}R*Oa1w$>&()o9&yA-{(OKvN4SfQUgjxmLo;loJBEm?(ZQ)RgtBtg2PJ( zOS8kW5wc83*1<)$Sz99c(r;X(G<$bjWS<@vHkD>-aA^W7_8BeLA3SMfY4_;&y!bZ6I#g_z zIRqMEf+&|7@7js-ZbPii*?YrdcL`>Yrz)ciH?*+0K~UTUsx} zHJPIe58qSSOmZnMXUaZp_rHFrcysQ|X~QZ6dzyy_i}7_t9U822c7G3xE7wuiPYDN}*s!eMs0Hm7GB;Wv|QxhE_NVo@oU)*ONiLw4;17V}xQv-aQK}ET_jU z^`po8$((atZK#g;IHw;m!-;~9or>Ux5~^%g_&TrE`=-+Jz6bGBYfD<=<>Bb!JZu^? zz*tTX^IYTFDPT`J<7#0ge4#w|P5CjcT~Mz6t$WiPDO`L*O@f7E+?3IGRcGtE*8~QHp>0e1ORgLAL zVKS!DOE@KVtJK1v1`v5KWXfu#5pf?uz#6}@b~wuylQjAiwnTqr7x$-Sf zWV>Rr%BVq}SynT56UvE|w$dl(5`FGni#4yu)uRw`#yh{WeG`DLiO2K?u<7a2;k@7*0-aqyA?mE+rW?SN=T1e8L-zH?j?` zI&$~HLh0}Fe(=c+pQ2lJi?D*0x6UhfrMsaIMpFINhi%x!7TJjJ)hWKqlKLxOM!^1| za7+jZV?1482t;fjzjy7eZM*F{jk&lreJ~^1>uqZ~u9h8}n~xoUC0r1W$dle-5gUO7 zgJlNu8HN%ax@|`V#DmxCVD8f=<)8#oKi|}~7PTB&bZa#r8wE`rHPf}!tBki}+_J0* z>P{CpskCJ2>s`|{`|ZfIz?jBJ(#mD0Np1e+GwDfrq%ug?KDu4x@33lFHUK`#8$cMU z0K`FEwOIJ48o&`OojUbQRckuyo(#bP4<+D*W~V5*1bJnbALLSp0uagfWVk0EJRes- zqvI!}pEZaZkXOPY7;wR?cWLK1%5M^L)iKfB5Dlu*YdnP`?2@P(*{RZUwIW7bldYys zm)E4h{lgv95n)976_C}48iIp+IxVC}awL_V_SL_dY5M)=^LCaU;6g1*^G7a5QGMk) zNW5U?g1|Pr7n<5iUH+-@+;(29uuW)_90$c#9JZ`|Dz}GgSZa&R`Th|XyR`>t){ZA& zm>%;Wg?rcSj>lD+9X^_iykv(AFBmj|oo1zmPAN~AupFWv!J(Q%MA`;NF7J%-)T{jS zA)dop1A$oTV@`33+wfjT6T37n5M3R{?%J;{gHsb(ki~}@1PdDJN8(hXkYHVGrkD>R zRkCTkQ>C~+nnXQ@6!bK5q+X8uC&4-;*KL}-w(+ta@f6T$t6`M8sWv2G7~=4cXAcFo zsEei~0=;vq#id{Fok2KF5&LdyR#pLZlyj0J>n@qL&S?AyXX6$So_tzwENe^f5HBP- z9FCh9#TaRRW0>DDXhs`4Th%n=(K|V$I+qHD-0V&=eryUhSA7eKI`?ett|Hoc#>})D30SIv`(h2E zEuuj$S3WKC^*uXs7AE18-=LalB8Uu&M;7crYi1)Q>gr~*eWK*~P4UG2`>Y;v*L3z0H9QYN_0}t28Vf0xmo}G&3CM@?7&jAB!4)94)MRE1 zu7oYaI!!;u;uo+As+ZnU4)T9y|FydQ0Uu7D0z9%&a;^_0Xx05N000WoL7G;R!X8Yf z1b_9TUiWi7);IyWqC$u7=JA3tQpZY-(QSQfrHkrB4Kz<)R!xqyFR&7{@ySgRqEhRw z7$u%6iK}{O3Gx0`9L0BOoXR7>0eUWJV2L7K+~l=oxWD~c54nuD-2==5oA(OT& zGgh!hLoi_i`qE4Cy2_N1q6yOF(x&B@yT8R3Q`|E4$}Og3}*4= zgd;gxTkfc@y_m{1q8U<_crexw;QuQI4bjxcuzdZd#*2%eSgmYTLdiUT zadb+JoNONstY}C$ZKQhAh|M8SJ@=7K(=^YwPN*?BEu4-w%b=wm~j;N zDr{Zm5Bd_TO@VOlJSd^fl4BwDWk+YJf>`3!tlG;mLK*|15VT7#wI-hT-`#yFM2#v> ziMnuo7b?M9Gf2;M7$fG(nb+~(iaMSu_c;=F0x3Mx21{yjqP#>;g6tB-{~7g`b`i)t zFBKswAO{d$64SdFoG2oyFw*!N+b#?KkgstV-X&!O7a&fwZ+2ar=rls93 z3@z`<8Jhd3914B!3`!P2?lah}Soc`nmpzDM+EUI7FN81TkLD`jDO~ulgN8gzr8J>@ zF3&FuW?Bg+Njqp0BIZ06T&(rrO)LKmG{>)s>{yx4GW1<~)lo>4uX)1w~g@ zXcpw)K!xkFs4^-C+l^tMHstRLmyR@zjy@$RA#Y9$JgQ6z6sUR;;PnQO4DuA|gZ&m8 zr_grMuRuX@&7KrV#GB~kssFP9{<*iV#uo#vKa`gzSiDr$;7r8(lHD{XC`*%y%uriD zINK2H0%8bZeO4bvf=izcR!fGzVUx8iO)G^-iZN72cIRh4x)@Rvun;5ZpkjvlO6Wxm zLQapG*$!~a$l|6ZUZ*zV(02FJ=FoSrQEyzu6_ZqX$tBEq;r#$^K#{+uLM}G7TMfrb z3TDJ{(#VwZ@C?Ub5XHxK5@BH<2t$e1JijJC#fTB#yO$3M0!4u26XM_xo>wl|G%$B3nO1&5U3N5?(3`tDy1Ms%ofmd zK2+=Q6{D;c6E@k1WBl+w7~o`_32ClA<^kyQ^1?#1qwB*w)lI6^+JhWZ61opAK*vu;sP>qpx7sx{p?vW#(8y=6g6NwKX z_?;i0^C<_aE-EN^Sfq4)?;e9hO_PFM<-P;}}F`xJR$EVRdkmnbSE0ATjZ9;~8 zQ-%EHuE}qXF1|x8U}x_b8VtG<9sT=RN)taN!1xUtHere`v?t zeWM{^do*p#c7{dEB#AKG3@Z`%ic^uliy{93Fv}W?fTN>b9;PTkuSfm&B`5%9Y}vod zWwwW4b`g`xYun1km>Ci}gT$rQ8wPJe|WOVg8gLXfn}7wjpslw0_)1CSv4rUOXJB*i6(TCyl{O_rs#{Y1!Uq-fgE z=KF*JFgNLDBbaKqdYhjYBQ_-Hk*%$xd_d=JxeKKIp@2~g%L8-9S^J%5ES5mt88@ra zk)NN{;!cO=uSzwg=fD6z;tmI=vtfZBzy$zygC2;BRp%Cx=lAx`PVr(Yun4mAe9OJ* z0wUl1;ZI-P4j|bt7c;!i*51thqvH#YS6fii^qkH|4|Y$Pm9z0JTW>}BA%34V^>vC0 zDmC($Qz8kfz_Jw{fCa2Sx{4cZOS>F1*P+9PqCIi17gUSCR?_84IK+seh4JHLw`BBthP72BJtpw47jEs z5lPI^;BYwbh3k558qTUnjH@jX*Hig|NkDQNW(MQt_(6;^tENkq1H-kllV~Q^{YMf} z_?e3oCCIEq=>?)7@;yVgH7DM?0&^lpTIn8Pgd_%S(#;!&{>}v*roB>Ue=(KGIhs>N zB{!@(HEyb-mtjvMzp!Nk*VVV%D;SB`7N{~URS#^gqv=Zhb%U8B-411)5d7?eYFpFy z>SJ#8b|!2lGTn;F8Pbaco})1o4R6I|vtk~wA4LVtJs9SXW1obruq>kFTu3Aub{B>- z3Xv$aEaO!L5&?5w?m>-4$=U7`shlU~n{Unns`4TAN^Hcq5<4L8i0yGEloNkuNT!sO zvQQKBU;^=Tsh5^2o{6ssKTdDfkR8KA9Zd_t`6?h;oXAW~ZQ>_t^sV&Yd=Pf`nPMAo z4(MBee{0G59d3ab*;v6P4q(Jzv>dQRVtfL3V+M{BcCbQVC?7GwULv`b_=Jpd<)&EV z<7Xn_V7+O3Ebw%J(*w=R)R=42e{$?ri2wqQ;+?)K$Z|KOk1?}~%S`8=EPo?8jn`#Y zlz=L&o5DM+d7ECheCjKl+Tj&Pqh95I)ru#e&+rzjCKG_M+GKS5*Fe9vO>U{1PVzV} zc>H-Zs;Yk4YIH{_G%;Clulv;{)XG*RQFgVq4wO+SDB&JkDOt-}wWqqngc_@+`TH}G z>PU`ayfZ19NdcKPEzq+XLMW}o#;|jAg&xIBnm3|Tdb(l5ER4>LxXmH44n~9|Em^;m zTWN#Q{cbc;XWn}ci<<%#Vyu}Lto6&W=3v2V<7iAg6Qv;pj08A8uB64{1QJ_>85k9X zxvCWyIpgZ_UM@_6Pfo))Z6timIQF$6kOf3ZF_bQf6a?nTqf={E6vNBhaQ0K zl2pJ4)ck>JhBoZ$g9nA)5*U|K7^pf21pB76V*U=JDxGK^Qd=i#cB!Bw;2W@umB_jZ zr^Pq&0s_!|-9=p<|Ih$jh zj2OeipaHUfBNPjZ@Zdds<1PXD&9HEKJD}hwJ$!NR{vJ7BUCr&^ZF8fAnU#>v=8fYJ zG=r#uFoi9*A3StTKzN*9B80elB-}OPeP(C*pK-jGGY}br5+o}<9)+qL}ProLXae-L(U|E~Be5X!Zvt%{@S^bW9B9RSwq@<>C>Xt%v%7K%!F{KT4 z8@7x1o`tUB=udOR{cETz>1X4$I)&2JB_4VpG1~~zin{af0EldW?%w)}fe64yaaG3g z>p;AO)8P_z4q*xeJir!|i58I^U=LaJCKQqp|DI|xF?YNfYb{m(M9@)%>TPb;C+`oK zPS;PYvDwJ^psVHgLus220A|e+w<&RwG8Q6xuZ-sq3$G5C(9en-g=19c-9Ru#M@-vPb~`Fh+Ox!B9;k^uMoAKLa)pZ^pQyu+$n za=p1INobIX&eRS<9}^NX2(Mbz48bX9R#6VNId4fqpC;fv1AK@ON>hnaV?TpppQBDp zca-C7ek%$T0W|f3SAEZ@7x4I{dKRu^5XgU4flZ1K3$=I#5S3PuNE?jHrY5j>#C5ee zhYnj0D?fPmb;)}=oWT`ht20>m_Xo7X^64dUr|ZR}#q=9}N7QT)atasJGwbO+mO+42 z0Z9oSn^%|!M>3T)U})Ikh?W-SWwm1o+Sju}8wA-fEdL&yU<5dv?hkN&`GCYc-Jd=! zbn}NE5a?3-?kh4rjN2Wys6zr=Oc68UX6j~}+@n~#S3EWpgTUDFr? zdv*<-&Y0_tNi5r35;2c2k}k@Udgh4kM8>Z!nF~CpLoDkx{5csfyT;z_dxWMw z9UX=|(T9tFQmNq~Y||=(m5Q0z%ltd4u30rMUqQZDE0W!_ZqCAHd!-pWhk)*1AhF1e zRrz~BnLTpd>Gy|-A|H5ddgiW6!RW+4hrs*m>K$Dl4V+fXpw(pp@DuiG!CVT?7E+M` zG84jOuf6kZiiJR-NoPg^qLb*xDt0&#AiY7kInYbpRB#`{vsu7|Ez{M`^32i3@F!Nf zg6p}b>F#!{6o{SvE{)?bb%Hee>v(4McqSYW(TA29)=}AxZ}@{TyU{=LH0{dsnR1x) zc}Y|eni1>;FoKl<1Tm#GkSP{XSNFvOVBwuw=t8p?QSYGX9r&sj0oK8iYWj_ZMxNGc zO1CQ%ZTSX`9JqiZ#J6wheX1R{v0&JQCj(&6^qAM1nr3bxVhe^5KxqF3C?xbvWL%!L zVKWCu-BZX88pCR&;pKHosrfThw;LH3c4^<@hy*(c8pYKe(~CRIT?3ZX++~QcjYpGd zhy>P*D+zoQ*npH0z@8R4_`4Ds3y;IO+r>w@x|P)fB9?^`sJ0LLs@rX7UIlJ4RxJgI zFa@rBJ3a7AMd_`9y(Lr}P&iIa3#BrFgsV^bRSmp(GET&BFN$+?{57=DhJdf0-*;<# zk=k`5;8;?ocXR`#iiCXX@-Ye4*U**+0B zAvBSn%Lq7(2e{&at|QG9#EJ4PHHjni%>w^<_^a?czWsSOm~_`6z|9z>{% zzou?am#b;9KwyjTp{B~vJe=s2)yHbZ$IZR}_Umu&gLoVz1Xr{a@E8s8e2My)#fq$9 zx1Hf;2$USSydVy1Rp2v=I{uThY;+bdEsE;^&h-jo4(44|UaVT)@dIw&5o|#xTg>_% zjbconCu$)7O{(=_<9BFC{Ug6CA>e_wELYkD&r|ylnoLw@ns^XsF{ht2%6qtr__n!%yTmJiQPf1Dz}n6#Do3hCakCB~%HOR{_1gn(WBcQz~h0cTB1U{L7V5{K|#YiLbBNC7y zJFK4C_kFUP^On|j&r@g>1_t2oKl*Zw?z_;Ss%-##Mm!?HiEkIO(q`0?=bs9ymj+Eu zzc44X@DsNh$(m_#jX6eTW-Z^~7K8P2a`hmt$r2+(UQQih66CruK=td_o&J% zd1ENV?AV)4kN&15zd6Rt|5}^vA2jjNs(SP5jjouyCry~shGV#8fy>%#m~GUse}Tqc zlD&K7a)j`O%uZmPB=Dn5JJ7XRu|2~i<9uYm7Hpoa#lzfzU~-tQWs6iaL_QNy+{lbNqge_rky@_`sepU52*vf*X zZ9ZPcT4bCwU1#>24f!{5XZUw+c3+bx22#Ja_-@=EHsu7+hbw?f_+6B2fYz#sYJ&W> z`;-rbdtVxzy{;|fTFyme{kF?wbb0SGm3qhySWAvv5&8ksRg)^8FLSB9bU~xy%P~6K zi4;0}5`0%U(Qsg0V+MuF9*Vy!ULP0{eMrk#j;-qnr(>n2Cp>+4mYNm$$qhjQiZ%A* z4Rro$!})7+GLmO|Uc~j~FuW9DUa+8V>y=>Aji$nWPVOoWGEz;w2t$+nX|x`i5oG>1{5Egu&Ft>*YIAfZPxNZ@Bg)D zo?w)^e}&)Q8qq1E8r-E0Ds3`o;g|iljRj!PN86G}H@!1|OXgHm;%mr2L3>Hn0T}xH z&N5S$--+gat0JD(J8-gYN&!j9sySnJtv@@bJL`|BAk-pC+h5F>+y+L3pMYJ-a8{cX z<>Xv>&4GOt4r!adDf*KVtetG@ShvkgRKzS}(Dt(VK`?JhalQCQNFH<$Tkoo@A`d$Z ziab$Ut!bOpKO)SM%VurjCbX6sOc^S|4~U)$Y-V6g<=Lm=ObXt(1&t<(P}+!lOh!rt zXp7@MIOn^QT)cbHOt?IjNtS zFJ77N>@^;}${~d1yRRJ+7(c5W`M{>%<5xS~G&ju%_IiD4^KO^ho$(snM8_S5v7~fe zjnzn4tK@sErG{9+?NMSS=tTX<++!bjQ(b3bI6f9eWq^BgqXsL7;~^t6jeEx$-fhOG z+Wdvzv#XNj35|J3xzES5fMV+vqAVNxOpGTavdZ(T{Yk$5F)fjd7 z)hnr-8a0ixb`v7KJR{}dy12%o1~-8f6L*&0fd=*RDtSf9O}~u#LT=sDH$mI0tWpU% z7pBX<-tV-EY?M#l*bkX|T{XW|-s!e7ht$==K;Y1{I39UJdcIo122~Kcfg2=pr|Xz{ z>g4tr7JItLFvTjq0(?V_P$DPW%;B#Sb|ctvGi&i$Q%Sny6Cn7PaXpvkn zqY0S!Yf*Jv@nMuOMn45=ck59l1QQr=xKIHvx3|})X9F0LmceC;L-WR72ym*wK?SAJ z{p}>Mul%q}tN5 zJ2WhhYjwqktlDx?@+#4PxAN?=*v=P!a4n{R(|tnC1W>V8MJJxz0x7wPC4sld0V(iS zNPYGbr~ALaVK=pADyMS_dluNq1XgR>qE|aO|L{@Y3iquviyZ>DX*3OLivp`}-vv_2 zFtf;Ay@@TZ9`C*7Lchcd1%b`TTn;^SM^+~|#_$E8QK3w0GMa+(2Z;6;Ct^s%MJEC^ zbS(vOYry}9ejBTeoJg8lm5TpDrxueU_~{#pX|2(<=NTISNuGfz+kb=};>IMYj3iTN zYqCVl3)G2$Q@}1qTr_H1nCT}q$BEE~Da01S2iEY`lFFLR;EOi=ccidqvnBo)q>u1+ zU~*s|RCT>Y+9Eaxnzypl&u{LEyAWQd3hBrNv$gMi>t32HkiEF>CIrR<_!kes!Atd| zeWDK3UMk8^zoINgknP8rBwz>vK@Bb$($|Esc44b2P%||9X!N(XbQ9>gVyG1GOf;du z2&16J%BEp|_%c%H6u1GBM~O-nR2Ddi&F3IjMRJ*cC$N@IhNe?!GNjdXgkZSBWfRx*tm}1A`2Ou>faCl)oEE^>( zXa^eb+ho#_OopmS`oZ4bp{P#-)3A4FQ2SuR59mt)YDFHr-x=0sI(mfO9C4K|!JPo{ zsE`c;g_909-+Vy0F7*p#Q(XO?=s^8{gcy=suWJi18^A_`3lF2=FyL=Fp#T5~TS1zh zlfoWMrUZZVR=jMhSi_(}j*00T_e8<}#T4Dk5z9m6CrlO2oiq{-P>>C{&sH0RWFX+> zO`stPn-@kx1kaB4G|Id$rC(JZXO?-ubkEA}w(&#&acPS&qp1wf@K zS`e9!F`2gOycWOa(9=Nglr6*7FAY>SL{OfXrs0C@2;Kl;=Q2G6YQX{@H391uU-|X3 zAx@3|E#^s>L9ctXQ3NrkSdML~B3uz7=okl{TAAF*Ff}fmJjH{FRz`d!d($Sf!L7feNaI($n<$lg;y2?4a-kfT z>hAYAXT5jh`wAS+-)H!^%SO6G_+;ls9bP%`_lHW;=-k!gKU$Y7tG`+6A=|FQ~vM((5aR24olIflZ}2d03LwvN?z z&YjyP3P?Ayk!}1xn!E$ar`9}o_J;XOlwywSL@9*~y_+o0eG7QwF$3U7iwsardkE*6 z7zonB25axIA&lF!Rbz2U`j5_3eCYj;(~PsB{(KaZFiD{%&3ssJ6{vYAAJF0@e zK6(?7T_RX%&DBBKqmb6bCfE5hoFK&%iddu^4ioZwi7@-dL%kSIa*9t_KRRo7RE{Iv z*Y-|tZUR?nIl$X?CWt^0=!8}5h`Yzwq+T+oqI5@xKl5hD5EOrB$-*9A7C3R{89K-MYy~p|?yqT)-3Mz6pbN2De7>gM-}Q3{=20S(VfW*d z#rfuVVE3W)*jcp3*THIWU%r(Sysq>sQ9hR(Kl|UsEOz+xsa@cI(@TOgurk7L5^sI; z9qOeZ=~Uz9neobc98Zbu^6$x0`hNmGv1OvJGB^y{qUP{YZHe+T6OQ~RQzl$dD;(gQ z2bGJaAc%lq7M51I&rMtOs}Wp&W-^)dZ!&L-(X;DkS{=$3H}?)>P6OGx6=yk}b1rPD z4~y_pj)w5+luEEkl#YKGo_6trh*WTrM2VriZRz~|tE-z*6 zjt$@01=?I(U>Vurt%}_`TV^-=;sik936OF(SbUp3(N(X0jFQE+>j`%7D2(}mnzdgK zQIc<#4qoMLH-Cj}E>B(>Z`auX=as8-Zp7|ZRc|_~vGKMl%G9IuAm=f5czykgg){~U z7WQVVwY?c_Kjm%FFD;c>0G^22m%08Wk$O)_-t`g+svfL^&uN#FP+qjf8s7iJY z{}2rW6!QF$wzHEkc0Ojr8_|3Q!o{7BZ9|Qxv-o0{-e8LU^42K#Dv>!?$=5}u4j1Oj zuK-+TVOhxMLuVedCpBe~Z7y^H#Fk5)#K#~=z1{N6al1ErZK+Ox6NA0MrvcHRwefNBK@>Pq#;;bG^ zQJa=Ki&^&>Gn0Sy^Yf<|iVE&}kNMY!5Y zbSUNBp$qXm$wk&-^e#!yvy-t3^Q0DjGcXJrHPph$!#fuaoSs;~Sac4c?dYHJ{%hqd zDKGBHve@h5d24xReUc}?TgR}R3m#2z3$MgR4WSIw*sKTSJMIsz7^EIv9VOZ398OjA zO_6~67XG!V8j}2(L`^qNGok5I9ml4ptY+iLU7dD`Fef);Z_kKv4Tq$eaThnX34rv= zCF|8?M>!@AfdCn4(cPR84z#XoEiQE~{$nA`cTBFb2iN5@3PKe=W%*g>+JQOb<# z{iTNte%)rz{{CsjuFO4b%*pc{yW$mS86S?&%HgM2j!yaQoRbNyTWt7DoiJU#!_4w% zv;3E8>cH$DaiWPS)`+D|OV)-T*xhU#qR?fBNEeNl4^(|?>EGn zSH$Cp{rZcl(!?K}Ziy_^B|(qCmai74li`xo;`Wj$Y!7rHc1^&M_~WXgHcBa=$c>JM z+Y_$BsRRi}mP{X^&MKD#{J7yy{t_V(f6v$j-}2qVAGtgLlWCbs|G#StlUy{*qsR%; z>)TY(0007C0iL{6kN-BJ0vM%&&QRGs&7)7BkRY~T-Y&z_ef-8Xvpx&lCatVxc;M5_QL29Veo zS?Gz*0}C~7Zwj1Hf<*Ko)M${LX5ddN@JPYSH6R!FHxpp_(P8F_xQbltt*)T|&n9^wkY04(j8w*`uQc`h-6 zJxQS0@;lQ%GM7z3giF{)n%-Awved*9kG^-H?^k#;q!*z!{Q5_)2zPKe=9Ka

%F$ zBb=WnaV^J(_*)c_{1UAC*1}^HUNh^h21DJLr8DLtfb!0#?7J?9`wmZn{xq`|VEsXt ztLPbSEO)*6;N`A8$GYh(%B!)4?d|g*hypsD{0{UqNwa#Xytl@b;)A9>=R>w8%f_ja z9C!d12%Bl#QlJAiY!y;`3C{0;Q!)H^{qYP`17=#a5;myh>S3s4i<>Fn)|iY|IC*qz zuSzvIXmxg7Qfnv>LacxY9HoS(!jqciIF_);*<~{F;-rI7$X@t=RGqw=W!?nQr=TbI zCx{5-y_PR++*HN>Du`V)rM3o&w7W}l27rY7wWg+74~cJp*p_(%{Z&*RovFZV=tM2& zxAY`VRHW>o4xAPT&Wk)fHjN}6bF?j9(?`3Iqc2#MG{+Fb;XGSi=z#nphh_eV}7(o&Z|vcc&_YN zL)inhhce623aPVUYfS1~nYUVR4Q=PS=97fw6^;e>vHy1df7Cm{&%*xFTqlT2->`;J zpzc6oof)w!2n8hn3T^GZQ>%#V#g*VY0$Z{*273z%yVaNi{EDCNaxTBL{q_xW*oOF~)fY6X z$Cp>rp1N6GV>Zjs5^Y}qK8#ouNH~>xiE}m?+~xy;slzf>TaOHA4e&ahW6tBC?xdP{ zHy=h>MaKnBVJ_V4P$52ef5B&5tC{t%QEz&0CgX{pwvq2Z4!!2b5Yw(H0`i0};0D0= z*U5w%d@l~#ibhp)lx zV_MCriq}AcGf-N(m!4dDhkXl9F{IdOxw>n~sh~>z9Wih=4cZG6^5X_PN0|lpQTi1a zIAhs-gKR$WtMaGI(8&o2=^NDIB)E^KVZns_foSn64=7{+Rtli-p1_!j-Ezkv)6X1F zd#@j(c=1F`{><$O>mbSYBge)l*k3!TakpqAk8*5m%+Hd9(Vo%_e&_w01UN7rU zR6p^ts79!8&vd8%j0Id!NJpBtT($$juMvoojoWb~v>Zb-&nuR0Wz>8#MOT)u~TOv)zFVTv6W9{Hj=T~qj}m~%2B61|(#5;XM`|4B5D)7scq&r3&p zaL*iA9^&ARDD%AfIuN25mGsFG&4BOG^4#g97wg)?oItDVObV%L3d`^WJBa&g?LkxC z8!n%+?H^>+-5&Ns*?l2v#;YNx>x7zaqjRmYv6$Jl%g3bw0wND!;;vB(@?;F6o2=-` z6ix0O|A5*hV}#<{xWLetMyD%$`_3+Bok++ixh}#P0QIae%Xge*+>?zH^bQ5!q{(~)Lzhn(t)IA#Mgx{6363-~B$G#G z7UCk=)Y5Z*E6PK5cfmL*kWs|5-%?wiPIotZ_`X*o18XkH5>JL={ez&1-^x!O(>;9nb=mf=*g$7K?7OtXs5 zAiZT1=E-WR8owtgAduSl;&8@dt=9#FQfQ!ZSkb1#=#GWWJL0X;PYI)ikzL;ZBwG8Y z_Ypo_BjmbGE8v;G`4_4*h<||d_95NaEppF5L7?Yu5+t)muunn&``pNSrJ#3n7e87j zB9SJi4(yf(TY{9wfO@!I9pO>w$R)^aDG31-M`M*2C9 zJQoC*PjNnKkY`deUWW6;*yBj1bfe*HfQj}z*v0)l`hPYg7oiLt8FLMjee|?@O(cKs zG2fYULbJTz#aN_z^lZ67Qs9YU8P73_T^^ZXjz z2h0l0qp~be32JiHZ);7CpIH!a!(wNZDVu&BqS%=yuqS#QomQ8P=lc=OD_B6DJO*3> zg`Z#22%O2-r?b^7Cx=o*u8-&E*w!gN%F2F+;Ks1s8;L8+nC z$O1G->lwbaO2w{tSP2m1=K#_C#k$cfsW6}A>*NjH!8h<*ALRX-LB*z*pC#k4PVX>p z;L^&G-GVpR_AN(@{V$~w(*HzxbZY|ghFm46vA_`|lk8MRlI55Es*jWP$6?0Yu{4$GQUZ8#Zy!`Xrcr6)~=!Wpn15x zo`k9E27Oo`NRTEIpl8sP&`^o7X8xrxi;)Ob;3~AacoC~)1C$l%=yyump8JZSeu9YJ zX0jH1lk97L?($ZuUC1E81x3p-g+f%*7xsH)i`&l?!>5~irySyFcu9CN`Zws0XT ziGY6p$N?*Bgt3&ufDjK2&N-z5tdJmRf`3UMAFOf^Fj^BaE40{w;ySA=;WMZSfdrJg zkT%0&JEx(Jg4?hKHC-rfJR|_nf0mF79e#iYRa2CAJTZ=a=Bo^l)}%5(GC&`_$t3Z4 zfKxsO0Wzy;{xy3=#6(44zzC0zf56D?LsB=FckTKrB6pSMu%_Ji+pn{bwAf`agQvGM zDzIODS66gvRRn}J{rPzML|&dX!7jUR#sLNnQHUVJQ0-i`1+5!FEoSp6peB_n2+n5t znMjz#0xW_qqJV+a0L%B&m#pNtGRF+ZZ+9{U^nH?47L_n@kCxQ7upe8Z6Fc9B>cE#< z$buqs{*P|c7Me3n^y<}MWqo~Jdhg@c=(NHMF)^7W0arNRcUOKs&aT)NJ%2xr6C!o* zGhGMWdN$*wMC|5pYVc#yzD2pT+xA^aTf*Aij9P}aw_(%oK&u?^18LeJOg8@p`2Xkr zOI|%`p-?pI zw2@deobE2?Nxj=3r7!RlJCeSBZ~LWkF*C@N9@&%fh+w*3#r#j^h*N6aVXCE?0kWc^ z7bO*o2dAitYU6(7#g!lEgR5ueP@ zAs349u1{U~*;MrITUmec@A-ayUwvLlGRsBSZ|FWsWTbT4tu>m>4^Z2t&70(-M9)l% z+B*$f7m5t$27nr!RSB&-k~37W>jdCu`k2%8N$F_;h<-wF1uK#rqCOtPTt6uXm!4$u~*V93O`+aETH#>|rUY z%$qdm_JY=)O+=P*AfW?5fq1Ca+v84`Q4uQ!Fi!k=?w&%&a0*lUP1ZHDxNbfygpk9_ zmX6zLO;ylo@v)V*qfcjXuj2fB&&G@TwC4lEhfj43aOKg67FqdIa--d$W~Ez)5onAp z0hacY&J6fby7?8DV;u33s<%gOhJ$+6tXoo1t#k(N&(*>8UH@-29-{iL@~VCvB%e|8 z?7v6D>Hg)zJ>T&1bnGzrn%_+L7%>qyeg_eL^_zuXR z1MGf7Q`yxVeA}Rr{m}&4b#Dw?8H1NirL=-99|XieE3b&S90;&nlT*$uA0hDRv!IS z0H|M**>c~Lgp8l@IQh|Tt|y9*!dY~tWQ^kOJ@s7G`=7rA;jW5Mp`-c)eNatH`nZ`+ z4yQ_eQ4ksmEVVk((}lO2X)^~Q3Y7(#6sJUy5F|hd4c!?=2~h&Th_KzdmG(}|sl_S} zZt9KO8rfUx?DDpFzq@WnzJao(n7RswLTCBO8OD*kiDMe?bw4S*#Fxsf;=L5xfg5aJ zkX3tP(H<@j#5{%GK^?8}GimGXQHdke8$yX08x;M)*~AFQ z1ThbaIujt^ieRAtAdCWl061cNA6avTr(tsz73OCx}QeIXDSxsMg z!LSPW)-Ms`P}zXUzT1{dKKW%zxWQhTTRUa(qD{huG=oC!fLFm4d~e}Eyd!xK5r1?# zytB9nCk5_ark0qT@y*e7kla<0V75~{$k_leMIoO3SS0RxW&7R4qZOQe>Mr)n$e^0}ir zwtxhOs3#71=_zY7mA?aVm@W9kKZ8YyGOJ@kS)NaI-!SFOG4N-2dy@%)OMvpqs)*{2 zBVYp}$VD5AXo4)sVkICqd7L;ucdU#+A`yNVd=O6>tUb^EGgP4sX<3;n z*&Jq37Uro$=vr=tsypbJwvh(6Ch^U^My8otpG<^-MpeK&l(5GC0e+TRY~ z#iaK$Md|L60St^l0v!`O4V?fYk8@L#yP!}afkIQw=(;rULGLAdjGXSi37*Rk>|Neg zP!_tEd2>a3p0B)-1yLi_nv0f^;El&thp@}VvL9zC%d zXTPGGU<@IsBQ{QKD7cs*wDdVKZ|ff+&7aGZZL2hNEcoX?pTm~k1H2kuHa+j%Q}Pc4 zV&LLgVJS13|DEhVd#_;J;|Eg&Fx;7sv2_t^|fzoL2EYfDXb4V!!qRA-_#bN-X2MM=Ws68?EJVJ|PN} z^|6YNB8b33CFM7|&FCyBuz(8SJk8tRQ>{xYi_q~nJ=U%vFyfatq|x&fiI!_3mjIX$ z+jD$`(ViJwXiDZUl+F&6-n?%HhotZNT_ROlW=<_f zQQZ$QTNrhrUTUE|)M18OH0lGZY+U}31qb1~mMa<`FBF2mw81fR+MzZ9H%OSG!>m8x zcb70M$Pp;X`KZwZA}C#`ht6dP+Evpc!h)7>LaEOF%Bo-ofF%6O)_fMjJ%JZ4r?iZ zPbv<9Z*2-LmB1nDau=8fvXc<)|7V@AWd-t1*CHJLI@xKgSK5bGi?3-{HIf=|2vD$OR{&U8AfySsC7AsUPO|Ns60OKf4Klqew+9ZCl^ zf>xBUsa!8C(PLOlP-HdbSFkcn#i%>3NRejkvB#FWPMPNz>8m~Kl~wfesrIEYeYwK! zvgLth8~K%k*{ld_k)g*2)}ODx^#^A3iqo>dvhP0Lvxj4)qgnhFg8XXd!7FO&CO zBI4bUX8cPEP?|bg=+#yppb+XLl7!wpsjSx+(kX{UUS(vC*o@rv+&2wivDW$3u)~ET zTzEDB*>R0~x5muHR(A$61<9VIoM`U2!ZpJM zfo4JglZIY%^3(tc&~YUoM^9Hh<09blpKhKx&WS_qFbENHjHUxADKZG?IVtp=Y#68n zPrH!-3qA-~*PSd+TNEMIfK-U-Ou`rGE{4|^CbYi!4jt-8jtV(_x6EJW2LH4Y9uiU1|waS zlBLbKOh zQp-87R#3E89bCB8(gWbw0Lir=2B&Dnto*nx4AupUA+#P3yKTAYZcmsD~k2s(VhWD45}s zgbgq1+i4cfUuBea1dzE z9ckf<5o8jC2q?)kxlkWn<^l0-Z?7_V?TT(8`ubu2j?>rj5+rdnuNaflYxd3izdoyz z?cosaq3q-)6%)9w`MWkgYF9pELc*mZU;`6vy*;wfjX+3baU23FHF^02)CrUJP)m0p zG*Ykl)ThL^gc*7Ohy|34%wao`P>sn<-ZTwP1lKX8V4fuxYt>_7SaYQsBDAKl@mnH0 z;%uxkojnRvPkXbQwS#-1zLt`vkww!d05)goN@Ge0#E2pQK<4GJpaeVeRf55|erIms zVCvPO&1YnSbya9NU}GM;zMOyu@1fcTU-=M8ZmW5lM$;<(zsbJ|q)ed|U&o6mbQTlA z!vX)XeT-NFdEGBQfW26T#aq4BlNnPzT<_JQ;wfQ`M!l8smjYt2idwF8Rco(9M%ock z^DF+MeWI@&MwagFrW`*c*P}EYS)n?&W&v#a4Ga&w59A>Vl--_+!j&+fY$OR33JRyE z@9L;1MXUfFG)@7?G2IeHjP#icIdpBLNe9`hV#~tBZTj-*va2vs6mYFdCn*W^l?a}j zGi4R{QI)>ENbMXp={CU9bE*{yT{sMzOAfWw5 z0F5(b=!3k-Mz^z@k5?3Cmfw~Whb<4t%9~71XDmQxjeY(@CYdeOS%K$wX0C7Iys4NDD zkA2LjuV)w6NxA<4!dAGQc+{0TUh%B&>AhNy-Z1=Lr`!45Y3|jeZcek0S3t};TDRM) z*_7fsV52Up;pybc%qE6|cDV*Fk1Fe?d7~H%vUajwOS2g^Ql%~cdm&86OWCB<&?{{b z1G8Kr1$>G`g2H$R}o3RWSMK;)IhxZsj8?Nhd-zbU1?bf-=s z3)rKNy50hVAqsANbj(Ag=;7;ihL`m5CE}hdY-2wXR8*y3)=3I~;d@&*RXK9Q=16>r z8N+(PgNi%W9iug8*YhXsHvZm=yXJ7(0m-HNmTI=XU)Hc-Wn$hHxa~1|XV7T6BpmaU z&;5&ZNP15Hgg2Gt(i|1^-vr{dVr0dh0*CS^v*<(k4wWurO=Sl;Lk3smFRQ;CcdgkLtn0EpL_p^}lW@?9j zPj3DekPGPDz$)A=lZYrmHfIA>(gi$KHrLn&W($}CxgmWQfUH8Po|IVQY7Qb4fS*Ye z5ka+-YdTJ1Eot9h%Uk2?T0>fnE_;uECMSC8{cnSxxskstj`dv#z7Xn?f1k~!#1G8n6xQ}2>;7^o)VS|AwaMPhhcn~ zn!O5^@!b@l+O79mHuTFTsOKGfl{{4SlHqqQ5ix* zK$1WXUC$754Fjoqi-RyK zff^qz1E;RGJQ(qU_^^JUtvoiAln+~S6BL(JmqG`&rYh3hXx5tsuUeIS`+(l7s-ceU zv$SJt@+s17Mdq)`GKQ_S{0x>iWPs-_GXj-fTymE)r4zd6GsrU5h1b}{02x7f{(Rmv z;EXxXXLK|$8y5)Sk9X*zg2u%&fy89Q2@sM;C%9l5gGQQx0q3h04dJGk<-}*Fr-fA) z3919wIK^14NC6z{N6ZLES5P2tUUc(lGC}plnd^-II3oVLYJ6-CPq_MFgVo>@`*r6z zg#da$g}-X1c>Qb7Xg7Z?!XUuLlm9d{EWo)6eGC#>=pGG{c4t3Jac@~2*3v5GYcVMy zfs7s@3Y7((jFMoY1V!n5w?_M>bfZ|S&JHtIqfvsrsD?`bInX}kuzyn^O6BwT4Yl=& zACn&;HeRavRelpQ$+b~cRT`7yW|{d#4pK6|Zx9bY1Qef0-r&)Gmzf4~zst?5aDbR! zMdR9}je~#wFCl)|vC&%m8$eeJ``x~Q3=UZR-EDMzj(>7q^KL<>3GzEDQE2fa^A(vE z&1A(D+js!ck?d&VD;mK$1wx7tAmX8zqN7ag+ZY%TYmkuDJ13}7@psc7tALX=5v|SJ z58T`?<`xwZmE7WuT!PiO3Hu`y;7CJ=fQK|F9D!w;TH?V*qD5v7`jVM|QRJZMs@I%$ z8(>H2=EX%g?k=D}E2}tNJyAY+gDKPjLlPn9iDu5722ddF0lFdg@!(YMUNJ-O#wQjU zhc`&{obWKJ8Y?$uXs)JQ`KVOGt4*3{3G&jP- zhtk~wfEcY<`^;!bfKXHw2GxzOvh7t#rqPMq0e~wGQos?~-Y%Bw1kK9g*uW-qZQ+`2 z8m}S{!@q@+&DlCr6?0c=*Q>c$2I8}dhJ0%VclPC2dPF@Zjq8HlBT8u%;+%GOPJE&- zGIq+wHxW=Iur;$8TND6YmeTG3%F+*8M)cx=@mjJqqerJf|8`yLG_}s}ZP2(MYyo>u zQlbgzJ7nvyhI3srJWo{*@~X$^CAB5fxpjC+nTx^%@b-_p!oJ@M8RoIpLlZH%)4);%Ev~ zvBe=8l?AE_#X_)C|(0U7BOyzR=)o?B_D+y7M zWNQg(7qlW1dk045GYf8Z3fa{FGO{@MqzXM-7>w#Lfn11NdysMHgaa26Fko4sS3!7u zH|(DqM_)6EjYWG^dRA2trlE_?de#*5_PPx3H@PP=Le9{%a|%Mt7<$6547r0IO~iKN ziN_}(*Yqh~mc};ADGJ@{jjN{2;|x&}!g_!Y1+E%YzZyO({x>x;npDAg zH$eq!ThK2Vf@QHk6iwIck-m!&3G{PYpVZ7@yErD%r_&Q(W(Q~@A4+2m^Ye3j()}id zi?aFRfn4YeC%cLO=(rCd8kFs-2+c=|DBV+%)LlqOxvRM@SS~3}FXT{k0=H$~e$n*3 z6RGrvZ)`0VOn|Vf&mpnPK?0E1%9&qzDDcayj>!FfCwe;^>vCIYVN~Bttz9tyfiNC( zi5rqL6BNTRu)xsGTt%`1vo%j7`OMNQ5|T?~%WDx3+laNo;Ny=&jNbPir>ZaAE3I@4 zmI58+=DE{^ktnC|v_?k8ywa!vx_Bv|*s5~koVu8}djX!BI!K1n2o*-bVnO%rF*Rjk zP4P9#*uRLU4y|CJeUvIojaIJnjDj8Qh4GS!43{wt4~x&(VJ31y2#|y!j$@LG2muRT zmu7%?A^>&p`r>SL2*UUZQ=7mLX~_AykE3k%T>)YyUKplb$UKO%$gZ=^f$rY@O@h*% zVyB7j=Q@Q)_Z7hc`G5=nX*a?3$o$#q_=r&7J<9b>=4B+qMQ2Mq(BbfdwjA}@?PK1i zmJi4YnnBr?($;7I^)+q@oeAFYPOD4c!ufwDmgWvKMmSkl6W00?)x019N;1bG3XlK) z|MdY$X`?X^iWD&rP?C$cF<2F)UTIesaz?jt$Y9uNMGqh!ZIwj9@uA0xAeodRPlB z8VCV>t<81IX+AAeEXZ5j%{L%+bqGLTixoaow7HLk-Tl{bpwpt)z=@IIDq|hPC4!%F zJ$)qxidZc~bqa>=DIU)lxOIr-sq#EgI)}i)Qq5w=9i`bju)r7OcPSa3-!S zykZSoYg>i>R8&(j`~Uz000ExB)Q|sAgAdO08g>o04)X~GwrKTZgl1#0sso)AK>RT5 z)~pin57wK(>ecg{DrPy)ljs;id1V-+e1(u!EXgK>IxbqXS& zQFdWnQwC_0l(g^)#oY!J+Lg~;t%n>DvA zlex6#0U!*n0sbYG(DG=|EaLad!;vbOG&y@h;y|Rb%>j~uE!Hwxw@n!kI5C5luRV_- zR9`N#5zxx(Q5l0{gFyc%vc93k$AR#g@@(ActuB~dJgG_R0KgUIMW+knv@}+>%$}W< z9mA+YscY1mJ~liO5q3b$W+x3a_j9`|b`Pydbx-(ir7uV^B=#1`Ti;L3{Zdt2il~XV zA>JRvW|SaoiM+^UV+Eq-15XNN{*`JXbrI;O3I&5y1`ouHvG4f{BEUj3$RLtDz_~z* zyV2Q0o|)AHMg^N}w}HrT%<^o`il8HRCYOpE|iEy0CF>Z{jRAUxw z9?G*tz96<2M8~g04x?zH#fGyGUZ9TQ^I@r((nn2?EH}8@_dG3FuHiy*LWT8as6kYy z=T)VwVAel7(Ez-E;Hx?rV{q#@393wHQjGR z+|A4C^_4di=TQlGtni@mf3I5}T%pS}CB}4r4i|2_300sTs#i z%&vvcWrTJ z1*fvUr5&m9IuVhz0gZ; zARW)~1tWYYg=$3yfzo5%7|F79R5+fSldOEznDi_x<&a*eKPvz{O48;fyT^3@K`EU< zGPlZa^n}+_oI=IDFCO8|f+I@xy8}!jV^Ee|6UZ&D=Ku*Oxp*~kOGGL;L<5QQjE&pF zv{5f5L~jJy)x!8~p&S@^svCqQu*otSk#PJ`6Psc5Hdi-e^B6HikXZiAdH#3P1%)PyF?A8h6r?T6_N{+oBo1 z6ZZyAdC|2arit}Fv?9K=>*m)SytZth7Sk58>yIt(;XjizMJ#Or;jSsM{L>t*_gb!cr*pDbuwG2Whbc1@(s~W~E4vp$d&1k5! zu`mP2d44Qe2$bQj;V6}Am4<5IL0>@8upA<@BtPyX{Lw+3)tO)z=dw*$>2gz)9b_IJ zL(dKy0bf%|t*OJX$`Q_K7buAKUAIG^Pjb&p*Xk_s4~gV5%FUnz+>89S|Dnt9+!{xJ zcjwD29pQ&e%+o~B@j*=wrE;+-63Lad!?J)lIik%)WtW~3W~7tmxhM9*li1dM*-D?# zD7;Em=2`sY@SjNZM{tKt7NR^)py^X7gF(Ljik+P01TN*Yl{8rYbOeKm0@wlCeJLC{ zj1jX!Z*UAa;tzl$I$qy8XYqb;YFZrM$Fouz5S(bsMY^HP)vm`_C(Z=R{_V({gfn`2 z+Wd(I{x0NeY|2UmGV3wEC8v%0W+LvNMuJ-)b>&mWDK20XzgGX>&!6)hD%{i-pV7kn zZ_4%7Iie5)-w-W0qbfwfuPZ(ME z9CZ}1nWhN!W~*plVj$@z5S`H?q0YSZ+HF|{NDVNkc2pSYjz+ZX29AJmGLaF<7Z41& z2~h!?98_AQ>rt1II$-{;7O@$L8+Ci}_Z^(*qwRk13r z*6~#2?FyIZb)`vqU*%CJ=aRy!fikT=2IBj|7nbdVS{*e(YgK>FQvXu@Mez@f7v?lS z1E-&CoT5R1>fehx=Lu~9TB2^!v~L4l7Y7hs-1X^cm@XuFk_aTVogw0t54@!~*kaoa zBS8kr*@0;`w>I^iMHTiVFF2;^!$|CpL4B(lFS*twR?(VTSj*k}47UbUH{CVz8FIo;!e_b6lnVX~}IVqcbN03w>rm48AEL&vXKS_2Z zp7-|T z6av;?NW7J`GR>pxaF()PZHkb=?pP^f@O}<;Iw>v_Tq$#k4&ef^j;{ zgLRAE=4Yb7_-%n%W^s`ln0Rig$0yl)2+?S1UCqEEH=u8uI!`ifBa>qQqtbOTi6w3J z8^ACKC2xoXx6p|hTy2C}UhHOpPb3egj9n>r+4+za>eDt_9W7}hQpqylv^#{w=hIX=m9dof0)udXP+Wg}qWJCSzc1UXS^k7L0jh@a&eg1f|j zRw#hypnAs`+2KQO#dxm0%jXIaORcO!7`stvE+qkFz$?r6FJ_Xyy#w~d3|7y}x}G*W zIiX!e)+&3r1u!kK?a#`Fy4(pEKhUcHjEZwf zNrE?@n37Om*~?mFeK@zA(Kje#b!d&?8R4a4tiV zJQl*gr|oJPSqjVYr~nb#JIZ3*5f!cBV(tP-=|uaIt3P^d6#L~&SX7nlETOnRZwTbuSht&97X(bkrZ4QLjPj4J69LG$wKS8v8T zhO}HjYY2rmK_SmSZjU$je0-##2sV?7i!*^0E%vmj;2fBh?P@A_fhd8CY~!3twEGJv z@XJ|1X{eOBNsrE~F(cDA;5r>QeNl^v!-nR**B*@B@l7J$HI}vyum4p@-jxtwH^IOI z5EZ4AA0lmBu72XZ?Aj%4`*lKZyEkm^)+?XOisw@_Q~*Aaq00!H(3Up&J3ZF-NIC7S zeF}TvFa3Os<&0LF;*$s}EWGQIAdI4$9D1UP%nWYjKr=Al0rRB5k!rJVaS-40kFk(@ z>k9^^c5jLezt?FQ7kV#c$9tt-V6-Gsx`L0vC+!Z^#2>;sUc-Uptn*_1(TPC>yF zawqq{=s%t+Fjh*v;dn$*ZUAt3yZx&mw>r=;*4EJ8)i1Q;abb$ejbvX zTsqIkH$c$#8sCSB=7S6p6E^$*E+&V1LsiW9O_>s@8{KO^c*d-ex~h;A#sh#zd}n+L zY}^8|X0>qh>)1tEdo8QN*&>xcz+c9KgE09WhtjPgw{=6@!7+HR{-lLzx{*#oub%qT zpXQ~k>A2!VCjUH7MgAu}mraK*Tjp2}ayt~PvjgMr4UR!^LgBT_cN!GHSVw5>CgKFA zv_8T&8BIjH^VKcqj3oi#;EDuiDRF21)o=(nvm6i37+*BiyEl^KlV-4iwT)-7;H~}~ zj%(Ru?|rSV55Vw4L+X}*m_?qw!a2v#V9$i{^U+<~O1qe%39^h>g!sqdq~wg6XD5(I zYd=h9bhZnN8mw7Az`QNx4>ui4d_ufRreBMgF2rs64snoH5Q zrQ`ME7cx>J?K!n;^o4OeKn6LeeZeD+6t9w68kCa0oG5^?5KVeuk}^r~$9^V;KN7w` zbmg!Zn7{l5b}KB>dn?>_B&)@()W-v@9%pU;E>}{H6!7w^N0gviT*w6?kbtXy&vs8G z;{-}QN6Lr~ z^gVrgH^$aQ)nO=uL(&Wf1Cxg3fwJu@ zp44SV^xQ`b)Q(=N8*2={4G-i4-Cz z7?j{lDw@6Ow0phKYIT2`*lUUq2$BNK2y`f;4W7vGQsh5M>$(ojC z<{|JxUY>JleFwOEx5P zhr2|Cf(7_4LA*8+^H7cdMej_JK{~Oafyj1{(29l+S8>5=ne3E&cFE@+1R*7c5)V^K zI3Z2O5^ZCan=1j*pj1g{E%SleqcFq-;U&Og;>x-_0b2_6?5MhxAxfSyH)ODMC_*Th z;u~ja=oH$Nc+tJ;%8p6h>;{Z_(O3fg^l=QxZhmE?(D`k_Y~Zz^dOY=UK$}$~+xDPQ zxRsqCe8MdmCFP}n$4Uwn=%3iO7ei@3do<{_x3ihF1;7*D;3TzZ#WVEg-0r{Aew49MNTQ`oE{~QQ7!tL` z$08NV^n8}4vZP`Xq3?!W_-^=uMbCQ*K_iwBuIg;$?1-c82aCyAk)O@g+o{wNz3Fab zj+*%EAbqSvx#_S1?*3_8>COf23M3k9*n~Tzm*{TD2QHP`JHnBM(6xpiozJ(@%PQl? z+Ay=*NOu=M>{JM8hHdQ6(TeLx-SOW&Xss)HH3!1ngb})i@tTskj4*EmvD=^ z@~w!`ul1@l+&7UcR@1j?96jq2)??fZif)xzVEBvyI#i~!pPi!~+T)zpQ2YQ*}%R7q-dpzN>uxytM zE6rwcjGO}fZKB6cN%k|XX*jIvU2S}DfzB-LMGBE0GE}_OX;2fO;L+uY6AlkF@0`zu zK&O#YS>R9f0v;L8JMx|;g?V5H6FFs!)-46Z_2lz1Wf_vG8bfBF&3!9N(2K0ZKl9gQ9*}Yr<01G}rn(mXr9!#bLBmeze)Bq()Bi7$R zbXlK0sY>#G>>P*%w!CHoV6(KaZ3yH(r59(F+CIgH(rIdh!~#dy74wZTln)60s37Defy2}!(@}*}TXjglvG-|o*QSh?UB{hNv-=2p zhRDB&e)aXrtEKsSnboxU8w=N6KNq^7tA4T2HLkJs`(O?*W)G_Iq;JEXo-opz=ssa} ztx#;uTp!L8;P0J_ht&T}WU!o7e0ThR$UU|+XC)z5N-y%c{j3Zxb`efzzBfyYUbKr? zm`KF%kTzO~?kry>RLwd-1WOhe)EbiFY1KcP8Sr;JyPeft&xB$=osw z1x3)h5T&8Is%_Y5vVT2W=(KKF+V^aU2lYWvenFEHXS< z%3Bz5L=F$A4rqpxcfbF^_QG_BsTr?RyAvuBoVH?_PHN~@8OzHWLcI=~0ZaN1T7eiv zSQF5&Jx%WCvE(S|Odd-+c@w58#+X3k!7z>T!T`;g#RVp0JO?-GcbB<%$r5@v(h3$D zOUBR3iX)QnyGREMBKO0f_Ag-I+H`l(WoG1{FMa?Si=!+$S&9Z0K3<=23mX5NmrMc( zP+_2oM5JUP^MGVJd|IFwGDz?5SEOjtJc_V9_ zDvcij5;pUEfW=)w1X>c+2B$2Njrg*^@Wd^;&-uG$$wdX~A#EiFuoNdPFDOgz_Iri! zP_=KfcKB)%h^xr~lK_MNqO>Uh0J==nh=)pis8W&M{i?GF1Wc5j_Niyu(i&|~2`ReK zumRIz5uAGZ-Jt18A`Flzx&oyi^~V@$=OxL6WX{r}e%ck*JH@VtpNK+!SmN;`pf4}I z*9~`)$^;7NTP7gB*2S_$E^h#_5uHyOH<^ZuA{)1cvERVHu&=$(FV1kc}o7tmSM_LM-n=W<4`Zo%K6DUWWNp9jC^Kxj>#U3<@dLEhJ5S2DHj zUhKdwYp_qO-N!FTlji#o)+60^QU2Ty6jLw@{nrfKw_0o*%|;cBDtX~C;(6^8^L4&t zTvCe_9zR*x^OnuX90)FJ4=+Nt>zKEvH^en!z$Vk7$jx3@wOC6tGI2o^(T)8CZ_`5z ziq;{XMVb}*tY9+rCqqaoQp#ea7$ingTRB(PV!)}|`khKVyt?&8qs*vn*+ri&6AmL_=af zj5GAoBucX@<0OE<1IZ`e{THL!oe-BPVRuY!M?eKMNU$6 zKs4djJM;9kvcBelX+?^KT<$S>rA1dvlcRTHAB)3hrD1J3sC*HPj4F>^pV%j188qZ| z2I?iRD5qr0lxVk3wmC^zMlX$Z4KkAM5Gr+VBxkv2lL<(cXYp_zUGc3bQ%T+a! z)JZ{WH^(;zVK4Q#e(*NZzWwZFX{~!K9+7akVMN1sQhlqZq#nwLS)e%rWn|c-SW7S+B z)kR?mH?p^QuEqcXezs=-t>t*`FuPOIby@g-e>{bSEYMzf=ME51pNn+ZSgBja;DAv) zWhhy~EF8hZm(k|gQC=^1D-hR{##Oo_xlHBEkQ!Tx$j#{_q&woeiY(jgS}U*v1v=YM z=A}_$>8bZ3`q_VtmJz_W`~*X^r7u&KZuWPLG+(qeU==;1tKLHm2V`zN2~_@O=s=c} zVltsyd+Ed400W_%;$W_7QC1_L8xu{tCF8BY72=SruhI$furA=;=I&LjqJXd-dGT+Q z-(P7Ss-`uYKhd;z)E z!akhl1-k?f!;*z9GTh%Rf7=lTHkHJD%GtbmXw@l^Ptg ziH|tkStY5SsY{>0sUTnBoS`Pep1JH5K3ecN=O28y*tHlSPC-($Q?jH*|ER)&z(7S2 z?J*(Bm0n2&>m@l(XhtusOEX|+BuE8k#+s}ZEV0F|eo3jnqKd~4;M31pfbp}zm7yol z5>d#4jGs;Cl9v`VAam3p0eRxF){6rkdp-pL=#`BA7#ZuTGhSh4RMQE%=BDZG_5KMs z+HqM#SbKT0ltS=mvk&CL^$!v&-}XX4|h1nBIdD(O1w+bHB; z3>9^ZJAl^vSA@8y;0GNv>kKO>&VNw?6XMuk(2#UtYe0kq^7H%5+87%v`XQ@BQTJpd zKmzQ6;MUjNJ{(bt!B2o@&(07Fo>+@z8%WM3)OdsAs_}ZiZNjm2^HG~S!X(~Z+f1Ve zvm>*a)YGkqJnN6d&1dwJ5Zj~(e%nu0@H5Qt>*-Xw#~Us=!EPTnCc218aRY+~4qU;s zhwe@ASFiuBJKx6$j&5L+k&&Ut;CYnLxM)lR4ip`d# zSq>}J;P*-563gixnj0ZoraC2YaFMx)E-UibyeNy3gN>?9=RhsZ-gA6 z9s!>URFD5_XwD)jQr@*A&<~sNs8bsg^&aoeH7Gedm<|RmQI(OD4_Eek2uZp)u&Q9s z_uI+W!6;elI2n~HXJqxH%*aQ%ehpO5e;n(f_37Vn$F~&&GY~;K#CZm$R*lN9$T~MZ z1=^7s50GmMws2~{+%-{!6d;!K8Z;0uKvBjvuy!4uz$oi(Ty>x3+*peyYOzu!QJEQN zr5oV#57%*bNF;sl*5tO+uGNvT-GiRlNq2U%z*Mga-K4R2D?F~ zKMNJT4|3%U-wt1T!^>5bi&$?B%kS`s4^EJA6ac22pBl}IoWWx(@|~NKo#VJ*BG})AbHAS>m*(&<9>Wn51>)hK6un?FW1HLZJgY(lyW$evHxFKdWOl8D#>{qP! zQZ)&L(_z9IIO3U2SA0c^hG@-og;XsBpQRru+AiQ0%=LWY1BCKa zUO@A9sJ+rDAGs@VwBa%b{YYbMe7w<3Zs#T*9$brj0Ew;dX-`=Nr_-+!_YX7-D>|N@ z^JE6Q(1yU?#ahP(?xO#(q3q8w`Yhu!5lS%B{pKnuqSHkAEVG z&mYU>1*umHuIThfh(Et^@w?A9QWX8~Qr&YV(ucyzyWh;$B=Ie!4xD7Wk1h1OAwlW% zxFzR+3qWP%9O-dA@QIRDQoI91jEqJiUJ5lGNp@HmvPm^wyxr#iO7{f!Vp|PohI+IL z0H6Ypo4m>bO&cz*YB#qt+KZmW*|{TwCpbt5C1v$%vm$dW9rpEV_u)&mK^Cg{E{9v* zT!1e$EGeQppVTb@72zg?)%5=26YwR-or!#SLiB9x4<#ZRQ*eHmtM!Cl%cxD}fLXBE zi?%vY_2E2r)%K#mV*(13vBOw)R^5bT7k!Bb^EtgnhyCq&WlAY{gv}VpKMW&`RWs3d zDO>%MU0_pCEq;Ii00pN3pA6KG|4^G7YebuS8-hPnjN|)<^5h+e8J3`ZJDQ(z%ut=Y z)|?A;fQg<8wIz@QU&wa7@@O82GHDE3b}engdO;O+*2bFTgdC%Y_&LX%d{>b&ja^iA zwSUVkz5d&(tqos_p37Wpebc{{ck?KjePS4-g-;pMG$lp&sx8XOw0%aaPe8N6zv|4^ z%;b8mnFZ3^C<-VZuQlnrwF|<4zR;MnN{hI+60FTCf;XieTkiCOd146bBHV<4YdB zk^q>Bi#P97WHKN>JBzbQ0)cOAzQNP5Dsw~gt|vzfj!r`_*N!(ydD)bizw#C~8ZrZi#y=fZ|_TlmEwfFhz6-DW|y|(!Z=Q(0{;?lA7_h{QDVI zOFuUiJY@)aC+o3lueW*I^^39YhAh=MIfMu%o?HGE94Gg zkmdcIp5=3s<{V8zfLHP@=w)Hz7UOv2EK%(qJZO#)|KdCGm|5Y|j$0%fcWk?E-?H`G zykLD~Z>RN;BkTR2B)6r(1-EaRqvV&bHSm-W#ni&cxIe#FR8;fm8-;U&2&J9?iS+O; zC)xyz(Ho+?vmjzXhECp#r1pc7J@*C+>G7KBk9NRaWKwsN`SSmKwrLQeE)0|yddQ}c z^F9#%i&`0{W|}E-;IqGnxN?JagnB1_h+>A!VVqN=DG+*m(50XVQsB~d0IzXA25X;G zLOc5ZcvEHOSPoiVKJ6qz2dNly$92-)fey5qhPOAFzWeDX%pIVNlf47HsR+g*0#h*s zNmZY*Es-q7!Slt?iSSdfbkdAPq8yoCBAvvxZa2|`sx30a;RY?!e6k!$qywJo6PrPY`@0DrlK+Lazy%ywf5%5Y1R+65$lP6u1x=&MP%20D%QHWTKH^GO#gd93>faotOF??v_63{ zfwGVnPn7}>B2&PnjhY}z*<%Q3l*R-eZnf%*7yft4J^*x_{Tr+CkREy~2$~G^9wd{H z&2G9jySV@W2=_so6qCXfq{?7IKl}2~|F-q&(bd1GKn;LzJ3C50GIAH;T`4yWgN0s{ z;}yW6^Wo=Xk)UZ+^odC*;baE5kyruU@4bS!k8feb(*@6Z_4O!8`dyHCJH^`6h1BZDqYTqx`{Ijj|~9U$~Ib(Mh6^*=%&&C!TU&cfC4~Rf+CPDev0^ zKtPmn(2uPOEjp%}KFyWOMt96V*ZcGv&bZRi3ePy|3A8&>>mWYZ8nuC_DZP3foD-0g z>}G!0b{5NtN|JtU4N5P;C5JG%%v&y#8XeLJqp1N?cFtYOpbrbU=@$Q_wh#AKzUUwV zK!l`@kzVh9T&jDuh*Ff;r;ssDg=x55#BW1N#+Zz;7fJ$qB(SkX{{0esE6OT_N?4Yu zkwa>UUKc0pjha)%1xo;G_9ln0V8a*g7EVGhIkTBgyUwzPbwVY(_Lx687C9fD`U;Y| zqmH5>NFAa$zf;iCZVM>hXMrk`>q$1YThMDO1hKu(VV`A@ft2h){!CduJ8v=s~ zbcsdeMtC3``s6BH^?_B@M$|bnHomChDA{QQgbijCuZ(e^L4|%*3-<=T@9hQ=8h{P9{1DWh|0$22T!8tT&}lE7&#sdXRmC+w*4x9b+3>+E~nLKYXv zGJ*^u4fTQhRyYEUqz(nXd=)qf+P4)y3Bbp$pEuhK3#)?XJZ$Vsc;zVO-a5kmggk^t z`QIZbL8r=D@un3Q=->{o{xUDw*a93z4)npu>a?CGNR_s~Z#@NYW&!>_y6G?;#;gDX zW-PF}l6iR>{{!IhvX|CWwu?x!lspHc)dJ(12l7tn{;d$G?y(0weN|&$`Kh$+Uk@OhQF?oMwJPeS9S`hLLDu(ip^1=ezH^Mjr{i?oJkDu)Ebb)3 zz2J)p#ok2iW_JdhK2{^;M=UN+fgK>(vM{|cpIx3_GHgX)tu6hTA4Z@b>fu-b0V@(d z|5Q)qZtZo&z{T8F1HQ#UPC<*;_%c4$iEsC}oZ}IbK8sry zo92hEk*h$AN8V<8J$iV>8Ik8!Q)N30t zuXNsqaT18v8e5A>6Tj-_)O%5>UlDfk9OXxbm(cBk2CuH=1EFmI>n{<2 zaTEl0Y8lbmCfhj&KfltnAc13`spQbgi|p~xGQ7xO!X8{l^15KKO9I^dy;KjEL;-}Z zGK`+{8~%MeScXoAkl{T9tbB2=h4w&XziB+0$n6Ri#tgC_14S|!J;^V65-Peb6c<{b zWIPU8J~80(HVLRg4C+IXC4*L{IN_K%aCqiwO_Oes8Rc^WO;!wve3{)1ef@uM1s(5O zK##bIA29Tb3{kMIZ>orLo#P@ZR`2tt&Cyl8w7gwDs|QbnFOm@=LQYHb-{(ox#lIog zl^V`!z+5-0Tc;ctu}by>NRyeAhvbap0q7c=>}SiWsb|U}J3I^GupTjC*ap@~qx^!w z-`y+00tJ6DdC|w?wv07H<|H$BmVq3JA4%_1X=>X zk&d;4w}^*5l6N`24^2|cMp+H;j&t0apJ*o0j=Q$OXgd%H8wAP*XL+|HW9BK>8VZR7 zKOov@sVyxP?W25$S3*r;ywcEUyWvNwFAflQ$F)Mf;>S7|z-KwXEL(kc!eAV_{@qy} z0g*#>BauWwqL`+q%u>Iha2U4SI8gqz5-8dXw!B+P=?I2mS7=wUv#VuhCJhKP$)kw| zBu*-3z%lY}sj-Yx;OcQwx_tujA!(4GObw*lh`LoF-vHA^1y7=8Cv@2lrnxZ!z&+uQ zZ_25$^(Irg ztznGiMZ6DHghyN`9l9?u(Yy?bTnk_&VULB$3bz#&4inZ+r&$C}M|)auc+1P^0tX_3 z%Le5kNg5REMK(Odr%ueQWdHyLVga8pRFD5Y^Xs~xPK@>U6eKIYNS!OBfnbKo^!*Id zo`sSZLrSRioX_QgT2Fr_8b+ibfBZZvV7- zCAv8ztEr*X*VV!o9$-OPc>Qc)-vcq?nynaGJ|`Kc8-XFU4`9ALltnhn0zH~avm8heClhf1>=cydzx%W ztq^@xTUs(=Ri+5U@Z(k2=kR+*wOSyfniPkfg6mr-BcnIZ%Ch)6Q@>jM>GadIP4XU? z+q*D#Neq!-iAwwUAsaLTL-tDv!ltaWALClm+5poQG2l79yTXIDb=49*sT-#`Nl z!b2p2U+%bMDflQ4tM}^_a1ab17R9#=pCRtZf;S1T#e1aDHRiXAL|QULoTWHef1iU| z*Dn*peJ=n<-{VMFa9E*FT%t+d{TDRX1AQ%~$eBLYd%NlXFJ=g4-n3aMqvW^q_UB(D z{c;Ac0%qB9e$3~rnY^*U8^vD~KUX!v1o?W$GmaESFurvXJ8Hjh{=$cgULSZb&^Ei|x2u0AV0o`Ven4vafR=RPJrxzd`Rp zW(}?ym&W*-+yP^aSJG8lH{VvUa4aPoK5hc+bel3i<S?pmbU1C{-yUJ6~)=)53IBs-@J&tZ;US*skNcE z9M)a;9g(i;QN6-dT9x;x`IPkZn|npay*ypw+o7n-edXPnt1laIs%oQu5knLB6-2PO zWCDP0CTzUzMNx@DDsuQV7H%%Y7zlB+XTdZw0B%5$zngik*aFv^k2-q=HEM$?XUJ5C z)^eP^UEP`vNeyzyUG$o>h8&)mIW1)WzQ3*38xy_Lx9|)>u_&VP9`I|Hf0m+f+wjS{ z+u-Qf(WS6Ji5*Y-2oBIMJ=sIQ`@jzE*wrojO@vCL81}9yj3F?>_0DD+Ids!j1x^78 zY5O}ifeOE@-Q^TbnL}n}l3$Z$`gIemlIL7C0t_}+36QZS{$I5t8Uh-g!3Qh3*i z3aiy0$36%FS}SvM+dFvCyH?^4$}QVH>ZMVd@E!qbnx&JtBy}9}2UN#u!s5ev^!2zh zk47TZ5pd0xCfK z000G50iQBdkN+firgd<|3lON@+TE#hOSx<}rmi=h?X9P7bEP*etN>UM9P4T2g_r2z zT=e3T8Np8e>s|6-`lLemRnB6%2NeDScxc5GN+S$sR3$vtwIgbm_rQ(UY%JK zlunCyBm#9&dk561cyr9*rHXrIdmhk1Jmk=^&b+Wxtl|~lOhO+}&S0NrR%_3{iF60Q zh0aRpPHq!hhKG)PRUrHTPNlglasnf^=y=u{3I0GPr?Q_z zj^L%~zHa@WY^lj(>W9AKk$;QcNOyLzteVZq!%<_J7UBU;fr>0n^HO?iu*nll;X{Ns z$&P|0W3``U)qpDu8F)7efI4F|v(qV~>(Bi=u4mBPz-6_!s>C+0K$`dN#!T%2$p5N% z?VhNAIBsZIWY#qwqv^7KW=-_E)e+U7x(*Z|fg|LDoIFust!c=nTqsW!z}|+#2Na3PPXstKL?QC$tvSJD5RW^0 zoIf z#5kR%IQRDzM^J$`t(a{QJOoz?O|C##t1d|jH06;|%w8M~gjFC#g0Ni5wO*Ea{L`5? zE$gDspfN`P7wra4)X)FxO!>>QYw`(A?R*sDs!2b$bDNrq7VXb2pnJpx{&Z%};KgK~RbtPIb+e&S~dMVv?>?;4|o_&h?oMW9Kcw z4~L(K!EPnDwjsBJ1yybjQ0AIz)5Nts%{g zhCE=GB`5r7EI=RqckA8#bK=^hfC~208>53xkNRZkj`5#z{|i|d#Wj!TR5mz}j$-^i z3N@9oDm7v;4*00h2EGbF`CBYV_w7Qu9ZNIb@|Y_mj9WNTpPr3M{)}d8)Jie*N=%hJ znWpdj;_r!X4ihlc-XQwf&#qYcr5|^Ecd&?3laAVLMf@~+^$a|zcJ@2?3(1M6N%@OE z9`S`zORafq@@rg-k!3r(Slke$CEAIAfi1MttjcVFFhZucPWv)!XISvySoY`nP<6@2 zg_}1+YFdzBYSstH)?OQUkS=wbA|_=J9nx!8={LUxK*>nS>XC6TWeq4)qAXJaKZVD9 z03?07EJ3PdYV&yIACA&yl^k_}wDZ?Mrgxg9!Pcm0RK+uT8{?& zww-=q!skCc3Lc%~e@u{qxc~qKxIvpXlfoWMrUZZWVm>|TCaaPFG;#%d>Hb3s9e^08 zmY{8`pS%5ZBZEcVcAu?jbc4GE1c1c{&jVsQb3GJt&***|?%Jew&M4jPIVr=91X%9W zm&S4qKvOi1c#zZR+CP#WU-~Dn#8Lr^Hgm-QVosx&08I!dU?J|`54d}!3GFP3w5Gc1 z?f_1^k_3 zp7=a)&bOlgJRyObg+A5Ex%p>jehLEg%^lMHeWcjI>JzYf>kbEG>C?z?0OVsLmeRT_ z`Xi61Qg9n#AJbWc#~6jzn6l63w9xmd<*TDkA$>AYzEW7z7)I>BJAK}> zs-ByI%(9-!a(Kl4$q0IBoZVPx{T_@25NJ1MaojyA)7DiEfJp;Ivoz2KwhbZ4Kl^+E z6!oxeX~`e(=-I|Dyf(lRoR%D-VgvdaEOvX}@o&eXQBFwh;^BB;pGc*6H$nvr0 zwJ5c&c1t5yW)w%iOI8*9d{gBi5grDY|9^2?-c+I~xh5M_It|KG?hhxUio>JVL)&2# zz|Un;;=lf+A~^=`t8uU$6P>JY{i^Ul&PpWmfGs%qDBL1SPm?R2m^Wlf(r=kigdOaj zSEqRGXapd#=%IE0T_Q20XCq4eqM%TwOK<{|J=HEF)|FKQUB3v(A>JSkSk1u~&<-pd zV+SLfu?tW=M2#;36$BekLPNQAfPP2ilg~3!d8l$=F>Pv7lAwt&$QNspS}2I}w2r!< z6GD~pjMxQ#gIqRPGvsZIw-f4TX_Ik#azeIK6}Hj@=yv68gUfhu!Px;!G$)=9aXE6Q zaaP3Wo-C~5xwAC?!Tm5Ki#F$I1XCx9=|02qn~^S)mwQYSe=X#{_DOk0d^>GXw#QJY zp+7&I_$$B?j5wqcK6(OLFq|1YYy}`BUUpS~Q#rT4x($3U#Y>>TBZkj8&(;3LW+)< zM+#MW^74vfd?V8<;?9$TQJsHr^iE6Rz;Vj9h2&`UcuSul0(6>|jQs)}-0J($NkAIK zl!hy9i=8`u#eC3Jj$l5u02@1EDME|pn669&U$Nar z)WEBG%NqeW5;2&DPKzJ{mW?jUFaG1@P~(zYgF-)POn}@E2!h#twxC2uG9Jj99K@K3 zuszyu`1)yv4?;A9i>Cze5~`3nUCh()H`*pk2n|Zz74y8Y5G?W6-NgG1Px#W|Y zTuJ!-gq&C!B55iqxO%-5?%Y80IW(z48%|H#dQ-r0Y#I(oMajo!bqnARVe+slnv1;Ql> zg7hM`gX-4^jGXk1y4Z>{oMj7&O+H@&!P4Z z@jE=hhz?*cRHVv3rFR5~y?S+3=};$s|Nj5gfkS1bvk*j4IF&c0B-jN- zt!mRkRp2|&oioHf(Y0pY3)PT*bv>QE<{W4Dw9ub48uY4dc#3HfCa6M@5UNk$1Ia+5 zaLEE$v9U@;9NfIB>ML;KY71~*q~D2k`#USWsmA?8HNc!!^RqQCUmrwvAvT|&5l!IGYkdD z05_cAO+E04W>@OgRvMJ57ty0S@7$Iyp%a3>;J?>amn3oL@j0W|PgzUJu0tH?OPzb7T7_oxch!achq($AT7}YNCzH4O=LO|IPM(1P`NvqOC z2}T&)z)&{4-gi%egjlP>CAydtve|U*s-~dBF4?`%F8BA(@dIC$FsNT;X%IW%^-M(U zAu5mW|NrO#KWC&d+)Ok%lm-({=Z><9u>^u>G?X28QDJldz1BR-y$xB1@o@Z)CW1lu zt0fMN#Ohi#Y%^6*fukru76kszm^kSQST0LoAiC8MKzTEO2ZGE(MFv={k1Uqfp55C? zmU`Hue0RDM6~ODnTFOaGb8oH3ri_=DSL4^+i(Q~{{pg?7V87F?L)voNnR zc|f(!ru81p+|14|CSJ8%tQhnVHbCtsOyIp~O_C;+r(k6I+l3t@NP{$yRHky=Szh3R z1(q)?s{mJi72_arA{~*FXRgxRjOK|l#0b?VE5$Kkzw8pz7ImH5!iAFf-~5`>r~G3x z8urKuFpj+b8<3|3$k}6Kk7=YeB7Xg^6@_ba-o@h?jod65rX>dnBk4*T|d+j^IF9|62EXHh(t)yRyNtlJWkPvUXa4P-_1h%x5tKv6+5au@@7chA`DVek($8kx<2D zU8@^$hJCt)vnfj)4kLP5*FD01WVRtDXfvPAw@6JhP6a|v1=3D{w}ePEvDh@QUMRxX(5SG^f2BfbM2J=iU%L+%EsgBBOdM_GS}E)zLzdMt6j-SW#-pgD zYc7{sqS^+xCUIpj@F9AX-IkEUOo&d_<+7ZV(|RI>$SoEPJHz|gG@S2si>7@K@KS^M zO~q&SYk#22TFG@&r6iw9p>b|7U{o0O6)8;NQ?yN`g<*D7*s>Jjav8@;-$G@puSJ#H z))`_^X|sehR+-;g9335o%|9IEa!@mJmVIRzId<)0mEOm2UVm*Xodb9t^lBq;u{{q` zC6_I3Tvutf>6wd75==C;(R}FE7ckppB@I|kf|cp@!vZ z<4(a(q+!2D2dix{LsFY2QgV!i1BwW!v)4y;umu9t7jr@0edqaWI{$Rk_3hgd$N!f+ z?9j61fKw5EBQ2ONBOj6J{lscQ+6U#ZV%p4k2clb9nzkQ$jg&3Zp`nP|c$_e;QI;N& zp7wEcVGDepgqOZJRfcVf^wYDEBdTW{MsROkKVZ0q+8QdhVw_N*P`obaRCEiUA-hib z*+3LkmNNN8oBkmRl>M!Wj9{S{C~ylCBYV~Cphc7sV7&qewpB-b?*53vc;B-*uV%OP z(!2Jp)bogT(}AKk93Q&5f4l=PRdleIan%IRs;(N@{hOnmq#6jWw4lC(KCerA1jpZ` zc`!;=eD&hC9dT=`EOC`pjRg@91~rjTqA`lwcCa_V1&9E(?oWyS^{w*-C>HLC zM_vaVmH?H*mxyQOR(mz#=jNw3693TN8a@>?{ry;T+4$tG3;SJ?d}U=aHTufaKbNw| zPMO`Ie=Kzw^Aj&+5@!Ku2_`q-%58OBdFxi`6VR`K8-Rw#wmkufOB~6A143DR$u;0u z0|y}rl>Md-sbV4op;L}&SPU}kAr@7n0M*Gp+4{K~_Gt`t=r)OTTqgRX;M&%R9UZ6Y zK$M!+%Dm*`27W<8L;}1il=h#2V=BzQ}E@RA)W13R$i?`WFda=-5c1 z)*izI21SQOh{g<_;!RbH#THWrphuNYfv<7&o~EC9*>|)7J0u$1mx)kcmx$IWEON&4 z?b{ZKGoLdy5Xq8RyNf}^lS=|{d7idUfj4AT+qQIP%luWzmQT`>-$do%QqnGoOdtgH zsL}*6A&5wT2o~^Bg=qu;XbN3p(G7Ws`U2ZA%L{)qzSxjOMlAD6FvK2QEHBZBq3DQ8 z^DmV5M=qg!lhwbTY{?M-#w_TnBF0-CxoEU>29$l>%)g(Huu4UygXvnbEHA=TkP^1J zTX6sxzCHm}{Inr)7sd&g6 zu7h?{_DnUmP%Vy0Gy~+t>53BeQvqq_yz8D+&|=uFVk3f%hRISI(Fzn92m%Sa-ntGz z0whISEC>5F%4^1^84L^GMUU_R!5E@25&(C0`XqoK^&#hz3tcm2JvXAp2g8Qt!y{gBTj<$O&=qA z)4#ChH*)g(e!av@ObCvMt6Q@O32ZecpPrN?DbxE9GT+&9S9REY-5H1Bu*C+FuOOfr zmZ%!B1f(Guz(Ko?eW%O{0s;^gGt8+5e+OXijhk#?k*;#9Ak(nA4-1ZRA>M@e+NA0^ zcNaz!4=cs%jdkj;?CIRTsZ?&SRR*;tvmrh;dbS9R$3PRbLxkoNg{}McDwL@{RW0+u z3}RyGeWZ45~*r|u~mY_9sP`KD* z)mN*(n`nyYH4Pg&`aY<#N>+3yG?moUi&o0(obRHh%fD_w+S;-p0`*9IrQoIU`7b$( zPv`w1YDt&yE3(xn4tDLZJ(%Pr6<`U#%OE3Y*a}hrA0VMBmZn+}kcJVL2RJAT0TKb0 z7RcHQTzvnW$Nf^~>b-ffa%mq_)kI9cPDUJBYn!jp5F5Sj4X7LZIe}Z`=vorPRSPag!N380%0}&YQV_s z!}XRFC?oeN4_Z)B6fms=uRc$^-a%KDbEnZ?t#nYVe|g=PCTE^AB>-;Z16=6&T-OZaTc`C`2liV4yQ|Np0UFmundbB#zX5?zli4Jieyqg z6LsTf8}bxUDv(x4Hilg&<}H6jlu&x$u5}lGkcbf_@l}LWmDc$ z<7zBTMyq#VAJ%_E2grTka3N}o@Bjbw0Xb%)G14YrW^V7UT#P6%EJ2_+E><5be|q%I z{o#jrJ)n*@*VPMG28XfE;&`dz3S!Bgls8@y4hK;o{3Xl=M0W;2t=WKbXtx8lB^#7J z78#Pn)4Nq5+vEy8YgB^dLZ9Th)-vz~J*Jr`n_|Yphb>{w;8J*~vZzM^CXJfbNO7lj zd$@w4agUs8=qR5yuy}4IwAOD3&{abAx+iCLhnvZ*m}1lAL#bMA?Pr6EJU6B&!Yk1b z1nsEO1T!N5DhjS$QQ#C2SAlB~9&C=7>(w|?C3e}=v+;ML_7>p733sOVbR50Y00vCL zbf8U|H}7uk7$$0SH@HzJyS-DWiX31~OAJt&m{RSZz9m}3FYqC^uwNl|sQ~M37Q$xl zW!ojvm8zXtsDh5fye+g8fRkFA&9+`sMOO_WxYdnhg4|9Z?5$=i8wOWRE?8a^r{^IG zl;yGprbd{EpcSic7X4p5cT3CwSY8?c?_BPt3vha8dBykF!E&Mxe0H2aFbh->VV?(J zjB1S=Xek$^G%&((cL;Uup2S}E&h$LKpSqDb&|I9k@QROu^1GAAr7B$^cc<30j)m$j zf1#-cb9&yvi2Hs1L=kD2a}N7!Rdkk|Rr}q%xI0SmCx7pG9^2J2@{%O}X?iZpYh=sY z&g7+}p#gg-+ke*GVN{SlQ!b|+D7LGsH=b=DAp?qQCwasuyvfZ#2WenV+La(fIw-`I zji=Gv?*T#a*n?K3gmZG4u}8%Z|5cqoBE*! zxze=tqGL;HGnEfSarv&Q_M+|dPm&GAcYRQ&xyS8?n!hvcQDn0=Bygyn@84zpGQ}?t zomOe;#hZ;*7BauC)yf9qrE{ff=_&LeSISh0?(U$yu{#>6ilR01G(C;;PY_i3Aqte$ zy;8+O3BW|GCOAC|rG=m%0qY%M@yAtDpM3N5*gQFfqEJLKHjy=()1Jm0G{x#$&JDtV zq-~>!l#ZkNGr@9S#Q+QdV4Jk5z)BM`JVYu29w-DL zhzUSr8w(b!kDv%vHDCt?waFVjY$DFrPCC519o{J8#s^PakY68N0UPeN^k@v<&$y?+ z!%brC6Yk{i;sJ4N2y^qDg7Epf=Y}Yqzaelg9(9PrIP~kE7r?*c9A?WCSVJ8e4xbov zJ1sQab{B+gOSZ$7lNf-@!48cV+u-(g)wxnx^OS$#XktlZ#a_wcI!^{|%u&hUDwqQY zAqte0stH1Ju^@~!C>4)N_?N#`H=Kh9F2KQCvr^Uxd^78f6 z3CUW|z&A+CuQK&=LSz#3J6o3ng-UC4BTtbj>c68kxL2C7V_i-OZ*3_D2_py?9q|D& zePVQ3ol(q+52Ya|+Q7mEIZGu_=wT#oq9LNOT~n~(wD255(c!R+hc z;@Y-T$xC&1Ctdai%-vWszb(;aqh`$i!(T5Vj4QX^fTe9 zA3oleA!O%hXMttF9w91}y}eSyfUyLCV;Bj#!YOL4Ab=6xoe0&sPaXdf8!ie?k>pJ> zkb1Wg<-bU#I&#lEZU!_tf0?#ABkA1kc2uE(89;~+S`sRu5F-?vsmC^0)mY82uaa3&m$kYj_RCt0sC5b) zNaWh3jGzD{AyU9Gre4E^WSJp>a>y_=cf5v<{!*4->HT^9J%1LD^Fx-~o|n>sj4oH9 zjzQeLV2zI+tm`SB;Vvb0;$NubYCsLsr>9sW4ruKBGKV(eAnn;x#I0yI>RS!PNgz*; zZVcbftaNHF+57qYYj0UyM>5PgOS(e~Mp<>No4`zjZ@yGZlU$03O2>4Jd3JHcz2byn zXl)jd0p}r1%}i5hh)60;goC~rinSG(Bv8#8qF8dhRa%zhidrd6g30)}Eykzq-$7^k zo;Mv$A{^?c$2I7WBuZ9=X@sV85WBKuGVZXVx-w=~ww;g+`p-?FXfOfmui7>XHpOYidhFr6T^WgpYcuI^v}95Izi+BUJW zxE`30LKizhjtt0xCK z+1y<|E9ylRHHTs@JNNC_i6rD8GKD4qtJcOIA0XTrRIWPznP_RKzMqA3XtmUu;mbn%VRgZjc>yEIjDDp*E<5 zD~8u809wodIu2#6oT5PW5%{rdyPeSW2v_NKoQ89%B+&bbQ?404UTIYNyiB>9LxETK z-h4c_o=|MP*!rBymIEwNK=s>Ct{IQ&uS~pSl=1W5%=yqEkHHK$#h9sj*ZLQ=veJ=O z;b$QVl^wB^jT4k3#ZpOdtgz>Saszy%GE1w%p$(Ih|##U|;=$N(A^ zEvOK5Nh1!bN7V|*y$_uXT$o-*2d@BDYQi~!*})5GQC)hil>T~IyE0pxo_Tom&F*&d zR$h7c?G(&>Oo(fK>gDmkgKH?>t1N#E?}S;Gy37S0f{_le_WRfu8I5Nlo3V zh!i~qv@%6@{Flz<-ioy92}5<2?H5gZZ9cDCtw~2*jqMIvW3vi%e2oOu=ui z4solo8Vybjnbm|qx)0TP&y&W&t#1{N0cImi* z8tU9NutY-?P$yJ3&iNTN`)d3_-MF-nV-)R?Kq18bWl5 zTB5jzV$F!;UiE?aD^Xq;Ue0Q>zW@LL1qKEI#DD+*Gm;`%Sn&xW!C9oPT}kXM?6(xBbWfuB z@Y;JS6p~b(==mwom(y;0x0;( zK}|Ci)Pc$TUJn{aZv}=F$=ByzV|?VSvpeJH?b-mQ?;f}BMkU+|rpAqHlMBttf9)Oz z_cC}Pci`|GqXS^xi_x(%px1B;3jzhb3q|Pkiad;G82a$5m6%8yz%dHmblC;t(a85! zsS66hz&5{V9W6sIar_8<>|>wZ)Tr<@S}$=aoPnXGNgnfr^Zav(T4pou+CC{%#_lwm z{6rq!=>1QhwEHD&sPbD%84`-sOK?Lhh(n(z4f|OgS7_b2tL+tis^?WQ4jd6>&#B9n zn`F4H)BpVrv}IhBRKRWN`1KMbMpf}?t8pipQpSq%)?Mea&mp3t+lxqlWk)iR#3m44UjN~l8deg zF7@I42dr$FW}t5o!=QgiJ&6VlY=G{)VqN0!->ZR_^EfW|p)%$Yw+gH=#E6veHE&j6 zW(;-g`I>+O&Kk8o=Isr|X1e;Y+#rF8dksHm)~Gc8cBbkUC9pU9ox)C^QWgVY%GRBX zdafYCrFBbXUwXN<@ej|sTm+tOgC&x7ohB{U>-&5Q$Lu=kth@)KQJWbmY|Pufxf!Ux z0W3|_kd_x^#@%;$k93FkcDqST1$^LSIi@r>TK>8<4H3I(7tSPu7yXQcToy-6&6G$|(;@7ziLcjFJ z_LvYzgU0rCy6^5Gd{BsMr=Y`v(J9@ViaWOdU-;C6xjOeF!PHzt*2gb$Xs8s)pPF!D zHeA5>NPl_Haf2;k!Y0xD1sO-3fWM_COw}g_IYypi1wNpa7Po>(r1P_4(pPwo%p({J zk1-t(l1-R8K$FF+<~wg-pjx*>;n>sG*|bPq_ZwXpZ^#E| zBY4`^AVBf}BD;C-o0 zpFOlpW(bks?Y?RaU9;5W@VG=SDB5oGP>O|@OP!vEQb$)@g4le!_iy%&0g!m-Q^7&M zmE%Ys_N$`$cz4TjD_vQ$PD?5sQu!69jA-g#Ag%U*IEEW|FZi2d23Eq2k~tOMHQj91 zG7v|n5L(B_-=Zgss+7kWITG10L^6zt=DyDFz}>1W!0$)q2`hS527H&-^L_zHn;EPh z>0%k{2N%)vfpuv>pJQUmbSnY8fkzsiwOl576f)cRD2?u$a`_e&Q;n5pXWx7wDOEX` z#UGbT!;0jNO$t}=+h={)$aOqBOsMQFv1os^&M0U$aG=70te0rx2d6qCdn;>zF^jKJ*P+0dqsFG$a>M-wAfK z>3)CIOgKxF*owYUSRd=BOGjO5ky#}t{jp1nCHuas*BW`xnlyj;17|HygM*ayzCDUH zF1C^NdW9Y1$mv||nn?P0!t?HW2RT*zFwO0mW?evt!7vsbg{6u3?NzqaxO`b904?8~ z6sO^?f$6B66K0rXMiN(9_@cN=07Vx$g|0-y?ot^pn<14A<#6!j3P0YX-kCD_8P7?u zJs@!_v*4KEd__XuwA9rlP0b2 z_b&5DT}qDSDiAI>0QlCq)tXbCU|Z)~r4Hg>*Gs=pBmI#;GUZp<2F=jLyji6us^iuq zg^ZfrR>C$!nlqKE>5pW#B}=PM4z=T9G>V_>&*H`HaCR*P% z+w>z){(xjdxF<~G_toY2aL@FxhBTRevTaxu-3SmC_j29a7(tQ~5X3 z$hh`Lda}lDiUnUo^0^wyk}EHYOx>$MVqM*L8<8_t`)FiCbi*zM=-9CuE7xs)dgXr0 z_CUgo6R>l{ten?~JIzoN%K!X%CNmY5qC#F-t)G;KJ7kXWq2?{*!MdAH8_{gMIprHu zlTM=XVBLw*!8IU=eZB?R6c=r#j=pzMKiH!ghaZ;T`OI*}xP5xD9lC?M)^o91x92~n z+_mDJnT~_8Z;aV*)*t3VQD#4E0C3f+JX}>dMe7i4MQBbOXtoqUlSr_P$}q6p14FBI z`-N~~JAhn|X-EqM8J4;qvfF%&k6fzlvfxfc;zJ3k5v}T+rt$L!&D%=zwZ6LjCW2mm z>8}%Xs{XlGpKF8drAQ3GwL0}V#?2|x^dikm{BbUpqKnb&|e0>GVQrLe6MiG320kSe`GppM-8AL z7C?VDS=&zijm#>M7G4P`i+vm|G9QIFXbJm}?sJcExw0}@MxZLI0c7m!aMP|7{`@8` zr#+7>xBJFuoD37*@h|LH7M!``a>ib50Ix1y495lx$clmCTdu-v*#PA4iCq7HKM)9} zsjHWUb(caF0?I%J*pSP{2NmIrYz;vD@M`@G@)~X374rWk|BgeO+EP7fEaJ54-tW)A zA8a>dQ;T-0P0`^H3fy zY!cjEo%tbOV}}D-qrae@C5Ey=%sZaM_eZZ@7-nSOb8)?=ccOq&^;4dCV-2Gc2wgC9 zsM%oVm$l)zITvu4p9(<{#~II{Z~BPdZTQhdxkS<(2kB5?&zh4n;ltj=&`v?c@U#h3^E)B@1 zIO#*W!$_jPeml`#e6257ALn9p)$^(?)aiIEiwQu+mhUHA76|E0Vw|YqHoD(;TbXTyF5mWZl8zi4g(=7I$;S_GGb_>ath^`f)oM~rh_y0};PJ*Ba&VMF2BQN2bNj{A|&;P&CbdUfuVaUj5qx?^v z4+|ML8+{5tJ3UOlg5a;XVnp3g1rjb-m#n4a%CmgBawMfJ zo-37YQk7YT#_X*Un%7eVeFO5s{SXu>6avBxUXf1v3(Gonslo)b0h~Y`xZ_PTpm)>_ z!WJ@?P3sLK>>*c4()@CnaNJg#rwy578*z82CRtUy30=Hgh+m9g>ax`rjkZK}1+@LR z3KTandT#zVx=FMhw-z$O#cv9MVbgV+_a|AyVHs^6p+!v0(UDw`G3@@J}`Qzp7z-% z_g1tV5Zy&B^?W<`Cb%OK$FzGg$K@$KZ51#+kom&6bSDI+lE^Byr9_;<;+Ir436mtd3ln1;GC*gm98ovFP6`k zF7Lk_P3+fEKSCF_GN48=51Rx!TPoB)e4UBjE^4g)#t0LFVi?V|ZQg7de5Ud;ZFGE| zM5ftj7p^zKUWm1#Be`HU69vRrdJJ&~rjjrg4t+D$_zAlWjTDkULD94AYZd3ge8t40 z7dWiNhDOA^D}SD_t+QY+BGEv<^cT~EW5`_Q+$g|>Ey0jX0kKoEE9U_~+&dpAtqXUuSAoN&~n=Kgk zUh)&D$|d9UV?_!V^zSI%L#5G0glEmg&h^<`iB4vTo{v}@BF?gC5;LUA2fNi&Z~2-6-}-E8F> zh9N`KOYy#-)$aW8-c#%7xBC!E1|S1m_pI-Dl60!kbD5p`x~fH$mrbU`NUvOVAOcBM zI@cFShpFmkt!$Ga)VP-xF@^{c*d+u%d6MuSsZ%xeJ~V|-pE&jbg#4g*mj^HX+_yrX z%fxXa9)xhT@=98U|M;3|mo;JX*Uw!Bt<+}Jq#T_3p3u89Rn;YTw#;N2)C%T+Kr0UM z{Om5oT+0Y>t&(;pEIQ8+6ugDEN1BlzdDPB68n~~yQ~bIfTj7C3NryMuuvxIfDWgS6 zFpyaLzkAED@6F=*j)bZ--Zjjan!ydpk;F*9O4@#pHrDGDbcH~xa6Cuhl#aalX1Y&7 zVi7+xsh>vXIg5jKEQ8RB(iQn8m2{QuY!I$kW%zNLX+uuR7-^`9f2v6|IDjSWeVsD| z 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
KMoe??{2_h|^zl4q8e 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

v!7sojH1CD;S+^55jsQD>g~At0G=)UwSs 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

p1k?1z=~UrVMmHKn%j#GeLEu1`h7!q5>JF5 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 Xl@3 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☖>dFW4hMUQGLG?<(?d{ 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 %7- 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

e^(0v< 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