// Generated by running
//	maketesttables
// DO NOT EDIT

package norm

var testRunes = []int{1, 12, 127, 128, 256, 2047, 2048, 2457, 65535, 65536, 65793, 1114111}

// testdataValues: 768 entries, 1536 bytes
// Block 2 is the null block.
var testdataValues = [768]uint16{
	// Block 0x0, offset 0x0
	0x000c: 0x0001,
	// Block 0x1, offset 0x40
	0x007f: 0x0002,
	// Block 0x2, offset 0x80
	// Block 0x3, offset 0xc0
	0x00c0: 0x0003,
	// Block 0x4, offset 0x100
	0x0100: 0x0004,
	// Block 0x5, offset 0x140
	0x017f: 0x0005,
	// Block 0x6, offset 0x180
	0x0180: 0x0006,
	// Block 0x7, offset 0x1c0
	0x01d9: 0x0007,
	// Block 0x8, offset 0x200
	0x023f: 0x0008,
	// Block 0x9, offset 0x240
	0x0240: 0x0009,
	// Block 0xa, offset 0x280
	0x0281: 0x000a,
	// Block 0xb, offset 0x2c0
	0x02ff: 0x000b,
}

// testdataLookup: 640 bytes
// Block 0 is the null block.
var testdataLookup = [640]uint8{
	// Block 0x0, offset 0x0
	// Block 0x1, offset 0x40
	// Block 0x2, offset 0x80
	// Block 0x3, offset 0xc0
	0x0c2: 0x03, 0x0c4: 0x04,
	0x0df: 0x05,
	0x0e0: 0x04,
	0x0ef: 0x05,
	0x0f0: 0x07, 0x0f4: 0x09,
	// Block 0x4, offset 0x100
	0x120: 0x06, 0x126: 0x07,
	// Block 0x5, offset 0x140
	0x17f: 0x08,
	// Block 0x6, offset 0x180
	0x180: 0x09, 0x184: 0x0a,
	// Block 0x7, offset 0x1c0
	0x1d0: 0x06,
	// Block 0x8, offset 0x200
	0x23f: 0x0b,
	// Block 0x9, offset 0x240
	0x24f: 0x08,
}

var testdataTrie = trie{testdataLookup[:], testdataValues[:]}
