// Path: randomizer/Randomizer.java
// public class Randomizer extends Application {
//     public static void main(String[] args) {
//         launch(args);
//     }
// 
//     @Override
//     public void start(Stage primaryStage) {
//         try {
//             // Create and display the main stage.
//             Gui.getInstance().setMainStage(primaryStage);
//             Parent root = FXMLLoader.load(this.getClass().getResource("gui/fxml/Verification.fxml"));
//             Scene scene = new Scene(root, 320, 260);
//             scene.getStylesheets().add(getClass().getResource("gui/jmetro/JMetroLightTheme.css").toExternalForm());
//             primaryStage.setScene(scene);
//             primaryStage.setResizable(false);
//             primaryStage.getIcons().add(new Image(this.getClass().getResourceAsStream("icon.png")));
//             primaryStage.setTitle("Randomizer Verification");
//             primaryStage.show();
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//     }
// }
// 
// Path: randomizer/common/enums/SkillType.java
// public enum SkillType 
// {
// 	Basic, Enemy, DLC, Personal
// }
// 
// Path: randomizer/common/structures/Skill.java
// public class Skill 
// {
// 	private String seid;
// 	private String name;
// 	private SkillType type;
// 	private short id;
// 	
// 	public Skill() {
// 		
// 	}
// 
// 	@Override
// 	public String toString()
// 	{
// 		return name;
// 	}
// 	
// 	public String getSeid() {
// 		return seid;
// 	}
// 
// 	public void setSeid(String seid) {
// 		this.seid = seid;
// 	}
// 
// 	public SkillType getType() {
// 		return type;
// 	}
// 
// 	public void setType(SkillType type) {
// 		this.type = type;
// 	}
// 
// 	public short getId() {
// 		return id;
// 	}
// 
// 	public void setId(short id) {
// 		this.id = id;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// }


import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import randomizer.Randomizer;
import randomizer.common.enums.SkillType;
import randomizer.common.structures.Skill;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
    public Skill getSkillById(int id) {
        if(id < 0)
            throw new IllegalArgumentException("Violation of precondidition: " +
                    "getSkillById. id must not be negative.");

        for(Skill s : skills) {
            if(s.getId() == id)
                return s;
        }
        return null;
    }

    public List<Skill> getSelectedSkills() {
        boolean[] selected = FatesGui.getInstance().getSelectedSkills();
        List<Skill> selectedSkills = new ArrayList<>();
        for(int x = 0; x < skills.size(); x++) {
            if(skills.get(x).getType() == SkillType.Personal && !FatesGui.getInstance().getSelectedOptions()[10])
                continue;
            if(selected[x])
                selectedSkills.add(skills.get(x));
        }
        return selectedSkills;
    }

    public List<Skill> getSelectedPersonalSkills() {
        boolean[] selected = FatesGui.getInstance().getSelectedSkills();
        List<Skill> selectedSkills = new ArrayList<>();
        for(int x = 0; x < skills.size(); x++) {
            if(skills.get(x).getType() != SkillType.Personal)
                continue;
// Path: randomizer/Randomizer.java
// public class Randomizer extends Application {
//     public static void main(String[] args) {
//         launch(args);
//     }
// 
//     @Override
//     public void start(Stage primaryStage) {
//         try {
//             // Create and display the main stage.
//             Gui.getInstance().setMainStage(primaryStage);
//             Parent root = FXMLLoader.load(this.getClass().getResource("gui/fxml/Verification.fxml"));
//             Scene scene = new Scene(root, 320, 260);
//             scene.getStylesheets().add(getClass().getResource("gui/jmetro/JMetroLightTheme.css").toExternalForm());
//             primaryStage.setScene(scene);
//             primaryStage.setResizable(false);
//             primaryStage.getIcons().add(new Image(this.getClass().getResourceAsStream("icon.png")));
//             primaryStage.setTitle("Randomizer Verification");
//             primaryStage.show();
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//     }
// }
// 
// Path: randomizer/common/enums/SkillType.java
// public enum SkillType 
// {
// 	Basic, Enemy, DLC, Personal
// }
// 
// Path: randomizer/common/structures/Skill.java
// public class Skill 
// {
// 	private String seid;
// 	private String name;
// 	private SkillType type;
// 	private short id;
// 	
// 	public Skill() {
// 		
// 	}
// 
// 	@Override
// 	public String toString()
// 	{
// 		return name;
// 	}
// 	
// 	public String getSeid() {
// 		return seid;
// 	}
// 
// 	public void setSeid(String seid) {
// 		this.seid = seid;
// 	}
// 
// 	public SkillType getType() {
// 		return type;
// 	}
// 
// 	public void setType(SkillType type) {
// 		this.type = type;
// 	}
// 
// 	public short getId() {
// 		return id;
// 	}
// 
// 	public void setId(short id) {
// 		this.id = id;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// }


// Path: randomizer/fates/singletons/FatesSkills.java
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import randomizer.Randomizer;
import randomizer.common.enums.SkillType;
import randomizer.common.structures.Skill;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

    public Skill getSkillById(int id) {
        if(id < 0)
            throw new IllegalArgumentException("Violation of precondidition: " +
                    "getSkillById. id must not be negative.");

        for(Skill s : skills) {
            if(s.getId() == id)
                return s;
        }
        return null;
    }

    public List<Skill> getSelectedSkills() {
        boolean[] selected = FatesGui.getInstance().getSelectedSkills();
        List<Skill> selectedSkills = new ArrayList<>();
        for(int x = 0; x < skills.size(); x++) {
            if(skills.get(x).getType() == SkillType.Personal && !FatesGui.getInstance().getSelectedOptions()[10])
                continue;
            if(selected[x])
                selectedSkills.add(skills.get(x));
        }
        return selectedSkills;
    }

    public List<Skill> getSelectedPersonalSkills() {
        boolean[] selected = FatesGui.getInstance().getSelectedSkills();
        List<Skill> selectedSkills = new ArrayList<>();
        for(int x = 0; x < skills.size(); x++) {
            if(skills.get(x).getType() != SkillType.Personal)
                continue;
            if(selected[x])