GUI.PizzaCat.java Source code

Java tutorial

Introduction

Here is the source code for GUI.PizzaCat.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package GUI;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Random;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.SwingWorker;

/**
 *
 * @author ivai
 */

public class PizzaCat extends javax.swing.JFrame implements ActionListener, PropertyChangeListener {

    private JButton startButton;
    private JTextArea taskOutput;
    public Task task;

    @Override
    public void actionPerformed(ActionEvent e) {
        startButton.setEnabled(false);
        setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
        // Instances of javax.swing.SwingWorker are not reusuable, so
        // we create new instances as needed.
        task = new Task();
        task.addPropertyChangeListener(this);
        task.execute();
    }

    @Override
    public void propertyChange(PropertyChangeEvent evt) {
        if ("progress" == evt.getPropertyName()) {
            int progress = (Integer) evt.getNewValue();
            taskOutput.append(String.format("Completed %d%% of task.\n", task.getProgress()));
        }
    }

    public static String getCurrentTimeStamp() {
        SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd:HH_mm_ss");
        Date now = new Date();
        String strDate = sdfDate.format(now);
        return strDate;
    }

    public class ProgressBarDemo extends JPanel implements ActionListener, PropertyChangeListener {
        private JProgressBar progressBar;
        private JButton startButton;
        private JTextArea taskOutput;
        private Task task;

        class Task extends SwingWorker<Void, Void> {
            /*
            * Main task. Executed in background thread.
             */
            @Override
            public Void doInBackground() throws IOException {
                String date = getCurrentTimeStamp();
                //make name unique filename
                String dir2 = jTextPane5.getText() + "/PizzaCat" + date + ".csv";
                try (FileWriter writerr = new FileWriter(dir2, true)) {
                    writerr.append("\"ID\"");
                    writerr.append(',');
                    writerr.append("\"Indicator\"");
                    writerr.append(',');
                    writerr.append("\"Type\"");
                    writerr.append(',');
                    writerr.append("\"Reference\"");
                    writerr.append(',');
                    writerr.append("\"Source\"");
                    writerr.append(',');
                    writerr.append("\"Kill Chain Phase\"");
                    writerr.append(',');
                    writerr.append("\"First Seen\"");
                    writerr.append(',');
                    writerr.append("\"Last Seen\"");
                    writerr.append(',');
                    writerr.append("\"Attribution\"");
                    writerr.append(',');
                    writerr.append("\"Process Type\"");
                    writerr.append(',');
                    writerr.append("\"Rrname\"");
                    writerr.append(',');
                    writerr.append("\"Rdata\"");
                    writerr.append(',');
                    writerr.append("\"RootNode\"");
                    writerr.append(',');
                    writerr.append("\"Conutry\"");
                    writerr.append(',');
                    writerr.append("\"Tags\"");
                    writerr.append(',');
                    writerr.append("\"Comment\"");
                    writerr.append(',');
                    writerr.append("\"Confidence\"");
                    writerr.append(',');
                    writerr.append('\n');
                    writerr.flush();
                }
                int progress = 0;
                // Initialize progress property.
                setProgress(0);
                if (progress < 100) {
                    String api_key = jTextPane3.getText();
                    String dir = jTextPane4.getText();
                    //"cd468d88c5ad74122968cecd371d3322";
                    int z = 0, i = 0, jj = 0, j = 0;
                    int rowcount = jTable1.getRowCount();
                    while (jj < rowcount) {
                        String selectedString = (String) jTable1.getModel().getValueAt(jj, 0);
                        if (selectedString != null && !selectedString.isEmpty()) {
                            j++;
                        }
                        jj++;
                    }
                    System.out.println("DEBUG " + j);
                    while (z < j) {
                        progress += 10;
                        setProgress(Math.min(progress, 90));
                        int rowIndex = z;
                        int vColIndex = 0;
                        Object o = jTable1.getValueAt(rowIndex, vColIndex);
                        if (o != null) {
                            try {
                                URL url = null;
                                try {
                                    url = new URL("https://api.threatrecon.co/api/v1/search");
                                } catch (MalformedURLException ex) {
                                    Logger.getLogger(PizzaCat.class.getName()).log(Level.SEVERE, null, ex);
                                }
                                URLConnection conn = url.openConnection();
                                conn.setDoOutput(true);
                                BufferedReader reader;
                                String TR_rez = "";
                                try (DataOutputStream writer = new DataOutputStream(conn.getOutputStream())) {
                                    writer.writeBytes("api_key=" + api_key + "&indicator=" + o);
                                    writer.flush();
                                    String line;
                                    reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                                    while ((line = reader.readLine()) != null) {
                                        TR_rez += line;
                                    }
                                    ObjectMapper mapper = new ObjectMapper();
                                    Animal animal = mapper.readValue(TR_rez, Animal.class);
                                    String Response;
                                    Response = (mapper.writeValueAsString(animal.ResponseCode));
                                    // TODO : ORGANIZE 0 - XX 
                                    if (Response.contains("0")) {
                                        //NO RESULT FOR THAT SEARCH
                                        //System.out.println("INVALID RESPONSE");
                                    } else if (Response.contains("-2")) {
                                        //System.out.println("OUT OF FREE QUERIES");
                                        taskOutput.append("   ERORR : OUT OF FREE QUERIES\n");
                                        task.done();
                                        //TODO : actually terminate paralell thread that checks main threads status to avoid this awful break
                                        break;
                                    } else if (Response.contains("-1")) {
                                        //System.out.println("INVALID API KEY");   
                                        taskOutput.append(
                                                "   ERORR : INVALID API KEY \n   PLEASE ENTER AN API KEY FROM HTTPS://THREATRECON.CO\n");
                                        //System.out.println(Response);
                                        //task.done();
                                        //TODO : again, get rid of the break
                                        break;
                                    } else {
                                        System.out.println(Response);
                                        //TODO : CLEANUP UP BELOW... SPAGHETTI C0D3 ALERT!111oneone : yeahhh... don't ask... try try try
                                        try {
                                            try (FileWriter writerz = new FileWriter(dir + "/" + i + ".json")) {
                                                i++;
                                                writerz.write((String) TR_rez);
                                            }
                                        } catch (IOException e) {
                                            e.printStackTrace();
                                        }
                                        File[] files = new File(dir).listFiles();
                                        int v = 0;
                                        for (File file : files) {
                                            if (file.isDirectory()) {
                                                break;
                                            } else {
                                                String Filename = dir + "/" + file.getName();
                                                //System.out.println(Filename);
                                                JsonNode node = mapper.readTree(new File(Filename));
                                                JsonNode testxx = node.get("Results");
                                                int testxxx;
                                                testxxx = testxx.size();
                                                int vv = 0;
                                                while (vv < testxxx) {
                                                    JsonNode Id = node.get("Results").get(vv).get("Id");
                                                    JsonNode Indicator = node.get("Results").get(vv)
                                                            .get("Indicator");
                                                    JsonNode Type = node.get("Results").get(vv).get("Type");
                                                    JsonNode Reference = node.get("Results").get(vv)
                                                            .get("Reference");
                                                    JsonNode Source = node.get("Results").get(vv).get("Source");
                                                    JsonNode KillChain = node.get("Results").get(vv)
                                                            .get("KillChain");
                                                    JsonNode FirstSeen = node.get("Results").get(vv)
                                                            .get("FirstSeen");
                                                    JsonNode LastSeen = node.get("Results").get(vv).get("LastSeen");
                                                    JsonNode Attribution = node.get("Results").get(vv)
                                                            .get("Attribution");
                                                    JsonNode ProcessType = node.get("Results").get(vv)
                                                            .get("ProcessType");
                                                    JsonNode Rrname = node.get("Results").get(vv).get("Rrname");
                                                    JsonNode Rdata = node.get("Results").get(vv).get("Rdata");
                                                    JsonNode Country = node.get("Results").get(vv).get("Country");
                                                    JsonNode RootNode = node.get("Results").get(vv).get("RootNode");
                                                    JsonNode Tags = node.get("Results").get(vv).get("Tags");
                                                    JsonNode Comment = node.get("Results").get(vv).get("Comment");
                                                    JsonNode Confidence = node.get("Results").get(vv)
                                                            .get("Confidence");
                                                    if (v < 500) {
                                                        jTable2.setValueAt(Indicator.asText(), v, 0);
                                                        jTable2.setValueAt(Type.asText(), v, 1);
                                                        jTable2.setValueAt(Reference.asText(), v, 2);
                                                        jTable2.setValueAt(Source.asText(), v, 3);
                                                        jTable2.setValueAt(KillChain.asText(), v, 4);
                                                        jTable2.setValueAt(FirstSeen.asText(), v, 5);
                                                        jTable2.setValueAt(LastSeen.asText(), v, 6);
                                                        jTable2.setValueAt(Attribution.asText(), v, 7);
                                                        jTable2.setValueAt(ProcessType.asText(), v, 8);
                                                        jTable2.setValueAt(Rrname.asText(), v, 9);
                                                        jTable2.setValueAt(Rdata.asText(), v, 10);
                                                        jTable2.setValueAt(RootNode.asText(), v, 11);
                                                        jTable2.setValueAt(Country.asText(), v, 12);
                                                        jTable2.setValueAt(Tags.asText(), v, 13);
                                                        jTable2.setValueAt(Comment.asText(), v, 14);
                                                        jTable2.setValueAt(Confidence.asText(), v, 15);
                                                    }
                                                    FileWriter writerr = new FileWriter(dir2, true);
                                                    writerr.append("\"" + Id.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + Indicator.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + Type.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + Reference.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + Source.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + KillChain.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + FirstSeen.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + LastSeen.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + Attribution.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + ProcessType.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + Rrname.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + Rdata.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + RootNode.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + Country.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + Tags.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + Comment.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append("\"" + Confidence.asText() + "\"");
                                                    writerr.append(',');
                                                    writerr.append('\n');
                                                    writerr.flush();
                                                    writerr.close();
                                                    v++;
                                                    vv++;
                                                }
                                            }
                                        }
                                        label6.setText("  Numebr of Results : " + v);
                                        //FIX YOUR EARLIER MESS AND REMOVE A TRY FROM (TRY && TRY && TRY) || DERP ... SEE BELOW
                                    } // >.< ---< Angryface between this and use of break
                                }
                                reader.close();
                            } catch (IOException ex) {
                                Logger.getLogger(PizzaCat.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                        z++;
                        if (z != j - 1) {
                            try {
                                Thread.sleep(15000);
                            } catch (InterruptedException ex) {
                                //if it can't sleep you have a problem more serious than my spaghetti code above...
                            }
                        }
                    }
                }
                return null;
            }

            /*
            * Executed in event dispatching thread
            */
            @Override
            public void done() {
                Toolkit.getDefaultToolkit().beep();
                setProgress(100);
                startButton.setEnabled(true);
                setCursor(null); // turn off the wait cursor
                //make 100%
                taskOutput.append("Done!\n");
            }
            //indents are still all messed up...
        }//end class

        public ProgressBarDemo() {
            super(new BorderLayout());
            // Create the demo's UI.
            startButton = new JButton("Start");
            startButton.setActionCommand("start");
            startButton.addActionListener(this);
            progressBar = new JProgressBar(0, 100);
            progressBar.setValue(0);
            progressBar.setStringPainted(true);
            taskOutput = new JTextArea(5, 40);
            taskOutput.setMargin(new Insets(5, 5, 5, 5));
            taskOutput.setEditable(false);
            JPanel panel = new JPanel();
            panel.add(startButton);
            panel.add(progressBar);
            add(panel, BorderLayout.PAGE_START);
            add(new JScrollPane(taskOutput), BorderLayout.CENTER);
            setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
        }

        /**
         * Invoked when the user presses the start button.
         */
        public void actionPerformed(ActionEvent evt) {
            startButton.setEnabled(false);
            setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
            // Instances of javax.swing.SwingWorker are not reusuable, so
            // we create new instances as needed.
            task = new Task();
            task.addPropertyChangeListener(this);
            task.execute();
        }

        /**
         * Invoked when task's progress property changes.
         */
        public void propertyChange(PropertyChangeEvent evt) {
            if ("progress" == evt.getPropertyName()) {
                int progress = (Integer) evt.getNewValue();
                progressBar.setValue(progress);
                if (progressBar.getValue() != 100) {
                    taskOutput.append(String.format("Completed %d%% of task...\n", task.getProgress()));
                    taskOutput.append("   Pausing 15 seconds due to free use...\n");
                    taskOutput.append("   To remove the pause purchase an API key from threatrecon.co\n");
                }
            }
        }

        /**
         * Create the GUI and show it. As with all GUI code, this must run on the
         * event-dispatching thread.
         */
        public void createAndShowGUI() {
            // Create and set up the window.
            JFrame frame = new JFrame("ProgressBarDemo");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            // Create and set up the content pane.
            JComponent newContentPane = new ProgressBarDemo();
            newContentPane.setOpaque(true); // content panes must be opaque
            frame.setContentPane(newContentPane);

            // Display the window.
            frame.pack();
            frame.setVisible(true);
        }
    }

    class Task extends SwingWorker<Void, Void> {
        /*
         * Main task. Executed in background thread.
         */
        @Override
        public Void doInBackground() {
            Random random = new Random();
            int progress = 0;
            // Initialize progress property.
            setProgress(0);
            while (progress <= 90) {
                // Sleep for up to one second.
                try {
                    Thread.sleep(random.nextInt(1000));
                } catch (InterruptedException ignore) {
                }
                // Make random progress.
                progress += 10;//random.nextInt(10);
                setProgress(Math.min(progress, 90));
            }
            return null;
        }

        /*
         * Executed in event dispatching thread
         */
        @Override
        public void done() {
            setProgress(100);
            Toolkit.getDefaultToolkit().beep();
            try {
                TimeUnit.SECONDS.sleep(100);
            } catch (InterruptedException ex) {
                Logger.getLogger(GUI.ProgressBarDemo.class.getName()).log(Level.SEVERE, null, ex);
            }
            startButton.setEnabled(true);
            setCursor(null); // turn off the wait cursor
            taskOutput.append("Donezzz!\n");
        }
    }

    public PizzaCat() {
        initComponents();
        startButton = new JButton("Start");
        startButton.setActionCommand("start");
        startButton.addActionListener(this);
        taskOutput = new JTextArea(5, 40);
        taskOutput.setMargin(new Insets(5, 5, 5, 5));
        taskOutput.setEditable(false);
        JPanel panel = new JPanel();
        panel.add(startButton);
        add(panel, BorderLayout.PAGE_START);
        add(new JScrollPane(taskOutput), BorderLayout.CENTER);
    }

    /**
     * Invoked when the user presses the start button.
     */
    /**
     * Create the GUI and show it. As with all GUI code, this must run on the
     * event-dispatching thread.
     */
    public void createAndShowGUI() {
        // Create and set up the window.
        //new PizzaCat().setVisible(true);
        JFrame frame = new JFrame("Processing Results");
        frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        // Create and set up the content pane.
        JComponent newContentPane = new ProgressBarDemo();
        newContentPane.setOpaque(true); // content panes must be opaque
        frame.setContentPane(newContentPane);
        // Display the window.
        frame.pack();
        frame.setVisible(true);
    }

    /**
     * Creates new form PizzaCat
     */
    /**
    * This method is called from within the constructor to initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is always
    * regenerated by the Form Editor.
    */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jFileChooser1 = new javax.swing.JFileChooser();
        jFrame1 = new javax.swing.JFrame();
        panel1 = new java.awt.Panel();
        jButton1 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextPane1 = new javax.swing.JTextPane();
        jButton2 = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jScrollPane3 = new javax.swing.JScrollPane();
        jTable2 = new javax.swing.JTable();
        jButton3 = new javax.swing.JButton();
        jScrollPane5 = new javax.swing.JScrollPane();
        jTextPane3 = new javax.swing.JTextPane();
        jScrollPane6 = new javax.swing.JScrollPane();
        jTextPane4 = new javax.swing.JTextPane();
        label9 = new java.awt.Label();
        label10 = new java.awt.Label();
        label6 = new java.awt.Label();
        label7 = new java.awt.Label();
        jCheckBox1 = new javax.swing.JCheckBox();
        jCheckBox2 = new javax.swing.JCheckBox();
        label11 = new java.awt.Label();
        label12 = new java.awt.Label();
        jScrollPane7 = new javax.swing.JScrollPane();
        jTextPane5 = new javax.swing.JTextPane();
        label13 = new java.awt.Label();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        label14 = new java.awt.Label();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();

        javax.swing.GroupLayout jFrame1Layout = new javax.swing.GroupLayout(jFrame1.getContentPane());
        jFrame1.getContentPane().setLayout(jFrame1Layout);
        jFrame1Layout.setHorizontalGroup(jFrame1Layout
                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400, Short.MAX_VALUE));
        jFrame1Layout.setVerticalGroup(jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGap(0, 300, Short.MAX_VALUE));

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setBackground(new java.awt.Color(8, 1, 9));
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

        jButton1.setText("Browse...");
        jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton1MouseClicked(evt);
            }
        });

        jScrollPane1.setViewportView(jTextPane1);

        jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/8bitpizza.png"))); // NOI18N
        jButton2.setText("Parse");
        jButton2.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton2MouseClicked(evt);
            }
        });

        jTable1.setModel(new javax.swing.table.DefaultTableModel(new Object[][] { { null }, { null }, { null },
                { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                { null }, { null }, { null }, { null }, { null }, { null }, { null } },
                new String[] { "Extracted indicator to be queried by Threat Recon" }));
        jScrollPane2.setViewportView(jTable1);

        jTable2.setModel(new javax.swing.table.DefaultTableModel(new Object[][] {
                //100
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                //200
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                //300
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                //400
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                //500
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null },
                { null, null, null, null, null, null, null, null, null, null, null }, },
                new String[] { "INDICATOR ", "Type", "REFERENCE ", "SOURCE ", "KILLCHAIN ", "FIRST_SEEN ",
                        "LAST_SEEN ", "ATTRIBUTION ", "PROCESS_TYPE ", "RNAME ", "RDATA ", "ROOT_NODE ", "COUNTRY ",
                        "TAGS ", "COMMENT ", "CONFIDENCE" }));
        jScrollPane3.setViewportView(jTable2);

        jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/banner1.png"))); // NOI18N
        jButton3.setText("Recon");
        jButton3.setMaximumSize(new java.awt.Dimension(116, 42));
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        jScrollPane5.setViewportView(jTextPane3);

        jScrollPane6.setViewportView(jTextPane4);

        label9.setText("  Current ThreatRecon API Key : ");

        label10.setText("  Working Directory :");

        label6.setText("  Numebr of Results : 0");

        label7.setText("  Numebr of Queries : 0");

        jCheckBox1.setBackground(new java.awt.Color(5, 3, 1));
        jCheckBox1.setForeground(new java.awt.Color(255, 22, 0));
        jCheckBox1.setText("CLEAR RESULTS");
        jCheckBox1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBox1ActionPerformed(evt);
            }
        });

        jCheckBox2.setBackground(new java.awt.Color(5, 3, 1));
        jCheckBox2.setForeground(new java.awt.Color(255, 22, 0));
        jCheckBox2.setText("CLEAR QUERIES");
        jCheckBox2.addChangeListener(new javax.swing.event.ChangeListener() {
            public void stateChanged(javax.swing.event.ChangeEvent evt) {
                jCheckBox2StateChanged(evt);
            }
        });
        jCheckBox2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCheckBox2ActionPerformed(evt);
            }
        });

        label11.setText("  Displaying First 500 Results");

        label12.setText("  100 Indicators to be Queried");

        jScrollPane7.setViewportView(jTextPane5);

        label13.setText("  File to be parsed : ");

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/pizzacat.jpg"))); // NOI18N

        jLabel2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/pizzabanner.png"))); // NOI18N
        jLabel2.setText("jLabel2");

        label14.setText("  Saving CSVs to Directory : ");

        javax.swing.GroupLayout panel1Layout = new javax.swing.GroupLayout(panel1);
        panel1.setLayout(panel1Layout);
        panel1Layout.setHorizontalGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(panel1Layout.createSequentialGroup().addGap(59, 59, 59)
                        .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 980,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 0, Short.MAX_VALUE))
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(panel1Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                        .addComponent(label9, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
                                                panel1Layout.createSequentialGroup().addComponent(jButton1)
                                                        .addPreferredGap(
                                                                javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                        .addComponent(jScrollPane1,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE, 285,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addComponent(jScrollPane5))
                                .addComponent(label13, javax.swing.GroupLayout.PREFERRED_SIZE, 368,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(27, 27, 27).addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE, 357,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(label10, javax.swing.GroupLayout.PREFERRED_SIZE, 357,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(label14, javax.swing.GroupLayout.PREFERRED_SIZE, 357,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addComponent(jScrollPane7, javax.swing.GroupLayout.PREFERRED_SIZE, 357,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addContainerGap(36, Short.MAX_VALUE))
                .addGroup(panel1Layout.createSequentialGroup().addContainerGap().addGroup(panel1Layout
                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jScrollPane2)
                        .addComponent(jScrollPane3)
                        .addGroup(panel1Layout.createSequentialGroup().addGroup(panel1Layout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(panel1Layout.createSequentialGroup().addGap(102, 102, 102).addComponent(
                                        jCheckBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 142,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGroup(panel1Layout.createSequentialGroup().addGap(127, 127, 127).addComponent(
                                        label6, javax.swing.GroupLayout.PREFERRED_SIZE, 232,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE,
                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(125, 125, 125)
                                .addComponent(label11, javax.swing.GroupLayout.PREFERRED_SIZE, 230,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(135, 135, 135))
                        .addGroup(panel1Layout.createSequentialGroup().addGroup(panel1Layout
                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(panel1Layout.createSequentialGroup().addGap(123, 123, 123).addComponent(
                                        label7, javax.swing.GroupLayout.PREFERRED_SIZE, 230,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGroup(panel1Layout.createSequentialGroup().addGap(96, 96, 96).addComponent(
                                        jCheckBox2, javax.swing.GroupLayout.PREFERRED_SIZE, 142,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,
                                        javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 120,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(125, 125, 125)
                                .addComponent(label12, javax.swing.GroupLayout.PREFERRED_SIZE, 230,
                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(134, 134, 134)))
                        .addContainerGap()));
        panel1Layout.setVerticalGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(panel1Layout.createSequentialGroup()
                        .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 89,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(panel1Layout.createSequentialGroup().addGroup(panel1Layout
                                        .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addGroup(panel1Layout.createSequentialGroup().addGap(42, 42, 42)
                                                .addComponent(label10, javax.swing.GroupLayout.PREFERRED_SIZE, 36,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        35, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(label14, javax.swing.GroupLayout.PREFERRED_SIZE, 36,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                                .addComponent(jScrollPane7, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        35, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addGap(0, 0, Short.MAX_VALUE))
                                        .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE,
                                                javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                        .addGap(5, 5, 5))
                                .addGroup(panel1Layout.createSequentialGroup().addGap(42, 42, 42)
                                        .addComponent(label13, javax.swing.GroupLayout.PREFERRED_SIZE, 36,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addGroup(panel1Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        35, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addComponent(jButton1))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(label9, javax.swing.GroupLayout.PREFERRED_SIZE, 33,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 35,
                                                javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                .addGroup(panel1Layout.createSequentialGroup().addComponent(jCheckBox2).addGap(45,
                                        45, 45))
                                .addGroup(panel1Layout.createSequentialGroup()
                                        .addGroup(panel1Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(label7, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addComponent(label12, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addGap(10, 10, 10))
                                .addGroup(panel1Layout.createSequentialGroup().addComponent(jButton2).addGap(28, 28,
                                        28)))
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 80,
                                javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(panel1Layout.createSequentialGroup().addComponent(jCheckBox1)
                                        .addGroup(panel1Layout
                                                .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addGroup(panel1Layout.createSequentialGroup().addGap(4, 4, 4)
                                                        .addComponent(label6,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE,
                                                                javax.swing.GroupLayout.DEFAULT_SIZE,
                                                                javax.swing.GroupLayout.PREFERRED_SIZE))
                                                .addComponent(label11, javax.swing.GroupLayout.PREFERRED_SIZE,
                                                        javax.swing.GroupLayout.DEFAULT_SIZE,
                                                        javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 37,
                                        javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(18, 18, Short.MAX_VALUE).addComponent(jScrollPane3,
                                javax.swing.GroupLayout.PREFERRED_SIZE, 188, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(92, 92, 92)));

        label12.getAccessibleContext().setAccessibleName("Queries #s  : 1- 20");

        jMenu1.setBackground(new java.awt.Color(255, 204, 0));
        jMenu1.setText("File");

        jMenuItem1.setText("About");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("Edit");
        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(panel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
                        Short.MAX_VALUE));
        layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(
                javax.swing.GroupLayout.Alignment.TRAILING,
                layout.createSequentialGroup().addContainerGap(20, Short.MAX_VALUE)
                        .addComponent(panel1, javax.swing.GroupLayout.PREFERRED_SIZE,
                                javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(5, 5, 5)));

        JOptionPane jOptionPane1 = new javax.swing.JOptionPane();
        String api_key; //first string entered by user

        //read in the first number from user as a string
        api_key = jOptionPane1.showInputDialog("Enter YOUR ThreatRecon API Key from https://threatrecon.co");

        //read in the second number from user as a string

        //convert numbers from type String to type int

        //display the results
        //jOptionPane1.showMessageDialog (
        //null, "You Entered " + api_key, "As YOUR API Key",
        //jOptionPane1.PLAIN_MESSAGE);
        //jTextPane3.append("\n\n YOUR API Key: \n*"+firstNumber + "\n");
        jTextPane3.setText(api_key);
        //System.exit ( 0 ); //ends the program
        JFileChooser chooser = new JFileChooser();
        chooser.setCurrentDirectory(new java.io.File("."));
        chooser.setDialogTitle("Pick OR Create a working directory for PizzaCat");
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        chooser.setAcceptAllFileFilterUsed(false);

        if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
            File Directory = chooser.getSelectedFile();
            System.out.println("getSelectedFile() : " + chooser.getSelectedFile());
            String file_name = Directory.toString();
            //jTextArea1.setText("PIZZACAT CURRENT SETTINGS : \n\nCurrently Working from Directory : \n*"+file_name);
            jTextPane4.setText(file_name);
        }

        JFileChooser chooser2 = new JFileChooser();
        chooser2.setCurrentDirectory(new java.io.File("."));
        chooser2.setDialogTitle("Pick or create a directory to store results");
        chooser2.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        chooser2.setAcceptAllFileFilterUsed(false);
        if (chooser2.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
            File Directory2 = chooser2.getSelectedFile();
            System.out.println("getSelectedFile() : " + chooser2.getSelectedFile());
            String file_name2 = Directory2.toString();
            //jTextArea1.setText("PIZZACAT CURRENT SETTINGS : \n\nCurrently Working from Directory : \n*"+file_name);
            jTextPane5.setText(file_name2);
        }

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jCheckBox2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox2ActionPerformed
        if (jCheckBox2.isSelected() == true) // if check box is checked
        {
            String dir = jTextPane4.getText();
            int choice = JOptionPane.showConfirmDialog(jFrame1,
                    "Are you sure you want to DELETE ALL files in the temp directory?");
            File[] files = new File(dir).listFiles();
            if (choice == JOptionPane.YES_OPTION) {
                //Regardless of what happened with deletion uncheck and clear table if yes is checked
                label7.setText("  Numebr of Queries : 0");
                label12.setText("  100 Indicators to be Queried");
                jTable1.setModel(new javax.swing.table.DefaultTableModel(new Object[][] { { null }, { null },
                        { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                        { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                        { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                        { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                        { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                        { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                        { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                        { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                        { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                        { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null },
                        { null }, { null }, { null }, { null }, { null }, { null }, { null }, { null } },
                        new String[] { "Extracted indicator to be queried by Threat Recon" }));
                jCheckBox2.doClick();
                for (File file : files) {
                    //int vv = 0;
                    if (file.isDirectory()) {
                        //System.out.println("Directory: " + file.getName());
                        //showFiles(file.listFiles()); // Calls same method again.
                        break;
                    } else {
                        //System.out.println("File: " + file.getName());
                        //String Filename = dir+"/"+file.getName();
                        if (file.delete()) {
                            System.out.println(file.getName() + " deleted!");
                        } else {
                            System.out.println("Delete operation failed.");
                        }

                    }

                    //System.out.println("DEBUG");
                    //DefaultTableModel dm = (DefaultTableModel)jTable1.getModel();
                    //dm.getDataVector().removeAllElements();
                    //jTable1.revalidate();

                }
            } else {
                //System.out.println("NO OR CANCEL");
                jCheckBox2.doClick();

            }

        }
    }//GEN-LAST:event_jCheckBox2ActionPerformed

    private void jCheckBox2StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jCheckBox2StateChanged
        // TODO add your handling code here:
    }//GEN-LAST:event_jCheckBox2StateChanged

    private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox1ActionPerformed
        // TODO add your handling code here:
        if (jCheckBox1.isSelected() == true) // if check box is checked
        {
            //System.out.println("DEBUG");
            //DefaultTableModel dm = (DefaultTableModel)jTable1.getModel();
            //dm.getDataVector().removeAllElements();
            //jTable1.revalidate();
            label6.setText("  Numebr of Results : 0");
            label11.setText("  Displaying First 500 Results");
            jTable2.setModel(new javax.swing.table.DefaultTableModel(new Object[][] {
                    //100
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    //200
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    //300
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    //400
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    //500
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
                            null },
                    { null, null, null, null, null, null, null, null, null, null, null }, },
                    new String[] { "INDICATOR ", "Type", "REFERENCE ", "SOURCE ", "KILLCHAIN ", "FIRST_SEEN ",
                            "LAST_SEEN ", "ATTRIBUTION ", "PROCESS_TYPE ", "RNAME ", "RDATA ", "ROOT_NODE ",
                            "COUNTRY ", "TAGS ", "COMMENT ", "CONFIDENCE" }));

            jCheckBox1.doClick();

        }
    }//GEN-LAST:event_jCheckBox1ActionPerformed

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
        //javax.swing.SwingUtilities.invokeLater(new Runnable() {
        // @Override
        //    public void run() {

        createAndShowGUI();
        //  }
        //});
        //jButton3.setEnabled(false);
    }//GEN-LAST:event_jButton3ActionPerformed

    private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton2MouseClicked
        // TODO add your handling code here:
        String inp = "";
        String path;
        path = jTextPane1.getText();
        //Change to uploaded file & rip Python code for regex + extraction of IOCs before TR
        File file = new File(path);
        System.out.println("Processing file" + path);
        try {
            Scanner scan = new Scanner(file);
            ArrayList<String> thelist = new ArrayList<String>();
            int countz = 0;
            while (scan.hasNextLine()) {
                inp = scan.nextLine();
                Pattern pattern2;
                //PATTERN BELOW IS TEH WINZ FOR OUR DATA USE
                String domainPattern = "^?([a-zA-Z0-9]+(\\.[a-zA-Z0-9]+)+.*)$";
                pattern2 = Pattern.compile(domainPattern, Pattern.CASE_INSENSITIVE);
                //System.out.println("Processing Domain Pattern(s)...");
                Matcher match2 = pattern2.matcher(inp);
                while (match2.find()) {
                    String wordz = match2.group();
                    if (wordz.indexOf(' ') > 0) {
                        String[] result = wordz.split(" ", 2);
                        String first = result[0];
                        wordz = first;
                        String rest = result[1];
                        //System.out.println("First: " + first);
                        //System.out.println("Rest: " + rest);
                    }
                    if (countz <= 99) {
                        jTable1.setValueAt(wordz, countz, 0);
                    }
                    System.out.println("Indicator found: " + countz + " " + wordz);
                    thelist.add(wordz);
                    countz++;
                }
            }
            label7.setText("  Numebr of Queries : " + countz);
            //THIS IS WHERE TO UPDATE TABLE
            String[] arrayz = thelist.toArray(new String[thelist.size()]);
            //System.out.println(Arrays.toString(arrayz));
            //IGNORE NEXT WARNING AND DON'T REMOVE EXCEPTION
        } catch (FileNotFoundException f) {
            f.printStackTrace();
        }
        //System.out.println("FIN");
    }//GEN-LAST:event_jButton2MouseClicked

    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton1MouseClicked
        JFileChooser chooser = new JFileChooser("");
        chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        int returnVal = chooser.showOpenDialog((java.awt.Component) null);

        if (returnVal == JFileChooser.APPROVE_OPTION) {

            java.io.File inFile;
            inFile = chooser.getSelectedFile();
            String path;
            path = inFile.getAbsolutePath();
            jTextPane1.setText(path);
            //processFile(inFile);
        }
    }//GEN-LAST:event_jButton1MouseClicked

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
        // TODO add your handling code here:
        System.out.println("You clicked something");
    }//GEN-LAST:event_jMenuItem1ActionPerformed

    public void toExcel(JTable table, File file) {
        try {
            try ( //TableModel model = table.getModel();
                    FileWriter excel = new FileWriter(file)) {
                for (int i = 0; i < jTable2.getColumnCount(); i++) {
                    excel.write(jTable2.getColumnName(i) + "\t");
                }

                excel.write("\n");

                for (int i = 0; i < jTable2.getRowCount(); i++) {
                    for (int j = 0; j < jTable2.getColumnCount(); j++) {
                        excel.write(jTable2.getValueAt(i, j).toString() + "\t");
                    }
                    excel.write("\n");
                }
            }

        } catch (IOException e) {
            System.out.println(e);
        }
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(PizzaCat.class.getName()).log(java.util.logging.Level.SEVERE, null,
                    ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(PizzaCat.class.getName()).log(java.util.logging.Level.SEVERE, null,
                    ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(PizzaCat.class.getName()).log(java.util.logging.Level.SEVERE, null,
                    ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(PizzaCat.class.getName()).log(java.util.logging.Level.SEVERE, null,
                    ex);
        }
        //</editor-fold>

        /* Create and display the form */

        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new PizzaCat().setVisible(true);

            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JCheckBox jCheckBox1;
    private javax.swing.JCheckBox jCheckBox2;
    private javax.swing.JFileChooser jFileChooser1;
    private javax.swing.JFrame jFrame1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JScrollPane jScrollPane6;
    private javax.swing.JScrollPane jScrollPane7;
    private javax.swing.JTable jTable1;
    private javax.swing.JTable jTable2;
    private javax.swing.JTextPane jTextPane1;
    private javax.swing.JTextPane jTextPane3;
    private javax.swing.JTextPane jTextPane4;
    private javax.swing.JTextPane jTextPane5;
    private java.awt.Label label10;
    private java.awt.Label label11;
    private java.awt.Label label12;
    private java.awt.Label label13;
    private java.awt.Label label14;
    private java.awt.Label label6;
    private java.awt.Label label7;
    private java.awt.Label label9;
    private java.awt.Panel panel1;
    // End of variables declaration//GEN-END:variables
}