From 6784bfa5aa155634b29f20f684ea9e9fdaa84899 Mon Sep 17 00:00:00 2001 From: Yang Xizhi <60341015+GlodBlock@users.noreply.github.com> Date: Thu, 26 Jan 2023 18:45:34 +0800 Subject: [PATCH] large crafting storage block (#236) --- .../java/appeng/api/definitions/IBlocks.java | 8 +++ .../BlockAdvancedCraftingStorage.java | 54 ++++++++++++++++++ .../block/crafting/BlockCraftingStorage.java | 21 +++---- .../block/crafting/BlockCraftingUnit.java | 3 +- .../client/texture/ExtraBlockTextures.java | 8 +++ .../core/api/definitions/ApiBlocks.java | 33 +++++++++-- .../recipes/game/DisassembleRecipe.java | 6 +- .../crafting/TileCraftingStorageTile.java | 36 ++++++++++-- .../appliedenergistics2/lang/en_US.lang | 4 ++ .../recipes/network/crafting/cpu.recipe | 20 +++++++ .../blocks/BlockCraftingStorage1024k.png | Bin 0 -> 364 bytes .../blocks/BlockCraftingStorage1024kFit.png | Bin 0 -> 313 bytes .../blocks/BlockCraftingStorage16384k.png | Bin 0 -> 394 bytes .../blocks/BlockCraftingStorage16384kFit.png | Bin 0 -> 301 bytes .../blocks/BlockCraftingStorage256k.png | Bin 0 -> 358 bytes .../blocks/BlockCraftingStorage256kFit.png | Bin 0 -> 312 bytes .../blocks/BlockCraftingStorage4096k.png | Bin 0 -> 341 bytes .../blocks/BlockCraftingStorage4096kFit.png | Bin 0 -> 293 bytes 18 files changed, 170 insertions(+), 23 deletions(-) create mode 100644 src/main/java/appeng/block/crafting/BlockAdvancedCraftingStorage.java create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage1024k.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage1024kFit.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage16384k.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage16384kFit.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage256k.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage256kFit.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage4096k.png create mode 100644 src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage4096kFit.png diff --git a/src/main/java/appeng/api/definitions/IBlocks.java b/src/main/java/appeng/api/definitions/IBlocks.java index 923ac806d3e..6ba8e662d32 100644 --- a/src/main/java/appeng/api/definitions/IBlocks.java +++ b/src/main/java/appeng/api/definitions/IBlocks.java @@ -173,6 +173,14 @@ public interface IBlocks { ITileDefinition craftingStorage64k(); + ITileDefinition craftingStorage256k(); + + ITileDefinition craftingStorage1024k(); + + ITileDefinition craftingStorage4096k(); + + ITileDefinition craftingStorage16384k(); + ITileDefinition craftingMonitor(); ITileDefinition molecularAssembler(); diff --git a/src/main/java/appeng/block/crafting/BlockAdvancedCraftingStorage.java b/src/main/java/appeng/block/crafting/BlockAdvancedCraftingStorage.java new file mode 100644 index 00000000000..2710e25edc4 --- /dev/null +++ b/src/main/java/appeng/block/crafting/BlockAdvancedCraftingStorage.java @@ -0,0 +1,54 @@ +package appeng.block.crafting; + +import appeng.client.texture.ExtraBlockTextures; +import appeng.tile.crafting.TileCraftingStorageTile; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +public class BlockAdvancedCraftingStorage extends BlockCraftingStorage { + + public BlockAdvancedCraftingStorage() { + this.setTileEntity(TileCraftingStorageTile.class); + } + + @Override + public IIcon getIcon(final int direction, final int metadata) { + switch (metadata & (~4)) { + default: + return super.getIcon(0, -1); + case 0: + return ExtraBlockTextures.BlockCraftingStorage256k.getIcon(); + case 1: + return ExtraBlockTextures.BlockCraftingStorage1024k.getIcon(); + case 2: + return ExtraBlockTextures.BlockCraftingStorage4096k.getIcon(); + case 3: + return ExtraBlockTextures.BlockCraftingStorage16384k.getIcon(); + + case FLAG_FORMED: + return ExtraBlockTextures.BlockCraftingStorage256kFit.getIcon(); + case 1 | FLAG_FORMED: + return ExtraBlockTextures.BlockCraftingStorage1024kFit.getIcon(); + case 2 | FLAG_FORMED: + return ExtraBlockTextures.BlockCraftingStorage4096kFit.getIcon(); + case 3 | FLAG_FORMED: + return ExtraBlockTextures.BlockCraftingStorage16384kFit.getIcon(); + } + } + + @Override + public String getUnlocalizedName(final ItemStack is) { + switch (is.getItemDamage()) { + case 0: + return "tile.appliedenergistics2.BlockCraftingStorage256k"; + case 1: + return "tile.appliedenergistics2.BlockCraftingStorage1024k"; + case 2: + return "tile.appliedenergistics2.BlockCraftingStorage4096k"; + case 3: + return "tile.appliedenergistics2.BlockCraftingStorage16384k"; + default: + return this.getItemUnlocalizedName(is); + } + } +} diff --git a/src/main/java/appeng/block/crafting/BlockCraftingStorage.java b/src/main/java/appeng/block/crafting/BlockCraftingStorage.java index 49745b24c4a..c0ea3edbc4a 100644 --- a/src/main/java/appeng/block/crafting/BlockCraftingStorage.java +++ b/src/main/java/appeng/block/crafting/BlockCraftingStorage.java @@ -74,18 +74,15 @@ public void getCheckedSubBlocks(final Item item, final CreativeTabs tabs, final @Override public String getUnlocalizedName(final ItemStack is) { - if (is.getItemDamage() == 1) { - return "tile.appliedenergistics2.BlockCraftingStorage4k"; - } - - if (is.getItemDamage() == 2) { - return "tile.appliedenergistics2.BlockCraftingStorage16k"; - } - - if (is.getItemDamage() == 3) { - return "tile.appliedenergistics2.BlockCraftingStorage64k"; + switch (is.getItemDamage()) { + case 1: + return "tile.appliedenergistics2.BlockCraftingStorage4k"; + case 2: + return "tile.appliedenergistics2.BlockCraftingStorage16k"; + case 3: + return "tile.appliedenergistics2.BlockCraftingStorage64k"; + default: + return this.getItemUnlocalizedName(is); } - - return this.getItemUnlocalizedName(is); } } diff --git a/src/main/java/appeng/block/crafting/BlockCraftingUnit.java b/src/main/java/appeng/block/crafting/BlockCraftingUnit.java index c979d7532b9..c808dce807b 100644 --- a/src/main/java/appeng/block/crafting/BlockCraftingUnit.java +++ b/src/main/java/appeng/block/crafting/BlockCraftingUnit.java @@ -53,7 +53,7 @@ public BlockCraftingUnit() { @Override @SideOnly(Side.CLIENT) protected RenderBlockCraftingCPU getRenderer() { - return new RenderBlockCraftingCPU(); + return new RenderBlockCraftingCPU<>(); } @Override @@ -138,7 +138,6 @@ public String getUnlocalizedName(final ItemStack is) { } else if (is.getItemDamage() == 3) { return "tile.appliedenergistics2.BlockCraftingAccelerator16x"; } - return this.getItemUnlocalizedName(is); } diff --git a/src/main/java/appeng/client/texture/ExtraBlockTextures.java b/src/main/java/appeng/client/texture/ExtraBlockTextures.java index 2b1186bc7a7..6ee0ec9d1f6 100644 --- a/src/main/java/appeng/client/texture/ExtraBlockTextures.java +++ b/src/main/java/appeng/client/texture/ExtraBlockTextures.java @@ -116,6 +116,10 @@ public enum ExtraBlockTextures { BlockCraftingStorage4k("BlockCraftingStorage4k"), BlockCraftingStorage16k("BlockCraftingStorage16k"), BlockCraftingStorage64k("BlockCraftingStorage64k"), + BlockCraftingStorage256k("BlockCraftingStorage256k"), + BlockCraftingStorage1024k("BlockCraftingStorage1024k"), + BlockCraftingStorage4096k("BlockCraftingStorage4096k"), + BlockCraftingStorage16384k("BlockCraftingStorage16384k"), BlockCraftingAcceleratorFit("BlockCraftingAcceleratorFit"), BlockCraftingAccelerator4xFit("BlockCraftingAccelerator4xFit"), @@ -129,6 +133,10 @@ public enum ExtraBlockTextures { BlockCraftingStorage4kFit("BlockCraftingStorage4kFit"), BlockCraftingStorage16kFit("BlockCraftingStorage16kFit"), BlockCraftingStorage64kFit("BlockCraftingStorage64kFit"), + BlockCraftingStorage256kFit("BlockCraftingStorage256kFit"), + BlockCraftingStorage1024kFit("BlockCraftingStorage1024kFit"), + BlockCraftingStorage4096kFit("BlockCraftingStorage4096kFit"), + BlockCraftingStorage16384kFit("BlockCraftingStorage16384kFit"), BlockCraftingUnitRing("BlockCraftingUnitRing"), BlockCraftingUnitRingLongRotated("BlockCraftingUnitRingLongRotated"), diff --git a/src/main/java/appeng/core/api/definitions/ApiBlocks.java b/src/main/java/appeng/core/api/definitions/ApiBlocks.java index c48dd8efc1c..ec10c3db5b5 100644 --- a/src/main/java/appeng/core/api/definitions/ApiBlocks.java +++ b/src/main/java/appeng/core/api/definitions/ApiBlocks.java @@ -23,10 +23,7 @@ import appeng.api.definitions.ITileDefinition; import appeng.api.util.IOrientableBlock; import appeng.block.AEBaseSlabBlock; -import appeng.block.crafting.BlockCraftingMonitor; -import appeng.block.crafting.BlockCraftingStorage; -import appeng.block.crafting.BlockCraftingUnit; -import appeng.block.crafting.BlockMolecularAssembler; +import appeng.block.crafting.*; import appeng.block.grindstone.BlockCrank; import appeng.block.grindstone.BlockGrinder; import appeng.block.misc.*; @@ -102,6 +99,10 @@ public final class ApiBlocks implements IBlocks { private final ITileDefinition craftingStorage4k; private final ITileDefinition craftingStorage16k; private final ITileDefinition craftingStorage64k; + private final ITileDefinition craftingStorage256k; + private final ITileDefinition craftingStorage1024k; + private final ITileDefinition craftingStorage4096k; + private final ITileDefinition craftingStorage16384k; private final ITileDefinition craftingMonitor; private final ITileDefinition molecularAssembler; private final ITileDefinition lightDetector; @@ -188,6 +189,10 @@ public ApiBlocks(final DefinitionConstructor constructor) { this.craftingStorage4k = new WrappedDamageItemDefinition(this.craftingStorage1k, 1); this.craftingStorage16k = new WrappedDamageItemDefinition(this.craftingStorage1k, 2); this.craftingStorage64k = new WrappedDamageItemDefinition(this.craftingStorage1k, 3); + this.craftingStorage256k = constructor.registerTileDefinition(new BlockAdvancedCraftingStorage()); + this.craftingStorage1024k = new WrappedDamageItemDefinition(this.craftingStorage256k, 1); + this.craftingStorage4096k = new WrappedDamageItemDefinition(this.craftingStorage256k, 2); + this.craftingStorage16384k = new WrappedDamageItemDefinition(this.craftingStorage256k, 3); this.craftingMonitor = constructor.registerTileDefinition(new BlockCraftingMonitor()); this.molecularAssembler = constructor.registerTileDefinition(new BlockMolecularAssembler()); this.lightDetector = constructor.registerTileDefinition(lightDetector); @@ -540,6 +545,26 @@ public ITileDefinition craftingStorage64k() { return this.craftingStorage64k; } + @Override + public ITileDefinition craftingStorage256k() { + return this.craftingStorage256k; + } + + @Override + public ITileDefinition craftingStorage1024k() { + return this.craftingStorage1024k; + } + + @Override + public ITileDefinition craftingStorage4096k() { + return this.craftingStorage4096k; + } + + @Override + public ITileDefinition craftingStorage16384k() { + return this.craftingStorage16384k; + } + @Override public ITileDefinition craftingMonitor() { return this.craftingMonitor; diff --git a/src/main/java/appeng/recipes/game/DisassembleRecipe.java b/src/main/java/appeng/recipes/game/DisassembleRecipe.java index c5c98cb6ae8..778a4a26adc 100644 --- a/src/main/java/appeng/recipes/game/DisassembleRecipe.java +++ b/src/main/java/appeng/recipes/game/DisassembleRecipe.java @@ -48,7 +48,7 @@ public DisassembleRecipe() { final IMaterials mats = definitions.materials(); this.cellMappings = new HashMap<>(8); - this.nonCellMappings = new HashMap<>(5); + this.nonCellMappings = new HashMap<>(9); this.cellMappings.put(items.cell1k(), mats.cell1kPart()); this.cellMappings.put(items.cell4k(), mats.cell4kPart()); @@ -64,6 +64,10 @@ public DisassembleRecipe() { this.nonCellMappings.put(blocks.craftingStorage4k(), mats.cell4kPart()); this.nonCellMappings.put(blocks.craftingStorage16k(), mats.cell16kPart()); this.nonCellMappings.put(blocks.craftingStorage64k(), mats.cell64kPart()); + this.nonCellMappings.put(blocks.craftingStorage256k(), mats.cell256kPart()); + this.nonCellMappings.put(blocks.craftingStorage1024k(), mats.cell1024kPart()); + this.nonCellMappings.put(blocks.craftingStorage4096k(), mats.cell4096kPart()); + this.nonCellMappings.put(blocks.craftingStorage16384k(), mats.cell16384kPart()); } @Override diff --git a/src/main/java/appeng/tile/crafting/TileCraftingStorageTile.java b/src/main/java/appeng/tile/crafting/TileCraftingStorageTile.java index eecebdf4001..8d4f2d445eb 100644 --- a/src/main/java/appeng/tile/crafting/TileCraftingStorageTile.java +++ b/src/main/java/appeng/tile/crafting/TileCraftingStorageTile.java @@ -20,6 +20,8 @@ import appeng.api.AEApi; import appeng.api.definitions.IBlocks; +import appeng.block.crafting.BlockAdvancedCraftingStorage; +import net.minecraft.block.Block; import net.minecraft.item.ItemStack; public class TileCraftingStorageTile extends TileCraftingTile { @@ -49,6 +51,30 @@ protected ItemStack getItemFromTile(final Object obj) { return stack; } break; + case 256: + for (final ItemStack stack : + blocks.craftingStorage256k().maybeStack(1).asSet()) { + return stack; + } + break; + case 1024: + for (final ItemStack stack : + blocks.craftingStorage1024k().maybeStack(1).asSet()) { + return stack; + } + break; + case 4096: + for (final ItemStack stack : + blocks.craftingStorage4096k().maybeStack(1).asSet()) { + return stack; + } + break; + case 16384: + for (final ItemStack stack : + blocks.craftingStorage16384k().maybeStack(1).asSet()) { + return stack; + } + break; } return super.getItemFromTile(obj); @@ -69,17 +95,19 @@ public int getStorageBytes() { if (this.worldObj == null || this.notLoaded()) { return 0; } + Block block = this.worldObj.getBlock(this.xCoord, this.yCoord, this.zCoord); + int blockMultiplier = block instanceof BlockAdvancedCraftingStorage ? 256 : 1; switch (this.worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord) & 3) { default: case 0: - return 1024; + return KILO_SCALAR * blockMultiplier; case 1: - return 4 * 1024; + return 4 * KILO_SCALAR * blockMultiplier; case 2: - return 16 * 1024; + return 16 * KILO_SCALAR * blockMultiplier; case 3: - return 64 * 1024; + return 64 * KILO_SCALAR * blockMultiplier; } } } diff --git a/src/main/resources/assets/appliedenergistics2/lang/en_US.lang b/src/main/resources/assets/appliedenergistics2/lang/en_US.lang index 2c7ee52ee45..8c926ae7f69 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/en_US.lang +++ b/src/main/resources/assets/appliedenergistics2/lang/en_US.lang @@ -47,6 +47,10 @@ tile.appliedenergistics2.BlockCraftingStorage.name=1k Crafting Storage tile.appliedenergistics2.BlockCraftingStorage4k.name=4k Crafting Storage tile.appliedenergistics2.BlockCraftingStorage16k.name=16k Crafting Storage tile.appliedenergistics2.BlockCraftingStorage64k.name=64k Crafting Storage +tile.appliedenergistics2.BlockCraftingStorage256k.name=256k Crafting Storage +tile.appliedenergistics2.BlockCraftingStorage1024k.name=1024k Crafting Storage +tile.appliedenergistics2.BlockCraftingStorage4096k.name=4096k Crafting Storage +tile.appliedenergistics2.BlockCraftingStorage16384k.name=16384k Crafting Storage tile.appliedenergistics2.BlockCraftingAccelerator.name=Crafting Co-Processing Unit tile.appliedenergistics2.BlockCraftingAccelerator4x.name=Quad Core Co-Processing Unit tile.appliedenergistics2.BlockCraftingAccelerator16x.name=16 Core Co-Processing Unit diff --git a/src/main/resources/assets/appliedenergistics2/recipes/network/crafting/cpu.recipe b/src/main/resources/assets/appliedenergistics2/recipes/network/crafting/cpu.recipe index d41da13dd33..3755472205e 100644 --- a/src/main/resources/assets/appliedenergistics2/recipes/network/crafting/cpu.recipe +++ b/src/main/resources/assets/appliedenergistics2/recipes/network/crafting/cpu.recipe @@ -49,3 +49,23 @@ shapeless= ae2:BlockCraftingUnit:0 ae2:ItemMaterial.Cell64kPart -> ae2:BlockCraftingStorage:3 + +shapeless= + ae2:BlockCraftingUnit:0 + ae2:ItemMaterial.Cell256kPart + -> ae2:BlockAdvancedCraftingStorage:0 + +shapeless= + ae2:BlockCraftingUnit:0 + ae2:ItemMaterial.Cell1024kPart + -> ae2:BlockAdvancedCraftingStorage:1 + +shapeless= + ae2:BlockCraftingUnit:0 + ae2:ItemMaterial.Cell4096kPart + -> ae2:BlockAdvancedCraftingStorage:2 + +shapeless= + ae2:BlockCraftingUnit:0 + ae2:ItemMaterial.Cell16384kPart + -> ae2:BlockAdvancedCraftingStorage:3 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage1024k.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage1024k.png new file mode 100644 index 0000000000000000000000000000000000000000..07acb093ac9d662f786784ad2dfa2614b4bb6876 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z_$#98Qbry z%m)fembgZg1m~xflqVLYG880c=9TE>rIsj|=o#o48GcmAoC;L5*VDx@#KM2-q?^3W z4m>WG&rI6CW|4+F_qsl*AKv;Cw=I@Q?oXBBQ;lHW^l^{r=}p$x^CpW_L~Oa{@+7ZO z<#~qUgPRN&79aS!Bi-?G)Qz5H2VMsJnR(*Ee(|Tdg7XCytM3zt`l3;=vi0bG2DJrg zJ~fK@$F(b$9ytAl`+>z3=l^pUcd-B!G^{^zs3Ax8E9;qW8*CaEGU&-Iv5)Tj_<%{_ z@I@0>IX3nPg-x2zw^jZ6xhZe!gT7uzi{LDiEAN!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z_$#98Qbry z%m)fembgZg1m~xflqVLYG880c=9TE>rIsj|=o#o48GcmAoC;Lb<>}%WV&T7ZQXpT0 z0*|xhW;v$+U$`p#QrAsNl=&<0vtnI|_hwZ#LCL0BwgJLNG_y0ew$D=VTP}8a!dspN zY96cWI==-7m#`=JHY6Ud$~^naF7-a&+>_tue9bx#zv8B|XsYQNu0NdTBg@~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage16384k.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage16384k.png new file mode 100644 index 0000000000000000000000000000000000000000..fb8f78d2e002b8e988dd10667253e12436570908 GIT binary patch literal 394 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z_$#98Qbry z%m)fembgZg1m~xflqVLYG880c=9TE>rIsj|=o#o48GcmAoC;KQ+tbA{#KM1SP_$5! z0nZns7xQJ0e=Kahb7k@ijVO7|dB=0jr!akTOiTQ9BUk8D((`GX1z1as-tX<0GwGma z?UaNEX9Ok)v$mh@V)P82R`o;U#yaiOoqIz6A3CLUO>z6RiM3ITmVq0}MVV6~+2*bK zzM%9%w(z<87laouC*AU%`e7lv_VbB4S?*5r8Q0j{YdoGjk1;?=o$JF?35D7HPt+XV zIh-q4;w_xVdE>{#X>I*`*Pfa9;e(Q{dE(upsf?yMzCquN53=wisIL5S`Q_2`;g4Qu j?b#^NV6AG^6#b8Z@lx~cV@`KK0mR_x>gTe~DWM4f*sztA literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage16384kFit.png b/src/main/resources/assets/appliedenergistics2/textures/blocks/BlockCraftingStorage16384kFit.png new file mode 100644 index 0000000000000000000000000000000000000000..a96db317c2e127fd7ce672acfbf9ece1c95ec165 GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z_$#98Qbry z%m)fembgZg1m~xflqVLYG880c=9TE>rIsj|=o#o48GcmAoC;J_=jq}YV&T7Zq9a#> z0T0XX|LmN0POP67+;9z=wuAk$T-&!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z_$#98Qbry z%m)fembgZg1m~xflqVLYG880c=9TE>rIsj|=o#o48GcmAoC;L5-P6S}#KM1WP#|BE z0nb;X!}j9I0qZZ!E->k5NH@4S@xt}J%R(k-?6L9Kz0cizm-Fn|z9EMR0!*j}tK<0l!lk0i+Z@`RN90 xS^|?xV9)F8ho5%udER2q$CkA0iOPwy(#H(*0%pW(O#ym=!PC{xWt~$(69AMdfsg!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z_$#98Qbry z%m)fembgZg1m~xflqVLYG880c=9TE>rIsj|=o#o48GcmAoC;Lb>FMGaV&T7Z!bRQ& z1s<1~6D-;mKV;iAy|b=U<`Ubi-wb~$isEj2A3Q2i?|4>l1?RMaWsfh{?GBAz!TD<8 z%7(8V@r!h?upDNL5MB^DA?n}#`EPy}JhfYyc|hlijH7FD>!x*AW@%3W3N)}XuUc)u zZQ6L(VN2^QhV^TAMcs7r4dC}>{o-`CZc#Pkaj$!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z_$#98Qbry z%m)fembgZg1m~xflqVLYG880c=9TE>rIsj|=o#o48GcmAoC;L5%+tj&#KM1T&_Uj2 z1D-cV3;9))Lbh&bVo&5|OPcOAbLI3oscSkso?N`#_~r+nxX2dO zsOb@6@NI9Ll@swyUAQYs!#2ol&$0#CO1F2!2c1^BbucR2O4;j5%3*ajwQ}AU4RcnM zxar=WX7c;G!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8X6a5n0T@z_$#98Qbry z%m)fembgZg1m~xflqVLYG880c=9TE>rIsj|=o#o48GcmAoC;J_=IP=XV&T7bk|SS( z0uRg2{`&`(R~!~!k-t7?%MFw21rHJrr73uOdMFvOP8D3iQoZlhrzexnPqPhSicZ+v z?zKVp{#vu@6)X>#dN>OrF515SGUwgaroa_F7Y@Dm|G+xSHl*n#ll8K*a$1g&{k!&5 hKGFW}lxjaIukZ9-!}<))NT3TCJYD@<);T3K0RX>;WXk{m literal 0 HcmV?d00001