// Path: puzlib/src/main/java/com/totsp/crossword/puz/Playboard.java
// public static class Position implements Serializable {
//     public int across;
//     public int down;
// 
//     protected Position(){
// 
//     }
// 
//     public Position(int across, int down) {
//         this.down = down;
//         this.across = across;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if ((o == null) || (o.getClass() != this.getClass())) {
//             return false;
//         }
// 
//         Position p = (Position) o;
// 
//         return ((p.down == this.down) && (p.across == this.across));
//     }
// 
//     @Override
//     public int hashCode() {
//         return Arrays.hashCode(new int[] {across, down});
//     }
// 
//     @Override
//     public String toString() {
//         return "[" + this.across + " x " + this.down + "]";
//     }
// }


import com.totsp.crossword.puz.Playboard.Position;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Date;
package com.totsp.crossword.puz;




public class Puzzle implements Serializable{
    private String author;
    private String copyright;
    private String notes;
    private String title;
    private String[] acrossClues;
    private Integer[] acrossCluesLookup;
    private String[] downClues;
    private Integer[] downCluesLookup;
    private int numberOfClues;
    private Date pubdate = new Date();
    private String source;
    private String sourceUrl = "";
    private Box[][] boxes;
    private Box[] boxesList;
    private String[] rawClues;
    private boolean updatable;
    private int height;
    private int width;
    private long playedTime;
    private boolean scrambled;
    public short solutionChecksum;
    private String version;
    private boolean hasGEXT;
// Path: puzlib/src/main/java/com/totsp/crossword/puz/Playboard.java
// public static class Position implements Serializable {
//     public int across;
//     public int down;
// 
//     protected Position(){
// 
//     }
// 
//     public Position(int across, int down) {
//         this.down = down;
//         this.across = across;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if ((o == null) || (o.getClass() != this.getClass())) {
//             return false;
//         }
// 
//         Position p = (Position) o;
// 
//         return ((p.down == this.down) && (p.across == this.across));
//     }
// 
//     @Override
//     public int hashCode() {
//         return Arrays.hashCode(new int[] {across, down});
//     }
// 
//     @Override
//     public String toString() {
//         return "[" + this.across + " x " + this.down + "]";
//     }
// }


// Path: puzlib/src/main/java/com/totsp/crossword/puz/Puzzle.java
import com.totsp.crossword.puz.Playboard.Position;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Date;

package com.totsp.crossword.puz;




public class Puzzle implements Serializable{
    private String author;
    private String copyright;
    private String notes;
    private String title;
    private String[] acrossClues;
    private Integer[] acrossCluesLookup;
    private String[] downClues;
    private Integer[] downCluesLookup;
    private int numberOfClues;
    private Date pubdate = new Date();
    private String source;
    private String sourceUrl = "";
    private Box[][] boxes;
    private Box[] boxesList;
    private String[] rawClues;
    private boolean updatable;
    private int height;
    private int width;
    private long playedTime;
    private boolean scrambled;
    public short solutionChecksum;
    private String version;
    private boolean hasGEXT;
    private Position position;