Skip to content

Commit

Permalink
Merge branch 'master' of github.com:GTNewHorizons/GT5-Unofficial
Browse files Browse the repository at this point in the history
  • Loading branch information
ReignOfFROZE committed Jan 17, 2025
2 parents d973249 + f326d52 commit ec1c109
Show file tree
Hide file tree
Showing 2,774 changed files with 38,578 additions and 50,405 deletions.
88 changes: 43 additions & 45 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,81 +34,79 @@
* For more details, see https://docs.gradle.org/8.0.1/userguide/java_library_plugin.html#sec:java_library_configurations_graph
*/
dependencies {
api("com.github.GTNewHorizons:StructureLib:1.3.4:dev")
api("com.github.GTNewHorizons:StructureLib:1.4.2:dev")
api("net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev")
api("com.github.GTNewHorizons:NotEnoughItems:2.6.38-GTNH:dev")
api("com.github.GTNewHorizons:NotEnoughIds:2.1.2:dev")
api("com.github.GTNewHorizons:GTNHLib:0.5.11:dev")
api("com.github.GTNewHorizons:ModularUI:1.2.5:dev")
api("com.github.GTNewHorizons:ModularUI2:2.1.8-1.7.10:dev")
api("com.github.GTNewHorizons:waila:1.8.1:dev")
api("com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-459-GTNH:dev")
api("com.github.GTNewHorizons:AE2FluidCraft-Rework:1.3.36-gtnh:dev")
api("com.github.GTNewHorizons:NotEnoughItems:2.7.20-GTNH:dev")
api("com.github.GTNewHorizons:NotEnoughIds:2.1.6:dev")
api("com.github.GTNewHorizons:GTNHLib:0.6.2:dev")
api("com.github.GTNewHorizons:ModularUI:1.2.17:dev")
api("com.github.GTNewHorizons:ModularUI2:2.2.0-1.7.10:dev")
api("com.github.GTNewHorizons:waila:1.8.2:dev")
api("com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-521-GTNH:dev")
api("com.github.GTNewHorizons:AE2FluidCraft-Rework:1.4.22-gtnh:dev")
api('com.github.GTNewHorizons:Yamcl:0.6.0:dev')
api("com.github.GTNewHorizons:Postea:1.0.10:dev")
api("com.github.GTNewHorizons:Postea:1.0.13:dev")

compileOnlyApi('com.github.GTNewHorizons:ThaumicTinkerer:2.10.1:dev')
compileOnlyApi("com.github.GTNewHorizons:Mobs-Info:0.4.6-GTNH:dev")
compileOnlyApi("com.github.GTNewHorizons:Navigator:1.0.12:dev")
compileOnlyApi('com.github.GTNewHorizons:ThaumicTinkerer:2.11.1:dev')
compileOnlyApi("com.github.GTNewHorizons:Mobs-Info:0.5.0-GTNH:dev")
compileOnlyApi("com.github.GTNewHorizons:Navigator:1.0.15:dev")
implementation('com.github.GTNewHorizons:Baubles:1.0.4:dev') {transitive=false}
// Required to prevent an older bauble api from Extra Utilities from loading first in the javac classpath
compileOnly('com.github.GTNewHorizons:Baubles:1.0.4:dev') {transitive=false}

devOnlyNonPublishable("com.github.GTNewHorizons:Infernal-Mobs:1.9.0-GTNH:dev")
devOnlyNonPublishable("com.github.GTNewHorizons:Infernal-Mobs:1.10.0-GTNH:dev")

compileOnlyApi("com.github.GTNewHorizons:Avaritia:1.52:dev")
compileOnlyApi("com.github.GTNewHorizons:Avaritia:1.59:dev")

compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta6:api') { transitive = false }
compileOnlyApi("com.github.GTNewHorizons:AppleCore:3.3.2:dev") { transitive = false }
compileOnlyApi("com.github.GTNewHorizons:BuildCraft:7.1.39:dev") { transitive = false }
compileOnlyApi("com.github.GTNewHorizons:EnderIO:2.8.17:dev") { transitive = false }
compileOnlyApi("com.github.GTNewHorizons:ForestryMC:4.9.16:dev") { transitive = false }
compileOnlyApi("com.github.GTNewHorizons:ProjectRed:4.10.2-GTNH:dev") { transitive = false }
compileOnlyApi("com.github.GTNewHorizons:Railcraft:9.15.14:dev") { transitive = false }
compileOnlyApi('com.github.GTNewHorizons:Angelica:1.0.0-beta28:api') { transitive = false }
compileOnlyApi("com.github.GTNewHorizons:AppleCore:3.3.4:dev") { transitive = false }
compileOnlyApi("com.github.GTNewHorizons:BuildCraft:7.1.42:dev") { transitive = false }
compileOnlyApi("com.github.GTNewHorizons:EnderIO:2.9.2:dev") { transitive = false }
compileOnlyApi("com.github.GTNewHorizons:ForestryMC:4.10.1:dev") { transitive = false }
compileOnlyApi("com.github.GTNewHorizons:ProjectRed:4.11.0-GTNH:dev") { transitive = false }
compileOnlyApi("com.github.GTNewHorizons:Railcraft:9.16.3:dev") { transitive = false }

compileOnly("TGregworks:TGregworks:1.7.10-GTNH-1.0.27:deobf") {transitive = false}
compileOnly("com.github.GTNewHorizons:ThaumicBases:1.7.5:dev") { transitive = false }
compileOnly("com.github.GTNewHorizons:ThaumicBases:1.8.2:dev") { transitive = false }
compileOnly("com.github.GTNewHorizons:EnderCore:0.4.6:dev") { transitive = false }
compileOnly('com.github.GTNewHorizons:VisualProspecting:1.3.17:dev') { transitive = false }
compileOnly("com.github.GTNewHorizons:Galaxy-Space-GTNH:1.1.94-GTNH:dev") { transitive = false }
compileOnly('com.github.GTNewHorizons:VisualProspecting:1.4.0:dev') { transitive = false }
compileOnly("com.github.GTNewHorizons:Galaxy-Space-GTNH:1.1.106-GTNH:dev") { transitive = false }

compileOnlyApi("com.github.GTNewHorizons:Galacticraft:3.2.4-GTNH:dev") { transitive = false }
implementation("com.github.GTNewHorizons:TinkersConstruct:1.12.9-GTNH:dev")
compileOnlyApi("com.github.GTNewHorizons:Galacticraft:3.3.3-GTNH:dev") { transitive = false }
implementation("com.github.GTNewHorizons:TinkersConstruct:1.13.4-GTNH:dev")

compileOnly("com.github.GTNewHorizons:Chisel:2.15.2-GTNH:dev") { transitive = false }
compileOnly("com.github.GTNewHorizons:Translocators:1.2.1:dev") { transitive = false }
compileOnly("com.github.GTNewHorizons:Chisel:2.16.2-GTNH:dev") { transitive = false }
compileOnly("com.github.GTNewHorizons:Translocators:1.3.0:dev") { transitive = false }
compileOnly rfg.deobf("curse.maven:cofh-core-69162:2388751")
compileOnly("com.github.GTNewHorizons:Nuclear-Control:2.6.7:dev") { transitive = false }
compileOnly("thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev") { transitive = false }
compileOnly("com.github.GTNewHorizons:Hodgepodge:2.5.62:dev") { transitive = false }
compileOnly('com.github.GTNewHorizons:Botania:1.11.5-GTNH:dev') { transitive = false }
compileOnly('com.github.GTNewHorizons:HoloInventory:2.4.12-GTNH:dev') { transitive = false }
implementation("com.github.GTNewHorizons:Hodgepodge:2.6.15:dev")
compileOnly('com.github.GTNewHorizons:Botania:1.12.5-GTNH:dev') { transitive = false }
compileOnly('com.github.GTNewHorizons:HoloInventory:2.5.0-GTNH:dev') { transitive = false }
compileOnly rfg.deobf("curse.maven:extra-utilities-225561:2264384")
compileOnly rfg.deobf('curse.maven:minefactory-reloaded-66672:2366150')
compileOnly("com.github.GTNewHorizons:OpenComputers:1.10.23-GTNH:dev") {transitive = false}
compileOnly("com.github.GTNewHorizons:OpenComputers:1.11.4-GTNH:dev") {transitive = false}
// https://www.curseforge.com/minecraft/mc-mods/advancedsolarpanels
compileOnlyApi rfg.deobf('curse.maven:advsolar-362768:2885953')
compileOnly('com.github.GTNewHorizons:ThaumicEnergistics:1.6.25-GTNH:dev') {transitive = false}
compileOnly("com.github.GTNewHorizons:BloodMagic:1.6.6:dev") { transitive = false }
compileOnly('com.github.GTNewHorizons:ThaumicEnergistics:1.7.4-GTNH:dev') {transitive = false}
compileOnly("com.github.GTNewHorizons:BloodMagic:1.7.0:dev") { transitive = false }
compileOnly("com.github.GTNewHorizons:CraftTweaker:3.4.0:dev") { transitive = false }
compileOnly("com.github.GTNewHorizons:BetterLoadingScreen:1.7.0-GTNH:dev") { transitive = false }
compileOnly rfg.deobf("curse.maven:biomes-o-plenty-220318:2499612")

compileOnly('com.github.GTNewHorizons:SC2:2.2.0:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:Binnie:2.4.2:dev') {transitive = false}
compileOnly('com.github.GTNewHorizons:SC2:2.3.0:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:Binnie:2.5.2:dev') {transitive = false}
compileOnly('curse.maven:PlayerAPI-228969:2248928') {transitive=false}
compileOnly('com.github.GTNewHorizons:BlockRenderer6343:1.2.14:dev'){transitive=false}

shadowImplementation('com.github.GTNewHorizons:AVRcore:1.0.1')
devOnlyNonPublishable('com.github.GTNewHorizons:BlockRenderer6343:1.3.2:dev'){transitive=false}

compileOnly("com.google.auto.value:auto-value-annotations:1.10.1") { transitive = false }
annotationProcessor("com.google.auto.value:auto-value:1.10.1")

// For testing forestry integration (iApiary, combs, tree growth simulator)
// runtimeOnlyNonPublishable("com.github.GTNewHorizons:ForestryMC:4.9.16:dev")
// runtimeOnlyNonPublishable("com.github.GTNewHorizons:ForestryMC:4.10.1:dev")
// runtimeOnlyNonPublishable('com.github.GTNewHorizons:neiaddons:1.16.0:dev')
// runtimeOnlyNonPublishable('com.github.GTNewHorizons:MagicBees:2.8.5-GTNH:dev')
// runtimeOnlyNonPublishable('com.github.GTNewHorizons:Binnie:2.4.2:dev')
// runtimeOnlyNonPublishable('com.github.GTNewHorizons:MagicBees:2.9.0-GTNH:dev')
// runtimeOnlyNonPublishable('com.github.GTNewHorizons:Binnie:2.5.2:dev')

testImplementation(platform('org.junit:junit-bom:5.9.2'))
testImplementation('org.junit.jupiter:junit-jupiter')
Expand All @@ -121,10 +119,10 @@ dependencies {
functionalTestImplementation('org.junit.platform:junit-platform-reporting')

runtimeOnlyNonPublishable("com.github.GTNewHorizons:DuraDisplay:1.3.4:dev")
runtimeOnlyNonPublishable('com.github.GTNewHorizons:EnderIO:2.8.17:dev')
runtimeOnlyNonPublishable('com.github.GTNewHorizons:EnderIO:2.9.2:dev')

// For testing
//runtimeOnlyNonPublishable('com.github.GTNewHorizons:TCNEIAdditions:1.4.1:dev')
//runtimeOnlyNonPublishable('com.github.GTNewHorizons:TCNEIAdditions:1.4.2:dev')

// Speeds up mod identification and loading in dev
runtimeOnlyNonPublishable(rfg.deobf("CoreTweaks:CoreTweaks:0.3.3.2"))
Expand Down
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
2 changes: 1 addition & 1 deletion settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ pluginManagement {
}

plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.27'
id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.31'
}


23 changes: 17 additions & 6 deletions src/functionalTest/java/kubatech/test/EIGTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,13 @@
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.io.File;
import java.util.Map;

import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.MinecraftException;
import net.minecraft.world.World;
import net.minecraft.world.WorldProvider;
import net.minecraft.world.WorldProviderSurface;
Expand All @@ -46,6 +44,8 @@
import net.minecraft.world.storage.WorldInfo;
import net.minecraftforge.common.DimensionManager;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.jupiter.api.Test;

import gregtech.api.GregTechAPI;
Expand All @@ -56,6 +56,7 @@
import ic2.core.Ic2Items;
import ic2.core.crop.TileEntityCrop;
import ic2.core.item.ItemCropSeed;
import kubatech.Tags;
import kubatech.api.eig.EIGDropTable;
import kubatech.tileentity.gregtech.multiblock.MTEExtremeIndustrialGreenhouse;
import kubatech.tileentity.gregtech.multiblock.eigbuckets.EIGIC2Bucket;
Expand All @@ -66,6 +67,8 @@ public class EIGTests {
private static final int EIG_SIMULATION_TIME = 24 * HOURS;
private static final int NUMBER_OF_TESTS_TO_DO = 1000;

private static final Logger LOG = LogManager.getLogger(Tags.MODID);

static World myWorld;

public EIGTests() {
Expand All @@ -82,7 +85,7 @@ public WorldInfo loadWorldInfo() {
}

@Override
public void checkSessionLock() throws MinecraftException {
public void checkSessionLock() {

}

Expand Down Expand Up @@ -252,14 +255,17 @@ void EIGDrops() {
if (stackToTest == null) {
stackToTest = expected.entrySet()
.stream()
.max(Map.Entry.comparingByValue())
.filter(
x -> x.getKey()
.isItemEqual(Ic2Items.resin))
.findFirst()
.get()
.getKey();
}

realAvg += expected.getItemAmount(stackToTest);
// EIG with ic2 crops doesn't actually have variance, it uses very precise approximations that create
// accurate growth rate and drop quality approximations.
// accurate growth rate and drop quantity approximations.
eigAvg += generated.getItemAmount(stackToTest);
}
realAvg /= NUMBER_OF_TESTS_TO_DO;
Expand All @@ -270,7 +276,12 @@ void EIGDrops() {
System.out.println(debugInfo);

// We aim for about 99% accuracy over here.
assertTrue(accuracy >= 0.99d);
if (accuracy < 0.99d) {
LOG.warn(String.format("accuracy check failed! %.5f running secondary check", accuracy));
assertTrue(
eigAvg >= 1049.81851 - 0.00001 && eigAvg <= 1049.81851 + 0.00001,
String.format("secondary check failed, expected 1049.81851 +- 0.00001 got %.5f", eigAvg));
}
}

}
2 changes: 1 addition & 1 deletion src/functionalTest/java/kubatech/test/kubatechTestMod.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public class kubatechTestMod {
public void preInit(FMLPreInitializationEvent ev) {
// Disable GT5u messing with vanilla recipes for unit tests
GTMod.gregtechproxy.mNerfedWoodPlank = false;
GTMod.gregtechproxy.mNerfedVanillaTools = false;
GTMod.gregtechproxy.mChangeWoodenVanillaTools = false;
}

@EventHandler
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/bartworks/API/BorosilicateGlass.java
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,9 @@ public static void registerBorosilicateGlass() {

/**
* Register a new block as valid borosilicate glass with given tier (even if it doesn't contain boron at all)
*
* <p>
* Does not support matching by more complex stuff like tile entity!
*
* <p>
* Can only be called at INIT stage.
*/
public static void registerGlass(Block block, int meta, byte tier) {
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/bartworks/API/GlassTier.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,16 @@ public static void addCustomGlass(String modname, String unlocalisedBlockName, i
}

public static void addCustomGlass(@NotNull Block block, int meta, int tier) {
GlassTier.glasses.put(new BlockMetaPair(block, (byte) meta), tier);
Objects.requireNonNull(block, "Glass block cannot be null");
GlassTier.glasses.put(new BlockMetaPair(block, meta), tier);
}

public static HashMap<BlockMetaPair, Integer> getGlassMap() {
return glasses;
}

public static int getGlassTier(Block block, int meta) {
return glasses.getOrDefault(new BlockMetaPair(block, (byte) meta), 0);
return glasses.getOrDefault(new BlockMetaPair(block, meta), 0);
}

public static class BlockMetaPair {
Expand Down
34 changes: 17 additions & 17 deletions src/main/java/bartworks/API/recipe/BacterialVatFrontend.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package bartworks.API.recipe;

import java.util.Arrays;
import static gregtech.api.util.GTRecipeConstants.GLASS;

import java.util.List;

import javax.annotation.ParametersAreNonnullByDefault;
Expand All @@ -10,24 +11,23 @@

import com.gtnewhorizons.modularui.api.math.Alignment;

import bartworks.common.tileentities.multis.MTEBioVat;
import gregtech.api.enums.GTValues;
import gregtech.api.recipe.BasicUIPropertiesBuilder;
import gregtech.api.recipe.NEIRecipePropertiesBuilder;
import gregtech.api.recipe.RecipeMapFrontend;
import gregtech.api.util.GTRecipeConstants;
import gregtech.api.util.MethodsReturnNonnullByDefault;
import gregtech.api.util.recipe.Sievert;
import gregtech.nei.GTNEIDefaultHandler;
import gregtech.nei.RecipeDisplayInfo;
import gregtech.nei.formatter.INEISpecialInfoFormatter;

@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
public class BacterialVatFrontend extends RecipeMapFrontend {

public BacterialVatFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder,
NEIRecipePropertiesBuilder neiPropertiesBuilder) {
super(
uiPropertiesBuilder,
neiPropertiesBuilder.neiSpecialInfoFormatter(new BacterialVatSpecialValueFormatter()));
super(uiPropertiesBuilder, neiPropertiesBuilder);
}

@Override
Expand Down Expand Up @@ -74,19 +74,19 @@ private void drawFluidOverlay(GTNEIDefaultHandler.FixedPositionedStack stack) {
super.drawNEIOverlayForOutput(stack);
}

private static class BacterialVatSpecialValueFormatter implements INEISpecialInfoFormatter {

@Override
public List<String> format(RecipeDisplayInfo recipeInfo) {
int[] tSpecialA = MTEBioVat.specialValueUnpack(recipeInfo.recipe.mSpecialValue);
String glassTier = StatCollector.translateToLocalFormatted("nei.biovat.0.name", tSpecialA[0]);
String sievert;
if (tSpecialA[2] == 1) {
sievert = StatCollector.translateToLocalFormatted("nei.biovat.1.name", tSpecialA[3]);
@Override
protected void drawEnergyInfo(RecipeDisplayInfo recipeInfo) {
int glassTier = recipeInfo.recipe.getMetadataOrDefault(GLASS, 3);
Sievert data = recipeInfo.recipe.getMetadataOrDefault(GTRecipeConstants.SIEVERT, new Sievert(0, false));
int sievert = data.sievert;
boolean isExact = data.isExact;
recipeInfo.drawText(StatCollector.translateToLocalFormatted("nei.biovat.0.name", GTValues.VN[glassTier]));
if (sievert != 0) {
if (!isExact) {
recipeInfo.drawText(StatCollector.translateToLocalFormatted("nei.biovat.1.name", sievert));
} else {
sievert = StatCollector.translateToLocalFormatted("nei.biovat.2.name", tSpecialA[3]);
recipeInfo.drawText(StatCollector.translateToLocalFormatted("nei.biovat.2.name", sievert));
}
return Arrays.asList(glassTier, sievert);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public class BartWorksRecipeMaps {
.specialSlotSensitive()
.progressBar(GTUITextures.PROGRESSBAR_CIRCUIT_ASSEMBLER)
.build();
public static final RecipeMap<RecipeMapBackend> radioHatchRecipes = RecipeMapBuilder.of("bw.recipe.radhatch")
public static final RecipeMap<RecipeMapBackend> radioHatchFakeRecipes = RecipeMapBuilder.of("bw.recipe.radhatch")
.maxIO(1, 0, 0, 0)
.minInputs(1, 0)
.slotOverlays((index, isFluid, isOutput, isSpecial) -> BWUITextures.OVERLAY_SLOT_ROD)
Expand Down
14 changes: 9 additions & 5 deletions src/main/java/bartworks/API/recipe/RadioHatchFrontend.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,13 @@

import net.minecraft.util.StatCollector;

import bartworks.common.tileentities.tiered.GT_MetaTileEntity_RadioHatch;
import gregtech.api.recipe.BasicUIPropertiesBuilder;
import gregtech.api.recipe.NEIRecipePropertiesBuilder;
import gregtech.api.recipe.RecipeMapFrontend;
import gregtech.api.util.GTRecipeConstants;
import gregtech.api.util.MethodsReturnNonnullByDefault;
import gregtech.api.util.recipe.Sievert;
import gregtech.nei.RecipeDisplayInfo;
import gregtech.nei.formatter.INEISpecialInfoFormatter;

Expand All @@ -33,13 +36,14 @@ private static class RadioHatchSpecialInfoFormatter implements INEISpecialInfoFo

@Override
public List<String> format(RecipeDisplayInfo recipeInfo) {
int radioLevel = recipeInfo.recipe.mEUt;
int amount = recipeInfo.recipe.mDuration;
long time = recipeInfo.recipe.mSpecialValue;
Sievert data = recipeInfo.recipe.getMetadataOrDefault(GTRecipeConstants.SIEVERT, new Sievert(0));
int radioLevel = data.sievert;
int mass = recipeInfo.recipe.getMetadataOrDefault(GTRecipeConstants.MASS, 0);
long time = GT_MetaTileEntity_RadioHatch.calcDecayTicks(radioLevel);
return Arrays.asList(
StatCollector.translateToLocalFormatted("BW.NEI.display.radhatch.0", radioLevel),
StatCollector.translateToLocalFormatted("BW.NEI.display.radhatch.1", amount),
StatCollector.translateToLocalFormatted("BW.NEI.display.radhatch.2", time * amount / 20.0));
StatCollector.translateToLocalFormatted("BW.NEI.display.radhatch.1", mass),
StatCollector.translateToLocalFormatted("BW.NEI.display.radhatch.2", time * mass / 20.0));
}
}
}
Loading

0 comments on commit ec1c109

Please sign in to comment.