From 377ef98b684f62a3d3d20bc5c72fedef99fb3b37 Mon Sep 17 00:00:00 2001 From: TheClashFruit Date: Sun, 31 Dec 2023 12:27:02 +0100 Subject: [PATCH] feat: update models, textures and add animation to the baby emperor --- .../entity/penguin/BabyEmperorEntity.java | 17 +- .../penguin/baby_emperor.animation.json | 184 +++++++++++++++++- .../arctic/geo/penguin/baby_emperor.geo.json | 174 +++++++++-------- .../assets/arctic/geo/seal/seal.geo.json | 117 +++++++---- .../arctic/textures/entity/seal/seal.png | Bin 1999 -> 1440 bytes 5 files changed, 360 insertions(+), 132 deletions(-) diff --git a/src/main/java/me/theclashfruit/arctic/entity/penguin/BabyEmperorEntity.java b/src/main/java/me/theclashfruit/arctic/entity/penguin/BabyEmperorEntity.java index 760bf05..14719d6 100644 --- a/src/main/java/me/theclashfruit/arctic/entity/penguin/BabyEmperorEntity.java +++ b/src/main/java/me/theclashfruit/arctic/entity/penguin/BabyEmperorEntity.java @@ -25,10 +25,7 @@ import org.jetbrains.annotations.Nullable; import software.bernie.geckolib.animatable.GeoEntity; import software.bernie.geckolib.core.animatable.GeoAnimatable; import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; -import software.bernie.geckolib.core.animation.AnimatableManager; -import software.bernie.geckolib.core.animation.AnimationController; -import software.bernie.geckolib.core.animation.AnimationState; -import software.bernie.geckolib.core.animation.RawAnimation; +import software.bernie.geckolib.core.animation.*; import software.bernie.geckolib.core.object.PlayState; import software.bernie.geckolib.util.GeckoLibUtil; @@ -75,12 +72,14 @@ public class BabyEmperorEntity extends AnimalEntity implements GeoEntity { } protected PlayState predicate(final AnimationState event) { -// if(event.isMoving()) -// return event.setAndContinue( -// RawAnimation.begin().thenLoop("animation.baby_emperor.walk") -// ); + if(event.isMoving()) + return event.setAndContinue( + RawAnimation.begin().thenLoop("animation.arctic.baby_emperor.walking") + ); - return PlayState.STOP; + event.getController().setAnimation(RawAnimation.begin().then("animation.arctic.baby_emperor.idle.raise_arms", Animation.LoopType.LOOP)); + + return PlayState.CONTINUE; } @Override diff --git a/src/main/resources/assets/arctic/animations/penguin/baby_emperor.animation.json b/src/main/resources/assets/arctic/animations/penguin/baby_emperor.animation.json index b90976a..11a11a4 100644 --- a/src/main/resources/assets/arctic/animations/penguin/baby_emperor.animation.json +++ b/src/main/resources/assets/arctic/animations/penguin/baby_emperor.animation.json @@ -1,7 +1,189 @@ { "format_version": "1.8.0", "animations": { - + "animation.arctic.baby_emperor.idle.raise_arms": { + "animation_length": 1.25, + "bones": { + "Body": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.625": { + "vector": [-1, 0, 0], + "easing": "easeOutBack" + }, + "1.25": { + "vector": [0, 0, 0], + "easing": "easeInOutBack" + } + } + }, + "LeftArm": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [0, -15, -35], + "easing": "easeOutBack" + }, + "0.75": { + "vector": [0, -15, -35], + "easing": "easeInOutBack" + }, + "1.25": { + "vector": [0, 0, 0], + "easing": "easeInOutBack" + } + } + }, + "RightArm": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [0, 15, 35], + "easing": "easeOutBack" + }, + "0.75": { + "vector": [0, 15, 35], + "easing": "easeInOutBack" + }, + "1.25": { + "vector": [0, 0, 0], + "easing": "easeInOutBack" + } + } + }, + "Foots": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.625": { + "vector": [1, 0, 0], + "easing": "easeOutBack" + }, + "1.25": { + "vector": [0, 0, 0], + "easing": "easeInOutBack" + } + } + } + } + }, + "animation.arctic.baby_emperor.walking": { + "loop": true, + "animation_length": 1, + "bones": { + "LeftFoot": { + "rotation": { + "0.5": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [-10, 0, 0], + "easing": "easeInBack" + }, + "0.9583": { + "vector": [0, 0, 0], + "easing": "easeInBack" + } + }, + "position": { + "0.5": { + "vector": [0, 0, 0] + }, + "0.75": { + "vector": [0, 0.5, 0], + "easing": "easeInBack" + }, + "1.0": { + "vector": [0, 0, 0], + "easing": "easeInBack" + } + } + }, + "RightFoot": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [-10, 0, 0], + "easing": "easeInBack" + }, + "0.4583": { + "vector": [0, 0, 0], + "easing": "easeInBack" + } + }, + "position": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.25": { + "vector": [0, 0.5, 0], + "easing": "easeInBack" + }, + "0.5": { + "vector": [0, 0, 0], + "easing": "easeInBack" + } + } + }, + "Body": { + "rotation": { + "0.0": { + "vector": [-2.5, 0, 0.10912] + }, + "0.5": { + "vector": [1, 0, 0.10912], + "easing": "easeInOutBack" + }, + "1.0": { + "vector": [-2.5, 0, 0.10912], + "easing": "easeInCubic" + } + } + }, + "LeftArm": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [0, 0, -7.5], + "easing": "easeInOutCubic" + }, + "1.0": { + "vector": [0, 0, 0], + "easing": "easeInOutCubic" + } + } + }, + "RightArm": { + "rotation": { + "0.0": { + "vector": [0, 0, 0] + }, + "0.5": { + "vector": [0, 0, 7.5], + "easing": "easeInOutCubic" + }, + "1.0": { + "vector": [0, 0, 0], + "easing": "easeInOutCubic" + } + } + } + } + }, + "animation.arctic.baby_emperor.running": { + "loop": true + } }, "geckolib_format_version": 2 } \ No newline at end of file diff --git a/src/main/resources/assets/arctic/geo/penguin/baby_emperor.geo.json b/src/main/resources/assets/arctic/geo/penguin/baby_emperor.geo.json index b0ab5eb..5bc3baf 100644 --- a/src/main/resources/assets/arctic/geo/penguin/baby_emperor.geo.json +++ b/src/main/resources/assets/arctic/geo/penguin/baby_emperor.geo.json @@ -1,88 +1,90 @@ { - "format_version": "1.12.0", - "minecraft:geometry": [ - { - "description": { - "identifier": "geometry.Arctic-Penguin-BabyEmperor", - "texture_width": 64, - "texture_height": 64, - "visible_bounds_width": 2, - "visible_bounds_height": 3.5, - "visible_bounds_offset": [0, 1.25, 0] - }, - "bones": [ - { - "name": "Head", - "pivot": [0, 0, 0], - "cubes": [ - {"origin": [-3, 10.5, -2.75], "size": [6, 5, 5.5], "uv": [0, 16]} - ] - }, - { - "name": "Beak", - "parent": "Head", - "pivot": [0, 11.6, -2], - "cubes": [ - {"origin": [-1, 11.35, -4], "size": [2, 1, 2], "pivot": [0, 11.6, -2], "rotation": [7.5, 0, 0], "uv": [22, 3]} - ] - }, - { - "name": "BodyAll", - "pivot": [0, 5.5, 0], - "cubes": [ - {"origin": [-4, 0.5, -3], "size": [8, 10, 6], "uv": [0, 0]} - ] - }, - { - "name": "Tail", - "parent": "BodyAll", - "pivot": [0, 0.5, 2.5], - "cubes": [ - {"origin": [-1.5, 0.5, 2.5], "size": [3, 1, 2], "pivot": [0, 0.5, 2.5], "rotation": [-5, 0, 0], "uv": [22, 0]} - ] - }, - { - "name": "Arms", - "parent": "BodyAll", - "pivot": [-4, 10.5, 0] - }, - { - "name": "RightArm", - "parent": "Arms", - "pivot": [4, 10.5, 0], - "cubes": [ - {"origin": [3.25, 2.2, -2.75], "size": [1, 8.25, 5.5], "pivot": [4, 10.5, 0], "rotation": [0, 0, -5], "uv": [24, 11]} - ] - }, - { - "name": "LeftArm", - "parent": "Arms", - "pivot": [-4, 10.5, 0], - "cubes": [ - {"origin": [-4.25, 2.2, -2.75], "size": [1, 8.25, 5.5], "pivot": [-4, 10.5, 0], "rotation": [0, 0, 5], "uv": [17, 21]} - ] - }, - { - "name": "Feet", - "pivot": [0, 0, 0] - }, - { - "name": "LeftFoot", - "parent": "Feet", - "pivot": [0, 0, 0], - "cubes": [ - {"origin": [0.5, 0, -3.75], "size": [3, 1, 6], "pivot": [0, 0, 0], "rotation": [2.5, -2.5, 0], "uv": [0, 28]} - ] - }, - { - "name": "RightFoot", - "parent": "Feet", - "pivot": [0, 0, 0], - "cubes": [ - {"origin": [-3.5, 0, -3.75], "size": [3, 1, 6], "pivot": [0, 0, 0], "rotation": [2.5, 2.5, 0], "uv": [28, 0]} - ] - } - ] - } - ] + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.Arctic-Penguin-BabyEmperor", + "texture_width": 64, + "texture_height": 64, + "visible_bounds_width": 2, + "visible_bounds_height": 2.5, + "visible_bounds_offset": [0, 0.75, 0] + }, + "bones": [ + { + "name": "Body", + "pivot": [0, 0, 0], + "cubes": [ + {"origin": [-3.75, 0.55, -2.8], "size": [7.5, 10, 6], "pivot": [0, 0, 0], "rotation": [1, 0, 0], "uv": [0, 0]} + ] + }, + { + "name": "Head", + "parent": "Body", + "pivot": [0, 0, 0], + "cubes": [ + {"origin": [-3, 10.5, -2.75], "size": [6, 5, 5.5], "uv": [0, 16]} + ] + }, + { + "name": "Beak", + "parent": "Head", + "pivot": [0, 11.6, -2], + "cubes": [ + {"origin": [-1, 11.35, -4], "size": [2, 1, 2], "pivot": [0, 11.6, -2], "rotation": [7.5, 0, 0], "uv": [22, 3]} + ] + }, + { + "name": "Tail", + "parent": "Body", + "pivot": [0, 0.5, 2.5], + "cubes": [ + {"origin": [-1.5, 0.5, 2.5], "size": [3, 1, 2], "pivot": [0, 0.5, 2.5], "rotation": [-5, 0, 0], "uv": [22, 0]} + ] + }, + { + "name": "Arms", + "parent": "Body", + "pivot": [-4, 10.5, 0] + }, + { + "name": "LeftArm", + "parent": "Arms", + "pivot": [4, 10.5, 0], + "cubes": [ + {"origin": [3.25, 2.2, -1.5], "size": [1, 8.25, 3.5], "pivot": [4, 10.5, 0], "rotation": [-2.5, 0, -5], "uv": [26, 13]} + ] + }, + { + "name": "RightArm", + "parent": "Arms", + "pivot": [-4, 10.5, 0], + "cubes": [ + {"origin": [-4.25, 2.2, -1.5], "size": [1, 8.25, 3.5], "pivot": [-4, 10.5, 0], "rotation": [-2.5, 0, 5], "uv": [19, 23]} + ] + }, + { + "name": "Foots", + "parent": "Body", + "pivot": [0, 0, 0] + }, + { + "name": "LeftFoot", + "parent": "Foots", + "pivot": [0, 0, 0], + "cubes": [ + {"origin": [0.5, 0, -4.25], "size": [3, 1, 6.5], "pivot": [0, 0, 0], "rotation": [2.5, -2.5, 0], "uv": [0, 28]} + ] + }, + { + "name": "RightFoot", + "parent": "Foots", + "pivot": [0, 0, 0], + "cubes": [ + {"origin": [-3.5, 0, -4.25], "size": [3, 1, 6.5], "pivot": [0, 0, 0], "rotation": [2.5, 2.5, 0], "uv": [28, 0]} + ] + } + ] + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/arctic/geo/seal/seal.geo.json b/src/main/resources/assets/arctic/geo/seal/seal.geo.json index 907ab7c..d9eba5f 100644 --- a/src/main/resources/assets/arctic/geo/seal/seal.geo.json +++ b/src/main/resources/assets/arctic/geo/seal/seal.geo.json @@ -11,8 +11,27 @@ "visible_bounds_offset": [0, 0.75, 0] }, "bones": [ + { + "name": "Body", + "pivot": [0, 10, 15.5], + "cubes": [ + { + "origin": [-7, 0, -3.5], + "size": [14, 9, 21], + "uv": { + "north": {"uv": [35, 12], "uv_size": [14, 9]}, + "east": {"uv": [21, 0], "uv_size": [9, 21]}, + "south": {"uv": [35, 12], "uv_size": [14, 9]}, + "west": {"uv": [21, 0], "uv_size": [9, 21]}, + "up": {"uv": [21, 0], "uv_size": [14, 21]}, + "down": {"uv": [21, 21], "uv_size": [14, -21]} + } + } + ] + }, { "name": "Head", + "parent": "Body", "pivot": [0, 1.75, 0], "rotation": [-6, 5, 0], "cubes": [ @@ -28,51 +47,51 @@ ] }, { - "name": "Whiskas", + "name": "Whiskers", "parent": "Head", - "pivot": [0, 1.75, 0] + "pivot": [0, 2, 0] }, { "name": "Left", - "parent": "Whiskas", - "pivot": [-2, 3.5, -11.5], - "rotation": [0, -5, -7.5], + "parent": "Whiskers", + "pivot": [-2, 3.75, -11.5], + "rotation": [0.43688, -4.98093, -12.519], "cubes": [ { - "origin": [-6.75, 3.25, -11.52], + "origin": [-6.75, 3.5, -11.52], "size": [5, 0.5, 0], "uv": { "north": {"uv": [8, 11], "uv_size": [-6, 1]}, "east": {"uv": [1, 10], "uv_size": [0, 3]}, - "south": {"uv": [1, 10], "uv_size": [1, 5]}, + "south": {"uv": [1, 9], "uv_size": [0, 0]}, "west": {"uv": [6, 10], "uv_size": [0, 3]}, "up": {"uv": [1, 10], "uv_size": [5, 0]}, "down": {"uv": [6, 10], "uv_size": [5, 0]} } }, { - "origin": [-6.75, 4, -11.52], + "origin": [-6.75, 4.25, -11.52], "size": [5, 0.5, 0], - "pivot": [-2, 3.5, -11.5], + "pivot": [-2, 3.75, -11.5], "rotation": [0, 0, 5], "uv": { "north": {"uv": [8, 11], "uv_size": [-6, 1]}, "east": {"uv": [1, 10], "uv_size": [0, 3]}, - "south": {"uv": [1, 10], "uv_size": [1, 5]}, + "south": {"uv": [1, 9], "uv_size": [0, 0]}, "west": {"uv": [6, 10], "uv_size": [0, 3]}, "up": {"uv": [1, 10], "uv_size": [5, 0]}, "down": {"uv": [6, 10], "uv_size": [5, 0]} } }, { - "origin": [-6.75, 2.5, -11.52], + "origin": [-6.75, 2.75, -11.52], "size": [5, 0.5, 0], - "pivot": [-2, 3.5, -11.5], + "pivot": [-2, 3.75, -11.5], "rotation": [0, 0, -5], "uv": { "north": {"uv": [8, 11], "uv_size": [-6, 1]}, "east": {"uv": [1, 10], "uv_size": [0, 3]}, - "south": {"uv": [1, 10], "uv_size": [1, 5]}, + "south": {"uv": [1, 9], "uv_size": [0, 0]}, "west": {"uv": [6, 10], "uv_size": [0, 3]}, "up": {"uv": [1, 10], "uv_size": [5, 0]}, "down": {"uv": [6, 10], "uv_size": [5, 0]} @@ -82,45 +101,45 @@ }, { "name": "Right", - "parent": "Whiskas", - "pivot": [2, 3.5, -11.5], - "rotation": [0, 5, 7.5], + "parent": "Whiskers", + "pivot": [2, 3.75, -11.5], + "rotation": [0.43688, 4.98093, 12.519], "cubes": [ { - "origin": [1.75, 4, -11.52], + "origin": [1.75, 4.25, -11.52], "size": [5, 0.5, 0], - "pivot": [2, 3.5, -11.5], + "pivot": [2, 3.75, -11.5], "rotation": [0, 0, -5], "uv": { "north": {"uv": [2, 11], "uv_size": [6, 1]}, "east": {"uv": [1, 6], "uv_size": [0, 3]}, - "south": {"uv": [1, 10], "uv_size": [1, 5]}, + "south": {"uv": [1, 9], "uv_size": [0, 0]}, "west": {"uv": [6, 6], "uv_size": [0, 3]}, "up": {"uv": [1, 6], "uv_size": [5, 0]}, "down": {"uv": [6, 6], "uv_size": [5, 0]} } }, { - "origin": [1.75, 3.25, -11.52], + "origin": [1.75, 3.5, -11.52], "size": [5, 0.5, 0], "uv": { "north": {"uv": [2, 11], "uv_size": [6, 1]}, "east": {"uv": [1, 6], "uv_size": [0, 3]}, - "south": {"uv": [1, 10], "uv_size": [1, 5]}, + "south": {"uv": [1, 9], "uv_size": [0, 0]}, "west": {"uv": [6, 6], "uv_size": [0, 3]}, "up": {"uv": [1, 6], "uv_size": [5, 0]}, "down": {"uv": [6, 6], "uv_size": [5, 0]} } }, { - "origin": [1.75, 2.5, -11.52], + "origin": [1.75, 2.75, -11.52], "size": [5, 0.5, 0], - "pivot": [2, 3.5, -11.5], + "pivot": [2, 3.75, -11.5], "rotation": [0, 0, 5], "uv": { "north": {"uv": [2, 11], "uv_size": [6, 1]}, "east": {"uv": [1, 6], "uv_size": [0, 3]}, - "south": {"uv": [1, 10], "uv_size": [1, 5]}, + "south": {"uv": [1, 9], "uv_size": [0, 0]}, "west": {"uv": [6, 6], "uv_size": [0, 3]}, "up": {"uv": [1, 6], "uv_size": [5, 0]}, "down": {"uv": [6, 6], "uv_size": [5, 0]} @@ -129,27 +148,53 @@ ] }, { - "name": "Body", - "pivot": [0, 10, 15.5], + "name": "Foots", + "parent": "Body", + "pivot": [0, 0, 15] + }, + { + "name": "RightFoot", + "parent": "Foots", + "pivot": [-4.75, 0.5, 15], "cubes": [ - {"origin": [-7, 0, -3.5], "size": [14, 7, 21], "uv": [0, 0]}, - {"origin": [-1.5, 6, 17], "size": [3, 1, 5], "uv": [-1, -1]} + {"origin": [-6.5, -0.25, 15], "size": [4, 1.5, 7], "pivot": [-4.75, 0.5, 15], "rotation": [0, -7.5, 0], "uv": [33, 39]} ] }, { - "name": "bone2", - "pivot": [0, 0, 0], + "name": "LeftFoot", + "parent": "Foots", + "pivot": [4.5, 0.5, 15], "cubes": [ - {"origin": [-10, 0, -5], "size": [4, 1.5, 7], "uv": [0, 46]}, - {"origin": [6, 0, -5], "size": [4, 1.5, 7], "uv": [17, 47]} + {"origin": [2.5, -0.25, 15], "size": [4, 1.5, 7], "pivot": [4.5, 0.5, 15], "rotation": [0, 7.5, 0], "uv": [30, 28]} ] }, { - "name": "bone3", - "pivot": [0, 0, 15], + "name": "Arms", + "parent": "Body", + "pivot": [0, 0, 0] + }, + { + "name": "RightArm", + "parent": "Arms", + "pivot": [-4.75, 0.5, -3.5], "cubes": [ - {"origin": [-10.5, 0, 11], "size": [4, 1.5, 7], "uv": [33, 39]}, - {"origin": [6.5, 0, 11], "size": [4, 1.5, 7], "uv": [30, 28]} + {"origin": [-6.5, -0.25, -9], "size": [4, 1.5, 7], "pivot": [-4.75, 0.5, -3.5], "rotation": [0, 7.5, 0], "uv": [0, 46]} + ] + }, + { + "name": "LeftArm", + "parent": "Arms", + "pivot": [-4.75, 0.5, -3.5], + "cubes": [ + {"origin": [2.5, -0.25, -9], "size": [4, 1.5, 7], "pivot": [4.5, 0.5, -3.5], "rotation": [0, -7.5, 0], "uv": [17, 47]} + ] + }, + { + "name": "Tail", + "parent": "Body", + "pivot": [0, 7, 17.25], + "cubes": [ + {"origin": [-1.5, 6, 17], "size": [3, 1, 5], "uv": [0, 0]} ] } ] diff --git a/src/main/resources/assets/arctic/textures/entity/seal/seal.png b/src/main/resources/assets/arctic/textures/entity/seal/seal.png index 1cb20c38c5add507dcf66b4042b4adee7e830d0b..96ced190d4bbc50bfaee6917810ebae924ac17ce 100644 GIT binary patch delta 1423 zcmbW#{Xf$Q0KoAr<%XPx6OL}Db2{=Ed5D?jJk3MRB32&CI=l*bh?&@TB`e9pZ5|uW z$?V8Oj@OuBQc_Gr8kT3e8?wxXnYO$87w+@>`?t@CT9rzHA#f-P>4peME&nt#9QVOa zi?kp>Vd*(lhpriZ!PH2X4|FM&SKBXk3r^@Pg1}vyZ}giJHQaNm5d;!l1+C>t9(dHU zQr0KHPU?9-zO6vMre0c<|735Y&vOy)rw5Rc8)6R&le<>@teBjj-$ zEpWv2_VXTZm=~?|p7Ia{4D0OQQ{vUP?Bw|!_Q`mpc!Vd|?i|v~lwzXKtre%oi`^M9sD4wE;9d ziC9m+R5!oiIyyMX*8H|B{jAAOyXinnBfjZC#Lv}#PiXfN+xPILuOK51xgM>O=ETMZ!n@6R|)1~|L_LI{yEGBjJ zf=!G|B*XCs(T2v%1^DiU=VEVhWQfwbcE+^#7Q@P#l%GYBHPTswlOJFbkOVGYHDc2> zfOsdX4615MZcp;M1H*nRkXTesOz{q$)7NF02D9ait${oR5C{Z-h)#ZCKG_MU$zAql z=lrb0N^;YK>i3S8an4OFXBj*xPI1DneC%O=1AV)!sGfllI&$i1`(aZJaiB0-x;XJb zi;mqx(5iLD^q20$wBuD_vtnT(O8QC{m#{q`f~c2_Yu+>)R)}D#t{WM3)sSrN3Uc}O znZj{6`F&g_4Y-@XahmvUA=KZ?#>~Tij@BN++h-9(-qlm_R*Ewh6{rl-#FIML^=2?Iuv{%CD8PJ@*3*tE#vA6jiI{ z#K}JR)2RnzI%pd^{fpyl0B;o(5D-tfUdBr7yxIzMg}z)dU?w$~;g~dEo2}#ATV54& zRPvB>GQbJIu%=)rY3Yz(!lhm#5u58* zWMDVqEv35ZJIl4AqUY_GbPk7*^}hQ~UenH&ADePTQy9fN>|tprvxGjl1$!__tn4m{*P*R Z)#%Q=>88cM>i*LZr2AR7CfCb%{sE8J!^Z#s literal 1999 zcmcJQ`#;kQ1INE(3!B<#siWl@xm3cbsANOAG?Fy3u}PAMg`Ul2*}*cARF06%E$pm^ zNHN6@a|ts#gyeoZRAUZCF3a)!5zh~w_viI`|MdColjQ1RzZ0qs1pr{Dql2B>cGLeC z#U0yhJnJh20EG-kJB&LuXO2~uinK?3*y^oJG(l%fSAqi$q7aL~Gp%yezNAc4l1Die zdRPOLT%RRV3{d*|MCiaw%ehK^?BDj9;rk91A?+87=Q|EJmeRH~@8)LXs@d`{Ctzrx_q9^t>tzn6^%Gq6aLZ84TzfBfYjEKC9?C65 zu-@L?F|}1fYI0_0LRWs@)15Rk)+OjMq_e<1{fX+KeEbMZq=BBCu|56fVzIds2#1ex zMsRGj^d+pAQdB3{tGRuw2)669Wbq zK2DH7GOq}IQzIGD@S`Uk{#!BcV3`ObkP@o*Xc;C(?SI%_Air_l$h-xB-h3mCI_ecd zIq@yIm6w72AX;>n>d*RrWdaCM(AkMl(b8@&vxiqHAfLCdBMucgWhNS^f*MTHHLiJH zC^k=)%k%6P8d!(IZe!ziDFS;Kg6BT7oD6J$2E?I(@Qd_$vzl7&B4nk6X={3{R`01J zluV`m(50W`u6x;yP$k4%7VALh2BiDTE-gh%=LD4_aSbCJvR!VZk-GGuY-7V^z!*BgB=>v@YeSFSpoOf3`P$^+HfAyW=Zp zPXB?CXy0E?+LUqh!b07;$R&LrevA@eVP)kV6y5uUsCYFW@fI0UYkXT?=-sfeJ=#@g zc6Qdmgvd{ckCz|f)ApB?l+>#aUQVz}v&qjuLQ56I>fD8q#tpS^c;NF_a@)o-$*r}F-4&C?Ke?B(2) zfQ(9@f)HCbU0wNG(PaGs{(2y1wT~ZZ#>%3AEIl-B1zb7KjC*-)Z12p*-)+C1f@o*2 ze*dO2Oy!@?^azc+OqI3?Y{?3|=6e+@gKl|fy&IzUU}qs?$_=i9CR|!q8M15LTQk)E z(d2T9c2O-WmS?~yuG7f-lvMORbKDs0Ia-1UO!EVd``&W9uT{$-Fmz_4mlTS3aTm(R zj@>KeBpN0n!rND-g~+Amv~gSnvR*9W-LyJ>C z5k&cvjo%Qhp$)TW@2n&5M_3zdswn@&MUEcT3*T6`{hc&?BBVV7ezpa*AMv#PwmRZIW#>ZI2TF@@1Q z8Y|0pL278YKpymAErSQHg_TI>-0lPrHMy?QA1=Nzt$9z{{L)k^XbC1Ju&?>3xu{zx zFjvuqXjpwD`oJ~m**tOx++WFqRMRBfh#e!%Eb0KL91CIpX-?|tVt+5H59%PhyD()6 zXnH%ur4Q*b2jh7cEPhT~l4O&UGbi@0f2}mtK^S&Qmo7;X;{wO$JS_r&O9{$lEk??x z1H;E>RxQu@X$HZnL>G;{6?z2E2fp=|2YHl* zys6iAir5<0ouBMV3WtBFd1OuO^ai!A*+6(>uArk9ctfC?v_(@J3~sm=wQfN;L#tg* z;csCJ;6{I~En=#ChCb}JQPfUA{6CPkWwj+25W@VpX|{K0`=|lOb1rseHl(