// Path: EclipsePhaseLifePath/src/com/github/distanteye/ep_utils/core/Package.java
// public class Package implements UniqueNamedData {
// 	private String name;
// 	private String description;
// 	private HashMap<Integer,String> effects; // effects for each PP value
// 	private String motivationsList; // if any
// 	private String specialNotes; // if any
// 	
// 	
// 	/**
// 	 * @param name Name of package
// 	 * @param effects Raw mechanical effects split by package
// 	 * @param description human form description of package (can be empty)
// 	 * @param motivationsList suggested motivations for package (can be empty
// 	 * @param specialNotes special footnotes about about package
// 	 */
// 	public Package(String name, String description, HashMap<Integer, String> effects,
// 			String motivationsList, String specialNotes) {
// 		super();
// 		this.name = name;
// 		this.description = description;
// 		this.effects = effects;
// 		this.motivationsList = motivationsList;
// 		this.specialNotes = specialNotes;
// 	}
// 	
// 	/**
// 	 * Returns the effects list for the given PP value
// 	 * @param PP positive integer matching one of the PP sets for the package
// 	 * @return Either a String or null if no such set exists
// 	 */
// 	public String getEffects(int PP)
// 	{
// 		return effects.get(PP);
// 	}
// 	
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public String getMotivationsList() {
// 		return motivationsList;
// 	}
// 
// 
// 	public String getSpecialNotes() {
// 		return specialNotes;
// 	}
// 	
// 	/**
// 	 * Differentiates this class from Table and such, which implement the same interface
// 	 * @return "package"
// 	 */
// 	public String getType()
// 	{
// 		return "package";
// 	}
// 
// 	public String getDescription() {
// 		return description;
// 	}
// 
// 	public void setDescription(String description) {
// 		this.description = description;
// 	}
// 
// 	/**
// 	 * Returns the entire structure of effects (reference)
// 	 *
// 	 * @return HashMap structure of the effects
// 	 */
// 	public HashMap<Integer, String> getAllEffects() {
// 		return effects;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	public void setMotivationsList(String motivationsList) {
// 		this.motivationsList = motivationsList;
// 	}
// 
// 	public void setSpecialNotes(String specialNotes) {
// 		this.specialNotes = specialNotes;
// 	}
// 	
// 	
// 	
// }


import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import com.github.distanteye.ep_utils.containers.*;
import com.github.distanteye.ep_utils.core.Package;

			if (ppValue <= 0)
			{
				throw new IllegalArgumentException("Incorrect format on effects (PP value must be > 0 ): " + line);
			}
			
			String effects = parts[1];
			
			effectsList.put(ppValue, effects);
			
			i++;
			
			if (i+1 > lines.length)
			{
				line = "";
			}
			else
			{
				line = lines[i];
			}
		}
		
		// either this will be blank or it will contain the special notes line
		// because the loop replaces line with "" if it detects the end of the chunk
		String specialNotes = line; 
		
		if (!effectsList.containsKey(1))
		{
			throw new IllegalArgumentException("Incorrect format on package (must contain PP;1 package " + name);
		}
		

// Path: EclipsePhaseLifePath/src/com/github/distanteye/ep_utils/core/Package.java
// public class Package implements UniqueNamedData {
// 	private String name;
// 	private String description;
// 	private HashMap<Integer,String> effects; // effects for each PP value
// 	private String motivationsList; // if any
// 	private String specialNotes; // if any
// 	
// 	
// 	/**
// 	 * @param name Name of package
// 	 * @param effects Raw mechanical effects split by package
// 	 * @param description human form description of package (can be empty)
// 	 * @param motivationsList suggested motivations for package (can be empty
// 	 * @param specialNotes special footnotes about about package
// 	 */
// 	public Package(String name, String description, HashMap<Integer, String> effects,
// 			String motivationsList, String specialNotes) {
// 		super();
// 		this.name = name;
// 		this.description = description;
// 		this.effects = effects;
// 		this.motivationsList = motivationsList;
// 		this.specialNotes = specialNotes;
// 	}
// 	
// 	/**
// 	 * Returns the effects list for the given PP value
// 	 * @param PP positive integer matching one of the PP sets for the package
// 	 * @return Either a String or null if no such set exists
// 	 */
// 	public String getEffects(int PP)
// 	{
// 		return effects.get(PP);
// 	}
// 	
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public String getMotivationsList() {
// 		return motivationsList;
// 	}
// 
// 
// 	public String getSpecialNotes() {
// 		return specialNotes;
// 	}
// 	
// 	/**
// 	 * Differentiates this class from Table and such, which implement the same interface
// 	 * @return "package"
// 	 */
// 	public String getType()
// 	{
// 		return "package";
// 	}
// 
// 	public String getDescription() {
// 		return description;
// 	}
// 
// 	public void setDescription(String description) {
// 		this.description = description;
// 	}
// 
// 	/**
// 	 * Returns the entire structure of effects (reference)
// 	 *
// 	 * @return HashMap structure of the effects
// 	 */
// 	public HashMap<Integer, String> getAllEffects() {
// 		return effects;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	public void setMotivationsList(String motivationsList) {
// 		this.motivationsList = motivationsList;
// 	}
// 
// 	public void setSpecialNotes(String specialNotes) {
// 		this.specialNotes = specialNotes;
// 	}
// 	
// 	
// 	
// }


// Path: EclipsePhaseLifePath/src/com/github/distanteye/ep_utils/core/DataProc.java
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
import com.github.distanteye.ep_utils.containers.*;
import com.github.distanteye.ep_utils.core.Package;

			if (ppValue <= 0)
			{
				throw new IllegalArgumentException("Incorrect format on effects (PP value must be > 0 ): " + line);
			}
			
			String effects = parts[1];
			
			effectsList.put(ppValue, effects);
			
			i++;
			
			if (i+1 > lines.length)
			{
				line = "";
			}
			else
			{
				line = lines[i];
			}
		}
		
		// either this will be blank or it will contain the special notes line
		// because the loop replaces line with "" if it detects the end of the chunk
		String specialNotes = line; 
		
		if (!effectsList.containsKey(1))
		{
			throw new IllegalArgumentException("Incorrect format on package (must contain PP;1 package " + name);
		}
		

		dataStore.put(name, new Package(name,desc,effectsList,motiv,specialNotes));
