go-tetris/boards.go

716 lines
41 KiB
Go

package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
"github.com/gdamore/tcell"
)
// loadBoards loads the internal boards
func loadBoards() error {
logger.Println("loadBoards start")
var boardsJSON []BoardsJSON
err := json.Unmarshal(boardsInternal, &boardsJSON)
if err != nil {
return fmt.Errorf("unmarshal error: %v", err)
}
numInternalBoards = len(boardsJSON)
boards = make([]Boards, numInternalBoards)
for boardNum, boardLoad := range boardsJSON {
aBoards := Boards{name: boardLoad.Name}
aBoards.colors = make([][]tcell.Color, len(boardLoad.Mino))
aBoards.rotation = boardLoad.Rotation
for i := 0; i < len(boardLoad.Mino); i++ {
aBoards.colors[i] = make([]tcell.Color, len(boardLoad.Mino[i]))
for j := 0; j < len(boardLoad.Mino[i]); j++ {
switch boardLoad.Mino[i][j] {
case "b":
aBoards.colors[i][j] = colorBlank
case "i":
aBoards.colors[i][j] = colorCyan
case "j":
aBoards.colors[i][j] = colorBlue
case "l":
aBoards.colors[i][j] = colorWhite
case "o":
aBoards.colors[i][j] = colorYellow
case "s":
aBoards.colors[i][j] = colorGreen
case "t":
aBoards.colors[i][j] = colorMagenta
case "z":
aBoards.colors[i][j] = colorRed
}
}
}
boards[boardNum] = aBoards
}
boardsJSON = nil
logger.Println("loadBoards end")
return nil
}
// loadUserBoards loads the user boards from file
func loadUserBoards() error {
_, err := os.Stat(baseDir + settingsFileName)
if os.IsNotExist(err) {
return nil
}
logger.Println("loadUserBoards start")
if err != nil {
return fmt.Errorf("stat error: %v", err)
}
var settingsJSON []byte
settingsJSON, err = ioutil.ReadFile(baseDir + settingsFileName)
if err != nil {
return fmt.Errorf("read file error: %v", err)
}
if len(settingsJSON) < 2 {
return nil
}
var settings Settings
err = json.Unmarshal(settingsJSON, &settings)
if err != nil {
return fmt.Errorf("unmarshal error: %v", err)
}
for _, boardLoad := range settings.Boards {
aBoards := Boards{name: boardLoad.Name}
aBoards.colors = make([][]tcell.Color, len(boardLoad.Mino))
aBoards.rotation = boardLoad.Rotation
for i := 0; i < len(boardLoad.Mino); i++ {
aBoards.colors[i] = make([]tcell.Color, len(boardLoad.Mino[i]))
for j := 0; j < len(boardLoad.Mino[i]); j++ {
switch boardLoad.Mino[i][j] {
case "b":
aBoards.colors[i][j] = colorBlank
case "i":
aBoards.colors[i][j] = colorCyan
case "j":
aBoards.colors[i][j] = colorBlue
case "l":
aBoards.colors[i][j] = colorWhite
case "o":
aBoards.colors[i][j] = colorYellow
case "s":
aBoards.colors[i][j] = colorGreen
case "t":
aBoards.colors[i][j] = colorMagenta
case "z":
aBoards.colors[i][j] = colorRed
}
}
}
boards = append(boards, aBoards)
}
logger.Println("loadUserBoards end")
return nil
}
// saveUserBoards saves the user boards to file
func saveUserBoards() error {
logger.Println("saveUserBoards start")
boardsJSON := make([]BoardsJSON, len(boards)-numInternalBoards)
for x := numInternalBoards; x < len(boards); x++ {
aBoards := BoardsJSON{Name: boards[x].name}
aBoards.Mino = make([][]string, len(boards[x].colors))
aBoards.Rotation = boards[x].rotation
for i := 0; i < len(boards[x].colors); i++ {
aBoards.Mino[i] = make([]string, len(boards[x].colors[i]))
for j := 0; j < len(boards[x].colors[i]); j++ {
switch boards[x].colors[i][j] {
case colorBlank:
aBoards.Mino[i][j] = "b"
case colorCyan:
aBoards.Mino[i][j] = "i"
case colorBlue:
aBoards.Mino[i][j] = "j"
case colorWhite:
aBoards.Mino[i][j] = "l"
case colorYellow:
aBoards.Mino[i][j] = "o"
case colorGreen:
aBoards.Mino[i][j] = "s"
case colorMagenta:
aBoards.Mino[i][j] = "t"
case colorRed:
aBoards.Mino[i][j] = "z"
}
}
}
boardsJSON[x-numInternalBoards] = aBoards
}
settings := Settings{Boards: boardsJSON}
settingsJSON, err := json.Marshal(settings)
if err != nil {
return fmt.Errorf("marshal error: %v", err)
}
err = ioutil.WriteFile(baseDir+settingsFileName, settingsJSON, 0644)
if err != nil {
return fmt.Errorf("write file error: %v", err)
}
logger.Println("saveUserBoards end")
return nil
}
var boardsInternal = []byte(`
[
{
"name":"10 x 20 blank",
"mino":[
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"]
],
"rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"10 x 20 checkerboard double",
"mino":[
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"]
],
"rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"10 x 20 checkerboard single",
"mino":[
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"]
],
"rotation":[
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"20 x 20 blank",
"mino":[
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"]
],
"rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"20 x 20 heart",
"mino":[
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","l","l","l","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","z","z","t","l","o","o","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","z","z","t","t","t","o","o","j","b","b","b","b","b"],
["b","b","b","b","b","b","b","l","l","l","i","i","i","i","j","b","b","b","b","b"],
["b","b","b","b","b","b","b","s","s","l","l","l","z","z","j","j","b","b","b","b"],
["b","b","b","b","b","b","b","b","s","s","l","z","z","i","i","i","i","b","b","b"],
["b","b","b","b","b","b","b","b","j","j","l","s","s","t","t","t","z","z","b","b"],
["b","b","b","b","b","b","b","b","s","j","o","o","s","s","t","z","z","b","b","b"],
["b","b","b","b","b","b","b","s","s","j","o","o","o","o","l","l","b","b","b","b"],
["b","b","b","b","b","b","b","s","z","z","s","s","o","o","l","b","b","b","b","b"],
["b","b","b","b","b","b","b","z","z","t","j","s","s","j","l","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","t","t","j","j","j","j","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","t","j","j","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"]
],
"rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,1,1,3,1,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1,3,3,3,0,0,2,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1,1,3,3,3,3,2,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1,1,2,2,1,1,2,2,0,0,0,0],
[0,0,0,0,0,0,0,0,1,1,2,1,1,1,1,1,1,0,0,0],
[0,0,0,0,0,0,0,0,0,0,2,1,1,1,1,1,1,1,0,0],
[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0],
[0,0,0,0,0,0,0,0,0,0,1,1,3,3,2,2,0,0,0,0],
[0,0,0,0,0,0,0,0,1,1,1,1,3,3,2,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1,0,2,1,1,1,2,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,2,3,3,3,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"20 x 20 checkerboard double",
"mino":[
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"]
],
"rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"20 x 20 checkerboard single",
"mino":[
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"]
],
"rotation":[
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"26 x 28 peace symbol",
"Mino":[
["b","b","b","b","b","b","b","b","b","b","b","b","j","i","i","i","i","o","o","l","l","j","j","j","z","j","j","i"],
["b","b","b","b","b","b","b","b","j","l","j","j","j","s","j","j","j","o","o","l","z","j","l","l","z","z","j","i"],
["b","b","b","b","b","b","b","b","j","l","l","l","s","s","j","b","b","b","b","l","z","z","l","o","o","z","j","i"],
["b","b","b","b","b","b","b","t","j","j","z","z","s","b","b","b","j","l","b","b","b","z","l","o","o","j","z","i"],
["b","b","b","b","b","b","t","t","t","z","z","b","b","b","j","j","j","l","l","l","b","b","b","j","j","j","z","z"],
["b","b","b","b","b","b","i","i","i","i","b","b","j","z","s","s","t","t","t","z","z","s","b","b","t","t","t","z"],
["b","b","b","b","b","b","t","t","t","b","b","s","j","z","z","s","s","t","z","z","s","s","b","b","b","t","l","l"],
["b","b","b","b","b","b","b","t","b","b","s","s","j","j","z","j","j","j","o","o","s","b","b","s","b","b","l","i"],
["b","b","b","b","b","b","z","z","b","l","s","i","i","i","i","j","s","s","o","o","b","b","s","s","j","b","l","i"],
["b","b","b","b","b","z","z","b","b","l","o","o","l","l","t","t","t","s","s","b","b","z","s","b","j","b","b","i"],
["b","b","b","b","b","l","l","b","l","l","o","o","l","o","o","t","z","z","b","b","t","z","z","l","j","j","b","i"],
["b","b","b","b","b","l","b","b","i","i","i","i","l","o","o","z","z","b","b","t","t","t","z","l","l","l","b","b"],
["b","b","b","b","b","l","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","j","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","j","b","b","o","o","l","l","t","t","t","z","z","b","b","i","i","i","i","j","o","o","b","b"],
["b","b","b","b","b","j","j","b","o","o","l","s","s","t","z","z","s","s","b","b","s","s","b","j","o","o","b","l"],
["b","b","b","b","b","b","z","b","b","z","l","i","s","s","l","l","l","s","s","b","b","s","s","j","j","b","b","l"],
["b","b","b","b","b","b","z","z","b","z","z","i","j","j","j","i","l","j","j","j","b","b","t","t","t","b","l","l"],
["b","b","b","b","b","b","l","z","b","b","z","i","j","o","o","i","s","j","o","o","z","b","b","t","b","b","j","j"],
["b","b","b","b","b","b","l","l","l","b","b","i","l","o","o","i","s","s","o","o","z","z","b","b","b","o","o","j"],
["b","b","b","b","b","b","i","i","i","i","b","b","l","l","l","i","j","s","t","t","t","z","b","b","t","o","o","j"],
["b","b","b","b","b","b","b","b","t","s","s","b","b","b","j","j","j","z","z","t","b","b","b","t","t","t","z","z"],
["b","b","b","b","b","b","b","b","t","t","s","s","l","b","b","b","z","z","b","b","b","i","i","i","i","z","z","i"],
["b","b","b","b","b","b","b","b","t","o","o","z","l","l","l","b","b","b","b","j","j","j","t","t","t","j","j","i"],
["b","b","b","b","b","b","b","b","b","o","o","z","z","j","j","j","l","l","l","j","t","s","s","t","o","o","j","i"],
["b","b","b","b","b","b","b","b","i","i","i","i","z","j","i","i","i","i","l","t","t","t","s","s","o","o","j","i"]
],
"Rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,0,0,2,2,1,1,1,0,0,0,2],
[0,0,0,0,0,0,0,0,2,3,3,3,3,0,1,1,1,0,0,2,0,1,2,2,0,0,0,2],
[0,0,0,0,0,0,0,0,2,3,3,3,0,0,1,0,0,0,0,2,0,0,2,1,1,0,0,2],
[0,0,0,0,0,0,0,3,2,2,1,1,0,0,0,0,3,3,0,0,0,0,2,1,1,3,0,2],
[0,0,0,0,0,0,3,3,3,1,1,0,0,0,3,3,3,3,3,3,0,0,0,3,3,3,0,0],
[0,0,0,0,0,0,1,1,1,1,0,0,2,0,3,3,1,1,1,3,3,0,0,0,1,1,1,0],
[0,0,0,0,0,0,1,1,1,0,0,2,2,0,0,3,3,1,3,3,0,0,0,0,0,1,2,2],
[0,0,0,0,0,0,0,1,0,0,2,2,2,2,0,1,1,1,2,2,0,0,0,2,0,0,2,0],
[0,0,0,0,0,0,3,3,0,0,2,3,3,3,3,1,1,1,2,2,0,0,2,2,2,0,2,0],
[0,0,0,0,0,3,3,0,0,0,1,1,2,2,1,1,1,1,1,0,0,0,2,0,2,0,0,0],
[0,0,0,0,0,2,2,0,0,0,1,1,2,3,3,1,3,3,0,0,3,0,0,3,2,2,0,0],
[0,0,0,0,0,2,0,0,1,1,1,1,2,3,3,3,3,0,0,3,3,3,0,3,3,3,0,0],
[0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,0,0,0,2,2,1,1,1,3,3,0,0,1,1,1,1,2,1,1,0,0],
[0,0,0,0,0,2,2,0,0,0,2,1,1,1,3,3,1,1,0,0,3,3,0,2,1,1,0,0],
[0,0,0,0,0,0,2,0,0,0,2,2,1,1,1,1,1,1,1,0,0,3,3,2,2,0,0,0],
[0,0,0,0,0,0,2,2,0,0,0,2,1,1,1,0,1,1,1,1,0,0,1,1,1,0,0,0],
[0,0,0,0,0,0,3,2,0,0,0,2,1,3,3,0,0,1,0,0,2,0,0,1,0,0,0,0],
[0,0,0,0,0,0,3,3,3,0,0,2,3,3,3,0,0,0,0,0,2,2,0,0,0,2,2,0],
[0,0,0,0,0,0,1,1,1,1,0,0,3,3,3,0,3,0,1,1,1,2,0,0,3,2,2,0],
[0,0,0,0,0,0,0,0,2,3,3,0,0,0,3,3,3,3,3,1,0,0,0,3,3,3,1,1],
[0,0,0,0,0,0,0,0,2,2,3,3,3,0,0,0,3,3,0,0,0,3,3,3,3,1,1,2],
[0,0,0,0,0,0,0,0,2,1,1,2,3,3,3,0,0,0,0,1,1,1,1,1,1,0,0,2],
[0,0,0,0,0,0,0,0,0,1,1,2,2,1,1,1,1,1,1,1,3,3,3,1,3,3,0,2],
[0,0,0,0,0,0,0,0,3,3,3,3,2,1,3,3,3,3,1,3,3,3,3,3,3,3,0,2]
]
},
{
"name":"30 x 30 blank",
"mino":[
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"],
["b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b","b"]
],
"rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"30 x 30 checkerboard double",
"mino":[
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"],
["b","b","b","b","b","b","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z","b","b","z","z"]
],
"rotation":[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
},
{
"name":"30 x 30 checkerboard single",
"mino":[
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"],
["b","b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z"],
["b","b","b","b","b","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b","z","b"]
],
"rotation":[
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
]
}
]
`)