diff --git a/vendor/golang.org/x/text/encoding/charmap/charmap.go b/vendor/golang.org/x/text/encoding/charmap/charmap.go
index 6e62a8374..e89ff0734 100644
--- a/vendor/golang.org/x/text/encoding/charmap/charmap.go
+++ b/vendor/golang.org/x/text/encoding/charmap/charmap.go
@@ -33,32 +33,32 @@ var (
 	ISO8859_8I encoding.Encoding = &iso8859_8I
 
 	iso8859_6E = internal.Encoding{
-		ISO8859_6,
-		"ISO-8859-6E",
-		identifier.ISO88596E,
+		Encoding: ISO8859_6,
+		Name:     "ISO-8859-6E",
+		MIB:      identifier.ISO88596E,
 	}
 
 	iso8859_6I = internal.Encoding{
-		ISO8859_6,
-		"ISO-8859-6I",
-		identifier.ISO88596I,
+		Encoding: ISO8859_6,
+		Name:     "ISO-8859-6I",
+		MIB:      identifier.ISO88596I,
 	}
 
 	iso8859_8E = internal.Encoding{
-		ISO8859_8,
-		"ISO-8859-8E",
-		identifier.ISO88598E,
+		Encoding: ISO8859_8,
+		Name:     "ISO-8859-8E",
+		MIB:      identifier.ISO88598E,
 	}
 
 	iso8859_8I = internal.Encoding{
-		ISO8859_8,
-		"ISO-8859-8I",
-		identifier.ISO88598I,
+		Encoding: ISO8859_8,
+		Name:     "ISO-8859-8I",
+		MIB:      identifier.ISO88598I,
 	}
 )
 
 // All is a list of all defined encodings in this package.
-var All = listAll
+var All []encoding.Encoding = listAll
 
 // TODO: implement these encodings, in order of importance.
 // ASCII, ISO8859_1:       Rather common. Close to Windows 1252.
@@ -70,8 +70,8 @@ type utf8Enc struct {
 	data [3]byte
 }
 
-// charmap describes an 8-bit character set encoding.
-type charmap struct {
+// Charmap is an 8-bit character set encoding.
+type Charmap struct {
 	// name is the encoding's name.
 	name string
 	// mib is the encoding type of this encoder.
@@ -79,7 +79,7 @@ type charmap struct {
 	// asciiSuperset states whether the encoding is a superset of ASCII.
 	asciiSuperset bool
 	// low is the lower bound of the encoded byte for a non-ASCII rune. If
-	// charmap.asciiSuperset is true then this will be 0x80, otherwise 0x00.
+	// Charmap.asciiSuperset is true then this will be 0x80, otherwise 0x00.
 	low uint8
 	// replacement is the encoded replacement character.
 	replacement byte
@@ -91,26 +91,30 @@ type charmap struct {
 	encode [256]uint32
 }
 
-func (m *charmap) NewDecoder() *encoding.Decoder {
+// NewDecoder implements the encoding.Encoding interface.
+func (m *Charmap) NewDecoder() *encoding.Decoder {
 	return &encoding.Decoder{Transformer: charmapDecoder{charmap: m}}
 }
 
-func (m *charmap) NewEncoder() *encoding.Encoder {
+// NewEncoder implements the encoding.Encoding interface.
+func (m *Charmap) NewEncoder() *encoding.Encoder {
 	return &encoding.Encoder{Transformer: charmapEncoder{charmap: m}}
 }
 
-func (m *charmap) String() string {
+// String returns the Charmap's name.
+func (m *Charmap) String() string {
 	return m.name
 }
 
-func (m *charmap) ID() (mib identifier.MIB, other string) {
+// ID implements an internal interface.
+func (m *Charmap) ID() (mib identifier.MIB, other string) {
 	return m.mib, ""
 }
 
 // charmapDecoder implements transform.Transformer by decoding to UTF-8.
 type charmapDecoder struct {
 	transform.NopResetter
-	charmap *charmap
+	charmap *Charmap
 }
 
 func (m charmapDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
@@ -142,10 +146,22 @@ func (m charmapDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int,
 	return nDst, nSrc, err
 }
 
+// DecodeByte returns the Charmap's rune decoding of the byte b.
+func (m *Charmap) DecodeByte(b byte) rune {
+	switch x := &m.decode[b]; x.len {
+	case 1:
+		return rune(x.data[0])
+	case 2:
+		return rune(x.data[0]&0x1f)<<6 | rune(x.data[1]&0x3f)
+	default:
+		return rune(x.data[0]&0x0f)<<12 | rune(x.data[1]&0x3f)<<6 | rune(x.data[2]&0x3f)
+	}
+}
+
 // charmapEncoder implements transform.Transformer by encoding from UTF-8.
 type charmapEncoder struct {
 	transform.NopResetter
-	charmap *charmap
+	charmap *Charmap
 }
 
 func (m charmapEncoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
@@ -207,3 +223,27 @@ loop:
 	}
 	return nDst, nSrc, err
 }
+
+// EncodeRune returns the Charmap's byte encoding of the rune r. ok is whether
+// r is in the Charmap's repertoire. If not, b is set to the Charmap's
+// replacement byte. This is often the ASCII substitute character '\x1a'.
+func (m *Charmap) EncodeRune(r rune) (b byte, ok bool) {
+	if r < utf8.RuneSelf && m.asciiSuperset {
+		return byte(r), true
+	}
+	for low, high := int(m.low), 0x100; ; {
+		if low >= high {
+			return m.replacement, false
+		}
+		mid := (low + high) / 2
+		got := m.encode[mid]
+		gotRune := rune(got & (1<<24 - 1))
+		if gotRune < r {
+			low = mid + 1
+		} else if gotRune > r {
+			high = mid
+		} else {
+			return byte(got >> 24), true
+		}
+	}
+}
diff --git a/vendor/golang.org/x/text/encoding/charmap/maketables.go b/vendor/golang.org/x/text/encoding/charmap/maketables.go
deleted file mode 100644
index 9672c552d..000000000
--- a/vendor/golang.org/x/text/encoding/charmap/maketables.go
+++ /dev/null
@@ -1,524 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-import (
-	"bufio"
-	"fmt"
-	"log"
-	"net/http"
-	"sort"
-	"strings"
-	"unicode/utf8"
-
-	"golang.org/x/text/encoding"
-	"golang.org/x/text/internal/gen"
-)
-
-const ascii = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" +
-	"\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f" +
-	` !"#$%&'()*+,-./0123456789:;<=>?` +
-	`@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` +
-	"`abcdefghijklmnopqrstuvwxyz{|}~\u007f"
-
-var encodings = []struct {
-	name        string
-	mib         string
-	comment     string
-	varName     string
-	replacement byte
-	mapping     string
-}{
-	{
-		"IBM Code Page 437",
-		"PC8CodePage437",
-		"",
-		"CodePage437",
-		encoding.ASCIISub,
-		"http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM437-2.1.2.ucm",
-	},
-	{
-		"IBM Code Page 850",
-		"PC850Multilingual",
-		"",
-		"CodePage850",
-		encoding.ASCIISub,
-		"http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM850-2.1.2.ucm",
-	},
-	{
-		"IBM Code Page 852",
-		"PCp852",
-		"",
-		"CodePage852",
-		encoding.ASCIISub,
-		"http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM852-2.1.2.ucm",
-	},
-	{
-		"IBM Code Page 855",
-		"IBM855",
-		"",
-		"CodePage855",
-		encoding.ASCIISub,
-		"http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM855-2.1.2.ucm",
-	},
-	{
-		"Windows Code Page 858", // PC latin1 with Euro
-		"IBM00858",
-		"",
-		"CodePage858",
-		encoding.ASCIISub,
-		"http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/windows-858-2000.ucm",
-	},
-	{
-		"IBM Code Page 860",
-		"IBM860",
-		"",
-		"CodePage860",
-		encoding.ASCIISub,
-		"http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM860-2.1.2.ucm",
-	},
-	{
-		"IBM Code Page 862",
-		"PC862LatinHebrew",
-		"",
-		"CodePage862",
-		encoding.ASCIISub,
-		"http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM862-2.1.2.ucm",
-	},
-	{
-		"IBM Code Page 863",
-		"IBM863",
-		"",
-		"CodePage863",
-		encoding.ASCIISub,
-		"http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM863-2.1.2.ucm",
-	},
-	{
-		"IBM Code Page 865",
-		"IBM865",
-		"",
-		"CodePage865",
-		encoding.ASCIISub,
-		"http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/glibc-IBM865-2.1.2.ucm",
-	},
-	{
-		"IBM Code Page 866",
-		"IBM866",
-		"",
-		"CodePage866",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-ibm866.txt",
-	},
-	{
-		"ISO 8859-1",
-		"ISOLatin1",
-		"",
-		"ISO8859_1",
-		encoding.ASCIISub,
-		"http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/iso-8859_1-1998.ucm",
-	},
-	{
-		"ISO 8859-2",
-		"ISOLatin2",
-		"",
-		"ISO8859_2",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-iso-8859-2.txt",
-	},
-	{
-		"ISO 8859-3",
-		"ISOLatin3",
-		"",
-		"ISO8859_3",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-iso-8859-3.txt",
-	},
-	{
-		"ISO 8859-4",
-		"ISOLatin4",
-		"",
-		"ISO8859_4",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-iso-8859-4.txt",
-	},
-	{
-		"ISO 8859-5",
-		"ISOLatinCyrillic",
-		"",
-		"ISO8859_5",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-iso-8859-5.txt",
-	},
-	{
-		"ISO 8859-6",
-		"ISOLatinArabic",
-		"",
-		"ISO8859_6,ISO8859_6E,ISO8859_6I",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-iso-8859-6.txt",
-	},
-	{
-		"ISO 8859-7",
-		"ISOLatinGreek",
-		"",
-		"ISO8859_7",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-iso-8859-7.txt",
-	},
-	{
-		"ISO 8859-8",
-		"ISOLatinHebrew",
-		"",
-		"ISO8859_8,ISO8859_8E,ISO8859_8I",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-iso-8859-8.txt",
-	},
-	{
-		"ISO 8859-10",
-		"ISOLatin6",
-		"",
-		"ISO8859_10",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-iso-8859-10.txt",
-	},
-	{
-		"ISO 8859-13",
-		"ISO885913",
-		"",
-		"ISO8859_13",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-iso-8859-13.txt",
-	},
-	{
-		"ISO 8859-14",
-		"ISO885914",
-		"",
-		"ISO8859_14",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-iso-8859-14.txt",
-	},
-	{
-		"ISO 8859-15",
-		"ISO885915",
-		"",
-		"ISO8859_15",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-iso-8859-15.txt",
-	},
-	{
-		"ISO 8859-16",
-		"ISO885916",
-		"",
-		"ISO8859_16",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-iso-8859-16.txt",
-	},
-	{
-		"KOI8-R",
-		"KOI8R",
-		"",
-		"KOI8R",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-koi8-r.txt",
-	},
-	{
-		"KOI8-U",
-		"KOI8U",
-		"",
-		"KOI8U",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-koi8-u.txt",
-	},
-	{
-		"Macintosh",
-		"Macintosh",
-		"",
-		"Macintosh",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-macintosh.txt",
-	},
-	{
-		"Macintosh Cyrillic",
-		"MacintoshCyrillic",
-		"",
-		"MacintoshCyrillic",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-x-mac-cyrillic.txt",
-	},
-	{
-		"Windows 874",
-		"Windows874",
-		"",
-		"Windows874",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-windows-874.txt",
-	},
-	{
-		"Windows 1250",
-		"Windows1250",
-		"",
-		"Windows1250",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-windows-1250.txt",
-	},
-	{
-		"Windows 1251",
-		"Windows1251",
-		"",
-		"Windows1251",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-windows-1251.txt",
-	},
-	{
-		"Windows 1252",
-		"Windows1252",
-		"",
-		"Windows1252",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-windows-1252.txt",
-	},
-	{
-		"Windows 1253",
-		"Windows1253",
-		"",
-		"Windows1253",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-windows-1253.txt",
-	},
-	{
-		"Windows 1254",
-		"Windows1254",
-		"",
-		"Windows1254",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-windows-1254.txt",
-	},
-	{
-		"Windows 1255",
-		"Windows1255",
-		"",
-		"Windows1255",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-windows-1255.txt",
-	},
-	{
-		"Windows 1256",
-		"Windows1256",
-		"",
-		"Windows1256",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-windows-1256.txt",
-	},
-	{
-		"Windows 1257",
-		"Windows1257",
-		"",
-		"Windows1257",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-windows-1257.txt",
-	},
-	{
-		"Windows 1258",
-		"Windows1258",
-		"",
-		"Windows1258",
-		encoding.ASCIISub,
-		"http://encoding.spec.whatwg.org/index-windows-1258.txt",
-	},
-	{
-		"X-User-Defined",
-		"XUserDefined",
-		"It is defined at http://encoding.spec.whatwg.org/#x-user-defined",
-		"XUserDefined",
-		encoding.ASCIISub,
-		ascii +
-			"\uf780\uf781\uf782\uf783\uf784\uf785\uf786\uf787" +
-			"\uf788\uf789\uf78a\uf78b\uf78c\uf78d\uf78e\uf78f" +
-			"\uf790\uf791\uf792\uf793\uf794\uf795\uf796\uf797" +
-			"\uf798\uf799\uf79a\uf79b\uf79c\uf79d\uf79e\uf79f" +
-			"\uf7a0\uf7a1\uf7a2\uf7a3\uf7a4\uf7a5\uf7a6\uf7a7" +
-			"\uf7a8\uf7a9\uf7aa\uf7ab\uf7ac\uf7ad\uf7ae\uf7af" +
-			"\uf7b0\uf7b1\uf7b2\uf7b3\uf7b4\uf7b5\uf7b6\uf7b7" +
-			"\uf7b8\uf7b9\uf7ba\uf7bb\uf7bc\uf7bd\uf7be\uf7bf" +
-			"\uf7c0\uf7c1\uf7c2\uf7c3\uf7c4\uf7c5\uf7c6\uf7c7" +
-			"\uf7c8\uf7c9\uf7ca\uf7cb\uf7cc\uf7cd\uf7ce\uf7cf" +
-			"\uf7d0\uf7d1\uf7d2\uf7d3\uf7d4\uf7d5\uf7d6\uf7d7" +
-			"\uf7d8\uf7d9\uf7da\uf7db\uf7dc\uf7dd\uf7de\uf7df" +
-			"\uf7e0\uf7e1\uf7e2\uf7e3\uf7e4\uf7e5\uf7e6\uf7e7" +
-			"\uf7e8\uf7e9\uf7ea\uf7eb\uf7ec\uf7ed\uf7ee\uf7ef" +
-			"\uf7f0\uf7f1\uf7f2\uf7f3\uf7f4\uf7f5\uf7f6\uf7f7" +
-			"\uf7f8\uf7f9\uf7fa\uf7fb\uf7fc\uf7fd\uf7fe\uf7ff",
-	},
-}
-
-func getWHATWG(url string) string {
-	res, err := http.Get(url)
-	if err != nil {
-		log.Fatalf("%q: Get: %v", url, err)
-	}
-	defer res.Body.Close()
-
-	mapping := make([]rune, 128)
-	for i := range mapping {
-		mapping[i] = '\ufffd'
-	}
-
-	scanner := bufio.NewScanner(res.Body)
-	for scanner.Scan() {
-		s := strings.TrimSpace(scanner.Text())
-		if s == "" || s[0] == '#' {
-			continue
-		}
-		x, y := 0, 0
-		if _, err := fmt.Sscanf(s, "%d\t0x%x", &x, &y); err != nil {
-			log.Fatalf("could not parse %q", s)
-		}
-		if x < 0 || 128 <= x {
-			log.Fatalf("code %d is out of range", x)
-		}
-		if 0x80 <= y && y < 0xa0 {
-			// We diverge from the WHATWG spec by mapping control characters
-			// in the range [0x80, 0xa0) to U+FFFD.
-			continue
-		}
-		mapping[x] = rune(y)
-	}
-	return ascii + string(mapping)
-}
-
-func getUCM(url string) string {
-	res, err := http.Get(url)
-	if err != nil {
-		log.Fatalf("%q: Get: %v", url, err)
-	}
-	defer res.Body.Close()
-
-	mapping := make([]rune, 256)
-	for i := range mapping {
-		mapping[i] = '\ufffd'
-	}
-
-	charsFound := 0
-	scanner := bufio.NewScanner(res.Body)
-	for scanner.Scan() {
-		s := strings.TrimSpace(scanner.Text())
-		if s == "" || s[0] == '#' {
-			continue
-		}
-		var c byte
-		var r rune
-		if _, err := fmt.Sscanf(s, `<U%x> \x%x |0`, &r, &c); err != nil {
-			continue
-		}
-		mapping[c] = r
-		charsFound++
-	}
-
-	if charsFound < 200 {
-		log.Fatalf("%q: only %d characters found (wrong page format?)", url, charsFound)
-	}
-
-	return string(mapping)
-}
-
-func main() {
-	mibs := map[string]bool{}
-	all := []string{}
-
-	w := gen.NewCodeWriter()
-	defer w.WriteGoFile("tables.go", "charmap")
-
-	printf := func(s string, a ...interface{}) { fmt.Fprintf(w, s, a...) }
-
-	printf("import (\n")
-	printf("\t\"golang.org/x/text/encoding\"\n")
-	printf("\t\"golang.org/x/text/encoding/internal/identifier\"\n")
-	printf(")\n\n")
-	for _, e := range encodings {
-		varNames := strings.Split(e.varName, ",")
-		all = append(all, varNames...)
-		varName := varNames[0]
-		switch {
-		case strings.HasPrefix(e.mapping, "http://encoding.spec.whatwg.org/"):
-			e.mapping = getWHATWG(e.mapping)
-		case strings.HasPrefix(e.mapping, "http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/"):
-			e.mapping = getUCM(e.mapping)
-		}
-
-		asciiSuperset, low := strings.HasPrefix(e.mapping, ascii), 0x00
-		if asciiSuperset {
-			low = 0x80
-		}
-		lvn := 1
-		if strings.HasPrefix(varName, "ISO") || strings.HasPrefix(varName, "KOI") {
-			lvn = 3
-		}
-		lowerVarName := strings.ToLower(varName[:lvn]) + varName[lvn:]
-		printf("// %s is the %s encoding.\n", varName, e.name)
-		if e.comment != "" {
-			printf("//\n// %s\n", e.comment)
-		}
-		printf("var %s encoding.Encoding = &%s\n\nvar %s = charmap{\nname: %q,\n",
-			varName, lowerVarName, lowerVarName, e.name)
-		if mibs[e.mib] {
-			log.Fatalf("MIB type %q declared multiple times.", e.mib)
-		}
-		printf("mib: identifier.%s,\n", e.mib)
-		printf("asciiSuperset: %t,\n", asciiSuperset)
-		printf("low: 0x%02x,\n", low)
-		printf("replacement: 0x%02x,\n", e.replacement)
-
-		printf("decode: [256]utf8Enc{\n")
-		i, backMapping := 0, map[rune]byte{}
-		for _, c := range e.mapping {
-			if _, ok := backMapping[c]; !ok && c != utf8.RuneError {
-				backMapping[c] = byte(i)
-			}
-			var buf [8]byte
-			n := utf8.EncodeRune(buf[:], c)
-			if n > 3 {
-				panic(fmt.Sprintf("rune %q (%U) is too long", c, c))
-			}
-			printf("{%d,[3]byte{0x%02x,0x%02x,0x%02x}},", n, buf[0], buf[1], buf[2])
-			if i%2 == 1 {
-				printf("\n")
-			}
-			i++
-		}
-		printf("},\n")
-
-		printf("encode: [256]uint32{\n")
-		encode := make([]uint32, 0, 256)
-		for c, i := range backMapping {
-			encode = append(encode, uint32(i)<<24|uint32(c))
-		}
-		sort.Sort(byRune(encode))
-		for len(encode) < cap(encode) {
-			encode = append(encode, encode[len(encode)-1])
-		}
-		for i, enc := range encode {
-			printf("0x%08x,", enc)
-			if i%8 == 7 {
-				printf("\n")
-			}
-		}
-		printf("},\n}\n")
-
-		// Add an estimate of the size of a single charmap{} struct value, which
-		// includes two 256 elem arrays of 4 bytes and some extra fields, which
-		// align to 3 uint64s on 64-bit architectures.
-		w.Size += 2*4*256 + 3*8
-	}
-	// TODO: add proper line breaking.
-	printf("var listAll = []encoding.Encoding{\n%s,\n}\n\n", strings.Join(all, ",\n"))
-}
-
-type byRune []uint32
-
-func (b byRune) Len() int           { return len(b) }
-func (b byRune) Less(i, j int) bool { return b[i]&0xffffff < b[j]&0xffffff }
-func (b byRune) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }
diff --git a/vendor/golang.org/x/text/encoding/charmap/tables.go b/vendor/golang.org/x/text/encoding/charmap/tables.go
index 5ae8dbcfa..cf7281e9e 100644
--- a/vendor/golang.org/x/text/encoding/charmap/tables.go
+++ b/vendor/golang.org/x/text/encoding/charmap/tables.go
@@ -1,4 +1,4 @@
-// This file was generated by go generate; DO NOT EDIT
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 package charmap
 
@@ -7,10 +7,185 @@ import (
 	"golang.org/x/text/encoding/internal/identifier"
 )
 
-// CodePage437 is the IBM Code Page 437 encoding.
-var CodePage437 encoding.Encoding = &codePage437
+// CodePage037 is the IBM Code Page 037 encoding.
+var CodePage037 *Charmap = &codePage037
 
-var codePage437 = charmap{
+var codePage037 = Charmap{
+	name:          "IBM Code Page 037",
+	mib:           identifier.IBM037,
+	asciiSuperset: false,
+	low:           0x00,
+	replacement:   0x3f,
+	decode: [256]utf8Enc{
+		{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},
+		{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}},
+		{2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},
+		{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},
+		{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},
+		{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},
+		{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}},
+		{1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}},
+		{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}},
+		{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},
+		{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}},
+		{2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}},
+		{2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}},
+		{1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}},
+		{2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}},
+		{2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},
+		{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}},
+		{1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}},
+		{2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}},
+		{2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}},
+		{2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}},
+		{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}},
+		{1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}},
+		{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}},
+		{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},
+		{2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},
+		{2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},
+		{2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}},
+		{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}},
+		{1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}},
+		{1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},
+		{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},
+		{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},
+		{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},
+		{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},
+		{1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}},
+		{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},
+		{1, [3]byte{0x3b, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xac, 0x00}},
+		{1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},
+		{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}},
+		{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},
+		{2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},
+		{2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},
+		{2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}},
+		{1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},
+		{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},
+		{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},
+		{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},
+		{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},
+		{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},
+		{2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}},
+		{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},
+		{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},
+		{1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}},
+		{2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},
+		{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},
+		{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},
+		{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},
+		{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},
+		{2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},
+		{2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},
+		{2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}},
+		{1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}},
+		{1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}},
+		{1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}},
+		{1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},
+		{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},
+		{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}},
+		{2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}},
+		{1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}},
+		{1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}},
+		{1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}},
+		{1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},
+		{2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},
+		{2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}},
+		{1, [3]byte{0x5e, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},
+		{2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},
+		{2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},
+		{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}},
+		{2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}},
+		{1, [3]byte{0x5b, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}},
+		{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},
+		{1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},
+		{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},
+		{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},
+		{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},
+		{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},
+		{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}},
+		{2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},
+		{1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}},
+		{1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}},
+		{1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}},
+		{1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}},
+		{1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},
+		{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},
+		{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},
+		{1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},
+		{1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}},
+		{1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}},
+		{1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}},
+		{1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}},
+		{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}},
+		{2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},
+		{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},
+		{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},
+		{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},
+		{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},
+		{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},
+		{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},
+		{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}},
+	},
+	encode: [256]uint32{
+		0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007,
+		0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,
+		0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017,
+		0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,
+		0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027,
+		0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f,
+		0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037,
+		0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f,
+		0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047,
+		0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f,
+		0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057,
+		0xe7000058, 0xe8000059, 0xe900005a, 0xba00005b, 0xe000005c, 0xbb00005d, 0xb000005e, 0x6d00005f,
+		0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067,
+		0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f,
+		0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077,
+		0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f,
+		0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087,
+		0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f,
+		0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097,
+		0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f,
+		0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0x9f0000a4, 0xb20000a5, 0x6a0000a6, 0xb50000a7,
+		0xbd0000a8, 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0x5f0000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af,
+		0x900000b0, 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7,
+		0x9d0000b8, 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf,
+		0x640000c0, 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7,
+		0x740000c8, 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf,
+		0xac0000d0, 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7,
+		0x800000d8, 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xad0000dd, 0xae0000de, 0x590000df,
+		0x440000e0, 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7,
+		0x540000e8, 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef,
+		0x8c0000f0, 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7,
+		0x700000f8, 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff,
+	},
+}
+
+// CodePage437 is the IBM Code Page 437 encoding.
+var CodePage437 *Charmap = &codePage437
+
+var codePage437 = Charmap{
 	name:          "IBM Code Page 437",
 	mib:           identifier.PC8CodePage437,
 	asciiSuperset: true,
@@ -183,9 +358,9 @@ var codePage437 = charmap{
 }
 
 // CodePage850 is the IBM Code Page 850 encoding.
-var CodePage850 encoding.Encoding = &codePage850
+var CodePage850 *Charmap = &codePage850
 
-var codePage850 = charmap{
+var codePage850 = Charmap{
 	name:          "IBM Code Page 850",
 	mib:           identifier.PC850Multilingual,
 	asciiSuperset: true,
@@ -358,9 +533,9 @@ var codePage850 = charmap{
 }
 
 // CodePage852 is the IBM Code Page 852 encoding.
-var CodePage852 encoding.Encoding = &codePage852
+var CodePage852 *Charmap = &codePage852
 
-var codePage852 = charmap{
+var codePage852 = Charmap{
 	name:          "IBM Code Page 852",
 	mib:           identifier.PCp852,
 	asciiSuperset: true,
@@ -533,9 +708,9 @@ var codePage852 = charmap{
 }
 
 // CodePage855 is the IBM Code Page 855 encoding.
-var CodePage855 encoding.Encoding = &codePage855
+var CodePage855 *Charmap = &codePage855
 
-var codePage855 = charmap{
+var codePage855 = Charmap{
 	name:          "IBM Code Page 855",
 	mib:           identifier.IBM855,
 	asciiSuperset: true,
@@ -708,9 +883,9 @@ var codePage855 = charmap{
 }
 
 // CodePage858 is the Windows Code Page 858 encoding.
-var CodePage858 encoding.Encoding = &codePage858
+var CodePage858 *Charmap = &codePage858
 
-var codePage858 = charmap{
+var codePage858 = Charmap{
 	name:          "Windows Code Page 858",
 	mib:           identifier.IBM00858,
 	asciiSuperset: true,
@@ -883,9 +1058,9 @@ var codePage858 = charmap{
 }
 
 // CodePage860 is the IBM Code Page 860 encoding.
-var CodePage860 encoding.Encoding = &codePage860
+var CodePage860 *Charmap = &codePage860
 
-var codePage860 = charmap{
+var codePage860 = Charmap{
 	name:          "IBM Code Page 860",
 	mib:           identifier.IBM860,
 	asciiSuperset: true,
@@ -1058,9 +1233,9 @@ var codePage860 = charmap{
 }
 
 // CodePage862 is the IBM Code Page 862 encoding.
-var CodePage862 encoding.Encoding = &codePage862
+var CodePage862 *Charmap = &codePage862
 
-var codePage862 = charmap{
+var codePage862 = Charmap{
 	name:          "IBM Code Page 862",
 	mib:           identifier.PC862LatinHebrew,
 	asciiSuperset: true,
@@ -1233,9 +1408,9 @@ var codePage862 = charmap{
 }
 
 // CodePage863 is the IBM Code Page 863 encoding.
-var CodePage863 encoding.Encoding = &codePage863
+var CodePage863 *Charmap = &codePage863
 
-var codePage863 = charmap{
+var codePage863 = Charmap{
 	name:          "IBM Code Page 863",
 	mib:           identifier.IBM863,
 	asciiSuperset: true,
@@ -1408,9 +1583,9 @@ var codePage863 = charmap{
 }
 
 // CodePage865 is the IBM Code Page 865 encoding.
-var CodePage865 encoding.Encoding = &codePage865
+var CodePage865 *Charmap = &codePage865
 
-var codePage865 = charmap{
+var codePage865 = Charmap{
 	name:          "IBM Code Page 865",
 	mib:           identifier.IBM865,
 	asciiSuperset: true,
@@ -1583,9 +1758,9 @@ var codePage865 = charmap{
 }
 
 // CodePage866 is the IBM Code Page 866 encoding.
-var CodePage866 encoding.Encoding = &codePage866
+var CodePage866 *Charmap = &codePage866
 
-var codePage866 = charmap{
+var codePage866 = Charmap{
 	name:          "IBM Code Page 866",
 	mib:           identifier.IBM866,
 	asciiSuperset: true,
@@ -1757,10 +1932,360 @@ var codePage866 = charmap{
 	},
 }
 
-// ISO8859_1 is the ISO 8859-1 encoding.
-var ISO8859_1 encoding.Encoding = &iso8859_1
+// CodePage1047 is the IBM Code Page 1047 encoding.
+var CodePage1047 *Charmap = &codePage1047
 
-var iso8859_1 = charmap{
+var codePage1047 = Charmap{
+	name:          "IBM Code Page 1047",
+	mib:           identifier.IBM1047,
+	asciiSuperset: false,
+	low:           0x00,
+	replacement:   0x3f,
+	decode: [256]utf8Enc{
+		{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},
+		{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}},
+		{2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},
+		{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},
+		{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},
+		{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},
+		{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}},
+		{1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}},
+		{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}},
+		{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},
+		{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}},
+		{2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}},
+		{2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}},
+		{1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}},
+		{2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}},
+		{2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},
+		{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}},
+		{1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}},
+		{2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}},
+		{2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}},
+		{2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}},
+		{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}},
+		{1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}},
+		{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}},
+		{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},
+		{2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},
+		{2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},
+		{2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}},
+		{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}},
+		{1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}},
+		{1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},
+		{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},
+		{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},
+		{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},
+		{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},
+		{1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}},
+		{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},
+		{1, [3]byte{0x3b, 0x00, 0x00}}, {1, [3]byte{0x5e, 0x00, 0x00}},
+		{1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},
+		{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}},
+		{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},
+		{2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},
+		{2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},
+		{2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}},
+		{1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},
+		{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},
+		{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},
+		{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},
+		{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},
+		{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},
+		{2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}},
+		{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},
+		{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},
+		{1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}},
+		{2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},
+		{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},
+		{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},
+		{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},
+		{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},
+		{2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},
+		{2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},
+		{2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}},
+		{1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}},
+		{1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}},
+		{1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}},
+		{1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},
+		{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},
+		{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc2, 0xa4, 0x00}},
+		{2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}},
+		{1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}},
+		{1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}},
+		{1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}},
+		{1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},
+		{2, [3]byte{0xc3, 0x90, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},
+		{2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}},
+		{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},
+		{2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},
+		{2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},
+		{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}},
+		{2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}},
+		{2, [3]byte{0xc3, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}},
+		{2, [3]byte{0xc2, 0xaf, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},
+		{1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},
+		{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},
+		{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},
+		{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},
+		{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},
+		{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}},
+		{2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},
+		{1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}},
+		{1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}},
+		{1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}},
+		{1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}},
+		{1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},
+		{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},
+		{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},
+		{1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},
+		{1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}},
+		{1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}},
+		{1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}},
+		{1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}},
+		{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}},
+		{2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},
+		{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},
+		{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},
+		{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},
+		{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},
+		{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},
+		{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},
+		{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}},
+	},
+	encode: [256]uint32{
+		0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007,
+		0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,
+		0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017,
+		0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,
+		0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027,
+		0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f,
+		0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037,
+		0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f,
+		0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047,
+		0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f,
+		0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057,
+		0xe7000058, 0xe8000059, 0xe900005a, 0xad00005b, 0xe000005c, 0xbd00005d, 0x5f00005e, 0x6d00005f,
+		0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067,
+		0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f,
+		0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077,
+		0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f,
+		0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087,
+		0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f,
+		0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097,
+		0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f,
+		0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0x9f0000a4, 0xb20000a5, 0x6a0000a6, 0xb50000a7,
+		0xbb0000a8, 0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0xb00000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af,
+		0x900000b0, 0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7,
+		0x9d0000b8, 0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf,
+		0x640000c0, 0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7,
+		0x740000c8, 0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf,
+		0xac0000d0, 0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7,
+		0x800000d8, 0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xba0000dd, 0xae0000de, 0x590000df,
+		0x440000e0, 0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7,
+		0x540000e8, 0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef,
+		0x8c0000f0, 0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7,
+		0x700000f8, 0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff,
+	},
+}
+
+// CodePage1140 is the IBM Code Page 1140 encoding.
+var CodePage1140 *Charmap = &codePage1140
+
+var codePage1140 = Charmap{
+	name:          "IBM Code Page 1140",
+	mib:           identifier.IBM01140,
+	asciiSuperset: false,
+	low:           0x00,
+	replacement:   0x3f,
+	decode: [256]utf8Enc{
+		{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},
+		{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x9c, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x86, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x97, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}},
+		{2, [3]byte{0xc2, 0x8e, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},
+		{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},
+		{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},
+		{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},
+		{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x9d, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}},
+		{1, [3]byte{0x08, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}},
+		{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}},
+		{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},
+		{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}},
+		{2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}},
+		{2, [3]byte{0xc2, 0x84, 0x00}}, {1, [3]byte{0x0a, 0x00, 0x00}},
+		{1, [3]byte{0x17, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}},
+		{2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}},
+		{2, [3]byte{0xc2, 0x8c, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},
+		{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}},
+		{1, [3]byte{0x16, 0x00, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}},
+		{2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}},
+		{2, [3]byte{0xc2, 0x96, 0x00}}, {1, [3]byte{0x04, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}},
+		{2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}},
+		{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x9e, 0x00}}, {1, [3]byte{0x1a, 0x00, 0x00}},
+		{1, [3]byte{0x20, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa0, 0x00}},
+		{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa4, 0x00}},
+		{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},
+		{2, [3]byte{0xc3, 0xa3, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},
+		{2, [3]byte{0xc3, 0xa7, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},
+		{2, [3]byte{0xc2, 0xa2, 0x00}}, {1, [3]byte{0x2e, 0x00, 0x00}},
+		{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x28, 0x00, 0x00}},
+		{1, [3]byte{0x2b, 0x00, 0x00}}, {1, [3]byte{0x7c, 0x00, 0x00}},
+		{1, [3]byte{0x26, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},
+		{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},
+		{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},
+		{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},
+		{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},
+		{1, [3]byte{0x21, 0x00, 0x00}}, {1, [3]byte{0x24, 0x00, 0x00}},
+		{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},
+		{1, [3]byte{0x3b, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xac, 0x00}},
+		{1, [3]byte{0x2d, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},
+		{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x84, 0x00}},
+		{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},
+		{2, [3]byte{0xc3, 0x83, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},
+		{2, [3]byte{0xc3, 0x87, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},
+		{2, [3]byte{0xc2, 0xa6, 0x00}}, {1, [3]byte{0x2c, 0x00, 0x00}},
+		{1, [3]byte{0x25, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},
+		{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},
+		{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},
+		{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},
+		{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},
+		{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},
+		{2, [3]byte{0xc3, 0x8c, 0x00}}, {1, [3]byte{0x60, 0x00, 0x00}},
+		{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},
+		{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},
+		{1, [3]byte{0x3d, 0x00, 0x00}}, {1, [3]byte{0x22, 0x00, 0x00}},
+		{2, [3]byte{0xc3, 0x98, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},
+		{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},
+		{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},
+		{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},
+		{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xab, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},
+		{2, [3]byte{0xc3, 0xb0, 0x00}}, {2, [3]byte{0xc3, 0xbd, 0x00}},
+		{2, [3]byte{0xc3, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},
+		{2, [3]byte{0xc2, 0xb0, 0x00}}, {1, [3]byte{0x6a, 0x00, 0x00}},
+		{1, [3]byte{0x6b, 0x00, 0x00}}, {1, [3]byte{0x6c, 0x00, 0x00}},
+		{1, [3]byte{0x6d, 0x00, 0x00}}, {1, [3]byte{0x6e, 0x00, 0x00}},
+		{1, [3]byte{0x6f, 0x00, 0x00}}, {1, [3]byte{0x70, 0x00, 0x00}},
+		{1, [3]byte{0x71, 0x00, 0x00}}, {1, [3]byte{0x72, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xba, 0x00}},
+		{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xb8, 0x00}},
+		{2, [3]byte{0xc3, 0x86, 0x00}}, {3, [3]byte{0xe2, 0x82, 0xac}},
+		{2, [3]byte{0xc2, 0xb5, 0x00}}, {1, [3]byte{0x7e, 0x00, 0x00}},
+		{1, [3]byte{0x73, 0x00, 0x00}}, {1, [3]byte{0x74, 0x00, 0x00}},
+		{1, [3]byte{0x75, 0x00, 0x00}}, {1, [3]byte{0x76, 0x00, 0x00}},
+		{1, [3]byte{0x77, 0x00, 0x00}}, {1, [3]byte{0x78, 0x00, 0x00}},
+		{1, [3]byte{0x79, 0x00, 0x00}}, {1, [3]byte{0x7a, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xa1, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},
+		{2, [3]byte{0xc3, 0x90, 0x00}}, {2, [3]byte{0xc3, 0x9d, 0x00}},
+		{2, [3]byte{0xc3, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0xae, 0x00}},
+		{1, [3]byte{0x5e, 0x00, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},
+		{2, [3]byte{0xc2, 0xa5, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},
+		{2, [3]byte{0xc2, 0xa9, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},
+		{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xbc, 0x00}},
+		{2, [3]byte{0xc2, 0xbd, 0x00}}, {2, [3]byte{0xc2, 0xbe, 0x00}},
+		{1, [3]byte{0x5b, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xaf, 0x00}}, {2, [3]byte{0xc2, 0xa8, 0x00}},
+		{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},
+		{1, [3]byte{0x7b, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},
+		{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},
+		{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},
+		{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},
+		{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xad, 0x00}}, {2, [3]byte{0xc3, 0xb4, 0x00}},
+		{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb2, 0x00}},
+		{2, [3]byte{0xc3, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},
+		{1, [3]byte{0x7d, 0x00, 0x00}}, {1, [3]byte{0x4a, 0x00, 0x00}},
+		{1, [3]byte{0x4b, 0x00, 0x00}}, {1, [3]byte{0x4c, 0x00, 0x00}},
+		{1, [3]byte{0x4d, 0x00, 0x00}}, {1, [3]byte{0x4e, 0x00, 0x00}},
+		{1, [3]byte{0x4f, 0x00, 0x00}}, {1, [3]byte{0x50, 0x00, 0x00}},
+		{1, [3]byte{0x51, 0x00, 0x00}}, {1, [3]byte{0x52, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xb9, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},
+		{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},
+		{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},
+		{1, [3]byte{0x5c, 0x00, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},
+		{1, [3]byte{0x53, 0x00, 0x00}}, {1, [3]byte{0x54, 0x00, 0x00}},
+		{1, [3]byte{0x55, 0x00, 0x00}}, {1, [3]byte{0x56, 0x00, 0x00}},
+		{1, [3]byte{0x57, 0x00, 0x00}}, {1, [3]byte{0x58, 0x00, 0x00}},
+		{1, [3]byte{0x59, 0x00, 0x00}}, {1, [3]byte{0x5a, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0x94, 0x00}},
+		{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x92, 0x00}},
+		{2, [3]byte{0xc3, 0x93, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},
+		{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},
+		{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},
+		{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},
+		{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},
+		{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0xb3, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},
+		{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},
+		{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}},
+	},
+	encode: [256]uint32{
+		0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x37000004, 0x2d000005, 0x2e000006, 0x2f000007,
+		0x16000008, 0x05000009, 0x2500000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,
+		0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x3c000014, 0x3d000015, 0x32000016, 0x26000017,
+		0x18000018, 0x19000019, 0x3f00001a, 0x2700001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,
+		0x40000020, 0x5a000021, 0x7f000022, 0x7b000023, 0x5b000024, 0x6c000025, 0x50000026, 0x7d000027,
+		0x4d000028, 0x5d000029, 0x5c00002a, 0x4e00002b, 0x6b00002c, 0x6000002d, 0x4b00002e, 0x6100002f,
+		0xf0000030, 0xf1000031, 0xf2000032, 0xf3000033, 0xf4000034, 0xf5000035, 0xf6000036, 0xf7000037,
+		0xf8000038, 0xf9000039, 0x7a00003a, 0x5e00003b, 0x4c00003c, 0x7e00003d, 0x6e00003e, 0x6f00003f,
+		0x7c000040, 0xc1000041, 0xc2000042, 0xc3000043, 0xc4000044, 0xc5000045, 0xc6000046, 0xc7000047,
+		0xc8000048, 0xc9000049, 0xd100004a, 0xd200004b, 0xd300004c, 0xd400004d, 0xd500004e, 0xd600004f,
+		0xd7000050, 0xd8000051, 0xd9000052, 0xe2000053, 0xe3000054, 0xe4000055, 0xe5000056, 0xe6000057,
+		0xe7000058, 0xe8000059, 0xe900005a, 0xba00005b, 0xe000005c, 0xbb00005d, 0xb000005e, 0x6d00005f,
+		0x79000060, 0x81000061, 0x82000062, 0x83000063, 0x84000064, 0x85000065, 0x86000066, 0x87000067,
+		0x88000068, 0x89000069, 0x9100006a, 0x9200006b, 0x9300006c, 0x9400006d, 0x9500006e, 0x9600006f,
+		0x97000070, 0x98000071, 0x99000072, 0xa2000073, 0xa3000074, 0xa4000075, 0xa5000076, 0xa6000077,
+		0xa7000078, 0xa8000079, 0xa900007a, 0xc000007b, 0x4f00007c, 0xd000007d, 0xa100007e, 0x0700007f,
+		0x20000080, 0x21000081, 0x22000082, 0x23000083, 0x24000084, 0x15000085, 0x06000086, 0x17000087,
+		0x28000088, 0x29000089, 0x2a00008a, 0x2b00008b, 0x2c00008c, 0x0900008d, 0x0a00008e, 0x1b00008f,
+		0x30000090, 0x31000091, 0x1a000092, 0x33000093, 0x34000094, 0x35000095, 0x36000096, 0x08000097,
+		0x38000098, 0x39000099, 0x3a00009a, 0x3b00009b, 0x0400009c, 0x1400009d, 0x3e00009e, 0xff00009f,
+		0x410000a0, 0xaa0000a1, 0x4a0000a2, 0xb10000a3, 0xb20000a5, 0x6a0000a6, 0xb50000a7, 0xbd0000a8,
+		0xb40000a9, 0x9a0000aa, 0x8a0000ab, 0x5f0000ac, 0xca0000ad, 0xaf0000ae, 0xbc0000af, 0x900000b0,
+		0x8f0000b1, 0xea0000b2, 0xfa0000b3, 0xbe0000b4, 0xa00000b5, 0xb60000b6, 0xb30000b7, 0x9d0000b8,
+		0xda0000b9, 0x9b0000ba, 0x8b0000bb, 0xb70000bc, 0xb80000bd, 0xb90000be, 0xab0000bf, 0x640000c0,
+		0x650000c1, 0x620000c2, 0x660000c3, 0x630000c4, 0x670000c5, 0x9e0000c6, 0x680000c7, 0x740000c8,
+		0x710000c9, 0x720000ca, 0x730000cb, 0x780000cc, 0x750000cd, 0x760000ce, 0x770000cf, 0xac0000d0,
+		0x690000d1, 0xed0000d2, 0xee0000d3, 0xeb0000d4, 0xef0000d5, 0xec0000d6, 0xbf0000d7, 0x800000d8,
+		0xfd0000d9, 0xfe0000da, 0xfb0000db, 0xfc0000dc, 0xad0000dd, 0xae0000de, 0x590000df, 0x440000e0,
+		0x450000e1, 0x420000e2, 0x460000e3, 0x430000e4, 0x470000e5, 0x9c0000e6, 0x480000e7, 0x540000e8,
+		0x510000e9, 0x520000ea, 0x530000eb, 0x580000ec, 0x550000ed, 0x560000ee, 0x570000ef, 0x8c0000f0,
+		0x490000f1, 0xcd0000f2, 0xce0000f3, 0xcb0000f4, 0xcf0000f5, 0xcc0000f6, 0xe10000f7, 0x700000f8,
+		0xdd0000f9, 0xde0000fa, 0xdb0000fb, 0xdc0000fc, 0x8d0000fd, 0x8e0000fe, 0xdf0000ff, 0x9f0020ac,
+	},
+}
+
+// ISO8859_1 is the ISO 8859-1 encoding.
+var ISO8859_1 *Charmap = &iso8859_1
+
+var iso8859_1 = Charmap{
 	name:          "ISO 8859-1",
 	mib:           identifier.ISOLatin1,
 	asciiSuperset: true,
@@ -1933,9 +2458,9 @@ var iso8859_1 = charmap{
 }
 
 // ISO8859_2 is the ISO 8859-2 encoding.
-var ISO8859_2 encoding.Encoding = &iso8859_2
+var ISO8859_2 *Charmap = &iso8859_2
 
-var iso8859_2 = charmap{
+var iso8859_2 = Charmap{
 	name:          "ISO 8859-2",
 	mib:           identifier.ISOLatin2,
 	asciiSuperset: true,
@@ -2108,9 +2633,9 @@ var iso8859_2 = charmap{
 }
 
 // ISO8859_3 is the ISO 8859-3 encoding.
-var ISO8859_3 encoding.Encoding = &iso8859_3
+var ISO8859_3 *Charmap = &iso8859_3
 
-var iso8859_3 = charmap{
+var iso8859_3 = Charmap{
 	name:          "ISO 8859-3",
 	mib:           identifier.ISOLatin3,
 	asciiSuperset: true,
@@ -2283,9 +2808,9 @@ var iso8859_3 = charmap{
 }
 
 // ISO8859_4 is the ISO 8859-4 encoding.
-var ISO8859_4 encoding.Encoding = &iso8859_4
+var ISO8859_4 *Charmap = &iso8859_4
 
-var iso8859_4 = charmap{
+var iso8859_4 = Charmap{
 	name:          "ISO 8859-4",
 	mib:           identifier.ISOLatin4,
 	asciiSuperset: true,
@@ -2458,9 +2983,9 @@ var iso8859_4 = charmap{
 }
 
 // ISO8859_5 is the ISO 8859-5 encoding.
-var ISO8859_5 encoding.Encoding = &iso8859_5
+var ISO8859_5 *Charmap = &iso8859_5
 
-var iso8859_5 = charmap{
+var iso8859_5 = Charmap{
 	name:          "ISO 8859-5",
 	mib:           identifier.ISOLatinCyrillic,
 	asciiSuperset: true,
@@ -2633,9 +3158,9 @@ var iso8859_5 = charmap{
 }
 
 // ISO8859_6 is the ISO 8859-6 encoding.
-var ISO8859_6 encoding.Encoding = &iso8859_6
+var ISO8859_6 *Charmap = &iso8859_6
 
-var iso8859_6 = charmap{
+var iso8859_6 = Charmap{
 	name:          "ISO 8859-6",
 	mib:           identifier.ISOLatinArabic,
 	asciiSuperset: true,
@@ -2808,9 +3333,9 @@ var iso8859_6 = charmap{
 }
 
 // ISO8859_7 is the ISO 8859-7 encoding.
-var ISO8859_7 encoding.Encoding = &iso8859_7
+var ISO8859_7 *Charmap = &iso8859_7
 
-var iso8859_7 = charmap{
+var iso8859_7 = Charmap{
 	name:          "ISO 8859-7",
 	mib:           identifier.ISOLatinGreek,
 	asciiSuperset: true,
@@ -2983,9 +3508,9 @@ var iso8859_7 = charmap{
 }
 
 // ISO8859_8 is the ISO 8859-8 encoding.
-var ISO8859_8 encoding.Encoding = &iso8859_8
+var ISO8859_8 *Charmap = &iso8859_8
 
-var iso8859_8 = charmap{
+var iso8859_8 = Charmap{
 	name:          "ISO 8859-8",
 	mib:           identifier.ISOLatinHebrew,
 	asciiSuperset: true,
@@ -3157,10 +3682,185 @@ var iso8859_8 = charmap{
 	},
 }
 
-// ISO8859_10 is the ISO 8859-10 encoding.
-var ISO8859_10 encoding.Encoding = &iso8859_10
+// ISO8859_9 is the ISO 8859-9 encoding.
+var ISO8859_9 *Charmap = &iso8859_9
 
-var iso8859_10 = charmap{
+var iso8859_9 = Charmap{
+	name:          "ISO 8859-9",
+	mib:           identifier.ISOLatin5,
+	asciiSuperset: true,
+	low:           0x80,
+	replacement:   0x1a,
+	decode: [256]utf8Enc{
+		{1, [3]byte{0x00, 0x00, 0x00}}, {1, [3]byte{0x01, 0x00, 0x00}},
+		{1, [3]byte{0x02, 0x00, 0x00}}, {1, [3]byte{0x03, 0x00, 0x00}},
+		{1, [3]byte{0x04, 0x00, 0x00}}, {1, [3]byte{0x05, 0x00, 0x00}},
+		{1, [3]byte{0x06, 0x00, 0x00}}, {1, [3]byte{0x07, 0x00, 0x00}},
+		{1, [3]byte{0x08, 0x00, 0x00}}, {1, [3]byte{0x09, 0x00, 0x00}},
+		{1, [3]byte{0x0a, 0x00, 0x00}}, {1, [3]byte{0x0b, 0x00, 0x00}},
+		{1, [3]byte{0x0c, 0x00, 0x00}}, {1, [3]byte{0x0d, 0x00, 0x00}},
+		{1, [3]byte{0x0e, 0x00, 0x00}}, {1, [3]byte{0x0f, 0x00, 0x00}},
+		{1, [3]byte{0x10, 0x00, 0x00}}, {1, [3]byte{0x11, 0x00, 0x00}},
+		{1, [3]byte{0x12, 0x00, 0x00}}, {1, [3]byte{0x13, 0x00, 0x00}},
+		{1, [3]byte{0x14, 0x00, 0x00}}, {1, [3]byte{0x15, 0x00, 0x00}},
+		{1, [3]byte{0x16, 0x00, 0x00}}, {1, [3]byte{0x17, 0x00, 0x00}},
+		{1, [3]byte{0x18, 0x00, 0x00}}, {1, [3]byte{0x19, 0x00, 0x00}},
+		{1, [3]byte{0x1a, 0x00, 0x00}}, {1, [3]byte{0x1b, 0x00, 0x00}},
+		{1, [3]byte{0x1c, 0x00, 0x00}}, {1, [3]byte{0x1d, 0x00, 0x00}},
+		{1, [3]byte{0x1e, 0x00, 0x00}}, {1, [3]byte{0x1f, 0x00, 0x00}},
+		{1, [3]byte{0x20, 0x00, 0x00}}, {1, [3]byte{0x21, 0x00, 0x00}},
+		{1, [3]byte{0x22, 0x00, 0x00}}, {1, [3]byte{0x23, 0x00, 0x00}},
+		{1, [3]byte{0x24, 0x00, 0x00}}, {1, [3]byte{0x25, 0x00, 0x00}},
+		{1, [3]byte{0x26, 0x00, 0x00}}, {1, [3]byte{0x27, 0x00, 0x00}},
+		{1, [3]byte{0x28, 0x00, 0x00}}, {1, [3]byte{0x29, 0x00, 0x00}},
+		{1, [3]byte{0x2a, 0x00, 0x00}}, {1, [3]byte{0x2b, 0x00, 0x00}},
+		{1, [3]byte{0x2c, 0x00, 0x00}}, {1, [3]byte{0x2d, 0x00, 0x00}},
+		{1, [3]byte{0x2e, 0x00, 0x00}}, {1, [3]byte{0x2f, 0x00, 0x00}},
+		{1, [3]byte{0x30, 0x00, 0x00}}, {1, [3]byte{0x31, 0x00, 0x00}},
+		{1, [3]byte{0x32, 0x00, 0x00}}, {1, [3]byte{0x33, 0x00, 0x00}},
+		{1, [3]byte{0x34, 0x00, 0x00}}, {1, [3]byte{0x35, 0x00, 0x00}},
+		{1, [3]byte{0x36, 0x00, 0x00}}, {1, [3]byte{0x37, 0x00, 0x00}},
+		{1, [3]byte{0x38, 0x00, 0x00}}, {1, [3]byte{0x39, 0x00, 0x00}},
+		{1, [3]byte{0x3a, 0x00, 0x00}}, {1, [3]byte{0x3b, 0x00, 0x00}},
+		{1, [3]byte{0x3c, 0x00, 0x00}}, {1, [3]byte{0x3d, 0x00, 0x00}},
+		{1, [3]byte{0x3e, 0x00, 0x00}}, {1, [3]byte{0x3f, 0x00, 0x00}},
+		{1, [3]byte{0x40, 0x00, 0x00}}, {1, [3]byte{0x41, 0x00, 0x00}},
+		{1, [3]byte{0x42, 0x00, 0x00}}, {1, [3]byte{0x43, 0x00, 0x00}},
+		{1, [3]byte{0x44, 0x00, 0x00}}, {1, [3]byte{0x45, 0x00, 0x00}},
+		{1, [3]byte{0x46, 0x00, 0x00}}, {1, [3]byte{0x47, 0x00, 0x00}},
+		{1, [3]byte{0x48, 0x00, 0x00}}, {1, [3]byte{0x49, 0x00, 0x00}},
+		{1, [3]byte{0x4a, 0x00, 0x00}}, {1, [3]byte{0x4b, 0x00, 0x00}},
+		{1, [3]byte{0x4c, 0x00, 0x00}}, {1, [3]byte{0x4d, 0x00, 0x00}},
+		{1, [3]byte{0x4e, 0x00, 0x00}}, {1, [3]byte{0x4f, 0x00, 0x00}},
+		{1, [3]byte{0x50, 0x00, 0x00}}, {1, [3]byte{0x51, 0x00, 0x00}},
+		{1, [3]byte{0x52, 0x00, 0x00}}, {1, [3]byte{0x53, 0x00, 0x00}},
+		{1, [3]byte{0x54, 0x00, 0x00}}, {1, [3]byte{0x55, 0x00, 0x00}},
+		{1, [3]byte{0x56, 0x00, 0x00}}, {1, [3]byte{0x57, 0x00, 0x00}},
+		{1, [3]byte{0x58, 0x00, 0x00}}, {1, [3]byte{0x59, 0x00, 0x00}},
+		{1, [3]byte{0x5a, 0x00, 0x00}}, {1, [3]byte{0x5b, 0x00, 0x00}},
+		{1, [3]byte{0x5c, 0x00, 0x00}}, {1, [3]byte{0x5d, 0x00, 0x00}},
+		{1, [3]byte{0x5e, 0x00, 0x00}}, {1, [3]byte{0x5f, 0x00, 0x00}},
+		{1, [3]byte{0x60, 0x00, 0x00}}, {1, [3]byte{0x61, 0x00, 0x00}},
+		{1, [3]byte{0x62, 0x00, 0x00}}, {1, [3]byte{0x63, 0x00, 0x00}},
+		{1, [3]byte{0x64, 0x00, 0x00}}, {1, [3]byte{0x65, 0x00, 0x00}},
+		{1, [3]byte{0x66, 0x00, 0x00}}, {1, [3]byte{0x67, 0x00, 0x00}},
+		{1, [3]byte{0x68, 0x00, 0x00}}, {1, [3]byte{0x69, 0x00, 0x00}},
+		{1, [3]byte{0x6a, 0x00, 0x00}}, {1, [3]byte{0x6b, 0x00, 0x00}},
+		{1, [3]byte{0x6c, 0x00, 0x00}}, {1, [3]byte{0x6d, 0x00, 0x00}},
+		{1, [3]byte{0x6e, 0x00, 0x00}}, {1, [3]byte{0x6f, 0x00, 0x00}},
+		{1, [3]byte{0x70, 0x00, 0x00}}, {1, [3]byte{0x71, 0x00, 0x00}},
+		{1, [3]byte{0x72, 0x00, 0x00}}, {1, [3]byte{0x73, 0x00, 0x00}},
+		{1, [3]byte{0x74, 0x00, 0x00}}, {1, [3]byte{0x75, 0x00, 0x00}},
+		{1, [3]byte{0x76, 0x00, 0x00}}, {1, [3]byte{0x77, 0x00, 0x00}},
+		{1, [3]byte{0x78, 0x00, 0x00}}, {1, [3]byte{0x79, 0x00, 0x00}},
+		{1, [3]byte{0x7a, 0x00, 0x00}}, {1, [3]byte{0x7b, 0x00, 0x00}},
+		{1, [3]byte{0x7c, 0x00, 0x00}}, {1, [3]byte{0x7d, 0x00, 0x00}},
+		{1, [3]byte{0x7e, 0x00, 0x00}}, {1, [3]byte{0x7f, 0x00, 0x00}},
+		{2, [3]byte{0xc2, 0x80, 0x00}}, {2, [3]byte{0xc2, 0x81, 0x00}},
+		{2, [3]byte{0xc2, 0x82, 0x00}}, {2, [3]byte{0xc2, 0x83, 0x00}},
+		{2, [3]byte{0xc2, 0x84, 0x00}}, {2, [3]byte{0xc2, 0x85, 0x00}},
+		{2, [3]byte{0xc2, 0x86, 0x00}}, {2, [3]byte{0xc2, 0x87, 0x00}},
+		{2, [3]byte{0xc2, 0x88, 0x00}}, {2, [3]byte{0xc2, 0x89, 0x00}},
+		{2, [3]byte{0xc2, 0x8a, 0x00}}, {2, [3]byte{0xc2, 0x8b, 0x00}},
+		{2, [3]byte{0xc2, 0x8c, 0x00}}, {2, [3]byte{0xc2, 0x8d, 0x00}},
+		{2, [3]byte{0xc2, 0x8e, 0x00}}, {2, [3]byte{0xc2, 0x8f, 0x00}},
+		{2, [3]byte{0xc2, 0x90, 0x00}}, {2, [3]byte{0xc2, 0x91, 0x00}},
+		{2, [3]byte{0xc2, 0x92, 0x00}}, {2, [3]byte{0xc2, 0x93, 0x00}},
+		{2, [3]byte{0xc2, 0x94, 0x00}}, {2, [3]byte{0xc2, 0x95, 0x00}},
+		{2, [3]byte{0xc2, 0x96, 0x00}}, {2, [3]byte{0xc2, 0x97, 0x00}},
+		{2, [3]byte{0xc2, 0x98, 0x00}}, {2, [3]byte{0xc2, 0x99, 0x00}},
+		{2, [3]byte{0xc2, 0x9a, 0x00}}, {2, [3]byte{0xc2, 0x9b, 0x00}},
+		{2, [3]byte{0xc2, 0x9c, 0x00}}, {2, [3]byte{0xc2, 0x9d, 0x00}},
+		{2, [3]byte{0xc2, 0x9e, 0x00}}, {2, [3]byte{0xc2, 0x9f, 0x00}},
+		{2, [3]byte{0xc2, 0xa0, 0x00}}, {2, [3]byte{0xc2, 0xa1, 0x00}},
+		{2, [3]byte{0xc2, 0xa2, 0x00}}, {2, [3]byte{0xc2, 0xa3, 0x00}},
+		{2, [3]byte{0xc2, 0xa4, 0x00}}, {2, [3]byte{0xc2, 0xa5, 0x00}},
+		{2, [3]byte{0xc2, 0xa6, 0x00}}, {2, [3]byte{0xc2, 0xa7, 0x00}},
+		{2, [3]byte{0xc2, 0xa8, 0x00}}, {2, [3]byte{0xc2, 0xa9, 0x00}},
+		{2, [3]byte{0xc2, 0xaa, 0x00}}, {2, [3]byte{0xc2, 0xab, 0x00}},
+		{2, [3]byte{0xc2, 0xac, 0x00}}, {2, [3]byte{0xc2, 0xad, 0x00}},
+		{2, [3]byte{0xc2, 0xae, 0x00}}, {2, [3]byte{0xc2, 0xaf, 0x00}},
+		{2, [3]byte{0xc2, 0xb0, 0x00}}, {2, [3]byte{0xc2, 0xb1, 0x00}},
+		{2, [3]byte{0xc2, 0xb2, 0x00}}, {2, [3]byte{0xc2, 0xb3, 0x00}},
+		{2, [3]byte{0xc2, 0xb4, 0x00}}, {2, [3]byte{0xc2, 0xb5, 0x00}},
+		{2, [3]byte{0xc2, 0xb6, 0x00}}, {2, [3]byte{0xc2, 0xb7, 0x00}},
+		{2, [3]byte{0xc2, 0xb8, 0x00}}, {2, [3]byte{0xc2, 0xb9, 0x00}},
+		{2, [3]byte{0xc2, 0xba, 0x00}}, {2, [3]byte{0xc2, 0xbb, 0x00}},
+		{2, [3]byte{0xc2, 0xbc, 0x00}}, {2, [3]byte{0xc2, 0xbd, 0x00}},
+		{2, [3]byte{0xc2, 0xbe, 0x00}}, {2, [3]byte{0xc2, 0xbf, 0x00}},
+		{2, [3]byte{0xc3, 0x80, 0x00}}, {2, [3]byte{0xc3, 0x81, 0x00}},
+		{2, [3]byte{0xc3, 0x82, 0x00}}, {2, [3]byte{0xc3, 0x83, 0x00}},
+		{2, [3]byte{0xc3, 0x84, 0x00}}, {2, [3]byte{0xc3, 0x85, 0x00}},
+		{2, [3]byte{0xc3, 0x86, 0x00}}, {2, [3]byte{0xc3, 0x87, 0x00}},
+		{2, [3]byte{0xc3, 0x88, 0x00}}, {2, [3]byte{0xc3, 0x89, 0x00}},
+		{2, [3]byte{0xc3, 0x8a, 0x00}}, {2, [3]byte{0xc3, 0x8b, 0x00}},
+		{2, [3]byte{0xc3, 0x8c, 0x00}}, {2, [3]byte{0xc3, 0x8d, 0x00}},
+		{2, [3]byte{0xc3, 0x8e, 0x00}}, {2, [3]byte{0xc3, 0x8f, 0x00}},
+		{2, [3]byte{0xc4, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x91, 0x00}},
+		{2, [3]byte{0xc3, 0x92, 0x00}}, {2, [3]byte{0xc3, 0x93, 0x00}},
+		{2, [3]byte{0xc3, 0x94, 0x00}}, {2, [3]byte{0xc3, 0x95, 0x00}},
+		{2, [3]byte{0xc3, 0x96, 0x00}}, {2, [3]byte{0xc3, 0x97, 0x00}},
+		{2, [3]byte{0xc3, 0x98, 0x00}}, {2, [3]byte{0xc3, 0x99, 0x00}},
+		{2, [3]byte{0xc3, 0x9a, 0x00}}, {2, [3]byte{0xc3, 0x9b, 0x00}},
+		{2, [3]byte{0xc3, 0x9c, 0x00}}, {2, [3]byte{0xc4, 0xb0, 0x00}},
+		{2, [3]byte{0xc5, 0x9e, 0x00}}, {2, [3]byte{0xc3, 0x9f, 0x00}},
+		{2, [3]byte{0xc3, 0xa0, 0x00}}, {2, [3]byte{0xc3, 0xa1, 0x00}},
+		{2, [3]byte{0xc3, 0xa2, 0x00}}, {2, [3]byte{0xc3, 0xa3, 0x00}},
+		{2, [3]byte{0xc3, 0xa4, 0x00}}, {2, [3]byte{0xc3, 0xa5, 0x00}},
+		{2, [3]byte{0xc3, 0xa6, 0x00}}, {2, [3]byte{0xc3, 0xa7, 0x00}},
+		{2, [3]byte{0xc3, 0xa8, 0x00}}, {2, [3]byte{0xc3, 0xa9, 0x00}},
+		{2, [3]byte{0xc3, 0xaa, 0x00}}, {2, [3]byte{0xc3, 0xab, 0x00}},
+		{2, [3]byte{0xc3, 0xac, 0x00}}, {2, [3]byte{0xc3, 0xad, 0x00}},
+		{2, [3]byte{0xc3, 0xae, 0x00}}, {2, [3]byte{0xc3, 0xaf, 0x00}},
+		{2, [3]byte{0xc4, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xb1, 0x00}},
+		{2, [3]byte{0xc3, 0xb2, 0x00}}, {2, [3]byte{0xc3, 0xb3, 0x00}},
+		{2, [3]byte{0xc3, 0xb4, 0x00}}, {2, [3]byte{0xc3, 0xb5, 0x00}},
+		{2, [3]byte{0xc3, 0xb6, 0x00}}, {2, [3]byte{0xc3, 0xb7, 0x00}},
+		{2, [3]byte{0xc3, 0xb8, 0x00}}, {2, [3]byte{0xc3, 0xb9, 0x00}},
+		{2, [3]byte{0xc3, 0xba, 0x00}}, {2, [3]byte{0xc3, 0xbb, 0x00}},
+		{2, [3]byte{0xc3, 0xbc, 0x00}}, {2, [3]byte{0xc4, 0xb1, 0x00}},
+		{2, [3]byte{0xc5, 0x9f, 0x00}}, {2, [3]byte{0xc3, 0xbf, 0x00}},
+	},
+	encode: [256]uint32{
+		0x00000000, 0x01000001, 0x02000002, 0x03000003, 0x04000004, 0x05000005, 0x06000006, 0x07000007,
+		0x08000008, 0x09000009, 0x0a00000a, 0x0b00000b, 0x0c00000c, 0x0d00000d, 0x0e00000e, 0x0f00000f,
+		0x10000010, 0x11000011, 0x12000012, 0x13000013, 0x14000014, 0x15000015, 0x16000016, 0x17000017,
+		0x18000018, 0x19000019, 0x1a00001a, 0x1b00001b, 0x1c00001c, 0x1d00001d, 0x1e00001e, 0x1f00001f,
+		0x20000020, 0x21000021, 0x22000022, 0x23000023, 0x24000024, 0x25000025, 0x26000026, 0x27000027,
+		0x28000028, 0x29000029, 0x2a00002a, 0x2b00002b, 0x2c00002c, 0x2d00002d, 0x2e00002e, 0x2f00002f,
+		0x30000030, 0x31000031, 0x32000032, 0x33000033, 0x34000034, 0x35000035, 0x36000036, 0x37000037,
+		0x38000038, 0x39000039, 0x3a00003a, 0x3b00003b, 0x3c00003c, 0x3d00003d, 0x3e00003e, 0x3f00003f,
+		0x40000040, 0x41000041, 0x42000042, 0x43000043, 0x44000044, 0x45000045, 0x46000046, 0x47000047,
+		0x48000048, 0x49000049, 0x4a00004a, 0x4b00004b, 0x4c00004c, 0x4d00004d, 0x4e00004e, 0x4f00004f,
+		0x50000050, 0x51000051, 0x52000052, 0x53000053, 0x54000054, 0x55000055, 0x56000056, 0x57000057,
+		0x58000058, 0x59000059, 0x5a00005a, 0x5b00005b, 0x5c00005c, 0x5d00005d, 0x5e00005e, 0x5f00005f,
+		0x60000060, 0x61000061, 0x62000062, 0x63000063, 0x64000064, 0x65000065, 0x66000066, 0x67000067,
+		0x68000068, 0x69000069, 0x6a00006a, 0x6b00006b, 0x6c00006c, 0x6d00006d, 0x6e00006e, 0x6f00006f,
+		0x70000070, 0x71000071, 0x72000072, 0x73000073, 0x74000074, 0x75000075, 0x76000076, 0x77000077,
+		0x78000078, 0x79000079, 0x7a00007a, 0x7b00007b, 0x7c00007c, 0x7d00007d, 0x7e00007e, 0x7f00007f,
+		0x80000080, 0x81000081, 0x82000082, 0x83000083, 0x84000084, 0x85000085, 0x86000086, 0x87000087,
+		0x88000088, 0x89000089, 0x8a00008a, 0x8b00008b, 0x8c00008c, 0x8d00008d, 0x8e00008e, 0x8f00008f,
+		0x90000090, 0x91000091, 0x92000092, 0x93000093, 0x94000094, 0x95000095, 0x96000096, 0x97000097,
+		0x98000098, 0x99000099, 0x9a00009a, 0x9b00009b, 0x9c00009c, 0x9d00009d, 0x9e00009e, 0x9f00009f,
+		0xa00000a0, 0xa10000a1, 0xa20000a2, 0xa30000a3, 0xa40000a4, 0xa50000a5, 0xa60000a6, 0xa70000a7,
+		0xa80000a8, 0xa90000a9, 0xaa0000aa, 0xab0000ab, 0xac0000ac, 0xad0000ad, 0xae0000ae, 0xaf0000af,
+		0xb00000b0, 0xb10000b1, 0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7,
+		0xb80000b8, 0xb90000b9, 0xba0000ba, 0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf,
+		0xc00000c0, 0xc10000c1, 0xc20000c2, 0xc30000c3, 0xc40000c4, 0xc50000c5, 0xc60000c6, 0xc70000c7,
+		0xc80000c8, 0xc90000c9, 0xca0000ca, 0xcb0000cb, 0xcc0000cc, 0xcd0000cd, 0xce0000ce, 0xcf0000cf,
+		0xd10000d1, 0xd20000d2, 0xd30000d3, 0xd40000d4, 0xd50000d5, 0xd60000d6, 0xd70000d7, 0xd80000d8,
+		0xd90000d9, 0xda0000da, 0xdb0000db, 0xdc0000dc, 0xdf0000df, 0xe00000e0, 0xe10000e1, 0xe20000e2,
+		0xe30000e3, 0xe40000e4, 0xe50000e5, 0xe60000e6, 0xe70000e7, 0xe80000e8, 0xe90000e9, 0xea0000ea,
+		0xeb0000eb, 0xec0000ec, 0xed0000ed, 0xee0000ee, 0xef0000ef, 0xf10000f1, 0xf20000f2, 0xf30000f3,
+		0xf40000f4, 0xf50000f5, 0xf60000f6, 0xf70000f7, 0xf80000f8, 0xf90000f9, 0xfa0000fa, 0xfb0000fb,
+		0xfc0000fc, 0xff0000ff, 0xd000011e, 0xf000011f, 0xdd000130, 0xfd000131, 0xde00015e, 0xfe00015f,
+	},
+}
+
+// ISO8859_10 is the ISO 8859-10 encoding.
+var ISO8859_10 *Charmap = &iso8859_10
+
+var iso8859_10 = Charmap{
 	name:          "ISO 8859-10",
 	mib:           identifier.ISOLatin6,
 	asciiSuperset: true,
@@ -3333,9 +4033,9 @@ var iso8859_10 = charmap{
 }
 
 // ISO8859_13 is the ISO 8859-13 encoding.
-var ISO8859_13 encoding.Encoding = &iso8859_13
+var ISO8859_13 *Charmap = &iso8859_13
 
-var iso8859_13 = charmap{
+var iso8859_13 = Charmap{
 	name:          "ISO 8859-13",
 	mib:           identifier.ISO885913,
 	asciiSuperset: true,
@@ -3508,9 +4208,9 @@ var iso8859_13 = charmap{
 }
 
 // ISO8859_14 is the ISO 8859-14 encoding.
-var ISO8859_14 encoding.Encoding = &iso8859_14
+var ISO8859_14 *Charmap = &iso8859_14
 
-var iso8859_14 = charmap{
+var iso8859_14 = Charmap{
 	name:          "ISO 8859-14",
 	mib:           identifier.ISO885914,
 	asciiSuperset: true,
@@ -3683,9 +4383,9 @@ var iso8859_14 = charmap{
 }
 
 // ISO8859_15 is the ISO 8859-15 encoding.
-var ISO8859_15 encoding.Encoding = &iso8859_15
+var ISO8859_15 *Charmap = &iso8859_15
 
-var iso8859_15 = charmap{
+var iso8859_15 = Charmap{
 	name:          "ISO 8859-15",
 	mib:           identifier.ISO885915,
 	asciiSuperset: true,
@@ -3858,9 +4558,9 @@ var iso8859_15 = charmap{
 }
 
 // ISO8859_16 is the ISO 8859-16 encoding.
-var ISO8859_16 encoding.Encoding = &iso8859_16
+var ISO8859_16 *Charmap = &iso8859_16
 
-var iso8859_16 = charmap{
+var iso8859_16 = Charmap{
 	name:          "ISO 8859-16",
 	mib:           identifier.ISO885916,
 	asciiSuperset: true,
@@ -4033,9 +4733,9 @@ var iso8859_16 = charmap{
 }
 
 // KOI8R is the KOI8-R encoding.
-var KOI8R encoding.Encoding = &koi8R
+var KOI8R *Charmap = &koi8R
 
-var koi8R = charmap{
+var koi8R = Charmap{
 	name:          "KOI8-R",
 	mib:           identifier.KOI8R,
 	asciiSuperset: true,
@@ -4208,9 +4908,9 @@ var koi8R = charmap{
 }
 
 // KOI8U is the KOI8-U encoding.
-var KOI8U encoding.Encoding = &koi8U
+var KOI8U *Charmap = &koi8U
 
-var koi8U = charmap{
+var koi8U = Charmap{
 	name:          "KOI8-U",
 	mib:           identifier.KOI8U,
 	asciiSuperset: true,
@@ -4383,9 +5083,9 @@ var koi8U = charmap{
 }
 
 // Macintosh is the Macintosh encoding.
-var Macintosh encoding.Encoding = &macintosh
+var Macintosh *Charmap = &macintosh
 
-var macintosh = charmap{
+var macintosh = Charmap{
 	name:          "Macintosh",
 	mib:           identifier.Macintosh,
 	asciiSuperset: true,
@@ -4558,9 +5258,9 @@ var macintosh = charmap{
 }
 
 // MacintoshCyrillic is the Macintosh Cyrillic encoding.
-var MacintoshCyrillic encoding.Encoding = &macintoshCyrillic
+var MacintoshCyrillic *Charmap = &macintoshCyrillic
 
-var macintoshCyrillic = charmap{
+var macintoshCyrillic = Charmap{
 	name:          "Macintosh Cyrillic",
 	mib:           identifier.MacintoshCyrillic,
 	asciiSuperset: true,
@@ -4733,9 +5433,9 @@ var macintoshCyrillic = charmap{
 }
 
 // Windows874 is the Windows 874 encoding.
-var Windows874 encoding.Encoding = &windows874
+var Windows874 *Charmap = &windows874
 
-var windows874 = charmap{
+var windows874 = Charmap{
 	name:          "Windows 874",
 	mib:           identifier.Windows874,
 	asciiSuperset: true,
@@ -4908,9 +5608,9 @@ var windows874 = charmap{
 }
 
 // Windows1250 is the Windows 1250 encoding.
-var Windows1250 encoding.Encoding = &windows1250
+var Windows1250 *Charmap = &windows1250
 
-var windows1250 = charmap{
+var windows1250 = Charmap{
 	name:          "Windows 1250",
 	mib:           identifier.Windows1250,
 	asciiSuperset: true,
@@ -5083,9 +5783,9 @@ var windows1250 = charmap{
 }
 
 // Windows1251 is the Windows 1251 encoding.
-var Windows1251 encoding.Encoding = &windows1251
+var Windows1251 *Charmap = &windows1251
 
-var windows1251 = charmap{
+var windows1251 = Charmap{
 	name:          "Windows 1251",
 	mib:           identifier.Windows1251,
 	asciiSuperset: true,
@@ -5258,9 +5958,9 @@ var windows1251 = charmap{
 }
 
 // Windows1252 is the Windows 1252 encoding.
-var Windows1252 encoding.Encoding = &windows1252
+var Windows1252 *Charmap = &windows1252
 
-var windows1252 = charmap{
+var windows1252 = Charmap{
 	name:          "Windows 1252",
 	mib:           identifier.Windows1252,
 	asciiSuperset: true,
@@ -5433,9 +6133,9 @@ var windows1252 = charmap{
 }
 
 // Windows1253 is the Windows 1253 encoding.
-var Windows1253 encoding.Encoding = &windows1253
+var Windows1253 *Charmap = &windows1253
 
-var windows1253 = charmap{
+var windows1253 = Charmap{
 	name:          "Windows 1253",
 	mib:           identifier.Windows1253,
 	asciiSuperset: true,
@@ -5608,9 +6308,9 @@ var windows1253 = charmap{
 }
 
 // Windows1254 is the Windows 1254 encoding.
-var Windows1254 encoding.Encoding = &windows1254
+var Windows1254 *Charmap = &windows1254
 
-var windows1254 = charmap{
+var windows1254 = Charmap{
 	name:          "Windows 1254",
 	mib:           identifier.Windows1254,
 	asciiSuperset: true,
@@ -5783,9 +6483,9 @@ var windows1254 = charmap{
 }
 
 // Windows1255 is the Windows 1255 encoding.
-var Windows1255 encoding.Encoding = &windows1255
+var Windows1255 *Charmap = &windows1255
 
-var windows1255 = charmap{
+var windows1255 = Charmap{
 	name:          "Windows 1255",
 	mib:           identifier.Windows1255,
 	asciiSuperset: true,
@@ -5893,7 +6593,7 @@ var windows1255 = charmap{
 		{2, [3]byte{0xd6, 0xb4, 0x00}}, {2, [3]byte{0xd6, 0xb5, 0x00}},
 		{2, [3]byte{0xd6, 0xb6, 0x00}}, {2, [3]byte{0xd6, 0xb7, 0x00}},
 		{2, [3]byte{0xd6, 0xb8, 0x00}}, {2, [3]byte{0xd6, 0xb9, 0x00}},
-		{3, [3]byte{0xef, 0xbf, 0xbd}}, {2, [3]byte{0xd6, 0xbb, 0x00}},
+		{2, [3]byte{0xd6, 0xba, 0x00}}, {2, [3]byte{0xd6, 0xbb, 0x00}},
 		{2, [3]byte{0xd6, 0xbc, 0x00}}, {2, [3]byte{0xd6, 0xbd, 0x00}},
 		{2, [3]byte{0xd6, 0xbe, 0x00}}, {2, [3]byte{0xd6, 0xbf, 0x00}},
 		{2, [3]byte{0xd7, 0x80, 0x00}}, {2, [3]byte{0xd7, 0x81, 0x00}},
@@ -5943,24 +6643,24 @@ var windows1255 = charmap{
 		0xb20000b2, 0xb30000b3, 0xb40000b4, 0xb50000b5, 0xb60000b6, 0xb70000b7, 0xb80000b8, 0xb90000b9,
 		0xbb0000bb, 0xbc0000bc, 0xbd0000bd, 0xbe0000be, 0xbf0000bf, 0xaa0000d7, 0xba0000f7, 0x83000192,
 		0x880002c6, 0x980002dc, 0xc00005b0, 0xc10005b1, 0xc20005b2, 0xc30005b3, 0xc40005b4, 0xc50005b5,
-		0xc60005b6, 0xc70005b7, 0xc80005b8, 0xc90005b9, 0xcb0005bb, 0xcc0005bc, 0xcd0005bd, 0xce0005be,
-		0xcf0005bf, 0xd00005c0, 0xd10005c1, 0xd20005c2, 0xd30005c3, 0xe00005d0, 0xe10005d1, 0xe20005d2,
-		0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9, 0xea0005da,
-		0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1, 0xf20005e2,
-		0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9, 0xfa0005ea,
-		0xd40005f0, 0xd50005f1, 0xd60005f2, 0xd70005f3, 0xd80005f4, 0xfd00200e, 0xfe00200f, 0x96002013,
-		0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e, 0x86002020,
-		0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xa40020aa, 0x800020ac,
-		0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
+		0xc60005b6, 0xc70005b7, 0xc80005b8, 0xc90005b9, 0xca0005ba, 0xcb0005bb, 0xcc0005bc, 0xcd0005bd,
+		0xce0005be, 0xcf0005bf, 0xd00005c0, 0xd10005c1, 0xd20005c2, 0xd30005c3, 0xe00005d0, 0xe10005d1,
+		0xe20005d2, 0xe30005d3, 0xe40005d4, 0xe50005d5, 0xe60005d6, 0xe70005d7, 0xe80005d8, 0xe90005d9,
+		0xea0005da, 0xeb0005db, 0xec0005dc, 0xed0005dd, 0xee0005de, 0xef0005df, 0xf00005e0, 0xf10005e1,
+		0xf20005e2, 0xf30005e3, 0xf40005e4, 0xf50005e5, 0xf60005e6, 0xf70005e7, 0xf80005e8, 0xf90005e9,
+		0xfa0005ea, 0xd40005f0, 0xd50005f1, 0xd60005f2, 0xd70005f3, 0xd80005f4, 0xfd00200e, 0xfe00200f,
+		0x96002013, 0x97002014, 0x91002018, 0x92002019, 0x8200201a, 0x9300201c, 0x9400201d, 0x8400201e,
+		0x86002020, 0x87002021, 0x95002022, 0x85002026, 0x89002030, 0x8b002039, 0x9b00203a, 0xa40020aa,
+		0x800020ac, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
 		0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
 		0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122, 0x99002122,
 	},
 }
 
 // Windows1256 is the Windows 1256 encoding.
-var Windows1256 encoding.Encoding = &windows1256
+var Windows1256 *Charmap = &windows1256
 
-var windows1256 = charmap{
+var windows1256 = Charmap{
 	name:          "Windows 1256",
 	mib:           identifier.Windows1256,
 	asciiSuperset: true,
@@ -6133,9 +6833,9 @@ var windows1256 = charmap{
 }
 
 // Windows1257 is the Windows 1257 encoding.
-var Windows1257 encoding.Encoding = &windows1257
+var Windows1257 *Charmap = &windows1257
 
-var windows1257 = charmap{
+var windows1257 = Charmap{
 	name:          "Windows 1257",
 	mib:           identifier.Windows1257,
 	asciiSuperset: true,
@@ -6308,9 +7008,9 @@ var windows1257 = charmap{
 }
 
 // Windows1258 is the Windows 1258 encoding.
-var Windows1258 encoding.Encoding = &windows1258
+var Windows1258 *Charmap = &windows1258
 
-var windows1258 = charmap{
+var windows1258 = Charmap{
 	name:          "Windows 1258",
 	mib:           identifier.Windows1258,
 	asciiSuperset: true,
@@ -6485,9 +7185,9 @@ var windows1258 = charmap{
 // XUserDefined is the X-User-Defined encoding.
 //
 // It is defined at http://encoding.spec.whatwg.org/#x-user-defined
-var XUserDefined encoding.Encoding = &xUserDefined
+var XUserDefined *Charmap = &xUserDefined
 
-var xUserDefined = charmap{
+var xUserDefined = Charmap{
 	name:          "X-User-Defined",
 	mib:           identifier.XUserDefined,
 	asciiSuperset: true,
@@ -6659,6 +7359,7 @@ var xUserDefined = charmap{
 	},
 }
 var listAll = []encoding.Encoding{
+	CodePage037,
 	CodePage437,
 	CodePage850,
 	CodePage852,
@@ -6669,6 +7370,8 @@ var listAll = []encoding.Encoding{
 	CodePage863,
 	CodePage865,
 	CodePage866,
+	CodePage1047,
+	CodePage1140,
 	ISO8859_1,
 	ISO8859_2,
 	ISO8859_3,
@@ -6681,6 +7384,7 @@ var listAll = []encoding.Encoding{
 	ISO8859_8,
 	ISO8859_8E,
 	ISO8859_8I,
+	ISO8859_9,
 	ISO8859_10,
 	ISO8859_13,
 	ISO8859_14,
@@ -6703,4 +7407,4 @@ var listAll = []encoding.Encoding{
 	XUserDefined,
 }
 
-// Total table size 78736 bytes (76KiB); checksum: 811C9DC5
+// Total table size 87024 bytes (84KiB); checksum: 811C9DC5
diff --git a/vendor/golang.org/x/text/encoding/htmlindex/gen.go b/vendor/golang.org/x/text/encoding/htmlindex/gen.go
deleted file mode 100644
index d10e5e09f..000000000
--- a/vendor/golang.org/x/text/encoding/htmlindex/gen.go
+++ /dev/null
@@ -1,167 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-import (
-	"bytes"
-	"encoding/json"
-	"fmt"
-	"log"
-	"strings"
-
-	"golang.org/x/text/internal/gen"
-)
-
-type group struct {
-	Encodings []struct {
-		Labels []string
-		Name   string
-	}
-}
-
-func main() {
-	gen.Init()
-
-	r := gen.Open("http://www.w3.org/TR", "w3", "encoding/indexes/encodings.json")
-	var groups []group
-	if err := json.NewDecoder(r).Decode(&groups); err != nil {
-		log.Fatalf("Error reading encodings.json: %v", err)
-	}
-
-	w := &bytes.Buffer{}
-	fmt.Fprintln(w, "type htmlEncoding byte")
-	fmt.Fprintln(w, "const (")
-	for i, g := range groups {
-		for _, e := range g.Encodings {
-			name := consts[e.Name]
-			if name == "" {
-				log.Fatalf("No const defined for %s.", e.Name)
-			}
-			if i == 0 {
-				fmt.Fprintf(w, "%s htmlEncoding = iota\n", name)
-			} else {
-				fmt.Fprintf(w, "%s\n", name)
-			}
-		}
-	}
-	fmt.Fprintln(w, "numEncodings")
-	fmt.Fprint(w, ")\n\n")
-
-	fmt.Fprintln(w, "var canonical = [numEncodings]string{")
-	for _, g := range groups {
-		for _, e := range g.Encodings {
-			fmt.Fprintf(w, "%q,\n", e.Name)
-		}
-	}
-	fmt.Fprint(w, "}\n\n")
-
-	fmt.Fprintln(w, "var nameMap = map[string]htmlEncoding{")
-	for _, g := range groups {
-		for _, e := range g.Encodings {
-			for _, l := range e.Labels {
-				fmt.Fprintf(w, "%q: %s,\n", l, consts[e.Name])
-			}
-		}
-	}
-	fmt.Fprint(w, "}\n\n")
-
-	var tags []string
-	fmt.Fprintln(w, "var localeMap = []htmlEncoding{")
-	for _, loc := range locales {
-		tags = append(tags, loc.tag)
-		fmt.Fprintf(w, "%s, // %s \n", consts[loc.name], loc.tag)
-	}
-	fmt.Fprint(w, "}\n\n")
-
-	fmt.Fprintf(w, "const locales = %q\n", strings.Join(tags, " "))
-
-	gen.WriteGoFile("tables.go", "htmlindex", w.Bytes())
-}
-
-// consts maps canonical encoding name to internal constant.
-var consts = map[string]string{
-	"utf-8":          "utf8",
-	"ibm866":         "ibm866",
-	"iso-8859-2":     "iso8859_2",
-	"iso-8859-3":     "iso8859_3",
-	"iso-8859-4":     "iso8859_4",
-	"iso-8859-5":     "iso8859_5",
-	"iso-8859-6":     "iso8859_6",
-	"iso-8859-7":     "iso8859_7",
-	"iso-8859-8":     "iso8859_8",
-	"iso-8859-8-i":   "iso8859_8I",
-	"iso-8859-10":    "iso8859_10",
-	"iso-8859-13":    "iso8859_13",
-	"iso-8859-14":    "iso8859_14",
-	"iso-8859-15":    "iso8859_15",
-	"iso-8859-16":    "iso8859_16",
-	"koi8-r":         "koi8r",
-	"koi8-u":         "koi8u",
-	"macintosh":      "macintosh",
-	"windows-874":    "windows874",
-	"windows-1250":   "windows1250",
-	"windows-1251":   "windows1251",
-	"windows-1252":   "windows1252",
-	"windows-1253":   "windows1253",
-	"windows-1254":   "windows1254",
-	"windows-1255":   "windows1255",
-	"windows-1256":   "windows1256",
-	"windows-1257":   "windows1257",
-	"windows-1258":   "windows1258",
-	"x-mac-cyrillic": "macintoshCyrillic",
-	"gbk":            "gbk",
-	"gb18030":        "gb18030",
-	// "hz-gb-2312":     "hzgb2312", // Was removed from WhatWG
-	"big5":           "big5",
-	"euc-jp":         "eucjp",
-	"iso-2022-jp":    "iso2022jp",
-	"shift_jis":      "shiftJIS",
-	"euc-kr":         "euckr",
-	"replacement":    "replacement",
-	"utf-16be":       "utf16be",
-	"utf-16le":       "utf16le",
-	"x-user-defined": "xUserDefined",
-}
-
-// locales is taken from
-// https://html.spec.whatwg.org/multipage/syntax.html#encoding-sniffing-algorithm.
-var locales = []struct{ tag, name string }{
-	{"und", "windows-1252"}, // The default value.
-	{"ar", "windows-1256"},
-	{"ba", "windows-1251"},
-	{"be", "windows-1251"},
-	{"bg", "windows-1251"},
-	{"cs", "windows-1250"},
-	{"el", "iso-8859-7"},
-	{"et", "windows-1257"},
-	{"fa", "windows-1256"},
-	{"he", "windows-1255"},
-	{"hr", "windows-1250"},
-	{"hu", "iso-8859-2"},
-	{"ja", "shift_jis"},
-	{"kk", "windows-1251"},
-	{"ko", "euc-kr"},
-	{"ku", "windows-1254"},
-	{"ky", "windows-1251"},
-	{"lt", "windows-1257"},
-	{"lv", "windows-1257"},
-	{"mk", "windows-1251"},
-	{"pl", "iso-8859-2"},
-	{"ru", "windows-1251"},
-	{"sah", "windows-1251"},
-	{"sk", "windows-1250"},
-	{"sl", "iso-8859-2"},
-	{"sr", "windows-1251"},
-	{"tg", "windows-1251"},
-	{"th", "windows-874"},
-	{"tr", "windows-1254"},
-	{"tt", "windows-1251"},
-	{"uk", "windows-1251"},
-	{"vi", "windows-1258"},
-	{"zh-hans", "gb18030"},
-	{"zh-hant", "big5"},
-}
diff --git a/vendor/golang.org/x/text/encoding/htmlindex/tables.go b/vendor/golang.org/x/text/encoding/htmlindex/tables.go
index 78950d3c3..cbf4ba923 100644
--- a/vendor/golang.org/x/text/encoding/htmlindex/tables.go
+++ b/vendor/golang.org/x/text/encoding/htmlindex/tables.go
@@ -1,4 +1,4 @@
-// This file was generated by go generate; DO NOT EDIT
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 package htmlindex
 
diff --git a/vendor/golang.org/x/text/encoding/internal/identifier/gen.go b/vendor/golang.org/x/text/encoding/internal/identifier/gen.go
deleted file mode 100644
index 0c8eba7e5..000000000
--- a/vendor/golang.org/x/text/encoding/internal/identifier/gen.go
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-import (
-	"bytes"
-	"encoding/xml"
-	"fmt"
-	"io"
-	"log"
-	"strings"
-
-	"golang.org/x/text/internal/gen"
-)
-
-type registry struct {
-	XMLName  xml.Name `xml:"registry"`
-	Updated  string   `xml:"updated"`
-	Registry []struct {
-		ID     string `xml:"id,attr"`
-		Record []struct {
-			Name string `xml:"name"`
-			Xref []struct {
-				Type string `xml:"type,attr"`
-				Data string `xml:"data,attr"`
-			} `xml:"xref"`
-			Desc struct {
-				Data string `xml:",innerxml"`
-				// Any []struct {
-				// 	Data string `xml:",chardata"`
-				// } `xml:",any"`
-				// Data string `xml:",chardata"`
-			} `xml:"description,"`
-			MIB   string   `xml:"value"`
-			Alias []string `xml:"alias"`
-			MIME  string   `xml:"preferred_alias"`
-		} `xml:"record"`
-	} `xml:"registry"`
-}
-
-func main() {
-	r := gen.OpenIANAFile("assignments/character-sets/character-sets.xml")
-	reg := &registry{}
-	if err := xml.NewDecoder(r).Decode(&reg); err != nil && err != io.EOF {
-		log.Fatalf("Error decoding charset registry: %v", err)
-	}
-	if len(reg.Registry) == 0 || reg.Registry[0].ID != "character-sets-1" {
-		log.Fatalf("Unexpected ID %s", reg.Registry[0].ID)
-	}
-
-	w := &bytes.Buffer{}
-	fmt.Fprintf(w, "const (\n")
-	for _, rec := range reg.Registry[0].Record {
-		constName := ""
-		for _, a := range rec.Alias {
-			if strings.HasPrefix(a, "cs") && strings.IndexByte(a, '-') == -1 {
-				// Some of the constant definitions have comments in them. Strip those.
-				constName = strings.Title(strings.SplitN(a[2:], "\n", 2)[0])
-			}
-		}
-		if constName == "" {
-			switch rec.MIB {
-			case "2085":
-				constName = "HZGB2312" // Not listed as alias for some reason.
-			default:
-				log.Fatalf("No cs alias defined for %s.", rec.MIB)
-			}
-		}
-		if rec.MIME != "" {
-			rec.MIME = fmt.Sprintf(" (MIME: %s)", rec.MIME)
-		}
-		fmt.Fprintf(w, "// %s is the MIB identifier with IANA name %s%s.\n//\n", constName, rec.Name, rec.MIME)
-		if len(rec.Desc.Data) > 0 {
-			fmt.Fprint(w, "// ")
-			d := xml.NewDecoder(strings.NewReader(rec.Desc.Data))
-			inElem := true
-			attr := ""
-			for {
-				t, err := d.Token()
-				if err != nil {
-					if err != io.EOF {
-						log.Fatal(err)
-					}
-					break
-				}
-				switch x := t.(type) {
-				case xml.CharData:
-					attr = "" // Don't need attribute info.
-					a := bytes.Split([]byte(x), []byte("\n"))
-					for i, b := range a {
-						if b = bytes.TrimSpace(b); len(b) != 0 {
-							if !inElem && i > 0 {
-								fmt.Fprint(w, "\n// ")
-							}
-							inElem = false
-							fmt.Fprintf(w, "%s ", string(b))
-						}
-					}
-				case xml.StartElement:
-					if x.Name.Local == "xref" {
-						inElem = true
-						use := false
-						for _, a := range x.Attr {
-							if a.Name.Local == "type" {
-								use = use || a.Value != "person"
-							}
-							if a.Name.Local == "data" && use {
-								attr = a.Value + " "
-							}
-						}
-					}
-				case xml.EndElement:
-					inElem = false
-					fmt.Fprint(w, attr)
-				}
-			}
-			fmt.Fprint(w, "\n")
-		}
-		for _, x := range rec.Xref {
-			switch x.Type {
-			case "rfc":
-				fmt.Fprintf(w, "// Reference: %s\n", strings.ToUpper(x.Data))
-			case "uri":
-				fmt.Fprintf(w, "// Reference: %s\n", x.Data)
-			}
-		}
-		fmt.Fprintf(w, "%s MIB = %s\n", constName, rec.MIB)
-		fmt.Fprintln(w)
-	}
-	fmt.Fprintln(w, ")")
-
-	gen.WriteGoFile("mib.go", "identifier", w.Bytes())
-}
diff --git a/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go b/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go
index 2a2da0ef2..7351b4ef8 100644
--- a/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go
+++ b/vendor/golang.org/x/text/encoding/internal/identifier/identifier.go
@@ -36,8 +36,8 @@ package identifier
 // - http://www.ietf.org/rfc/rfc2978.txt
 // - http://www.unicode.org/reports/tr22/
 // - http://www.w3.org/TR/encoding/
-// - http://www.w3.org/TR/encoding/indexes/encodings.json
 // - https://encoding.spec.whatwg.org/
+// - https://encoding.spec.whatwg.org/encodings.json
 // - https://tools.ietf.org/html/rfc6657#section-5
 
 // Interface can be implemented by Encodings to define the CCS or CES for which
diff --git a/vendor/golang.org/x/text/encoding/internal/identifier/mib.go b/vendor/golang.org/x/text/encoding/internal/identifier/mib.go
index 915abfa29..768842b0a 100644
--- a/vendor/golang.org/x/text/encoding/internal/identifier/mib.go
+++ b/vendor/golang.org/x/text/encoding/internal/identifier/mib.go
@@ -1,4 +1,4 @@
-// This file was generated by go generate; DO NOT EDIT
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 package identifier
 
diff --git a/vendor/golang.org/x/text/encoding/japanese/eucjp.go b/vendor/golang.org/x/text/encoding/japanese/eucjp.go
index 40f9b05f3..79313fa58 100644
--- a/vendor/golang.org/x/text/encoding/japanese/eucjp.go
+++ b/vendor/golang.org/x/text/encoding/japanese/eucjp.go
@@ -5,7 +5,6 @@
 package japanese
 
 import (
-	"errors"
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
@@ -23,10 +22,9 @@ var eucJP = internal.Encoding{
 	identifier.EUCPkdFmtJapanese,
 }
 
-var errInvalidEUCJP = errors.New("japanese: invalid EUC-JP encoding")
-
 type eucJPDecoder struct{ transform.NopResetter }
 
+// See https://encoding.spec.whatwg.org/#euc-jp-decoder.
 func (eucJPDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
 	r, size := rune(0), 0
 loop:
@@ -37,60 +35,79 @@ loop:
 
 		case c0 == 0x8e:
 			if nSrc+1 >= len(src) {
-				err = transform.ErrShortSrc
-				break loop
+				if !atEOF {
+					err = transform.ErrShortSrc
+					break loop
+				}
+				r, size = utf8.RuneError, 1
+				break
 			}
 			c1 := src[nSrc+1]
-			if c1 < 0xa1 || 0xdf < c1 {
-				err = errInvalidEUCJP
-				break loop
+			switch {
+			case c1 < 0xa1:
+				r, size = utf8.RuneError, 1
+			case c1 > 0xdf:
+				r, size = utf8.RuneError, 2
+				if c1 == 0xff {
+					size = 1
+				}
+			default:
+				r, size = rune(c1)+(0xff61-0xa1), 2
 			}
-			r, size = rune(c1)+(0xff61-0xa1), 2
-
 		case c0 == 0x8f:
 			if nSrc+2 >= len(src) {
-				err = transform.ErrShortSrc
-				break loop
+				if !atEOF {
+					err = transform.ErrShortSrc
+					break loop
+				}
+				r, size = utf8.RuneError, 1
+				if p := nSrc + 1; p < len(src) && 0xa1 <= src[p] && src[p] < 0xfe {
+					size = 2
+				}
+				break
 			}
 			c1 := src[nSrc+1]
 			if c1 < 0xa1 || 0xfe < c1 {
-				err = errInvalidEUCJP
-				break loop
+				r, size = utf8.RuneError, 1
+				break
 			}
 			c2 := src[nSrc+2]
 			if c2 < 0xa1 || 0xfe < c2 {
-				err = errInvalidEUCJP
-				break loop
+				r, size = utf8.RuneError, 2
+				break
 			}
-			r, size = '\ufffd', 3
+			r, size = utf8.RuneError, 3
 			if i := int(c1-0xa1)*94 + int(c2-0xa1); i < len(jis0212Decode) {
 				r = rune(jis0212Decode[i])
 				if r == 0 {
-					r = '\ufffd'
+					r = utf8.RuneError
 				}
 			}
 
 		case 0xa1 <= c0 && c0 <= 0xfe:
 			if nSrc+1 >= len(src) {
-				err = transform.ErrShortSrc
-				break loop
+				if !atEOF {
+					err = transform.ErrShortSrc
+					break loop
+				}
+				r, size = utf8.RuneError, 1
+				break
 			}
 			c1 := src[nSrc+1]
 			if c1 < 0xa1 || 0xfe < c1 {
-				err = errInvalidEUCJP
-				break loop
+				r, size = utf8.RuneError, 1
+				break
 			}
-			r, size = '\ufffd', 2
+			r, size = utf8.RuneError, 2
 			if i := int(c0-0xa1)*94 + int(c1-0xa1); i < len(jis0208Decode) {
 				r = rune(jis0208Decode[i])
 				if r == 0 {
-					r = '\ufffd'
+					r = utf8.RuneError
 				}
 			}
 
 		default:
-			err = errInvalidEUCJP
-			break loop
+			r, size = utf8.RuneError, 1
 		}
 
 		if nDst+utf8.RuneLen(r) > len(dst) {
@@ -99,9 +116,6 @@ loop:
 		}
 		nDst += utf8.EncodeRune(dst[nDst:], r)
 	}
-	if atEOF && err == transform.ErrShortSrc {
-		err = errInvalidEUCJP
-	}
 	return nDst, nSrc, err
 }
 
diff --git a/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go b/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go
index b63e7d5d8..613226df5 100644
--- a/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go
+++ b/vendor/golang.org/x/text/encoding/japanese/iso2022jp.go
@@ -5,7 +5,6 @@
 package japanese
 
 import (
-	"errors"
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
@@ -31,8 +30,6 @@ func iso2022JPNewEncoder() transform.Transformer {
 	return new(iso2022JPEncoder)
 }
 
-var errInvalidISO2022JP = errors.New("japanese: invalid ISO-2022-JP encoding")
-
 const (
 	asciiState = iota
 	katakanaState
@@ -50,45 +47,51 @@ func (d *iso2022JPDecoder) Reset() {
 
 func (d *iso2022JPDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
 	r, size := rune(0), 0
-loop:
 	for ; nSrc < len(src); nSrc += size {
 		c0 := src[nSrc]
 		if c0 >= utf8.RuneSelf {
-			err = errInvalidISO2022JP
-			break loop
+			r, size = '\ufffd', 1
+			goto write
 		}
 
 		if c0 == asciiEsc {
 			if nSrc+2 >= len(src) {
-				err = transform.ErrShortSrc
-				break loop
+				if !atEOF {
+					return nDst, nSrc, transform.ErrShortSrc
+				}
+				// TODO: is it correct to only skip 1??
+				r, size = '\ufffd', 1
+				goto write
 			}
 			size = 3
 			c1 := src[nSrc+1]
 			c2 := src[nSrc+2]
 			switch {
-			case c1 == '$' && (c2 == '@' || c2 == 'B'):
+			case c1 == '$' && (c2 == '@' || c2 == 'B'): // 0x24 {0x40, 0x42}
 				*d = jis0208State
 				continue
-			case c1 == '$' && c2 == '(':
+			case c1 == '$' && c2 == '(': // 0x24 0x28
 				if nSrc+3 >= len(src) {
-					err = transform.ErrShortSrc
-					break loop
+					if !atEOF {
+						return nDst, nSrc, transform.ErrShortSrc
+					}
+					r, size = '\ufffd', 1
+					goto write
 				}
 				size = 4
-				if src[nSrc]+3 == 'D' {
+				if src[nSrc+3] == 'D' {
 					*d = jis0212State
 					continue
 				}
-			case c1 == '(' && (c2 == 'B' || c2 == 'J'):
+			case c1 == '(' && (c2 == 'B' || c2 == 'J'): // 0x28 {0x42, 0x4A}
 				*d = asciiState
 				continue
-			case c1 == '(' && c2 == 'I':
+			case c1 == '(' && c2 == 'I': // 0x28 0x49
 				*d = katakanaState
 				continue
 			}
-			err = errInvalidISO2022JP
-			break loop
+			r, size = '\ufffd', 1
+			goto write
 		}
 
 		switch *d {
@@ -97,8 +100,8 @@ loop:
 
 		case katakanaState:
 			if c0 < 0x21 || 0x60 <= c0 {
-				err = errInvalidISO2022JP
-				break loop
+				r, size = '\ufffd', 1
+				goto write
 			}
 			r, size = rune(c0)+(0xff61-0x21), 1
 
@@ -106,11 +109,14 @@ loop:
 			if c0 == 0x0a {
 				*d = asciiState
 				r, size = rune(c0), 1
-				break
+				goto write
 			}
 			if nSrc+1 >= len(src) {
-				err = transform.ErrShortSrc
-				break loop
+				if !atEOF {
+					return nDst, nSrc, transform.ErrShortSrc
+				}
+				r, size = '\ufffd', 1
+				goto write
 			}
 			size = 2
 			c1 := src[nSrc+1]
@@ -121,22 +127,19 @@ loop:
 				r = rune(jis0212Decode[i])
 			} else {
 				r = '\ufffd'
-				break
+				goto write
 			}
 			if r == 0 {
 				r = '\ufffd'
 			}
 		}
 
+	write:
 		if nDst+utf8.RuneLen(r) > len(dst) {
-			err = transform.ErrShortDst
-			break loop
+			return nDst, nSrc, transform.ErrShortDst
 		}
 		nDst += utf8.EncodeRune(dst[nDst:], r)
 	}
-	if atEOF && err == transform.ErrShortSrc {
-		err = errInvalidISO2022JP
-	}
 	return nDst, nSrc, err
 }
 
diff --git a/vendor/golang.org/x/text/encoding/japanese/maketables.go b/vendor/golang.org/x/text/encoding/japanese/maketables.go
deleted file mode 100644
index d6c10deb0..000000000
--- a/vendor/golang.org/x/text/encoding/japanese/maketables.go
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-// This program generates tables.go:
-//	go run maketables.go | gofmt > tables.go
-
-// TODO: Emoji extensions?
-// http://www.unicode.org/faq/emoji_dingbats.html
-// http://www.unicode.org/Public/UNIDATA/EmojiSources.txt
-
-import (
-	"bufio"
-	"fmt"
-	"log"
-	"net/http"
-	"sort"
-	"strings"
-)
-
-type entry struct {
-	jisCode, table int
-}
-
-func main() {
-	fmt.Printf("// generated by go run maketables.go; DO NOT EDIT\n\n")
-	fmt.Printf("// Package japanese provides Japanese encodings such as EUC-JP and Shift JIS.\n")
-	fmt.Printf(`package japanese // import "golang.org/x/text/encoding/japanese"` + "\n\n")
-
-	reverse := [65536]entry{}
-	for i := range reverse {
-		reverse[i].table = -1
-	}
-
-	tables := []struct {
-		url  string
-		name string
-	}{
-		{"http://encoding.spec.whatwg.org/index-jis0208.txt", "0208"},
-		{"http://encoding.spec.whatwg.org/index-jis0212.txt", "0212"},
-	}
-	for i, table := range tables {
-		res, err := http.Get(table.url)
-		if err != nil {
-			log.Fatalf("%q: Get: %v", table.url, err)
-		}
-		defer res.Body.Close()
-
-		mapping := [65536]uint16{}
-
-		scanner := bufio.NewScanner(res.Body)
-		for scanner.Scan() {
-			s := strings.TrimSpace(scanner.Text())
-			if s == "" || s[0] == '#' {
-				continue
-			}
-			x, y := 0, uint16(0)
-			if _, err := fmt.Sscanf(s, "%d 0x%x", &x, &y); err != nil {
-				log.Fatalf("%q: could not parse %q", table.url, s)
-			}
-			if x < 0 || 120*94 <= x {
-				log.Fatalf("%q: JIS code %d is out of range", table.url, x)
-			}
-			mapping[x] = y
-			if reverse[y].table == -1 {
-				reverse[y] = entry{jisCode: x, table: i}
-			}
-		}
-		if err := scanner.Err(); err != nil {
-			log.Fatalf("%q: scanner error: %v", table.url, err)
-		}
-
-		fmt.Printf("// jis%sDecode is the decoding table from JIS %s code to Unicode.\n// It is defined at %s\n",
-			table.name, table.name, table.url)
-		fmt.Printf("var jis%sDecode = [...]uint16{\n", table.name)
-		for i, m := range mapping {
-			if m != 0 {
-				fmt.Printf("\t%d: 0x%04X,\n", i, m)
-			}
-		}
-		fmt.Printf("}\n\n")
-	}
-
-	// Any run of at least separation continuous zero entries in the reverse map will
-	// be a separate encode table.
-	const separation = 1024
-
-	intervals := []interval(nil)
-	low, high := -1, -1
-	for i, v := range reverse {
-		if v.table == -1 {
-			continue
-		}
-		if low < 0 {
-			low = i
-		} else if i-high >= separation {
-			if high >= 0 {
-				intervals = append(intervals, interval{low, high})
-			}
-			low = i
-		}
-		high = i + 1
-	}
-	if high >= 0 {
-		intervals = append(intervals, interval{low, high})
-	}
-	sort.Sort(byDecreasingLength(intervals))
-
-	fmt.Printf("const (\n")
-	fmt.Printf("\tjis0208    = 1\n")
-	fmt.Printf("\tjis0212    = 2\n")
-	fmt.Printf("\tcodeMask   = 0x7f\n")
-	fmt.Printf("\tcodeShift  = 7\n")
-	fmt.Printf("\ttableShift = 14\n")
-	fmt.Printf(")\n\n")
-
-	fmt.Printf("const numEncodeTables = %d\n\n", len(intervals))
-	fmt.Printf("// encodeX are the encoding tables from Unicode to JIS code,\n")
-	fmt.Printf("// sorted by decreasing length.\n")
-	for i, v := range intervals {
-		fmt.Printf("// encode%d: %5d entries for runes in [%5d, %5d).\n", i, v.len(), v.low, v.high)
-	}
-	fmt.Printf("//\n")
-	fmt.Printf("// The high two bits of the value record whether the JIS code comes from the\n")
-	fmt.Printf("// JIS0208 table (high bits == 1) or the JIS0212 table (high bits == 2).\n")
-	fmt.Printf("// The low 14 bits are two 7-bit unsigned integers j1 and j2 that form the\n")
-	fmt.Printf("// JIS code (94*j1 + j2) within that table.\n")
-	fmt.Printf("\n")
-
-	for i, v := range intervals {
-		fmt.Printf("const encode%dLow, encode%dHigh = %d, %d\n\n", i, i, v.low, v.high)
-		fmt.Printf("var encode%d = [...]uint16{\n", i)
-		for j := v.low; j < v.high; j++ {
-			x := reverse[j]
-			if x.table == -1 {
-				continue
-			}
-			fmt.Printf("\t%d - %d: jis%s<<14 | 0x%02X<<7 | 0x%02X,\n",
-				j, v.low, tables[x.table].name, x.jisCode/94, x.jisCode%94)
-		}
-		fmt.Printf("}\n\n")
-	}
-}
-
-// interval is a half-open interval [low, high).
-type interval struct {
-	low, high int
-}
-
-func (i interval) len() int { return i.high - i.low }
-
-// byDecreasingLength sorts intervals by decreasing length.
-type byDecreasingLength []interval
-
-func (b byDecreasingLength) Len() int           { return len(b) }
-func (b byDecreasingLength) Less(i, j int) bool { return b[i].len() > b[j].len() }
-func (b byDecreasingLength) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }
diff --git a/vendor/golang.org/x/text/encoding/japanese/shiftjis.go b/vendor/golang.org/x/text/encoding/japanese/shiftjis.go
index 099aecc31..16fd8a6e3 100644
--- a/vendor/golang.org/x/text/encoding/japanese/shiftjis.go
+++ b/vendor/golang.org/x/text/encoding/japanese/shiftjis.go
@@ -5,7 +5,6 @@
 package japanese
 
 import (
-	"errors"
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
@@ -24,8 +23,6 @@ var shiftJIS = internal.Encoding{
 	identifier.ShiftJIS,
 }
 
-var errInvalidShiftJIS = errors.New("japanese: invalid Shift JIS encoding")
-
 type shiftJISDecoder struct{ transform.NopResetter }
 
 func (shiftJISDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
@@ -48,28 +45,32 @@ loop:
 			c0 = 2*c0 - 0x21
 
 			if nSrc+1 >= len(src) {
-				err = transform.ErrShortSrc
-				break loop
+				if !atEOF {
+					err = transform.ErrShortSrc
+					break loop
+				}
+				r, size = '\ufffd', 1
+				goto write
 			}
 			c1 := src[nSrc+1]
 			switch {
 			case c1 < 0x40:
-				err = errInvalidShiftJIS
-				break loop
+				r, size = '\ufffd', 1 // c1 is ASCII so output on next round
+				goto write
 			case c1 < 0x7f:
 				c0--
 				c1 -= 0x40
 			case c1 == 0x7f:
-				err = errInvalidShiftJIS
-				break loop
+				r, size = '\ufffd', 1 // c1 is ASCII so output on next round
+				goto write
 			case c1 < 0x9f:
 				c0--
 				c1 -= 0x41
 			case c1 < 0xfd:
 				c1 -= 0x9f
 			default:
-				err = errInvalidShiftJIS
-				break loop
+				r, size = '\ufffd', 2
+				goto write
 			}
 			r, size = '\ufffd', 2
 			if i := int(c0)*94 + int(c1); i < len(jis0208Decode) {
@@ -79,20 +80,19 @@ loop:
 				}
 			}
 
-		default:
-			err = errInvalidShiftJIS
-			break loop
-		}
+		case c0 == 0x80:
+			r, size = 0x80, 1
 
+		default:
+			r, size = '\ufffd', 1
+		}
+	write:
 		if nDst+utf8.RuneLen(r) > len(dst) {
 			err = transform.ErrShortDst
 			break loop
 		}
 		nDst += utf8.EncodeRune(dst[nDst:], r)
 	}
-	if atEOF && err == transform.ErrShortSrc {
-		err = errInvalidShiftJIS
-	}
 	return nDst, nSrc, err
 }
 
diff --git a/vendor/golang.org/x/text/encoding/korean/euckr.go b/vendor/golang.org/x/text/encoding/korean/euckr.go
index a4b9ff178..034337f5d 100644
--- a/vendor/golang.org/x/text/encoding/korean/euckr.go
+++ b/vendor/golang.org/x/text/encoding/korean/euckr.go
@@ -5,7 +5,6 @@
 package korean
 
 import (
-	"errors"
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
@@ -26,8 +25,6 @@ var eucKR = internal.Encoding{
 	identifier.EUCKR,
 }
 
-var errInvalidEUCKR = errors.New("korean: invalid EUC-KR encoding")
-
 type eucKRDecoder struct{ transform.NopResetter }
 
 func (eucKRDecoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
@@ -40,10 +37,15 @@ loop:
 
 		case 0x81 <= c0 && c0 < 0xff:
 			if nSrc+1 >= len(src) {
-				err = transform.ErrShortSrc
-				break loop
+				if !atEOF {
+					err = transform.ErrShortSrc
+					break loop
+				}
+				r, size = utf8.RuneError, 1
+				break
 			}
 			c1 := src[nSrc+1]
+			size = 2
 			if c0 < 0xc7 {
 				r = 178 * rune(c0-0x81)
 				switch {
@@ -54,39 +56,36 @@ loop:
 				case 0x81 <= c1 && c1 < 0xff:
 					r += rune(c1) - (0x81 - 2*26)
 				default:
-					err = errInvalidEUCKR
-					break loop
+					goto decError
 				}
 			} else if 0xa1 <= c1 && c1 < 0xff {
 				r = 178*(0xc7-0x81) + rune(c0-0xc7)*94 + rune(c1-0xa1)
 			} else {
-				err = errInvalidEUCKR
-				break loop
+				goto decError
 			}
 			if int(r) < len(decode) {
 				r = rune(decode[r])
-				if r == 0 {
-					r = '\ufffd'
+				if r != 0 {
+					break
 				}
-			} else {
-				r = '\ufffd'
 			}
-			size = 2
+		decError:
+			r = utf8.RuneError
+			if c1 < utf8.RuneSelf {
+				size = 1
+			}
 
 		default:
-			err = errInvalidEUCKR
-			break loop
+			r, size = utf8.RuneError, 1
+			break
 		}
 
 		if nDst+utf8.RuneLen(r) > len(dst) {
 			err = transform.ErrShortDst
-			break loop
+			break
 		}
 		nDst += utf8.EncodeRune(dst[nDst:], r)
 	}
-	if atEOF && err == transform.ErrShortSrc {
-		err = errInvalidEUCKR
-	}
 	return nDst, nSrc, err
 }
 
diff --git a/vendor/golang.org/x/text/encoding/korean/maketables.go b/vendor/golang.org/x/text/encoding/korean/maketables.go
deleted file mode 100644
index c84034fb6..000000000
--- a/vendor/golang.org/x/text/encoding/korean/maketables.go
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-// This program generates tables.go:
-//	go run maketables.go | gofmt > tables.go
-
-import (
-	"bufio"
-	"fmt"
-	"log"
-	"net/http"
-	"sort"
-	"strings"
-)
-
-func main() {
-	fmt.Printf("// generated by go run maketables.go; DO NOT EDIT\n\n")
-	fmt.Printf("// Package korean provides Korean encodings such as EUC-KR.\n")
-	fmt.Printf(`package korean // import "golang.org/x/text/encoding/korean"` + "\n\n")
-
-	res, err := http.Get("http://encoding.spec.whatwg.org/index-euc-kr.txt")
-	if err != nil {
-		log.Fatalf("Get: %v", err)
-	}
-	defer res.Body.Close()
-
-	mapping := [65536]uint16{}
-	reverse := [65536]uint16{}
-
-	scanner := bufio.NewScanner(res.Body)
-	for scanner.Scan() {
-		s := strings.TrimSpace(scanner.Text())
-		if s == "" || s[0] == '#' {
-			continue
-		}
-		x, y := uint16(0), uint16(0)
-		if _, err := fmt.Sscanf(s, "%d 0x%x", &x, &y); err != nil {
-			log.Fatalf("could not parse %q", s)
-		}
-		if x < 0 || 178*(0xc7-0x81)+(0xfe-0xc7)*94+(0xff-0xa1) <= x {
-			log.Fatalf("EUC-KR code %d is out of range", x)
-		}
-		mapping[x] = y
-		if reverse[y] == 0 {
-			c0, c1 := uint16(0), uint16(0)
-			if x < 178*(0xc7-0x81) {
-				c0 = uint16(x/178) + 0x81
-				c1 = uint16(x % 178)
-				switch {
-				case c1 < 1*26:
-					c1 += 0x41
-				case c1 < 2*26:
-					c1 += 0x47
-				default:
-					c1 += 0x4d
-				}
-			} else {
-				x -= 178 * (0xc7 - 0x81)
-				c0 = uint16(x/94) + 0xc7
-				c1 = uint16(x%94) + 0xa1
-			}
-			reverse[y] = c0<<8 | c1
-		}
-	}
-	if err := scanner.Err(); err != nil {
-		log.Fatalf("scanner error: %v", err)
-	}
-
-	fmt.Printf("// decode is the decoding table from EUC-KR code to Unicode.\n")
-	fmt.Printf("// It is defined at http://encoding.spec.whatwg.org/index-euc-kr.txt\n")
-	fmt.Printf("var decode = [...]uint16{\n")
-	for i, v := range mapping {
-		if v != 0 {
-			fmt.Printf("\t%d: 0x%04X,\n", i, v)
-		}
-	}
-	fmt.Printf("}\n\n")
-
-	// Any run of at least separation continuous zero entries in the reverse map will
-	// be a separate encode table.
-	const separation = 1024
-
-	intervals := []interval(nil)
-	low, high := -1, -1
-	for i, v := range reverse {
-		if v == 0 {
-			continue
-		}
-		if low < 0 {
-			low = i
-		} else if i-high >= separation {
-			if high >= 0 {
-				intervals = append(intervals, interval{low, high})
-			}
-			low = i
-		}
-		high = i + 1
-	}
-	if high >= 0 {
-		intervals = append(intervals, interval{low, high})
-	}
-	sort.Sort(byDecreasingLength(intervals))
-
-	fmt.Printf("const numEncodeTables = %d\n\n", len(intervals))
-	fmt.Printf("// encodeX are the encoding tables from Unicode to EUC-KR code,\n")
-	fmt.Printf("// sorted by decreasing length.\n")
-	for i, v := range intervals {
-		fmt.Printf("// encode%d: %5d entries for runes in [%5d, %5d).\n", i, v.len(), v.low, v.high)
-	}
-	fmt.Printf("\n")
-
-	for i, v := range intervals {
-		fmt.Printf("const encode%dLow, encode%dHigh = %d, %d\n\n", i, i, v.low, v.high)
-		fmt.Printf("var encode%d = [...]uint16{\n", i)
-		for j := v.low; j < v.high; j++ {
-			x := reverse[j]
-			if x == 0 {
-				continue
-			}
-			fmt.Printf("\t%d-%d: 0x%04X,\n", j, v.low, x)
-		}
-		fmt.Printf("}\n\n")
-	}
-}
-
-// interval is a half-open interval [low, high).
-type interval struct {
-	low, high int
-}
-
-func (i interval) len() int { return i.high - i.low }
-
-// byDecreasingLength sorts intervals by decreasing length.
-type byDecreasingLength []interval
-
-func (b byDecreasingLength) Len() int           { return len(b) }
-func (b byDecreasingLength) Less(i, j int) bool { return b[i].len() > b[j].len() }
-func (b byDecreasingLength) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }
diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go
index e0b15bbcc..b89c45b03 100644
--- a/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go
+++ b/vendor/golang.org/x/text/encoding/simplifiedchinese/gbk.go
@@ -5,7 +5,6 @@
 package simplifiedchinese
 
 import (
-	"errors"
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
@@ -40,11 +39,6 @@ var gbk18030 = internal.Encoding{
 	identifier.GB18030,
 }
 
-var (
-	errInvalidGB18030 = errors.New("simplifiedchinese: invalid GB18030 encoding")
-	errInvalidGBK     = errors.New("simplifiedchinese: invalid GBK encoding")
-)
-
 type gbkDecoder struct {
 	transform.NopResetter
 	gb18030 bool
@@ -66,8 +60,12 @@ loop:
 
 		case c0 < 0xff:
 			if nSrc+1 >= len(src) {
-				err = transform.ErrShortSrc
-				break loop
+				if !atEOF {
+					err = transform.ErrShortSrc
+					break loop
+				}
+				r, size = utf8.RuneError, 1
+				goto write
 			}
 			c1 := src[nSrc+1]
 			switch {
@@ -77,18 +75,24 @@ loop:
 				c1 -= 0x41
 			case d.gb18030 && 0x30 <= c1 && c1 < 0x40:
 				if nSrc+3 >= len(src) {
-					err = transform.ErrShortSrc
-					break loop
+					if !atEOF {
+						err = transform.ErrShortSrc
+						break loop
+					}
+					// The second byte here is always ASCII, so we can set size
+					// to 1 in all cases.
+					r, size = utf8.RuneError, 1
+					goto write
 				}
 				c2 := src[nSrc+2]
 				if c2 < 0x81 || 0xff <= c2 {
-					err = errInvalidGB18030
-					break loop
+					r, size = utf8.RuneError, 1
+					goto write
 				}
 				c3 := src[nSrc+3]
 				if c3 < 0x30 || 0x3a <= c3 {
-					err = errInvalidGB18030
-					break loop
+					r, size = utf8.RuneError, 1
+					goto write
 				}
 				size = 4
 				r = ((rune(c0-0x81)*10+rune(c1-0x30))*126+rune(c2-0x81))*10 + rune(c3-0x30)
@@ -109,17 +113,13 @@ loop:
 				r -= 189000
 				if 0 <= r && r < 0x100000 {
 					r += 0x10000
-					goto write
-				}
-				err = errInvalidGB18030
-				break loop
-			default:
-				if d.gb18030 {
-					err = errInvalidGB18030
 				} else {
-					err = errInvalidGBK
+					r, size = utf8.RuneError, 1
 				}
-				break loop
+				goto write
+			default:
+				r, size = utf8.RuneError, 1
+				goto write
 			}
 			r, size = '\ufffd', 2
 			if i := int(c0-0x81)*190 + int(c1); i < len(decode) {
@@ -130,12 +130,7 @@ loop:
 			}
 
 		default:
-			if d.gb18030 {
-				err = errInvalidGB18030
-			} else {
-				err = errInvalidGBK
-			}
-			break loop
+			r, size = utf8.RuneError, 1
 		}
 
 	write:
@@ -145,13 +140,6 @@ loop:
 		}
 		nDst += utf8.EncodeRune(dst[nDst:], r)
 	}
-	if atEOF && err == transform.ErrShortSrc {
-		if d.gb18030 {
-			err = errInvalidGB18030
-		} else {
-			err = errInvalidGBK
-		}
-	}
 	return nDst, nSrc, err
 }
 
diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go
index 85de6b1e6..eb3157f0b 100644
--- a/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go
+++ b/vendor/golang.org/x/text/encoding/simplifiedchinese/hzgb2312.go
@@ -5,7 +5,6 @@
 package simplifiedchinese
 
 import (
-	"errors"
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
@@ -31,8 +30,6 @@ func hzGB2312NewEncoder() transform.Transformer {
 	return new(hzGB2312Encoder)
 }
 
-var errInvalidHZGB2312 = errors.New("simplifiedchinese: invalid HZ-GB2312 encoding")
-
 const (
 	asciiState = iota
 	gbState
@@ -50,14 +47,18 @@ loop:
 	for ; nSrc < len(src); nSrc += size {
 		c0 := src[nSrc]
 		if c0 >= utf8.RuneSelf {
-			err = errInvalidHZGB2312
-			break loop
+			r, size = utf8.RuneError, 1
+			goto write
 		}
 
 		if c0 == '~' {
 			if nSrc+1 >= len(src) {
-				err = transform.ErrShortSrc
-				break loop
+				if !atEOF {
+					err = transform.ErrShortSrc
+					break loop
+				}
+				r = utf8.RuneError
+				goto write
 			}
 			size = 2
 			switch src[nSrc+1] {
@@ -78,8 +79,8 @@ loop:
 			case '\n':
 				continue
 			default:
-				err = errInvalidHZGB2312
-				break loop
+				r = utf8.RuneError
+				goto write
 			}
 		}
 
@@ -87,33 +88,37 @@ loop:
 			r, size = rune(c0), 1
 		} else {
 			if nSrc+1 >= len(src) {
-				err = transform.ErrShortSrc
-				break loop
+				if !atEOF {
+					err = transform.ErrShortSrc
+					break loop
+				}
+				r, size = utf8.RuneError, 1
+				goto write
 			}
+			size = 2
 			c1 := src[nSrc+1]
 			if c0 < 0x21 || 0x7e <= c0 || c1 < 0x21 || 0x7f <= c1 {
-				err = errInvalidHZGB2312
-				break loop
-			}
-
-			r, size = '\ufffd', 2
-			if i := int(c0-0x01)*190 + int(c1+0x3f); i < len(decode) {
+				// error
+			} else if i := int(c0-0x01)*190 + int(c1+0x3f); i < len(decode) {
 				r = rune(decode[i])
-				if r == 0 {
-					r = '\ufffd'
+				if r != 0 {
+					goto write
 				}
 			}
+			if c1 > utf8.RuneSelf {
+				// Be consistent and always treat non-ASCII as a single error.
+				size = 1
+			}
+			r = utf8.RuneError
 		}
 
+	write:
 		if nDst+utf8.RuneLen(r) > len(dst) {
 			err = transform.ErrShortDst
 			break loop
 		}
 		nDst += utf8.EncodeRune(dst[nDst:], r)
 	}
-	if atEOF && err == transform.ErrShortSrc {
-		err = errInvalidHZGB2312
-	}
 	return nDst, nSrc, err
 }
 
diff --git a/vendor/golang.org/x/text/encoding/simplifiedchinese/maketables.go b/vendor/golang.org/x/text/encoding/simplifiedchinese/maketables.go
deleted file mode 100644
index 55016c786..000000000
--- a/vendor/golang.org/x/text/encoding/simplifiedchinese/maketables.go
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-// This program generates tables.go:
-//	go run maketables.go | gofmt > tables.go
-
-import (
-	"bufio"
-	"fmt"
-	"log"
-	"net/http"
-	"sort"
-	"strings"
-)
-
-func main() {
-	fmt.Printf("// generated by go run maketables.go; DO NOT EDIT\n\n")
-	fmt.Printf("// Package simplifiedchinese provides Simplified Chinese encodings such as GBK.\n")
-	fmt.Printf(`package simplifiedchinese // import "golang.org/x/text/encoding/simplifiedchinese"` + "\n\n")
-
-	printGB18030()
-	printGBK()
-}
-
-func printGB18030() {
-	res, err := http.Get("http://encoding.spec.whatwg.org/index-gb18030.txt")
-	if err != nil {
-		log.Fatalf("Get: %v", err)
-	}
-	defer res.Body.Close()
-
-	fmt.Printf("// gb18030 is the table from http://encoding.spec.whatwg.org/index-gb18030.txt\n")
-	fmt.Printf("var gb18030 = [...][2]uint16{\n")
-	scanner := bufio.NewScanner(res.Body)
-	for scanner.Scan() {
-		s := strings.TrimSpace(scanner.Text())
-		if s == "" || s[0] == '#' {
-			continue
-		}
-		x, y := uint32(0), uint32(0)
-		if _, err := fmt.Sscanf(s, "%d 0x%x", &x, &y); err != nil {
-			log.Fatalf("could not parse %q", s)
-		}
-		if x < 0x10000 && y < 0x10000 {
-			fmt.Printf("\t{0x%04x, 0x%04x},\n", x, y)
-		}
-	}
-	fmt.Printf("}\n\n")
-}
-
-func printGBK() {
-	res, err := http.Get("http://encoding.spec.whatwg.org/index-gbk.txt")
-	if err != nil {
-		log.Fatalf("Get: %v", err)
-	}
-	defer res.Body.Close()
-
-	mapping := [65536]uint16{}
-	reverse := [65536]uint16{}
-
-	scanner := bufio.NewScanner(res.Body)
-	for scanner.Scan() {
-		s := strings.TrimSpace(scanner.Text())
-		if s == "" || s[0] == '#' {
-			continue
-		}
-		x, y := uint16(0), uint16(0)
-		if _, err := fmt.Sscanf(s, "%d 0x%x", &x, &y); err != nil {
-			log.Fatalf("could not parse %q", s)
-		}
-		if x < 0 || 126*190 <= x {
-			log.Fatalf("GBK code %d is out of range", x)
-		}
-		mapping[x] = y
-		if reverse[y] == 0 {
-			c0, c1 := x/190, x%190
-			if c1 >= 0x3f {
-				c1++
-			}
-			reverse[y] = (0x81+c0)<<8 | (0x40 + c1)
-		}
-	}
-	if err := scanner.Err(); err != nil {
-		log.Fatalf("scanner error: %v", err)
-	}
-
-	fmt.Printf("// decode is the decoding table from GBK code to Unicode.\n")
-	fmt.Printf("// It is defined at http://encoding.spec.whatwg.org/index-gbk.txt\n")
-	fmt.Printf("var decode = [...]uint16{\n")
-	for i, v := range mapping {
-		if v != 0 {
-			fmt.Printf("\t%d: 0x%04X,\n", i, v)
-		}
-	}
-	fmt.Printf("}\n\n")
-
-	// Any run of at least separation continuous zero entries in the reverse map will
-	// be a separate encode table.
-	const separation = 1024
-
-	intervals := []interval(nil)
-	low, high := -1, -1
-	for i, v := range reverse {
-		if v == 0 {
-			continue
-		}
-		if low < 0 {
-			low = i
-		} else if i-high >= separation {
-			if high >= 0 {
-				intervals = append(intervals, interval{low, high})
-			}
-			low = i
-		}
-		high = i + 1
-	}
-	if high >= 0 {
-		intervals = append(intervals, interval{low, high})
-	}
-	sort.Sort(byDecreasingLength(intervals))
-
-	fmt.Printf("const numEncodeTables = %d\n\n", len(intervals))
-	fmt.Printf("// encodeX are the encoding tables from Unicode to GBK code,\n")
-	fmt.Printf("// sorted by decreasing length.\n")
-	for i, v := range intervals {
-		fmt.Printf("// encode%d: %5d entries for runes in [%5d, %5d).\n", i, v.len(), v.low, v.high)
-	}
-	fmt.Printf("\n")
-
-	for i, v := range intervals {
-		fmt.Printf("const encode%dLow, encode%dHigh = %d, %d\n\n", i, i, v.low, v.high)
-		fmt.Printf("var encode%d = [...]uint16{\n", i)
-		for j := v.low; j < v.high; j++ {
-			x := reverse[j]
-			if x == 0 {
-				continue
-			}
-			fmt.Printf("\t%d-%d: 0x%04X,\n", j, v.low, x)
-		}
-		fmt.Printf("}\n\n")
-	}
-}
-
-// interval is a half-open interval [low, high).
-type interval struct {
-	low, high int
-}
-
-func (i interval) len() int { return i.high - i.low }
-
-// byDecreasingLength sorts intervals by decreasing length.
-type byDecreasingLength []interval
-
-func (b byDecreasingLength) Len() int           { return len(b) }
-func (b byDecreasingLength) Less(i, j int) bool { return b[i].len() > b[j].len() }
-func (b byDecreasingLength) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }
diff --git a/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go b/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go
index 275821f5d..1fcddde08 100644
--- a/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go
+++ b/vendor/golang.org/x/text/encoding/traditionalchinese/big5.go
@@ -5,7 +5,6 @@
 package traditionalchinese
 
 import (
-	"errors"
 	"unicode/utf8"
 
 	"golang.org/x/text/encoding"
@@ -26,8 +25,6 @@ var big5 = internal.Encoding{
 	identifier.Big5,
 }
 
-var errInvalidBig5 = errors.New("traditionalchinese: invalid Big5 encoding")
-
 type big5Decoder struct{ transform.NopResetter }
 
 func (big5Decoder) Transform(dst, src []byte, atEOF bool) (nDst, nSrc int, err error) {
@@ -40,8 +37,12 @@ loop:
 
 		case 0x81 <= c0 && c0 < 0xff:
 			if nSrc+1 >= len(src) {
-				err = transform.ErrShortSrc
-				break loop
+				if !atEOF {
+					err = transform.ErrShortSrc
+					break loop
+				}
+				r, size = utf8.RuneError, 1
+				goto write
 			}
 			c1 := src[nSrc+1]
 			switch {
@@ -49,9 +50,12 @@ loop:
 				c1 -= 0x40
 			case 0xa1 <= c1 && c1 < 0xff:
 				c1 -= 0x62
+			case c1 < 0x40:
+				r, size = utf8.RuneError, 1
+				goto write
 			default:
-				err = errInvalidBig5
-				break loop
+				r, size = utf8.RuneError, 2
+				goto write
 			}
 			r, size = '\ufffd', 2
 			if i := int(c0-0x81)*157 + int(c1); i < len(decode) {
@@ -80,10 +84,10 @@ loop:
 			}
 
 		default:
-			err = errInvalidBig5
-			break loop
+			r, size = utf8.RuneError, 1
 		}
 
+	write:
 		if nDst+utf8.RuneLen(r) > len(dst) {
 			err = transform.ErrShortDst
 			break loop
@@ -99,9 +103,6 @@ loop:
 		nDst += copy(dst[nDst:], s)
 		continue loop
 	}
-	if atEOF && err == transform.ErrShortSrc {
-		err = errInvalidBig5
-	}
 	return nDst, nSrc, err
 }
 
diff --git a/vendor/golang.org/x/text/encoding/traditionalchinese/maketables.go b/vendor/golang.org/x/text/encoding/traditionalchinese/maketables.go
deleted file mode 100644
index cf7fdb31a..000000000
--- a/vendor/golang.org/x/text/encoding/traditionalchinese/maketables.go
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-// This program generates tables.go:
-//	go run maketables.go | gofmt > tables.go
-
-import (
-	"bufio"
-	"fmt"
-	"log"
-	"net/http"
-	"sort"
-	"strings"
-)
-
-func main() {
-	fmt.Printf("// generated by go run maketables.go; DO NOT EDIT\n\n")
-	fmt.Printf("// Package traditionalchinese provides Traditional Chinese encodings such as Big5.\n")
-	fmt.Printf(`package traditionalchinese // import "golang.org/x/text/encoding/traditionalchinese"` + "\n\n")
-
-	res, err := http.Get("http://encoding.spec.whatwg.org/index-big5.txt")
-	if err != nil {
-		log.Fatalf("Get: %v", err)
-	}
-	defer res.Body.Close()
-
-	mapping := [65536]uint32{}
-	reverse := [65536 * 4]uint16{}
-
-	scanner := bufio.NewScanner(res.Body)
-	for scanner.Scan() {
-		s := strings.TrimSpace(scanner.Text())
-		if s == "" || s[0] == '#' {
-			continue
-		}
-		x, y := uint16(0), uint32(0)
-		if _, err := fmt.Sscanf(s, "%d 0x%x", &x, &y); err != nil {
-			log.Fatalf("could not parse %q", s)
-		}
-		if x < 0 || 126*157 <= x {
-			log.Fatalf("Big5 code %d is out of range", x)
-		}
-		mapping[x] = y
-
-		// The WHATWG spec http://encoding.spec.whatwg.org/#indexes says that
-		// "The index pointer for code point in index is the first pointer
-		// corresponding to code point in index", which would normally mean
-		// that the code below should be guarded by "if reverse[y] == 0", but
-		// last instead of first seems to match the behavior of
-		// "iconv -f UTF-8 -t BIG5". For example, U+8005 者 occurs twice in
-		// http://encoding.spec.whatwg.org/index-big5.txt, as index 2148
-		// (encoded as "\x8e\xcd") and index 6543 (encoded as "\xaa\xcc")
-		// and "echo 者 | iconv -f UTF-8 -t BIG5 | xxd" gives "\xaa\xcc".
-		c0, c1 := x/157, x%157
-		if c1 < 0x3f {
-			c1 += 0x40
-		} else {
-			c1 += 0x62
-		}
-		reverse[y] = (0x81+c0)<<8 | c1
-	}
-	if err := scanner.Err(); err != nil {
-		log.Fatalf("scanner error: %v", err)
-	}
-
-	fmt.Printf("// decode is the decoding table from Big5 code to Unicode.\n")
-	fmt.Printf("// It is defined at http://encoding.spec.whatwg.org/index-big5.txt\n")
-	fmt.Printf("var decode = [...]uint32{\n")
-	for i, v := range mapping {
-		if v != 0 {
-			fmt.Printf("\t%d: 0x%08X,\n", i, v)
-		}
-	}
-	fmt.Printf("}\n\n")
-
-	// Any run of at least separation continuous zero entries in the reverse map will
-	// be a separate encode table.
-	const separation = 1024
-
-	intervals := []interval(nil)
-	low, high := -1, -1
-	for i, v := range reverse {
-		if v == 0 {
-			continue
-		}
-		if low < 0 {
-			low = i
-		} else if i-high >= separation {
-			if high >= 0 {
-				intervals = append(intervals, interval{low, high})
-			}
-			low = i
-		}
-		high = i + 1
-	}
-	if high >= 0 {
-		intervals = append(intervals, interval{low, high})
-	}
-	sort.Sort(byDecreasingLength(intervals))
-
-	fmt.Printf("const numEncodeTables = %d\n\n", len(intervals))
-	fmt.Printf("// encodeX are the encoding tables from Unicode to Big5 code,\n")
-	fmt.Printf("// sorted by decreasing length.\n")
-	for i, v := range intervals {
-		fmt.Printf("// encode%d: %5d entries for runes in [%6d, %6d).\n", i, v.len(), v.low, v.high)
-	}
-	fmt.Printf("\n")
-
-	for i, v := range intervals {
-		fmt.Printf("const encode%dLow, encode%dHigh = %d, %d\n\n", i, i, v.low, v.high)
-		fmt.Printf("var encode%d = [...]uint16{\n", i)
-		for j := v.low; j < v.high; j++ {
-			x := reverse[j]
-			if x == 0 {
-				continue
-			}
-			fmt.Printf("\t%d-%d: 0x%04X,\n", j, v.low, x)
-		}
-		fmt.Printf("}\n\n")
-	}
-}
-
-// interval is a half-open interval [low, high).
-type interval struct {
-	low, high int
-}
-
-func (i interval) len() int { return i.high - i.low }
-
-// byDecreasingLength sorts intervals by decreasing length.
-type byDecreasingLength []interval
-
-func (b byDecreasingLength) Len() int           { return len(b) }
-func (b byDecreasingLength) Less(i, j int) bool { return b[i].len() > b[j].len() }
-func (b byDecreasingLength) Swap(i, j int)      { b[i], b[j] = b[j], b[i] }
diff --git a/vendor/golang.org/x/text/language/common.go b/vendor/golang.org/x/text/language/common.go
index a255bb0a5..9d86e1855 100644
--- a/vendor/golang.org/x/text/language/common.go
+++ b/vendor/golang.org/x/text/language/common.go
@@ -1,4 +1,4 @@
-// This file was generated by go generate; DO NOT EDIT
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 package language
 
diff --git a/vendor/golang.org/x/text/language/gen_common.go b/vendor/golang.org/x/text/language/gen_common.go
deleted file mode 100644
index 83ce18013..000000000
--- a/vendor/golang.org/x/text/language/gen_common.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2014 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-// This file contains code common to the maketables.go and the package code.
-
-// langAliasType is the type of an alias in langAliasMap.
-type langAliasType int8
-
-const (
-	langDeprecated langAliasType = iota
-	langMacro
-	langLegacy
-
-	langAliasTypeUnknown langAliasType = -1
-)
diff --git a/vendor/golang.org/x/text/language/gen_index.go b/vendor/golang.org/x/text/language/gen_index.go
deleted file mode 100644
index eef555cd3..000000000
--- a/vendor/golang.org/x/text/language/gen_index.go
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-package main
-
-// This file generates derivative tables based on the language package itself.
-
-import (
-	"bytes"
-	"flag"
-	"fmt"
-	"io/ioutil"
-	"log"
-	"reflect"
-	"sort"
-	"strings"
-
-	"golang.org/x/text/internal/gen"
-	"golang.org/x/text/language"
-	"golang.org/x/text/unicode/cldr"
-)
-
-var (
-	test = flag.Bool("test", false,
-		"test existing tables; can be used to compare web data with package data.")
-
-	draft = flag.String("draft",
-		"contributed",
-		`Minimal draft requirements (approved, contributed, provisional, unconfirmed).`)
-)
-
-func main() {
-	gen.Init()
-
-	// Read the CLDR zip file.
-	r := gen.OpenCLDRCoreZip()
-	defer r.Close()
-
-	d := &cldr.Decoder{}
-	data, err := d.DecodeZip(r)
-	if err != nil {
-		log.Fatalf("DecodeZip: %v", err)
-	}
-
-	w := gen.NewCodeWriter()
-	defer func() {
-		buf := &bytes.Buffer{}
-
-		if _, err = w.WriteGo(buf, "language"); err != nil {
-			log.Fatalf("Error formatting file index.go: %v", err)
-		}
-
-		// Since we're generating a table for our own package we need to rewrite
-		// doing the equivalent of go fmt -r 'language.b -> b'. Using
-		// bytes.Replace will do.
-		out := bytes.Replace(buf.Bytes(), []byte("language."), nil, -1)
-		if err := ioutil.WriteFile("index.go", out, 0600); err != nil {
-			log.Fatalf("Could not create file index.go: %v", err)
-		}
-	}()
-
-	m := map[language.Tag]bool{}
-	for _, lang := range data.Locales() {
-		// We include all locales unconditionally to be consistent with en_US.
-		// We want en_US, even though it has no data associated with it.
-
-		// TODO: put any of the languages for which no data exists at the end
-		// of the index. This allows all components based on ICU to use that
-		// as the cutoff point.
-		// if x := data.RawLDML(lang); false ||
-		// 	x.LocaleDisplayNames != nil ||
-		// 	x.Characters != nil ||
-		// 	x.Delimiters != nil ||
-		// 	x.Measurement != nil ||
-		// 	x.Dates != nil ||
-		// 	x.Numbers != nil ||
-		// 	x.Units != nil ||
-		// 	x.ListPatterns != nil ||
-		// 	x.Collations != nil ||
-		// 	x.Segmentations != nil ||
-		// 	x.Rbnf != nil ||
-		// 	x.Annotations != nil ||
-		// 	x.Metadata != nil {
-
-		// TODO: support POSIX natively, albeit non-standard.
-		tag := language.Make(strings.Replace(lang, "_POSIX", "-u-va-posix", 1))
-		m[tag] = true
-		// }
-	}
-	// Include locales for plural rules, which uses a different structure.
-	for _, plurals := range data.Supplemental().Plurals {
-		for _, rules := range plurals.PluralRules {
-			for _, lang := range strings.Split(rules.Locales, " ") {
-				m[language.Make(lang)] = true
-			}
-		}
-	}
-
-	var core, special []language.Tag
-
-	for t := range m {
-		if x := t.Extensions(); len(x) != 0 && fmt.Sprint(x) != "[u-va-posix]" {
-			log.Fatalf("Unexpected extension %v in %v", x, t)
-		}
-		if len(t.Variants()) == 0 && len(t.Extensions()) == 0 {
-			core = append(core, t)
-		} else {
-			special = append(special, t)
-		}
-	}
-
-	w.WriteComment(`
-	NumCompactTags is the number of common tags. The maximum tag is
-	NumCompactTags-1.`)
-	w.WriteConst("NumCompactTags", len(core)+len(special))
-
-	sort.Sort(byAlpha(special))
-	w.WriteVar("specialTags", special)
-
-	// TODO: order by frequency?
-	sort.Sort(byAlpha(core))
-
-	// Size computations are just an estimate.
-	w.Size += int(reflect.TypeOf(map[uint32]uint16{}).Size())
-	w.Size += len(core) * 6 // size of uint32 and uint16
-
-	fmt.Fprintln(w)
-	fmt.Fprintln(w, "var coreTags = map[uint32]uint16{")
-	fmt.Fprintln(w, "0x0: 0, // und")
-	i := len(special) + 1 // Und and special tags already written.
-	for _, t := range core {
-		if t == language.Und {
-			continue
-		}
-		fmt.Fprint(w.Hash, t, i)
-		b, s, r := t.Raw()
-		fmt.Fprintf(w, "0x%s%s%s: %d, // %s\n",
-			getIndex(b, 3), // 3 is enough as it is guaranteed to be a compact number
-			getIndex(s, 2),
-			getIndex(r, 3),
-			i, t)
-		i++
-	}
-	fmt.Fprintln(w, "}")
-}
-
-// getIndex prints the subtag type and extracts its index of size nibble.
-// If the index is less than n nibbles, the result is prefixed with 0s.
-func getIndex(x interface{}, n int) string {
-	s := fmt.Sprintf("%#v", x) // s is of form Type{typeID: 0x00}
-	s = s[strings.Index(s, "0x")+2 : len(s)-1]
-	return strings.Repeat("0", n-len(s)) + s
-}
-
-type byAlpha []language.Tag
-
-func (a byAlpha) Len() int           { return len(a) }
-func (a byAlpha) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
-func (a byAlpha) Less(i, j int) bool { return a[i].String() < a[j].String() }
diff --git a/vendor/golang.org/x/text/language/index.go b/vendor/golang.org/x/text/language/index.go
index 50c752186..973db9fd5 100644
--- a/vendor/golang.org/x/text/language/index.go
+++ b/vendor/golang.org/x/text/language/index.go
@@ -1,767 +1,769 @@
-// This file was generated by go generate; DO NOT EDIT
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 package language
 
 // NumCompactTags is the number of common tags. The maximum tag is
 // NumCompactTags-1.
-const NumCompactTags = 752
+const NumCompactTags = 754
 
 var specialTags = []Tag{ // 2 elements
-	0: {lang: 0xd5, region: 0x6d, script: 0x0, pVariant: 0x5, pExt: 0xe, str: "ca-ES-valencia"},
-	1: {lang: 0x134, region: 0x134, script: 0x0, pVariant: 0x5, pExt: 0x5, str: "en-US-u-va-posix"},
+	0: {lang: 0xd7, region: 0x6d, script: 0x0, pVariant: 0x5, pExt: 0xe, str: "ca-ES-valencia"},
+	1: {lang: 0x138, region: 0x134, script: 0x0, pVariant: 0x5, pExt: 0x5, str: "en-US-u-va-posix"},
 } // Size: 72 bytes
 
 var coreTags = map[uint32]uint16{
 	0x0:        0,   // und
-	0x01500000: 3,   // af
-	0x015000d1: 4,   // af-NA
-	0x01500160: 5,   // af-ZA
-	0x01b00000: 6,   // agq
-	0x01b00051: 7,   // agq-CM
-	0x02000000: 8,   // ak
-	0x0200007f: 9,   // ak-GH
-	0x02600000: 10,  // am
-	0x0260006e: 11,  // am-ET
-	0x03900000: 12,  // ar
-	0x03900001: 13,  // ar-001
-	0x03900022: 14,  // ar-AE
-	0x03900038: 15,  // ar-BH
-	0x03900061: 16,  // ar-DJ
-	0x03900066: 17,  // ar-DZ
-	0x0390006a: 18,  // ar-EG
-	0x0390006b: 19,  // ar-EH
-	0x0390006c: 20,  // ar-ER
-	0x03900096: 21,  // ar-IL
-	0x0390009a: 22,  // ar-IQ
-	0x039000a0: 23,  // ar-JO
-	0x039000a7: 24,  // ar-KM
-	0x039000ab: 25,  // ar-KW
-	0x039000af: 26,  // ar-LB
-	0x039000b8: 27,  // ar-LY
-	0x039000b9: 28,  // ar-MA
-	0x039000c8: 29,  // ar-MR
-	0x039000e0: 30,  // ar-OM
-	0x039000ec: 31,  // ar-PS
-	0x039000f2: 32,  // ar-QA
-	0x03900107: 33,  // ar-SA
-	0x0390010a: 34,  // ar-SD
-	0x03900114: 35,  // ar-SO
-	0x03900116: 36,  // ar-SS
-	0x0390011b: 37,  // ar-SY
-	0x0390011f: 38,  // ar-TD
-	0x03900127: 39,  // ar-TN
-	0x0390015d: 40,  // ar-YE
-	0x03f00000: 41,  // ars
-	0x04200000: 42,  // as
-	0x04200098: 43,  // as-IN
-	0x04300000: 44,  // asa
-	0x0430012e: 45,  // asa-TZ
-	0x04700000: 46,  // ast
-	0x0470006d: 47,  // ast-ES
-	0x05700000: 48,  // az
-	0x0571e000: 49,  // az-Cyrl
-	0x0571e031: 50,  // az-Cyrl-AZ
-	0x05752000: 51,  // az-Latn
-	0x05752031: 52,  // az-Latn-AZ
-	0x05d00000: 53,  // bas
-	0x05d00051: 54,  // bas-CM
-	0x07000000: 55,  // be
-	0x07000046: 56,  // be-BY
-	0x07400000: 57,  // bem
-	0x07400161: 58,  // bem-ZM
-	0x07800000: 59,  // bez
-	0x0780012e: 60,  // bez-TZ
-	0x07d00000: 61,  // bg
-	0x07d00037: 62,  // bg-BG
-	0x08100000: 63,  // bh
-	0x09e00000: 64,  // bm
-	0x09e000c2: 65,  // bm-ML
-	0x0a300000: 66,  // bn
-	0x0a300034: 67,  // bn-BD
-	0x0a300098: 68,  // bn-IN
-	0x0a700000: 69,  // bo
-	0x0a700052: 70,  // bo-CN
-	0x0a700098: 71,  // bo-IN
-	0x0b000000: 72,  // br
-	0x0b000077: 73,  // br-FR
-	0x0b300000: 74,  // brx
-	0x0b300098: 75,  // brx-IN
-	0x0b500000: 76,  // bs
-	0x0b51e000: 77,  // bs-Cyrl
-	0x0b51e032: 78,  // bs-Cyrl-BA
-	0x0b552000: 79,  // bs-Latn
-	0x0b552032: 80,  // bs-Latn-BA
-	0x0d500000: 81,  // ca
-	0x0d500021: 82,  // ca-AD
-	0x0d50006d: 83,  // ca-ES
-	0x0d500077: 84,  // ca-FR
-	0x0d50009d: 85,  // ca-IT
-	0x0da00000: 86,  // ce
-	0x0da00105: 87,  // ce-RU
-	0x0dd00000: 88,  // cgg
-	0x0dd00130: 89,  // cgg-UG
-	0x0e300000: 90,  // chr
-	0x0e300134: 91,  // chr-US
-	0x0e700000: 92,  // ckb
-	0x0e70009a: 93,  // ckb-IQ
-	0x0e70009b: 94,  // ckb-IR
-	0x0f600000: 95,  // cs
-	0x0f60005d: 96,  // cs-CZ
-	0x0fa00000: 97,  // cu
-	0x0fa00105: 98,  // cu-RU
-	0x0fc00000: 99,  // cy
-	0x0fc0007a: 100, // cy-GB
-	0x0fd00000: 101, // da
-	0x0fd00062: 102, // da-DK
-	0x0fd00081: 103, // da-GL
-	0x10400000: 104, // dav
-	0x104000a3: 105, // dav-KE
-	0x10900000: 106, // de
-	0x1090002d: 107, // de-AT
-	0x10900035: 108, // de-BE
-	0x1090004d: 109, // de-CH
-	0x1090005f: 110, // de-DE
-	0x1090009d: 111, // de-IT
-	0x109000b1: 112, // de-LI
-	0x109000b6: 113, // de-LU
-	0x11300000: 114, // dje
-	0x113000d3: 115, // dje-NE
-	0x11b00000: 116, // dsb
-	0x11b0005f: 117, // dsb-DE
-	0x12000000: 118, // dua
-	0x12000051: 119, // dua-CM
-	0x12400000: 120, // dv
-	0x12700000: 121, // dyo
-	0x12700113: 122, // dyo-SN
-	0x12900000: 123, // dz
-	0x12900042: 124, // dz-BT
-	0x12b00000: 125, // ebu
-	0x12b000a3: 126, // ebu-KE
-	0x12c00000: 127, // ee
-	0x12c0007f: 128, // ee-GH
-	0x12c00121: 129, // ee-TG
-	0x13100000: 130, // el
-	0x1310005c: 131, // el-CY
-	0x13100086: 132, // el-GR
-	0x13400000: 133, // en
-	0x13400001: 134, // en-001
-	0x1340001a: 135, // en-150
-	0x13400024: 136, // en-AG
-	0x13400025: 137, // en-AI
-	0x1340002c: 138, // en-AS
-	0x1340002d: 139, // en-AT
-	0x1340002e: 140, // en-AU
-	0x13400033: 141, // en-BB
-	0x13400035: 142, // en-BE
-	0x13400039: 143, // en-BI
-	0x1340003c: 144, // en-BM
-	0x13400041: 145, // en-BS
-	0x13400045: 146, // en-BW
-	0x13400047: 147, // en-BZ
-	0x13400048: 148, // en-CA
-	0x13400049: 149, // en-CC
-	0x1340004d: 150, // en-CH
-	0x1340004f: 151, // en-CK
-	0x13400051: 152, // en-CM
-	0x1340005b: 153, // en-CX
-	0x1340005c: 154, // en-CY
-	0x1340005f: 155, // en-DE
-	0x13400060: 156, // en-DG
-	0x13400062: 157, // en-DK
-	0x13400063: 158, // en-DM
-	0x1340006c: 159, // en-ER
-	0x13400071: 160, // en-FI
-	0x13400072: 161, // en-FJ
-	0x13400073: 162, // en-FK
-	0x13400074: 163, // en-FM
-	0x1340007a: 164, // en-GB
-	0x1340007b: 165, // en-GD
-	0x1340007e: 166, // en-GG
-	0x1340007f: 167, // en-GH
-	0x13400080: 168, // en-GI
-	0x13400082: 169, // en-GM
-	0x13400089: 170, // en-GU
-	0x1340008b: 171, // en-GY
-	0x1340008c: 172, // en-HK
-	0x13400095: 173, // en-IE
-	0x13400096: 174, // en-IL
-	0x13400097: 175, // en-IM
-	0x13400098: 176, // en-IN
-	0x13400099: 177, // en-IO
-	0x1340009e: 178, // en-JE
-	0x1340009f: 179, // en-JM
-	0x134000a3: 180, // en-KE
-	0x134000a6: 181, // en-KI
-	0x134000a8: 182, // en-KN
-	0x134000ac: 183, // en-KY
-	0x134000b0: 184, // en-LC
-	0x134000b3: 185, // en-LR
-	0x134000b4: 186, // en-LS
-	0x134000be: 187, // en-MG
-	0x134000bf: 188, // en-MH
-	0x134000c5: 189, // en-MO
-	0x134000c6: 190, // en-MP
-	0x134000c9: 191, // en-MS
-	0x134000ca: 192, // en-MT
-	0x134000cb: 193, // en-MU
-	0x134000cd: 194, // en-MW
-	0x134000cf: 195, // en-MY
-	0x134000d1: 196, // en-NA
-	0x134000d4: 197, // en-NF
-	0x134000d5: 198, // en-NG
-	0x134000d8: 199, // en-NL
-	0x134000dc: 200, // en-NR
-	0x134000de: 201, // en-NU
-	0x134000df: 202, // en-NZ
-	0x134000e5: 203, // en-PG
-	0x134000e6: 204, // en-PH
-	0x134000e7: 205, // en-PK
-	0x134000ea: 206, // en-PN
-	0x134000eb: 207, // en-PR
-	0x134000ef: 208, // en-PW
-	0x13400106: 209, // en-RW
-	0x13400108: 210, // en-SB
-	0x13400109: 211, // en-SC
-	0x1340010a: 212, // en-SD
-	0x1340010b: 213, // en-SE
-	0x1340010c: 214, // en-SG
-	0x1340010d: 215, // en-SH
-	0x1340010e: 216, // en-SI
-	0x13400111: 217, // en-SL
-	0x13400116: 218, // en-SS
-	0x1340011a: 219, // en-SX
-	0x1340011c: 220, // en-SZ
-	0x1340011e: 221, // en-TC
-	0x13400124: 222, // en-TK
-	0x13400128: 223, // en-TO
-	0x1340012b: 224, // en-TT
-	0x1340012c: 225, // en-TV
-	0x1340012e: 226, // en-TZ
-	0x13400130: 227, // en-UG
-	0x13400132: 228, // en-UM
-	0x13400134: 229, // en-US
-	0x13400138: 230, // en-VC
-	0x1340013b: 231, // en-VG
-	0x1340013c: 232, // en-VI
-	0x1340013e: 233, // en-VU
-	0x13400141: 234, // en-WS
-	0x13400160: 235, // en-ZA
-	0x13400161: 236, // en-ZM
-	0x13400163: 237, // en-ZW
-	0x13700000: 238, // eo
-	0x13700001: 239, // eo-001
-	0x13900000: 240, // es
-	0x1390001e: 241, // es-419
-	0x1390002b: 242, // es-AR
-	0x1390003e: 243, // es-BO
-	0x13900040: 244, // es-BR
-	0x13900050: 245, // es-CL
-	0x13900053: 246, // es-CO
-	0x13900055: 247, // es-CR
-	0x13900058: 248, // es-CU
-	0x13900064: 249, // es-DO
-	0x13900067: 250, // es-EA
-	0x13900068: 251, // es-EC
-	0x1390006d: 252, // es-ES
-	0x13900085: 253, // es-GQ
-	0x13900088: 254, // es-GT
-	0x1390008e: 255, // es-HN
-	0x13900093: 256, // es-IC
-	0x139000ce: 257, // es-MX
-	0x139000d7: 258, // es-NI
-	0x139000e1: 259, // es-PA
-	0x139000e3: 260, // es-PE
-	0x139000e6: 261, // es-PH
-	0x139000eb: 262, // es-PR
-	0x139000f0: 263, // es-PY
-	0x13900119: 264, // es-SV
-	0x13900134: 265, // es-US
-	0x13900135: 266, // es-UY
-	0x1390013a: 267, // es-VE
-	0x13b00000: 268, // et
-	0x13b00069: 269, // et-EE
-	0x14000000: 270, // eu
-	0x1400006d: 271, // eu-ES
-	0x14100000: 272, // ewo
-	0x14100051: 273, // ewo-CM
-	0x14300000: 274, // fa
-	0x14300023: 275, // fa-AF
-	0x1430009b: 276, // fa-IR
-	0x14900000: 277, // ff
-	0x14900051: 278, // ff-CM
-	0x14900083: 279, // ff-GN
-	0x149000c8: 280, // ff-MR
-	0x14900113: 281, // ff-SN
-	0x14c00000: 282, // fi
-	0x14c00071: 283, // fi-FI
-	0x14e00000: 284, // fil
-	0x14e000e6: 285, // fil-PH
-	0x15300000: 286, // fo
-	0x15300062: 287, // fo-DK
-	0x15300075: 288, // fo-FO
-	0x15900000: 289, // fr
-	0x15900035: 290, // fr-BE
-	0x15900036: 291, // fr-BF
-	0x15900039: 292, // fr-BI
-	0x1590003a: 293, // fr-BJ
-	0x1590003b: 294, // fr-BL
-	0x15900048: 295, // fr-CA
-	0x1590004a: 296, // fr-CD
-	0x1590004b: 297, // fr-CF
-	0x1590004c: 298, // fr-CG
-	0x1590004d: 299, // fr-CH
-	0x1590004e: 300, // fr-CI
-	0x15900051: 301, // fr-CM
-	0x15900061: 302, // fr-DJ
-	0x15900066: 303, // fr-DZ
-	0x15900077: 304, // fr-FR
-	0x15900079: 305, // fr-GA
-	0x1590007d: 306, // fr-GF
-	0x15900083: 307, // fr-GN
-	0x15900084: 308, // fr-GP
-	0x15900085: 309, // fr-GQ
-	0x15900090: 310, // fr-HT
-	0x159000a7: 311, // fr-KM
-	0x159000b6: 312, // fr-LU
-	0x159000b9: 313, // fr-MA
-	0x159000ba: 314, // fr-MC
-	0x159000bd: 315, // fr-MF
-	0x159000be: 316, // fr-MG
-	0x159000c2: 317, // fr-ML
-	0x159000c7: 318, // fr-MQ
-	0x159000c8: 319, // fr-MR
-	0x159000cb: 320, // fr-MU
-	0x159000d2: 321, // fr-NC
-	0x159000d3: 322, // fr-NE
-	0x159000e4: 323, // fr-PF
-	0x159000e9: 324, // fr-PM
-	0x15900101: 325, // fr-RE
-	0x15900106: 326, // fr-RW
-	0x15900109: 327, // fr-SC
-	0x15900113: 328, // fr-SN
-	0x1590011b: 329, // fr-SY
-	0x1590011f: 330, // fr-TD
-	0x15900121: 331, // fr-TG
-	0x15900127: 332, // fr-TN
-	0x1590013e: 333, // fr-VU
-	0x1590013f: 334, // fr-WF
-	0x1590015e: 335, // fr-YT
-	0x16400000: 336, // fur
-	0x1640009d: 337, // fur-IT
-	0x16800000: 338, // fy
-	0x168000d8: 339, // fy-NL
-	0x16900000: 340, // ga
-	0x16900095: 341, // ga-IE
-	0x17800000: 342, // gd
-	0x1780007a: 343, // gd-GB
-	0x18a00000: 344, // gl
-	0x18a0006d: 345, // gl-ES
-	0x19c00000: 346, // gsw
-	0x19c0004d: 347, // gsw-CH
-	0x19c00077: 348, // gsw-FR
-	0x19c000b1: 349, // gsw-LI
-	0x19d00000: 350, // gu
-	0x19d00098: 351, // gu-IN
-	0x1a200000: 352, // guw
-	0x1a400000: 353, // guz
-	0x1a4000a3: 354, // guz-KE
-	0x1a500000: 355, // gv
-	0x1a500097: 356, // gv-IM
-	0x1ad00000: 357, // ha
-	0x1ad0007f: 358, // ha-GH
-	0x1ad000d3: 359, // ha-NE
-	0x1ad000d5: 360, // ha-NG
-	0x1b100000: 361, // haw
-	0x1b100134: 362, // haw-US
-	0x1b500000: 363, // he
-	0x1b500096: 364, // he-IL
-	0x1b700000: 365, // hi
-	0x1b700098: 366, // hi-IN
-	0x1ca00000: 367, // hr
-	0x1ca00032: 368, // hr-BA
-	0x1ca0008f: 369, // hr-HR
-	0x1cb00000: 370, // hsb
-	0x1cb0005f: 371, // hsb-DE
-	0x1ce00000: 372, // hu
-	0x1ce00091: 373, // hu-HU
-	0x1d000000: 374, // hy
-	0x1d000027: 375, // hy-AM
-	0x1da00000: 376, // id
-	0x1da00094: 377, // id-ID
-	0x1df00000: 378, // ig
-	0x1df000d5: 379, // ig-NG
-	0x1e200000: 380, // ii
-	0x1e200052: 381, // ii-CN
-	0x1f000000: 382, // is
-	0x1f00009c: 383, // is-IS
-	0x1f100000: 384, // it
-	0x1f10004d: 385, // it-CH
-	0x1f10009d: 386, // it-IT
-	0x1f100112: 387, // it-SM
-	0x1f200000: 388, // iu
-	0x1f800000: 389, // ja
-	0x1f8000a1: 390, // ja-JP
-	0x1fb00000: 391, // jbo
-	0x1ff00000: 392, // jgo
-	0x1ff00051: 393, // jgo-CM
-	0x20200000: 394, // jmc
-	0x2020012e: 395, // jmc-TZ
-	0x20600000: 396, // jv
-	0x20800000: 397, // ka
-	0x2080007c: 398, // ka-GE
-	0x20a00000: 399, // kab
-	0x20a00066: 400, // kab-DZ
-	0x20e00000: 401, // kaj
-	0x20f00000: 402, // kam
-	0x20f000a3: 403, // kam-KE
-	0x21700000: 404, // kcg
-	0x21b00000: 405, // kde
-	0x21b0012e: 406, // kde-TZ
-	0x21f00000: 407, // kea
-	0x21f00059: 408, // kea-CV
-	0x22c00000: 409, // khq
-	0x22c000c2: 410, // khq-ML
-	0x23100000: 411, // ki
-	0x231000a3: 412, // ki-KE
-	0x23a00000: 413, // kk
-	0x23a000ad: 414, // kk-KZ
-	0x23c00000: 415, // kkj
-	0x23c00051: 416, // kkj-CM
-	0x23d00000: 417, // kl
-	0x23d00081: 418, // kl-GL
-	0x23e00000: 419, // kln
-	0x23e000a3: 420, // kln-KE
-	0x24200000: 421, // km
-	0x242000a5: 422, // km-KH
-	0x24900000: 423, // kn
-	0x24900098: 424, // kn-IN
-	0x24b00000: 425, // ko
-	0x24b000a9: 426, // ko-KP
-	0x24b000aa: 427, // ko-KR
-	0x24d00000: 428, // kok
-	0x24d00098: 429, // kok-IN
-	0x26100000: 430, // ks
-	0x26100098: 431, // ks-IN
-	0x26200000: 432, // ksb
-	0x2620012e: 433, // ksb-TZ
-	0x26400000: 434, // ksf
-	0x26400051: 435, // ksf-CM
-	0x26500000: 436, // ksh
-	0x2650005f: 437, // ksh-DE
-	0x26b00000: 438, // ku
-	0x27800000: 439, // kw
-	0x2780007a: 440, // kw-GB
-	0x28100000: 441, // ky
-	0x281000a4: 442, // ky-KG
-	0x28800000: 443, // lag
-	0x2880012e: 444, // lag-TZ
-	0x28c00000: 445, // lb
-	0x28c000b6: 446, // lb-LU
-	0x29a00000: 447, // lg
-	0x29a00130: 448, // lg-UG
-	0x2a600000: 449, // lkt
-	0x2a600134: 450, // lkt-US
-	0x2ac00000: 451, // ln
-	0x2ac00029: 452, // ln-AO
-	0x2ac0004a: 453, // ln-CD
-	0x2ac0004b: 454, // ln-CF
-	0x2ac0004c: 455, // ln-CG
-	0x2af00000: 456, // lo
-	0x2af000ae: 457, // lo-LA
-	0x2b600000: 458, // lrc
-	0x2b60009a: 459, // lrc-IQ
-	0x2b60009b: 460, // lrc-IR
-	0x2b700000: 461, // lt
-	0x2b7000b5: 462, // lt-LT
-	0x2b900000: 463, // lu
-	0x2b90004a: 464, // lu-CD
-	0x2bb00000: 465, // luo
-	0x2bb000a3: 466, // luo-KE
-	0x2bc00000: 467, // luy
-	0x2bc000a3: 468, // luy-KE
-	0x2be00000: 469, // lv
-	0x2be000b7: 470, // lv-LV
-	0x2c800000: 471, // mas
-	0x2c8000a3: 472, // mas-KE
-	0x2c80012e: 473, // mas-TZ
-	0x2e000000: 474, // mer
-	0x2e0000a3: 475, // mer-KE
-	0x2e400000: 476, // mfe
-	0x2e4000cb: 477, // mfe-MU
-	0x2e800000: 478, // mg
-	0x2e8000be: 479, // mg-MG
-	0x2e900000: 480, // mgh
-	0x2e9000d0: 481, // mgh-MZ
-	0x2eb00000: 482, // mgo
-	0x2eb00051: 483, // mgo-CM
-	0x2f600000: 484, // mk
-	0x2f6000c1: 485, // mk-MK
-	0x2fb00000: 486, // ml
-	0x2fb00098: 487, // ml-IN
-	0x30200000: 488, // mn
-	0x302000c4: 489, // mn-MN
-	0x31200000: 490, // mr
-	0x31200098: 491, // mr-IN
-	0x31600000: 492, // ms
-	0x3160003d: 493, // ms-BN
-	0x316000cf: 494, // ms-MY
-	0x3160010c: 495, // ms-SG
-	0x31700000: 496, // mt
-	0x317000ca: 497, // mt-MT
-	0x31c00000: 498, // mua
-	0x31c00051: 499, // mua-CM
-	0x32800000: 500, // my
-	0x328000c3: 501, // my-MM
-	0x33100000: 502, // mzn
-	0x3310009b: 503, // mzn-IR
-	0x33800000: 504, // nah
-	0x33c00000: 505, // naq
-	0x33c000d1: 506, // naq-NA
-	0x33e00000: 507, // nb
-	0x33e000d9: 508, // nb-NO
-	0x33e0010f: 509, // nb-SJ
-	0x34500000: 510, // nd
-	0x34500163: 511, // nd-ZW
-	0x34700000: 512, // nds
-	0x3470005f: 513, // nds-DE
-	0x347000d8: 514, // nds-NL
-	0x34800000: 515, // ne
-	0x34800098: 516, // ne-IN
-	0x348000da: 517, // ne-NP
-	0x35e00000: 518, // nl
-	0x35e0002f: 519, // nl-AW
-	0x35e00035: 520, // nl-BE
-	0x35e0003f: 521, // nl-BQ
-	0x35e0005a: 522, // nl-CW
-	0x35e000d8: 523, // nl-NL
-	0x35e00115: 524, // nl-SR
-	0x35e0011a: 525, // nl-SX
-	0x35f00000: 526, // nmg
-	0x35f00051: 527, // nmg-CM
-	0x36100000: 528, // nn
-	0x361000d9: 529, // nn-NO
-	0x36300000: 530, // nnh
-	0x36300051: 531, // nnh-CM
-	0x36600000: 532, // no
-	0x36c00000: 533, // nqo
-	0x36d00000: 534, // nr
-	0x37100000: 535, // nso
-	0x37700000: 536, // nus
-	0x37700116: 537, // nus-SS
-	0x37e00000: 538, // ny
-	0x38000000: 539, // nyn
-	0x38000130: 540, // nyn-UG
-	0x38700000: 541, // om
-	0x3870006e: 542, // om-ET
-	0x387000a3: 543, // om-KE
-	0x38c00000: 544, // or
-	0x38c00098: 545, // or-IN
-	0x38f00000: 546, // os
-	0x38f0007c: 547, // os-GE
-	0x38f00105: 548, // os-RU
-	0x39400000: 549, // pa
-	0x39405000: 550, // pa-Arab
-	0x394050e7: 551, // pa-Arab-PK
-	0x3942f000: 552, // pa-Guru
-	0x3942f098: 553, // pa-Guru-IN
-	0x39800000: 554, // pap
-	0x3aa00000: 555, // pl
-	0x3aa000e8: 556, // pl-PL
-	0x3b400000: 557, // prg
-	0x3b400001: 558, // prg-001
-	0x3b500000: 559, // ps
-	0x3b500023: 560, // ps-AF
-	0x3b700000: 561, // pt
-	0x3b700029: 562, // pt-AO
-	0x3b700040: 563, // pt-BR
-	0x3b70004d: 564, // pt-CH
-	0x3b700059: 565, // pt-CV
-	0x3b700085: 566, // pt-GQ
-	0x3b70008a: 567, // pt-GW
-	0x3b7000b6: 568, // pt-LU
-	0x3b7000c5: 569, // pt-MO
-	0x3b7000d0: 570, // pt-MZ
-	0x3b7000ed: 571, // pt-PT
-	0x3b700117: 572, // pt-ST
-	0x3b700125: 573, // pt-TL
-	0x3bb00000: 574, // qu
-	0x3bb0003e: 575, // qu-BO
-	0x3bb00068: 576, // qu-EC
-	0x3bb000e3: 577, // qu-PE
-	0x3cb00000: 578, // rm
-	0x3cb0004d: 579, // rm-CH
-	0x3d000000: 580, // rn
-	0x3d000039: 581, // rn-BI
-	0x3d300000: 582, // ro
-	0x3d3000bb: 583, // ro-MD
-	0x3d300103: 584, // ro-RO
-	0x3d500000: 585, // rof
-	0x3d50012e: 586, // rof-TZ
-	0x3d900000: 587, // ru
-	0x3d900046: 588, // ru-BY
-	0x3d9000a4: 589, // ru-KG
-	0x3d9000ad: 590, // ru-KZ
-	0x3d9000bb: 591, // ru-MD
-	0x3d900105: 592, // ru-RU
-	0x3d90012f: 593, // ru-UA
-	0x3dc00000: 594, // rw
-	0x3dc00106: 595, // rw-RW
-	0x3dd00000: 596, // rwk
-	0x3dd0012e: 597, // rwk-TZ
-	0x3e200000: 598, // sah
-	0x3e200105: 599, // sah-RU
-	0x3e300000: 600, // saq
-	0x3e3000a3: 601, // saq-KE
-	0x3e900000: 602, // sbp
-	0x3e90012e: 603, // sbp-TZ
-	0x3f200000: 604, // sdh
-	0x3f300000: 605, // se
-	0x3f300071: 606, // se-FI
-	0x3f3000d9: 607, // se-NO
-	0x3f30010b: 608, // se-SE
-	0x3f500000: 609, // seh
-	0x3f5000d0: 610, // seh-MZ
-	0x3f700000: 611, // ses
-	0x3f7000c2: 612, // ses-ML
-	0x3f800000: 613, // sg
-	0x3f80004b: 614, // sg-CF
-	0x3fe00000: 615, // shi
-	0x3fe52000: 616, // shi-Latn
-	0x3fe520b9: 617, // shi-Latn-MA
-	0x3fed2000: 618, // shi-Tfng
-	0x3fed20b9: 619, // shi-Tfng-MA
-	0x40200000: 620, // si
-	0x402000b2: 621, // si-LK
-	0x40800000: 622, // sk
-	0x40800110: 623, // sk-SK
-	0x40c00000: 624, // sl
-	0x40c0010e: 625, // sl-SI
-	0x41200000: 626, // sma
-	0x41300000: 627, // smi
-	0x41400000: 628, // smj
-	0x41500000: 629, // smn
-	0x41500071: 630, // smn-FI
-	0x41800000: 631, // sms
-	0x41900000: 632, // sn
-	0x41900163: 633, // sn-ZW
-	0x41f00000: 634, // so
-	0x41f00061: 635, // so-DJ
-	0x41f0006e: 636, // so-ET
-	0x41f000a3: 637, // so-KE
-	0x41f00114: 638, // so-SO
-	0x42700000: 639, // sq
-	0x42700026: 640, // sq-AL
-	0x427000c1: 641, // sq-MK
-	0x4270014c: 642, // sq-XK
-	0x42800000: 643, // sr
-	0x4281e000: 644, // sr-Cyrl
-	0x4281e032: 645, // sr-Cyrl-BA
-	0x4281e0bc: 646, // sr-Cyrl-ME
-	0x4281e104: 647, // sr-Cyrl-RS
-	0x4281e14c: 648, // sr-Cyrl-XK
-	0x42852000: 649, // sr-Latn
-	0x42852032: 650, // sr-Latn-BA
-	0x428520bc: 651, // sr-Latn-ME
-	0x42852104: 652, // sr-Latn-RS
-	0x4285214c: 653, // sr-Latn-XK
-	0x42d00000: 654, // ss
-	0x43000000: 655, // ssy
-	0x43100000: 656, // st
-	0x43a00000: 657, // sv
-	0x43a00030: 658, // sv-AX
-	0x43a00071: 659, // sv-FI
-	0x43a0010b: 660, // sv-SE
-	0x43b00000: 661, // sw
-	0x43b0004a: 662, // sw-CD
-	0x43b000a3: 663, // sw-KE
-	0x43b0012e: 664, // sw-TZ
-	0x43b00130: 665, // sw-UG
-	0x44400000: 666, // syr
-	0x44600000: 667, // ta
-	0x44600098: 668, // ta-IN
-	0x446000b2: 669, // ta-LK
-	0x446000cf: 670, // ta-MY
-	0x4460010c: 671, // ta-SG
-	0x45700000: 672, // te
-	0x45700098: 673, // te-IN
-	0x45a00000: 674, // teo
-	0x45a000a3: 675, // teo-KE
-	0x45a00130: 676, // teo-UG
-	0x46100000: 677, // th
-	0x46100122: 678, // th-TH
-	0x46500000: 679, // ti
-	0x4650006c: 680, // ti-ER
-	0x4650006e: 681, // ti-ET
-	0x46700000: 682, // tig
-	0x46c00000: 683, // tk
-	0x46c00126: 684, // tk-TM
-	0x47600000: 685, // tn
-	0x47800000: 686, // to
-	0x47800128: 687, // to-TO
-	0x48000000: 688, // tr
-	0x4800005c: 689, // tr-CY
-	0x4800012a: 690, // tr-TR
-	0x48400000: 691, // ts
-	0x49a00000: 692, // twq
-	0x49a000d3: 693, // twq-NE
-	0x49f00000: 694, // tzm
-	0x49f000b9: 695, // tzm-MA
-	0x4a200000: 696, // ug
-	0x4a200052: 697, // ug-CN
-	0x4a400000: 698, // uk
-	0x4a40012f: 699, // uk-UA
-	0x4aa00000: 700, // ur
-	0x4aa00098: 701, // ur-IN
-	0x4aa000e7: 702, // ur-PK
-	0x4b200000: 703, // uz
-	0x4b205000: 704, // uz-Arab
-	0x4b205023: 705, // uz-Arab-AF
-	0x4b21e000: 706, // uz-Cyrl
-	0x4b21e136: 707, // uz-Cyrl-UZ
-	0x4b252000: 708, // uz-Latn
-	0x4b252136: 709, // uz-Latn-UZ
-	0x4b400000: 710, // vai
-	0x4b452000: 711, // vai-Latn
-	0x4b4520b3: 712, // vai-Latn-LR
-	0x4b4d9000: 713, // vai-Vaii
-	0x4b4d90b3: 714, // vai-Vaii-LR
-	0x4b600000: 715, // ve
-	0x4b900000: 716, // vi
-	0x4b90013d: 717, // vi-VN
-	0x4bf00000: 718, // vo
-	0x4bf00001: 719, // vo-001
-	0x4c200000: 720, // vun
-	0x4c20012e: 721, // vun-TZ
-	0x4c400000: 722, // wa
-	0x4c500000: 723, // wae
-	0x4c50004d: 724, // wae-CH
-	0x4db00000: 725, // wo
-	0x4e800000: 726, // xh
-	0x4f100000: 727, // xog
-	0x4f100130: 728, // xog-UG
-	0x4ff00000: 729, // yav
-	0x4ff00051: 730, // yav-CM
-	0x50800000: 731, // yi
-	0x50800001: 732, // yi-001
-	0x50e00000: 733, // yo
-	0x50e0003a: 734, // yo-BJ
-	0x50e000d5: 735, // yo-NG
-	0x51500000: 736, // yue
-	0x5150008c: 737, // yue-HK
-	0x51e00000: 738, // zgh
-	0x51e000b9: 739, // zgh-MA
-	0x51f00000: 740, // zh
-	0x51f34000: 741, // zh-Hans
-	0x51f34052: 742, // zh-Hans-CN
-	0x51f3408c: 743, // zh-Hans-HK
-	0x51f340c5: 744, // zh-Hans-MO
-	0x51f3410c: 745, // zh-Hans-SG
-	0x51f35000: 746, // zh-Hant
-	0x51f3508c: 747, // zh-Hant-HK
-	0x51f350c5: 748, // zh-Hant-MO
-	0x51f3512d: 749, // zh-Hant-TW
-	0x52400000: 750, // zu
-	0x52400160: 751, // zu-ZA
+	0x01600000: 3,   // af
+	0x016000d1: 4,   // af-NA
+	0x01600160: 5,   // af-ZA
+	0x01c00000: 6,   // agq
+	0x01c00051: 7,   // agq-CM
+	0x02100000: 8,   // ak
+	0x0210007f: 9,   // ak-GH
+	0x02700000: 10,  // am
+	0x0270006e: 11,  // am-ET
+	0x03a00000: 12,  // ar
+	0x03a00001: 13,  // ar-001
+	0x03a00022: 14,  // ar-AE
+	0x03a00038: 15,  // ar-BH
+	0x03a00061: 16,  // ar-DJ
+	0x03a00066: 17,  // ar-DZ
+	0x03a0006a: 18,  // ar-EG
+	0x03a0006b: 19,  // ar-EH
+	0x03a0006c: 20,  // ar-ER
+	0x03a00096: 21,  // ar-IL
+	0x03a0009a: 22,  // ar-IQ
+	0x03a000a0: 23,  // ar-JO
+	0x03a000a7: 24,  // ar-KM
+	0x03a000ab: 25,  // ar-KW
+	0x03a000af: 26,  // ar-LB
+	0x03a000b8: 27,  // ar-LY
+	0x03a000b9: 28,  // ar-MA
+	0x03a000c8: 29,  // ar-MR
+	0x03a000e0: 30,  // ar-OM
+	0x03a000ec: 31,  // ar-PS
+	0x03a000f2: 32,  // ar-QA
+	0x03a00107: 33,  // ar-SA
+	0x03a0010a: 34,  // ar-SD
+	0x03a00114: 35,  // ar-SO
+	0x03a00116: 36,  // ar-SS
+	0x03a0011b: 37,  // ar-SY
+	0x03a0011f: 38,  // ar-TD
+	0x03a00127: 39,  // ar-TN
+	0x03a0015d: 40,  // ar-YE
+	0x04000000: 41,  // ars
+	0x04300000: 42,  // as
+	0x04300098: 43,  // as-IN
+	0x04400000: 44,  // asa
+	0x0440012e: 45,  // asa-TZ
+	0x04800000: 46,  // ast
+	0x0480006d: 47,  // ast-ES
+	0x05800000: 48,  // az
+	0x0581e000: 49,  // az-Cyrl
+	0x0581e031: 50,  // az-Cyrl-AZ
+	0x05852000: 51,  // az-Latn
+	0x05852031: 52,  // az-Latn-AZ
+	0x05e00000: 53,  // bas
+	0x05e00051: 54,  // bas-CM
+	0x07100000: 55,  // be
+	0x07100046: 56,  // be-BY
+	0x07500000: 57,  // bem
+	0x07500161: 58,  // bem-ZM
+	0x07900000: 59,  // bez
+	0x0790012e: 60,  // bez-TZ
+	0x07e00000: 61,  // bg
+	0x07e00037: 62,  // bg-BG
+	0x08200000: 63,  // bh
+	0x0a000000: 64,  // bm
+	0x0a0000c2: 65,  // bm-ML
+	0x0a500000: 66,  // bn
+	0x0a500034: 67,  // bn-BD
+	0x0a500098: 68,  // bn-IN
+	0x0a900000: 69,  // bo
+	0x0a900052: 70,  // bo-CN
+	0x0a900098: 71,  // bo-IN
+	0x0b200000: 72,  // br
+	0x0b200077: 73,  // br-FR
+	0x0b500000: 74,  // brx
+	0x0b500098: 75,  // brx-IN
+	0x0b700000: 76,  // bs
+	0x0b71e000: 77,  // bs-Cyrl
+	0x0b71e032: 78,  // bs-Cyrl-BA
+	0x0b752000: 79,  // bs-Latn
+	0x0b752032: 80,  // bs-Latn-BA
+	0x0d700000: 81,  // ca
+	0x0d700021: 82,  // ca-AD
+	0x0d70006d: 83,  // ca-ES
+	0x0d700077: 84,  // ca-FR
+	0x0d70009d: 85,  // ca-IT
+	0x0dc00000: 86,  // ce
+	0x0dc00105: 87,  // ce-RU
+	0x0df00000: 88,  // cgg
+	0x0df00130: 89,  // cgg-UG
+	0x0e500000: 90,  // chr
+	0x0e500134: 91,  // chr-US
+	0x0e900000: 92,  // ckb
+	0x0e90009a: 93,  // ckb-IQ
+	0x0e90009b: 94,  // ckb-IR
+	0x0f900000: 95,  // cs
+	0x0f90005d: 96,  // cs-CZ
+	0x0fd00000: 97,  // cu
+	0x0fd00105: 98,  // cu-RU
+	0x0ff00000: 99,  // cy
+	0x0ff0007a: 100, // cy-GB
+	0x10000000: 101, // da
+	0x10000062: 102, // da-DK
+	0x10000081: 103, // da-GL
+	0x10700000: 104, // dav
+	0x107000a3: 105, // dav-KE
+	0x10c00000: 106, // de
+	0x10c0002d: 107, // de-AT
+	0x10c00035: 108, // de-BE
+	0x10c0004d: 109, // de-CH
+	0x10c0005f: 110, // de-DE
+	0x10c0009d: 111, // de-IT
+	0x10c000b1: 112, // de-LI
+	0x10c000b6: 113, // de-LU
+	0x11600000: 114, // dje
+	0x116000d3: 115, // dje-NE
+	0x11e00000: 116, // dsb
+	0x11e0005f: 117, // dsb-DE
+	0x12300000: 118, // dua
+	0x12300051: 119, // dua-CM
+	0x12700000: 120, // dv
+	0x12a00000: 121, // dyo
+	0x12a00113: 122, // dyo-SN
+	0x12c00000: 123, // dz
+	0x12c00042: 124, // dz-BT
+	0x12e00000: 125, // ebu
+	0x12e000a3: 126, // ebu-KE
+	0x12f00000: 127, // ee
+	0x12f0007f: 128, // ee-GH
+	0x12f00121: 129, // ee-TG
+	0x13500000: 130, // el
+	0x1350005c: 131, // el-CY
+	0x13500086: 132, // el-GR
+	0x13800000: 133, // en
+	0x13800001: 134, // en-001
+	0x1380001a: 135, // en-150
+	0x13800024: 136, // en-AG
+	0x13800025: 137, // en-AI
+	0x1380002c: 138, // en-AS
+	0x1380002d: 139, // en-AT
+	0x1380002e: 140, // en-AU
+	0x13800033: 141, // en-BB
+	0x13800035: 142, // en-BE
+	0x13800039: 143, // en-BI
+	0x1380003c: 144, // en-BM
+	0x13800041: 145, // en-BS
+	0x13800045: 146, // en-BW
+	0x13800047: 147, // en-BZ
+	0x13800048: 148, // en-CA
+	0x13800049: 149, // en-CC
+	0x1380004d: 150, // en-CH
+	0x1380004f: 151, // en-CK
+	0x13800051: 152, // en-CM
+	0x1380005b: 153, // en-CX
+	0x1380005c: 154, // en-CY
+	0x1380005f: 155, // en-DE
+	0x13800060: 156, // en-DG
+	0x13800062: 157, // en-DK
+	0x13800063: 158, // en-DM
+	0x1380006c: 159, // en-ER
+	0x13800071: 160, // en-FI
+	0x13800072: 161, // en-FJ
+	0x13800073: 162, // en-FK
+	0x13800074: 163, // en-FM
+	0x1380007a: 164, // en-GB
+	0x1380007b: 165, // en-GD
+	0x1380007e: 166, // en-GG
+	0x1380007f: 167, // en-GH
+	0x13800080: 168, // en-GI
+	0x13800082: 169, // en-GM
+	0x13800089: 170, // en-GU
+	0x1380008b: 171, // en-GY
+	0x1380008c: 172, // en-HK
+	0x13800095: 173, // en-IE
+	0x13800096: 174, // en-IL
+	0x13800097: 175, // en-IM
+	0x13800098: 176, // en-IN
+	0x13800099: 177, // en-IO
+	0x1380009e: 178, // en-JE
+	0x1380009f: 179, // en-JM
+	0x138000a3: 180, // en-KE
+	0x138000a6: 181, // en-KI
+	0x138000a8: 182, // en-KN
+	0x138000ac: 183, // en-KY
+	0x138000b0: 184, // en-LC
+	0x138000b3: 185, // en-LR
+	0x138000b4: 186, // en-LS
+	0x138000be: 187, // en-MG
+	0x138000bf: 188, // en-MH
+	0x138000c5: 189, // en-MO
+	0x138000c6: 190, // en-MP
+	0x138000c9: 191, // en-MS
+	0x138000ca: 192, // en-MT
+	0x138000cb: 193, // en-MU
+	0x138000cd: 194, // en-MW
+	0x138000cf: 195, // en-MY
+	0x138000d1: 196, // en-NA
+	0x138000d4: 197, // en-NF
+	0x138000d5: 198, // en-NG
+	0x138000d8: 199, // en-NL
+	0x138000dc: 200, // en-NR
+	0x138000de: 201, // en-NU
+	0x138000df: 202, // en-NZ
+	0x138000e5: 203, // en-PG
+	0x138000e6: 204, // en-PH
+	0x138000e7: 205, // en-PK
+	0x138000ea: 206, // en-PN
+	0x138000eb: 207, // en-PR
+	0x138000ef: 208, // en-PW
+	0x13800106: 209, // en-RW
+	0x13800108: 210, // en-SB
+	0x13800109: 211, // en-SC
+	0x1380010a: 212, // en-SD
+	0x1380010b: 213, // en-SE
+	0x1380010c: 214, // en-SG
+	0x1380010d: 215, // en-SH
+	0x1380010e: 216, // en-SI
+	0x13800111: 217, // en-SL
+	0x13800116: 218, // en-SS
+	0x1380011a: 219, // en-SX
+	0x1380011c: 220, // en-SZ
+	0x1380011e: 221, // en-TC
+	0x13800124: 222, // en-TK
+	0x13800128: 223, // en-TO
+	0x1380012b: 224, // en-TT
+	0x1380012c: 225, // en-TV
+	0x1380012e: 226, // en-TZ
+	0x13800130: 227, // en-UG
+	0x13800132: 228, // en-UM
+	0x13800134: 229, // en-US
+	0x13800138: 230, // en-VC
+	0x1380013b: 231, // en-VG
+	0x1380013c: 232, // en-VI
+	0x1380013e: 233, // en-VU
+	0x13800141: 234, // en-WS
+	0x13800160: 235, // en-ZA
+	0x13800161: 236, // en-ZM
+	0x13800163: 237, // en-ZW
+	0x13b00000: 238, // eo
+	0x13b00001: 239, // eo-001
+	0x13d00000: 240, // es
+	0x13d0001e: 241, // es-419
+	0x13d0002b: 242, // es-AR
+	0x13d0003e: 243, // es-BO
+	0x13d00040: 244, // es-BR
+	0x13d00047: 245, // es-BZ
+	0x13d00050: 246, // es-CL
+	0x13d00053: 247, // es-CO
+	0x13d00055: 248, // es-CR
+	0x13d00058: 249, // es-CU
+	0x13d00064: 250, // es-DO
+	0x13d00067: 251, // es-EA
+	0x13d00068: 252, // es-EC
+	0x13d0006d: 253, // es-ES
+	0x13d00085: 254, // es-GQ
+	0x13d00088: 255, // es-GT
+	0x13d0008e: 256, // es-HN
+	0x13d00093: 257, // es-IC
+	0x13d000ce: 258, // es-MX
+	0x13d000d7: 259, // es-NI
+	0x13d000e1: 260, // es-PA
+	0x13d000e3: 261, // es-PE
+	0x13d000e6: 262, // es-PH
+	0x13d000eb: 263, // es-PR
+	0x13d000f0: 264, // es-PY
+	0x13d00119: 265, // es-SV
+	0x13d00134: 266, // es-US
+	0x13d00135: 267, // es-UY
+	0x13d0013a: 268, // es-VE
+	0x13f00000: 269, // et
+	0x13f00069: 270, // et-EE
+	0x14400000: 271, // eu
+	0x1440006d: 272, // eu-ES
+	0x14500000: 273, // ewo
+	0x14500051: 274, // ewo-CM
+	0x14700000: 275, // fa
+	0x14700023: 276, // fa-AF
+	0x1470009b: 277, // fa-IR
+	0x14d00000: 278, // ff
+	0x14d00051: 279, // ff-CM
+	0x14d00083: 280, // ff-GN
+	0x14d000c8: 281, // ff-MR
+	0x14d00113: 282, // ff-SN
+	0x15000000: 283, // fi
+	0x15000071: 284, // fi-FI
+	0x15200000: 285, // fil
+	0x152000e6: 286, // fil-PH
+	0x15700000: 287, // fo
+	0x15700062: 288, // fo-DK
+	0x15700075: 289, // fo-FO
+	0x15d00000: 290, // fr
+	0x15d00035: 291, // fr-BE
+	0x15d00036: 292, // fr-BF
+	0x15d00039: 293, // fr-BI
+	0x15d0003a: 294, // fr-BJ
+	0x15d0003b: 295, // fr-BL
+	0x15d00048: 296, // fr-CA
+	0x15d0004a: 297, // fr-CD
+	0x15d0004b: 298, // fr-CF
+	0x15d0004c: 299, // fr-CG
+	0x15d0004d: 300, // fr-CH
+	0x15d0004e: 301, // fr-CI
+	0x15d00051: 302, // fr-CM
+	0x15d00061: 303, // fr-DJ
+	0x15d00066: 304, // fr-DZ
+	0x15d00077: 305, // fr-FR
+	0x15d00079: 306, // fr-GA
+	0x15d0007d: 307, // fr-GF
+	0x15d00083: 308, // fr-GN
+	0x15d00084: 309, // fr-GP
+	0x15d00085: 310, // fr-GQ
+	0x15d00090: 311, // fr-HT
+	0x15d000a7: 312, // fr-KM
+	0x15d000b6: 313, // fr-LU
+	0x15d000b9: 314, // fr-MA
+	0x15d000ba: 315, // fr-MC
+	0x15d000bd: 316, // fr-MF
+	0x15d000be: 317, // fr-MG
+	0x15d000c2: 318, // fr-ML
+	0x15d000c7: 319, // fr-MQ
+	0x15d000c8: 320, // fr-MR
+	0x15d000cb: 321, // fr-MU
+	0x15d000d2: 322, // fr-NC
+	0x15d000d3: 323, // fr-NE
+	0x15d000e4: 324, // fr-PF
+	0x15d000e9: 325, // fr-PM
+	0x15d00101: 326, // fr-RE
+	0x15d00106: 327, // fr-RW
+	0x15d00109: 328, // fr-SC
+	0x15d00113: 329, // fr-SN
+	0x15d0011b: 330, // fr-SY
+	0x15d0011f: 331, // fr-TD
+	0x15d00121: 332, // fr-TG
+	0x15d00127: 333, // fr-TN
+	0x15d0013e: 334, // fr-VU
+	0x15d0013f: 335, // fr-WF
+	0x15d0015e: 336, // fr-YT
+	0x16800000: 337, // fur
+	0x1680009d: 338, // fur-IT
+	0x16c00000: 339, // fy
+	0x16c000d8: 340, // fy-NL
+	0x16d00000: 341, // ga
+	0x16d00095: 342, // ga-IE
+	0x17c00000: 343, // gd
+	0x17c0007a: 344, // gd-GB
+	0x18e00000: 345, // gl
+	0x18e0006d: 346, // gl-ES
+	0x1a100000: 347, // gsw
+	0x1a10004d: 348, // gsw-CH
+	0x1a100077: 349, // gsw-FR
+	0x1a1000b1: 350, // gsw-LI
+	0x1a200000: 351, // gu
+	0x1a200098: 352, // gu-IN
+	0x1a700000: 353, // guw
+	0x1a900000: 354, // guz
+	0x1a9000a3: 355, // guz-KE
+	0x1aa00000: 356, // gv
+	0x1aa00097: 357, // gv-IM
+	0x1b200000: 358, // ha
+	0x1b20007f: 359, // ha-GH
+	0x1b2000d3: 360, // ha-NE
+	0x1b2000d5: 361, // ha-NG
+	0x1b600000: 362, // haw
+	0x1b600134: 363, // haw-US
+	0x1ba00000: 364, // he
+	0x1ba00096: 365, // he-IL
+	0x1bc00000: 366, // hi
+	0x1bc00098: 367, // hi-IN
+	0x1cf00000: 368, // hr
+	0x1cf00032: 369, // hr-BA
+	0x1cf0008f: 370, // hr-HR
+	0x1d000000: 371, // hsb
+	0x1d00005f: 372, // hsb-DE
+	0x1d300000: 373, // hu
+	0x1d300091: 374, // hu-HU
+	0x1d500000: 375, // hy
+	0x1d500027: 376, // hy-AM
+	0x1df00000: 377, // id
+	0x1df00094: 378, // id-ID
+	0x1e500000: 379, // ig
+	0x1e5000d5: 380, // ig-NG
+	0x1e800000: 381, // ii
+	0x1e800052: 382, // ii-CN
+	0x1f600000: 383, // is
+	0x1f60009c: 384, // is-IS
+	0x1f700000: 385, // it
+	0x1f70004d: 386, // it-CH
+	0x1f70009d: 387, // it-IT
+	0x1f700112: 388, // it-SM
+	0x1f700137: 389, // it-VA
+	0x1f800000: 390, // iu
+	0x1fe00000: 391, // ja
+	0x1fe000a1: 392, // ja-JP
+	0x20100000: 393, // jbo
+	0x20500000: 394, // jgo
+	0x20500051: 395, // jgo-CM
+	0x20800000: 396, // jmc
+	0x2080012e: 397, // jmc-TZ
+	0x20c00000: 398, // jv
+	0x20e00000: 399, // ka
+	0x20e0007c: 400, // ka-GE
+	0x21000000: 401, // kab
+	0x21000066: 402, // kab-DZ
+	0x21400000: 403, // kaj
+	0x21500000: 404, // kam
+	0x215000a3: 405, // kam-KE
+	0x21d00000: 406, // kcg
+	0x22100000: 407, // kde
+	0x2210012e: 408, // kde-TZ
+	0x22500000: 409, // kea
+	0x22500059: 410, // kea-CV
+	0x23200000: 411, // khq
+	0x232000c2: 412, // khq-ML
+	0x23700000: 413, // ki
+	0x237000a3: 414, // ki-KE
+	0x24000000: 415, // kk
+	0x240000ad: 416, // kk-KZ
+	0x24200000: 417, // kkj
+	0x24200051: 418, // kkj-CM
+	0x24300000: 419, // kl
+	0x24300081: 420, // kl-GL
+	0x24400000: 421, // kln
+	0x244000a3: 422, // kln-KE
+	0x24800000: 423, // km
+	0x248000a5: 424, // km-KH
+	0x24f00000: 425, // kn
+	0x24f00098: 426, // kn-IN
+	0x25200000: 427, // ko
+	0x252000a9: 428, // ko-KP
+	0x252000aa: 429, // ko-KR
+	0x25400000: 430, // kok
+	0x25400098: 431, // kok-IN
+	0x26800000: 432, // ks
+	0x26800098: 433, // ks-IN
+	0x26900000: 434, // ksb
+	0x2690012e: 435, // ksb-TZ
+	0x26b00000: 436, // ksf
+	0x26b00051: 437, // ksf-CM
+	0x26c00000: 438, // ksh
+	0x26c0005f: 439, // ksh-DE
+	0x27200000: 440, // ku
+	0x27f00000: 441, // kw
+	0x27f0007a: 442, // kw-GB
+	0x28800000: 443, // ky
+	0x288000a4: 444, // ky-KG
+	0x28f00000: 445, // lag
+	0x28f0012e: 446, // lag-TZ
+	0x29300000: 447, // lb
+	0x293000b6: 448, // lb-LU
+	0x2a100000: 449, // lg
+	0x2a100130: 450, // lg-UG
+	0x2ad00000: 451, // lkt
+	0x2ad00134: 452, // lkt-US
+	0x2b300000: 453, // ln
+	0x2b300029: 454, // ln-AO
+	0x2b30004a: 455, // ln-CD
+	0x2b30004b: 456, // ln-CF
+	0x2b30004c: 457, // ln-CG
+	0x2b600000: 458, // lo
+	0x2b6000ae: 459, // lo-LA
+	0x2bd00000: 460, // lrc
+	0x2bd0009a: 461, // lrc-IQ
+	0x2bd0009b: 462, // lrc-IR
+	0x2be00000: 463, // lt
+	0x2be000b5: 464, // lt-LT
+	0x2c000000: 465, // lu
+	0x2c00004a: 466, // lu-CD
+	0x2c200000: 467, // luo
+	0x2c2000a3: 468, // luo-KE
+	0x2c300000: 469, // luy
+	0x2c3000a3: 470, // luy-KE
+	0x2c500000: 471, // lv
+	0x2c5000b7: 472, // lv-LV
+	0x2cf00000: 473, // mas
+	0x2cf000a3: 474, // mas-KE
+	0x2cf0012e: 475, // mas-TZ
+	0x2e700000: 476, // mer
+	0x2e7000a3: 477, // mer-KE
+	0x2eb00000: 478, // mfe
+	0x2eb000cb: 479, // mfe-MU
+	0x2ef00000: 480, // mg
+	0x2ef000be: 481, // mg-MG
+	0x2f000000: 482, // mgh
+	0x2f0000d0: 483, // mgh-MZ
+	0x2f200000: 484, // mgo
+	0x2f200051: 485, // mgo-CM
+	0x2fd00000: 486, // mk
+	0x2fd000c1: 487, // mk-MK
+	0x30200000: 488, // ml
+	0x30200098: 489, // ml-IN
+	0x30900000: 490, // mn
+	0x309000c4: 491, // mn-MN
+	0x31900000: 492, // mr
+	0x31900098: 493, // mr-IN
+	0x31d00000: 494, // ms
+	0x31d0003d: 495, // ms-BN
+	0x31d000cf: 496, // ms-MY
+	0x31d0010c: 497, // ms-SG
+	0x31e00000: 498, // mt
+	0x31e000ca: 499, // mt-MT
+	0x32300000: 500, // mua
+	0x32300051: 501, // mua-CM
+	0x32f00000: 502, // my
+	0x32f000c3: 503, // my-MM
+	0x33800000: 504, // mzn
+	0x3380009b: 505, // mzn-IR
+	0x33f00000: 506, // nah
+	0x34300000: 507, // naq
+	0x343000d1: 508, // naq-NA
+	0x34500000: 509, // nb
+	0x345000d9: 510, // nb-NO
+	0x3450010f: 511, // nb-SJ
+	0x34c00000: 512, // nd
+	0x34c00163: 513, // nd-ZW
+	0x34e00000: 514, // nds
+	0x34e0005f: 515, // nds-DE
+	0x34e000d8: 516, // nds-NL
+	0x34f00000: 517, // ne
+	0x34f00098: 518, // ne-IN
+	0x34f000da: 519, // ne-NP
+	0x36500000: 520, // nl
+	0x3650002f: 521, // nl-AW
+	0x36500035: 522, // nl-BE
+	0x3650003f: 523, // nl-BQ
+	0x3650005a: 524, // nl-CW
+	0x365000d8: 525, // nl-NL
+	0x36500115: 526, // nl-SR
+	0x3650011a: 527, // nl-SX
+	0x36600000: 528, // nmg
+	0x36600051: 529, // nmg-CM
+	0x36800000: 530, // nn
+	0x368000d9: 531, // nn-NO
+	0x36a00000: 532, // nnh
+	0x36a00051: 533, // nnh-CM
+	0x36d00000: 534, // no
+	0x37300000: 535, // nqo
+	0x37400000: 536, // nr
+	0x37800000: 537, // nso
+	0x37e00000: 538, // nus
+	0x37e00116: 539, // nus-SS
+	0x38500000: 540, // ny
+	0x38700000: 541, // nyn
+	0x38700130: 542, // nyn-UG
+	0x38e00000: 543, // om
+	0x38e0006e: 544, // om-ET
+	0x38e000a3: 545, // om-KE
+	0x39300000: 546, // or
+	0x39300098: 547, // or-IN
+	0x39600000: 548, // os
+	0x3960007c: 549, // os-GE
+	0x39600105: 550, // os-RU
+	0x39b00000: 551, // pa
+	0x39b05000: 552, // pa-Arab
+	0x39b050e7: 553, // pa-Arab-PK
+	0x39b2f000: 554, // pa-Guru
+	0x39b2f098: 555, // pa-Guru-IN
+	0x39f00000: 556, // pap
+	0x3b100000: 557, // pl
+	0x3b1000e8: 558, // pl-PL
+	0x3bb00000: 559, // prg
+	0x3bb00001: 560, // prg-001
+	0x3bc00000: 561, // ps
+	0x3bc00023: 562, // ps-AF
+	0x3be00000: 563, // pt
+	0x3be00029: 564, // pt-AO
+	0x3be00040: 565, // pt-BR
+	0x3be0004d: 566, // pt-CH
+	0x3be00059: 567, // pt-CV
+	0x3be00085: 568, // pt-GQ
+	0x3be0008a: 569, // pt-GW
+	0x3be000b6: 570, // pt-LU
+	0x3be000c5: 571, // pt-MO
+	0x3be000d0: 572, // pt-MZ
+	0x3be000ed: 573, // pt-PT
+	0x3be00117: 574, // pt-ST
+	0x3be00125: 575, // pt-TL
+	0x3c200000: 576, // qu
+	0x3c20003e: 577, // qu-BO
+	0x3c200068: 578, // qu-EC
+	0x3c2000e3: 579, // qu-PE
+	0x3d200000: 580, // rm
+	0x3d20004d: 581, // rm-CH
+	0x3d700000: 582, // rn
+	0x3d700039: 583, // rn-BI
+	0x3da00000: 584, // ro
+	0x3da000bb: 585, // ro-MD
+	0x3da00103: 586, // ro-RO
+	0x3dc00000: 587, // rof
+	0x3dc0012e: 588, // rof-TZ
+	0x3e000000: 589, // ru
+	0x3e000046: 590, // ru-BY
+	0x3e0000a4: 591, // ru-KG
+	0x3e0000ad: 592, // ru-KZ
+	0x3e0000bb: 593, // ru-MD
+	0x3e000105: 594, // ru-RU
+	0x3e00012f: 595, // ru-UA
+	0x3e300000: 596, // rw
+	0x3e300106: 597, // rw-RW
+	0x3e400000: 598, // rwk
+	0x3e40012e: 599, // rwk-TZ
+	0x3e900000: 600, // sah
+	0x3e900105: 601, // sah-RU
+	0x3ea00000: 602, // saq
+	0x3ea000a3: 603, // saq-KE
+	0x3f100000: 604, // sbp
+	0x3f10012e: 605, // sbp-TZ
+	0x3fa00000: 606, // sdh
+	0x3fb00000: 607, // se
+	0x3fb00071: 608, // se-FI
+	0x3fb000d9: 609, // se-NO
+	0x3fb0010b: 610, // se-SE
+	0x3fd00000: 611, // seh
+	0x3fd000d0: 612, // seh-MZ
+	0x3ff00000: 613, // ses
+	0x3ff000c2: 614, // ses-ML
+	0x40000000: 615, // sg
+	0x4000004b: 616, // sg-CF
+	0x40600000: 617, // shi
+	0x40652000: 618, // shi-Latn
+	0x406520b9: 619, // shi-Latn-MA
+	0x406d2000: 620, // shi-Tfng
+	0x406d20b9: 621, // shi-Tfng-MA
+	0x40a00000: 622, // si
+	0x40a000b2: 623, // si-LK
+	0x41000000: 624, // sk
+	0x41000110: 625, // sk-SK
+	0x41400000: 626, // sl
+	0x4140010e: 627, // sl-SI
+	0x41a00000: 628, // sma
+	0x41b00000: 629, // smi
+	0x41c00000: 630, // smj
+	0x41d00000: 631, // smn
+	0x41d00071: 632, // smn-FI
+	0x42000000: 633, // sms
+	0x42100000: 634, // sn
+	0x42100163: 635, // sn-ZW
+	0x42700000: 636, // so
+	0x42700061: 637, // so-DJ
+	0x4270006e: 638, // so-ET
+	0x427000a3: 639, // so-KE
+	0x42700114: 640, // so-SO
+	0x42f00000: 641, // sq
+	0x42f00026: 642, // sq-AL
+	0x42f000c1: 643, // sq-MK
+	0x42f0014c: 644, // sq-XK
+	0x43000000: 645, // sr
+	0x4301e000: 646, // sr-Cyrl
+	0x4301e032: 647, // sr-Cyrl-BA
+	0x4301e0bc: 648, // sr-Cyrl-ME
+	0x4301e104: 649, // sr-Cyrl-RS
+	0x4301e14c: 650, // sr-Cyrl-XK
+	0x43052000: 651, // sr-Latn
+	0x43052032: 652, // sr-Latn-BA
+	0x430520bc: 653, // sr-Latn-ME
+	0x43052104: 654, // sr-Latn-RS
+	0x4305214c: 655, // sr-Latn-XK
+	0x43500000: 656, // ss
+	0x43800000: 657, // ssy
+	0x43900000: 658, // st
+	0x44200000: 659, // sv
+	0x44200030: 660, // sv-AX
+	0x44200071: 661, // sv-FI
+	0x4420010b: 662, // sv-SE
+	0x44300000: 663, // sw
+	0x4430004a: 664, // sw-CD
+	0x443000a3: 665, // sw-KE
+	0x4430012e: 666, // sw-TZ
+	0x44300130: 667, // sw-UG
+	0x44c00000: 668, // syr
+	0x44e00000: 669, // ta
+	0x44e00098: 670, // ta-IN
+	0x44e000b2: 671, // ta-LK
+	0x44e000cf: 672, // ta-MY
+	0x44e0010c: 673, // ta-SG
+	0x45f00000: 674, // te
+	0x45f00098: 675, // te-IN
+	0x46200000: 676, // teo
+	0x462000a3: 677, // teo-KE
+	0x46200130: 678, // teo-UG
+	0x46900000: 679, // th
+	0x46900122: 680, // th-TH
+	0x46d00000: 681, // ti
+	0x46d0006c: 682, // ti-ER
+	0x46d0006e: 683, // ti-ET
+	0x46f00000: 684, // tig
+	0x47400000: 685, // tk
+	0x47400126: 686, // tk-TM
+	0x47e00000: 687, // tn
+	0x48000000: 688, // to
+	0x48000128: 689, // to-TO
+	0x48800000: 690, // tr
+	0x4880005c: 691, // tr-CY
+	0x4880012a: 692, // tr-TR
+	0x48c00000: 693, // ts
+	0x4a200000: 694, // twq
+	0x4a2000d3: 695, // twq-NE
+	0x4a700000: 696, // tzm
+	0x4a7000b9: 697, // tzm-MA
+	0x4aa00000: 698, // ug
+	0x4aa00052: 699, // ug-CN
+	0x4ac00000: 700, // uk
+	0x4ac0012f: 701, // uk-UA
+	0x4b200000: 702, // ur
+	0x4b200098: 703, // ur-IN
+	0x4b2000e7: 704, // ur-PK
+	0x4ba00000: 705, // uz
+	0x4ba05000: 706, // uz-Arab
+	0x4ba05023: 707, // uz-Arab-AF
+	0x4ba1e000: 708, // uz-Cyrl
+	0x4ba1e136: 709, // uz-Cyrl-UZ
+	0x4ba52000: 710, // uz-Latn
+	0x4ba52136: 711, // uz-Latn-UZ
+	0x4bc00000: 712, // vai
+	0x4bc52000: 713, // vai-Latn
+	0x4bc520b3: 714, // vai-Latn-LR
+	0x4bcd9000: 715, // vai-Vaii
+	0x4bcd90b3: 716, // vai-Vaii-LR
+	0x4be00000: 717, // ve
+	0x4c100000: 718, // vi
+	0x4c10013d: 719, // vi-VN
+	0x4c700000: 720, // vo
+	0x4c700001: 721, // vo-001
+	0x4ca00000: 722, // vun
+	0x4ca0012e: 723, // vun-TZ
+	0x4cc00000: 724, // wa
+	0x4cd00000: 725, // wae
+	0x4cd0004d: 726, // wae-CH
+	0x4e300000: 727, // wo
+	0x4f000000: 728, // xh
+	0x4f900000: 729, // xog
+	0x4f900130: 730, // xog-UG
+	0x50700000: 731, // yav
+	0x50700051: 732, // yav-CM
+	0x51000000: 733, // yi
+	0x51000001: 734, // yi-001
+	0x51600000: 735, // yo
+	0x5160003a: 736, // yo-BJ
+	0x516000d5: 737, // yo-NG
+	0x51d00000: 738, // yue
+	0x51d0008c: 739, // yue-HK
+	0x52600000: 740, // zgh
+	0x526000b9: 741, // zgh-MA
+	0x52700000: 742, // zh
+	0x52734000: 743, // zh-Hans
+	0x52734052: 744, // zh-Hans-CN
+	0x5273408c: 745, // zh-Hans-HK
+	0x527340c5: 746, // zh-Hans-MO
+	0x5273410c: 747, // zh-Hans-SG
+	0x52735000: 748, // zh-Hant
+	0x5273508c: 749, // zh-Hant-HK
+	0x527350c5: 750, // zh-Hant-MO
+	0x5273512d: 751, // zh-Hant-TW
+	0x52c00000: 752, // zu
+	0x52c00160: 753, // zu-ZA
 }
 
-// Total table size 4580 bytes (4KiB); checksum: A7F72A2A
+// Total table size 4592 bytes (4KiB); checksum: C25F8AFF
diff --git a/vendor/golang.org/x/text/language/maketables.go b/vendor/golang.org/x/text/language/maketables.go
deleted file mode 100644
index 107f99254..000000000
--- a/vendor/golang.org/x/text/language/maketables.go
+++ /dev/null
@@ -1,1648 +0,0 @@
-// Copyright 2013 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-// Language tag table generator.
-// Data read from the web.
-
-package main
-
-import (
-	"bufio"
-	"flag"
-	"fmt"
-	"io"
-	"io/ioutil"
-	"log"
-	"math"
-	"reflect"
-	"regexp"
-	"sort"
-	"strconv"
-	"strings"
-
-	"golang.org/x/text/internal/gen"
-	"golang.org/x/text/internal/tag"
-	"golang.org/x/text/unicode/cldr"
-)
-
-var (
-	test = flag.Bool("test",
-		false,
-		"test existing tables; can be used to compare web data with package data.")
-	outputFile = flag.String("output",
-		"tables.go",
-		"output file for generated tables")
-)
-
-var comment = []string{
-	`
-lang holds an alphabetically sorted list of ISO-639 language identifiers.
-All entries are 4 bytes. The index of the identifier (divided by 4) is the language tag.
-For 2-byte language identifiers, the two successive bytes have the following meaning:
-    - if the first letter of the 2- and 3-letter ISO codes are the same:
-      the second and third letter of the 3-letter ISO code.
-    - otherwise: a 0 and a by 2 bits right-shifted index into altLangISO3.
-For 3-byte language identifiers the 4th byte is 0.`,
-	`
-langNoIndex is a bit vector of all 3-letter language codes that are not used as an index
-in lookup tables. The language ids for these language codes are derived directly
-from the letters and are not consecutive.`,
-	`
-altLangISO3 holds an alphabetically sorted list of 3-letter language code alternatives
-to 2-letter language codes that cannot be derived using the method described above.
-Each 3-letter code is followed by its 1-byte langID.`,
-	`
-altLangIndex is used to convert indexes in altLangISO3 to langIDs.`,
-	`
-langAliasMap maps langIDs to their suggested replacements.`,
-	`
-script is an alphabetically sorted list of ISO 15924 codes. The index
-of the script in the string, divided by 4, is the internal scriptID.`,
-	`
-isoRegionOffset needs to be added to the index of regionISO to obtain the regionID
-for 2-letter ISO codes. (The first isoRegionOffset regionIDs are reserved for
-the UN.M49 codes used for groups.)`,
-	`
-regionISO holds a list of alphabetically sorted 2-letter ISO region codes.
-Each 2-letter codes is followed by two bytes with the following meaning:
-    - [A-Z}{2}: the first letter of the 2-letter code plus these two 
-                letters form the 3-letter ISO code.
-    - 0, n:     index into altRegionISO3.`,
-	`
-regionTypes defines the status of a region for various standards.`,
-	`
-m49 maps regionIDs to UN.M49 codes. The first isoRegionOffset entries are
-codes indicating collections of regions.`,
-	`
-m49Index gives indexes into fromM49 based on the three most significant bits
-of a 10-bit UN.M49 code. To search an UN.M49 code in fromM49, search in
-   fromM49[m49Index[msb39(code)]:m49Index[msb3(code)+1]]
-for an entry where the first 7 bits match the 7 lsb of the UN.M49 code.
-The region code is stored in the 9 lsb of the indexed value.`,
-	`
-fromM49 contains entries to map UN.M49 codes to regions. See m49Index for details.`,
-	`
-altRegionISO3 holds a list of 3-letter region codes that cannot be
-mapped to 2-letter codes using the default algorithm. This is a short list.`,
-	`
-altRegionIDs holds a list of regionIDs the positions of which match those
-of the 3-letter ISO codes in altRegionISO3.`,
-	`
-variantNumSpecialized is the number of specialized variants in variants.`,
-	`
-suppressScript is an index from langID to the dominant script for that language,
-if it exists.  If a script is given, it should be suppressed from the language tag.`,
-	`
-likelyLang is a lookup table, indexed by langID, for the most likely
-scripts and regions given incomplete information. If more entries exist for a
-given language, region and script are the index and size respectively
-of the list in likelyLangList.`,
-	`
-likelyLangList holds lists info associated with likelyLang.`,
-	`
-likelyRegion is a lookup table, indexed by regionID, for the most likely
-languages and scripts given incomplete information. If more entries exist
-for a given regionID, lang and script are the index and size respectively
-of the list in likelyRegionList.
-TODO: exclude containers and user-definable regions from the list.`,
-	`
-likelyRegionList holds lists info associated with likelyRegion.`,
-	`
-likelyScript is a lookup table, indexed by scriptID, for the most likely
-languages and regions given a script.`,
-	`
-matchLang holds pairs of langIDs of base languages that are typically
-mutually intelligible. Each pair is associated with a confidence and
-whether the intelligibility goes one or both ways.`,
-	`
-matchScript holds pairs of scriptIDs where readers of one script
-can typically also read the other. Each is associated with a confidence.`,
-	`
-nRegionGroups is the number of region groups.`,
-	`
-regionInclusion maps region identifiers to sets of regions in regionInclusionBits,
-where each set holds all groupings that are directly connected in a region
-containment graph.`,
-	`
-regionInclusionBits is an array of bit vectors where every vector represents
-a set of region groupings.  These sets are used to compute the distance
-between two regions for the purpose of language matching.`,
-	`
-regionInclusionNext marks, for each entry in regionInclusionBits, the set of
-all groups that are reachable from the groups set in the respective entry.`,
-}
-
-// TODO: consider changing some of these structures to tries. This can reduce
-// memory, but may increase the need for memory allocations. This could be
-// mitigated if we can piggyback on language tags for common cases.
-
-func failOnError(e error) {
-	if e != nil {
-		log.Panic(e)
-	}
-}
-
-type setType int
-
-const (
-	Indexed setType = 1 + iota // all elements must be of same size
-	Linear
-)
-
-type stringSet struct {
-	s              []string
-	sorted, frozen bool
-
-	// We often need to update values after the creation of an index is completed.
-	// We include a convenience map for keeping track of this.
-	update map[string]string
-	typ    setType // used for checking.
-}
-
-func (ss *stringSet) clone() stringSet {
-	c := *ss
-	c.s = append([]string(nil), c.s...)
-	return c
-}
-
-func (ss *stringSet) setType(t setType) {
-	if ss.typ != t && ss.typ != 0 {
-		log.Panicf("type %d cannot be assigned as it was already %d", t, ss.typ)
-	}
-}
-
-// parse parses a whitespace-separated string and initializes ss with its
-// components.
-func (ss *stringSet) parse(s string) {
-	scan := bufio.NewScanner(strings.NewReader(s))
-	scan.Split(bufio.ScanWords)
-	for scan.Scan() {
-		ss.add(scan.Text())
-	}
-}
-
-func (ss *stringSet) assertChangeable() {
-	if ss.frozen {
-		log.Panic("attempt to modify a frozen stringSet")
-	}
-}
-
-func (ss *stringSet) add(s string) {
-	ss.assertChangeable()
-	ss.s = append(ss.s, s)
-	ss.sorted = ss.frozen
-}
-
-func (ss *stringSet) freeze() {
-	ss.compact()
-	ss.frozen = true
-}
-
-func (ss *stringSet) compact() {
-	if ss.sorted {
-		return
-	}
-	a := ss.s
-	sort.Strings(a)
-	k := 0
-	for i := 1; i < len(a); i++ {
-		if a[k] != a[i] {
-			a[k+1] = a[i]
-			k++
-		}
-	}
-	ss.s = a[:k+1]
-	ss.sorted = ss.frozen
-}
-
-type funcSorter struct {
-	fn func(a, b string) bool
-	sort.StringSlice
-}
-
-func (s funcSorter) Less(i, j int) bool {
-	return s.fn(s.StringSlice[i], s.StringSlice[j])
-}
-
-func (ss *stringSet) sortFunc(f func(a, b string) bool) {
-	ss.compact()
-	sort.Sort(funcSorter{f, sort.StringSlice(ss.s)})
-}
-
-func (ss *stringSet) remove(s string) {
-	ss.assertChangeable()
-	if i, ok := ss.find(s); ok {
-		copy(ss.s[i:], ss.s[i+1:])
-		ss.s = ss.s[:len(ss.s)-1]
-	}
-}
-
-func (ss *stringSet) replace(ol, nu string) {
-	ss.s[ss.index(ol)] = nu
-	ss.sorted = ss.frozen
-}
-
-func (ss *stringSet) index(s string) int {
-	ss.setType(Indexed)
-	i, ok := ss.find(s)
-	if !ok {
-		if i < len(ss.s) {
-			log.Panicf("find: item %q is not in list. Closest match is %q.", s, ss.s[i])
-		}
-		log.Panicf("find: item %q is not in list", s)
-
-	}
-	return i
-}
-
-func (ss *stringSet) find(s string) (int, bool) {
-	ss.compact()
-	i := sort.SearchStrings(ss.s, s)
-	return i, i != len(ss.s) && ss.s[i] == s
-}
-
-func (ss *stringSet) slice() []string {
-	ss.compact()
-	return ss.s
-}
-
-func (ss *stringSet) updateLater(v, key string) {
-	if ss.update == nil {
-		ss.update = map[string]string{}
-	}
-	ss.update[v] = key
-}
-
-// join joins the string and ensures that all entries are of the same length.
-func (ss *stringSet) join() string {
-	ss.setType(Indexed)
-	n := len(ss.s[0])
-	for _, s := range ss.s {
-		if len(s) != n {
-			log.Panicf("join: not all entries are of the same length: %q", s)
-		}
-	}
-	ss.s = append(ss.s, strings.Repeat("\xff", n))
-	return strings.Join(ss.s, "")
-}
-
-// ianaEntry holds information for an entry in the IANA Language Subtag Repository.
-// All types use the same entry.
-// See http://tools.ietf.org/html/bcp47#section-5.1 for a description of the various
-// fields.
-type ianaEntry struct {
-	typ            string
-	description    []string
-	scope          string
-	added          string
-	preferred      string
-	deprecated     string
-	suppressScript string
-	macro          string
-	prefix         []string
-}
-
-type builder struct {
-	w    *gen.CodeWriter
-	hw   io.Writer // MultiWriter for w and w.Hash
-	data *cldr.CLDR
-	supp *cldr.SupplementalData
-
-	// indices
-	locale      stringSet // common locales
-	lang        stringSet // canonical language ids (2 or 3 letter ISO codes) with data
-	langNoIndex stringSet // 3-letter ISO codes with no associated data
-	script      stringSet // 4-letter ISO codes
-	region      stringSet // 2-letter ISO or 3-digit UN M49 codes
-	variant     stringSet // 4-8-alphanumeric variant code.
-
-	// Region codes that are groups with their corresponding group IDs.
-	groups map[int]index
-
-	// langInfo
-	registry map[string]*ianaEntry
-}
-
-type index uint
-
-func newBuilder(w *gen.CodeWriter) *builder {
-	r := gen.OpenCLDRCoreZip()
-	defer r.Close()
-	d := &cldr.Decoder{}
-	data, err := d.DecodeZip(r)
-	failOnError(err)
-	b := builder{
-		w:    w,
-		hw:   io.MultiWriter(w, w.Hash),
-		data: data,
-		supp: data.Supplemental(),
-	}
-	b.parseRegistry()
-	return &b
-}
-
-func (b *builder) parseRegistry() {
-	r := gen.OpenIANAFile("assignments/language-subtag-registry")
-	defer r.Close()
-	b.registry = make(map[string]*ianaEntry)
-
-	scan := bufio.NewScanner(r)
-	scan.Split(bufio.ScanWords)
-	var record *ianaEntry
-	for more := scan.Scan(); more; {
-		key := scan.Text()
-		more = scan.Scan()
-		value := scan.Text()
-		switch key {
-		case "Type:":
-			record = &ianaEntry{typ: value}
-		case "Subtag:", "Tag:":
-			if s := strings.SplitN(value, "..", 2); len(s) > 1 {
-				for a := s[0]; a <= s[1]; a = inc(a) {
-					b.addToRegistry(a, record)
-				}
-			} else {
-				b.addToRegistry(value, record)
-			}
-		case "Suppress-Script:":
-			record.suppressScript = value
-		case "Added:":
-			record.added = value
-		case "Deprecated:":
-			record.deprecated = value
-		case "Macrolanguage:":
-			record.macro = value
-		case "Preferred-Value:":
-			record.preferred = value
-		case "Prefix:":
-			record.prefix = append(record.prefix, value)
-		case "Scope:":
-			record.scope = value
-		case "Description:":
-			buf := []byte(value)
-			for more = scan.Scan(); more; more = scan.Scan() {
-				b := scan.Bytes()
-				if b[0] == '%' || b[len(b)-1] == ':' {
-					break
-				}
-				buf = append(buf, ' ')
-				buf = append(buf, b...)
-			}
-			record.description = append(record.description, string(buf))
-			continue
-		default:
-			continue
-		}
-		more = scan.Scan()
-	}
-	if scan.Err() != nil {
-		log.Panic(scan.Err())
-	}
-}
-
-func (b *builder) addToRegistry(key string, entry *ianaEntry) {
-	if info, ok := b.registry[key]; ok {
-		if info.typ != "language" || entry.typ != "extlang" {
-			log.Fatalf("parseRegistry: tag %q already exists", key)
-		}
-	} else {
-		b.registry[key] = entry
-	}
-}
-
-var commentIndex = make(map[string]string)
-
-func init() {
-	for _, s := range comment {
-		key := strings.TrimSpace(strings.SplitN(s, " ", 2)[0])
-		commentIndex[key] = s
-	}
-}
-
-func (b *builder) comment(name string) {
-	if s := commentIndex[name]; len(s) > 0 {
-		b.w.WriteComment(s)
-	} else {
-		fmt.Fprintln(b.w)
-	}
-}
-
-func (b *builder) pf(f string, x ...interface{}) {
-	fmt.Fprintf(b.hw, f, x...)
-	fmt.Fprint(b.hw, "\n")
-}
-
-func (b *builder) p(x ...interface{}) {
-	fmt.Fprintln(b.hw, x...)
-}
-
-func (b *builder) addSize(s int) {
-	b.w.Size += s
-	b.pf("// Size: %d bytes", s)
-}
-
-func (b *builder) writeConst(name string, x interface{}) {
-	b.comment(name)
-	b.w.WriteConst(name, x)
-}
-
-// writeConsts computes f(v) for all v in values and writes the results
-// as constants named _v to a single constant block.
-func (b *builder) writeConsts(f func(string) int, values ...string) {
-	b.pf("const (")
-	for _, v := range values {
-		b.pf("\t_%s = %v", v, f(v))
-	}
-	b.pf(")")
-}
-
-// writeType writes the type of the given value, which must be a struct.
-func (b *builder) writeType(value interface{}) {
-	b.comment(reflect.TypeOf(value).Name())
-	b.w.WriteType(value)
-}
-
-func (b *builder) writeSlice(name string, ss interface{}) {
-	b.writeSliceAddSize(name, 0, ss)
-}
-
-func (b *builder) writeSliceAddSize(name string, extraSize int, ss interface{}) {
-	b.comment(name)
-	b.w.Size += extraSize
-	v := reflect.ValueOf(ss)
-	t := v.Type().Elem()
-	b.pf("// Size: %d bytes, %d elements", v.Len()*int(t.Size())+extraSize, v.Len())
-
-	fmt.Fprintf(b.w, "var %s = ", name)
-	b.w.WriteArray(ss)
-	b.p()
-}
-
-type fromTo struct {
-	from, to uint16
-}
-
-func (b *builder) writeSortedMap(name string, ss *stringSet, index func(s string) uint16) {
-	ss.sortFunc(func(a, b string) bool {
-		return index(a) < index(b)
-	})
-	m := []fromTo{}
-	for _, s := range ss.s {
-		m = append(m, fromTo{index(s), index(ss.update[s])})
-	}
-	b.writeSlice(name, m)
-}
-
-const base = 'z' - 'a' + 1
-
-func strToInt(s string) uint {
-	v := uint(0)
-	for i := 0; i < len(s); i++ {
-		v *= base
-		v += uint(s[i] - 'a')
-	}
-	return v
-}
-
-// converts the given integer to the original ASCII string passed to strToInt.
-// len(s) must match the number of characters obtained.
-func intToStr(v uint, s []byte) {
-	for i := len(s) - 1; i >= 0; i-- {
-		s[i] = byte(v%base) + 'a'
-		v /= base
-	}
-}
-
-func (b *builder) writeBitVector(name string, ss []string) {
-	vec := make([]uint8, int(math.Ceil(math.Pow(base, float64(len(ss[0])))/8)))
-	for _, s := range ss {
-		v := strToInt(s)
-		vec[v/8] |= 1 << (v % 8)
-	}
-	b.writeSlice(name, vec)
-}
-
-// TODO: convert this type into a list or two-stage trie.
-func (b *builder) writeMapFunc(name string, m map[string]string, f func(string) uint16) {
-	b.comment(name)
-	v := reflect.ValueOf(m)
-	sz := v.Len() * (2 + int(v.Type().Key().Size()))
-	for _, k := range m {
-		sz += len(k)
-	}
-	b.addSize(sz)
-	keys := []string{}
-	b.pf(`var %s = map[string]uint16{`, name)
-	for k := range m {
-		keys = append(keys, k)
-	}
-	sort.Strings(keys)
-	for _, k := range keys {
-		b.pf("\t%q: %v,", k, f(m[k]))
-	}
-	b.p("}")
-}
-
-func (b *builder) writeMap(name string, m interface{}) {
-	b.comment(name)
-	v := reflect.ValueOf(m)
-	sz := v.Len() * (2 + int(v.Type().Key().Size()) + int(v.Type().Elem().Size()))
-	b.addSize(sz)
-	f := strings.FieldsFunc(fmt.Sprintf("%#v", m), func(r rune) bool {
-		return strings.IndexRune("{}, ", r) != -1
-	})
-	sort.Strings(f[1:])
-	b.pf(`var %s = %s{`, name, f[0])
-	for _, kv := range f[1:] {
-		b.pf("\t%s,", kv)
-	}
-	b.p("}")
-}
-
-func (b *builder) langIndex(s string) uint16 {
-	if s == "und" {
-		return 0
-	}
-	if i, ok := b.lang.find(s); ok {
-		return uint16(i)
-	}
-	return uint16(strToInt(s)) + uint16(len(b.lang.s))
-}
-
-// inc advances the string to its lexicographical successor.
-func inc(s string) string {
-	const maxTagLength = 4
-	var buf [maxTagLength]byte
-	intToStr(strToInt(strings.ToLower(s))+1, buf[:len(s)])
-	for i := 0; i < len(s); i++ {
-		if s[i] <= 'Z' {
-			buf[i] -= 'a' - 'A'
-		}
-	}
-	return string(buf[:len(s)])
-}
-
-func (b *builder) parseIndices() {
-	meta := b.supp.Metadata
-
-	for k, v := range b.registry {
-		var ss *stringSet
-		switch v.typ {
-		case "language":
-			if len(k) == 2 || v.suppressScript != "" || v.scope == "special" {
-				b.lang.add(k)
-				continue
-			} else {
-				ss = &b.langNoIndex
-			}
-		case "region":
-			ss = &b.region
-		case "script":
-			ss = &b.script
-		case "variant":
-			ss = &b.variant
-		default:
-			continue
-		}
-		ss.add(k)
-	}
-	// Include any language for which there is data.
-	for _, lang := range b.data.Locales() {
-		if x := b.data.RawLDML(lang); false ||
-			x.LocaleDisplayNames != nil ||
-			x.Characters != nil ||
-			x.Delimiters != nil ||
-			x.Measurement != nil ||
-			x.Dates != nil ||
-			x.Numbers != nil ||
-			x.Units != nil ||
-			x.ListPatterns != nil ||
-			x.Collations != nil ||
-			x.Segmentations != nil ||
-			x.Rbnf != nil ||
-			x.Annotations != nil ||
-			x.Metadata != nil {
-
-			from := strings.Split(lang, "_")
-			if lang := from[0]; lang != "root" {
-				b.lang.add(lang)
-			}
-		}
-	}
-	// Include locales for plural rules, which uses a different structure.
-	for _, plurals := range b.data.Supplemental().Plurals {
-		for _, rules := range plurals.PluralRules {
-			for _, lang := range strings.Split(rules.Locales, " ") {
-				if lang = strings.Split(lang, "_")[0]; lang != "root" {
-					b.lang.add(lang)
-				}
-			}
-		}
-	}
-	// Include languages in likely subtags.
-	for _, m := range b.supp.LikelySubtags.LikelySubtag {
-		from := strings.Split(m.From, "_")
-		b.lang.add(from[0])
-	}
-	// Include ISO-639 alpha-3 bibliographic entries.
-	for _, a := range meta.Alias.LanguageAlias {
-		if a.Reason == "bibliographic" {
-			b.langNoIndex.add(a.Type)
-		}
-	}
-	// Include regions in territoryAlias (not all are in the IANA registry!)
-	for _, reg := range b.supp.Metadata.Alias.TerritoryAlias {
-		if len(reg.Type) == 2 {
-			b.region.add(reg.Type)
-		}
-	}
-
-	for _, s := range b.lang.s {
-		if len(s) == 3 {
-			b.langNoIndex.remove(s)
-		}
-	}
-	b.writeConst("numLanguages", len(b.lang.slice())+len(b.langNoIndex.slice()))
-	b.writeConst("numScripts", len(b.script.slice()))
-	b.writeConst("numRegions", len(b.region.slice()))
-
-	// Add dummy codes at the start of each list to represent "unspecified".
-	b.lang.add("---")
-	b.script.add("----")
-	b.region.add("---")
-
-	// common locales
-	b.locale.parse(meta.DefaultContent.Locales)
-}
-
-// TODO: region inclusion data will probably not be use used in future matchers.
-
-func (b *builder) computeRegionGroups() {
-	b.groups = make(map[int]index)
-
-	// Create group indices.
-	for i := 1; b.region.s[i][0] < 'A'; i++ { // Base M49 indices on regionID.
-		b.groups[i] = index(len(b.groups))
-	}
-	for _, g := range b.supp.TerritoryContainment.Group {
-		// Skip UN and EURO zone as they are flattening the containment
-		// relationship.
-		if g.Type == "EZ" || g.Type == "UN" {
-			continue
-		}
-		group := b.region.index(g.Type)
-		if _, ok := b.groups[group]; !ok {
-			b.groups[group] = index(len(b.groups))
-		}
-	}
-	if len(b.groups) > 32 {
-		log.Fatalf("only 32 groups supported, found %d", len(b.groups))
-	}
-	b.writeConst("nRegionGroups", len(b.groups))
-}
-
-var langConsts = []string{
-	"af", "am", "ar", "az", "bg", "bn", "ca", "cs", "da", "de", "el", "en", "es",
-	"et", "fa", "fi", "fil", "fr", "gu", "he", "hi", "hr", "hu", "hy", "id", "is",
-	"it", "ja", "ka", "kk", "km", "kn", "ko", "ky", "lo", "lt", "lv", "mk", "ml",
-	"mn", "mo", "mr", "ms", "mul", "my", "nb", "ne", "nl", "no", "pa", "pl", "pt",
-	"ro", "ru", "sh", "si", "sk", "sl", "sq", "sr", "sv", "sw", "ta", "te", "th",
-	"tl", "tn", "tr", "uk", "ur", "uz", "vi", "zh", "zu",
-
-	// constants for grandfathered tags (if not already defined)
-	"jbo", "ami", "bnn", "hak", "tlh", "lb", "nv", "pwn", "tao", "tay", "tsu",
-	"nn", "sfb", "vgt", "sgg", "cmn", "nan", "hsn",
-}
-
-// writeLanguage generates all tables needed for language canonicalization.
-func (b *builder) writeLanguage() {
-	meta := b.supp.Metadata
-
-	b.writeConst("nonCanonicalUnd", b.lang.index("und"))
-	b.writeConsts(func(s string) int { return int(b.langIndex(s)) }, langConsts...)
-	b.writeConst("langPrivateStart", b.langIndex("qaa"))
-	b.writeConst("langPrivateEnd", b.langIndex("qtz"))
-
-	// Get language codes that need to be mapped (overlong 3-letter codes,
-	// deprecated 2-letter codes, legacy and grandfathered tags.)
-	langAliasMap := stringSet{}
-	aliasTypeMap := map[string]langAliasType{}
-
-	// altLangISO3 get the alternative ISO3 names that need to be mapped.
-	altLangISO3 := stringSet{}
-	// Add dummy start to avoid the use of index 0.
-	altLangISO3.add("---")
-	altLangISO3.updateLater("---", "aa")
-
-	lang := b.lang.clone()
-	for _, a := range meta.Alias.LanguageAlias {
-		if a.Replacement == "" {
-			a.Replacement = "und"
-		}
-		// TODO: support mapping to tags
-		repl := strings.SplitN(a.Replacement, "_", 2)[0]
-		if a.Reason == "overlong" {
-			if len(a.Replacement) == 2 && len(a.Type) == 3 {
-				lang.updateLater(a.Replacement, a.Type)
-			}
-		} else if len(a.Type) <= 3 {
-			switch a.Reason {
-			case "macrolanguage":
-				aliasTypeMap[a.Type] = langMacro
-			case "deprecated":
-				// handled elsewhere
-				continue
-			case "bibliographic", "legacy":
-				if a.Type == "no" {
-					continue
-				}
-				aliasTypeMap[a.Type] = langLegacy
-			default:
-				log.Fatalf("new %s alias: %s", a.Reason, a.Type)
-			}
-			langAliasMap.add(a.Type)
-			langAliasMap.updateLater(a.Type, repl)
-		}
-	}
-	// Manually add the mapping of "nb" (Norwegian) to its macro language.
-	// This can be removed if CLDR adopts this change.
-	langAliasMap.add("nb")
-	langAliasMap.updateLater("nb", "no")
-	aliasTypeMap["nb"] = langMacro
-
-	for k, v := range b.registry {
-		// Also add deprecated values for 3-letter ISO codes, which CLDR omits.
-		if v.typ == "language" && v.deprecated != "" && v.preferred != "" {
-			langAliasMap.add(k)
-			langAliasMap.updateLater(k, v.preferred)
-			aliasTypeMap[k] = langDeprecated
-		}
-	}
-	// Fix CLDR mappings.
-	lang.updateLater("tl", "tgl")
-	lang.updateLater("sh", "hbs")
-	lang.updateLater("mo", "mol")
-	lang.updateLater("no", "nor")
-	lang.updateLater("tw", "twi")
-	lang.updateLater("nb", "nob")
-	lang.updateLater("ak", "aka")
-	lang.updateLater("bh", "bih")
-
-	// Ensure that each 2-letter code is matched with a 3-letter code.
-	for _, v := range lang.s[1:] {
-		s, ok := lang.update[v]
-		if !ok {
-			if s, ok = lang.update[langAliasMap.update[v]]; !ok {
-				continue
-			}
-			lang.update[v] = s
-		}
-		if v[0] != s[0] {
-			altLangISO3.add(s)
-			altLangISO3.updateLater(s, v)
-		}
-	}
-
-	// Complete canonialized language tags.
-	lang.freeze()
-	for i, v := range lang.s {
-		// We can avoid these manual entries by using the IANI registry directly.
-		// Seems easier to update the list manually, as changes are rare.
-		// The panic in this loop will trigger if we miss an entry.
-		add := ""
-		if s, ok := lang.update[v]; ok {
-			if s[0] == v[0] {
-				add = s[1:]
-			} else {
-				add = string([]byte{0, byte(altLangISO3.index(s))})
-			}
-		} else if len(v) == 3 {
-			add = "\x00"
-		} else {
-			log.Panicf("no data for long form of %q", v)
-		}
-		lang.s[i] += add
-	}
-	b.writeConst("lang", tag.Index(lang.join()))
-
-	b.writeConst("langNoIndexOffset", len(b.lang.s))
-
-	// space of all valid 3-letter language identifiers.
-	b.writeBitVector("langNoIndex", b.langNoIndex.slice())
-
-	altLangIndex := []uint16{}
-	for i, s := range altLangISO3.slice() {
-		altLangISO3.s[i] += string([]byte{byte(len(altLangIndex))})
-		if i > 0 {
-			idx := b.lang.index(altLangISO3.update[s])
-			altLangIndex = append(altLangIndex, uint16(idx))
-		}
-	}
-	b.writeConst("altLangISO3", tag.Index(altLangISO3.join()))
-	b.writeSlice("altLangIndex", altLangIndex)
-
-	b.writeSortedMap("langAliasMap", &langAliasMap, b.langIndex)
-	types := make([]langAliasType, len(langAliasMap.s))
-	for i, s := range langAliasMap.s {
-		types[i] = aliasTypeMap[s]
-	}
-	b.writeSlice("langAliasTypes", types)
-}
-
-var scriptConsts = []string{
-	"Latn", "Hani", "Hans", "Hant", "Qaaa", "Qaai", "Qabx", "Zinh", "Zyyy",
-	"Zzzz",
-}
-
-func (b *builder) writeScript() {
-	b.writeConsts(b.script.index, scriptConsts...)
-	b.writeConst("script", tag.Index(b.script.join()))
-
-	supp := make([]uint8, len(b.lang.slice()))
-	for i, v := range b.lang.slice()[1:] {
-		if sc := b.registry[v].suppressScript; sc != "" {
-			supp[i+1] = uint8(b.script.index(sc))
-		}
-	}
-	b.writeSlice("suppressScript", supp)
-
-	// There is only one deprecated script in CLDR. This value is hard-coded.
-	// We check here if the code must be updated.
-	for _, a := range b.supp.Metadata.Alias.ScriptAlias {
-		if a.Type != "Qaai" {
-			log.Panicf("unexpected deprecated stript %q", a.Type)
-		}
-	}
-}
-
-func parseM49(s string) int16 {
-	if len(s) == 0 {
-		return 0
-	}
-	v, err := strconv.ParseUint(s, 10, 10)
-	failOnError(err)
-	return int16(v)
-}
-
-var regionConsts = []string{
-	"001", "419", "BR", "CA", "ES", "GB", "MD", "PT", "UK", "US",
-	"ZZ", "XA", "XC", "XK", // Unofficial tag for Kosovo.
-}
-
-func (b *builder) writeRegion() {
-	b.writeConsts(b.region.index, regionConsts...)
-
-	isoOffset := b.region.index("AA")
-	m49map := make([]int16, len(b.region.slice()))
-	fromM49map := make(map[int16]int)
-	altRegionISO3 := ""
-	altRegionIDs := []uint16{}
-
-	b.writeConst("isoRegionOffset", isoOffset)
-
-	// 2-letter region lookup and mapping to numeric codes.
-	regionISO := b.region.clone()
-	regionISO.s = regionISO.s[isoOffset:]
-	regionISO.sorted = false
-
-	regionTypes := make([]byte, len(b.region.s))
-
-	// Is the region valid BCP 47?
-	for s, e := range b.registry {
-		if len(s) == 2 && s == strings.ToUpper(s) {
-			i := b.region.index(s)
-			for _, d := range e.description {
-				if strings.Contains(d, "Private use") {
-					regionTypes[i] = iso3166UserAssgined
-				}
-			}
-			regionTypes[i] |= bcp47Region
-		}
-	}
-
-	// Is the region a valid ccTLD?
-	r := gen.OpenIANAFile("domains/root/db")
-	defer r.Close()
-
-	buf, err := ioutil.ReadAll(r)
-	failOnError(err)
-	re := regexp.MustCompile(`"/domains/root/db/([a-z]{2}).html"`)
-	for _, m := range re.FindAllSubmatch(buf, -1) {
-		i := b.region.index(strings.ToUpper(string(m[1])))
-		regionTypes[i] |= ccTLD
-	}
-
-	b.writeSlice("regionTypes", regionTypes)
-
-	iso3Set := make(map[string]int)
-	update := func(iso2, iso3 string) {
-		i := regionISO.index(iso2)
-		if j, ok := iso3Set[iso3]; !ok && iso3[0] == iso2[0] {
-			regionISO.s[i] += iso3[1:]
-			iso3Set[iso3] = -1
-		} else {
-			if ok && j >= 0 {
-				regionISO.s[i] += string([]byte{0, byte(j)})
-			} else {
-				iso3Set[iso3] = len(altRegionISO3)
-				regionISO.s[i] += string([]byte{0, byte(len(altRegionISO3))})
-				altRegionISO3 += iso3
-				altRegionIDs = append(altRegionIDs, uint16(isoOffset+i))
-			}
-		}
-	}
-	for _, tc := range b.supp.CodeMappings.TerritoryCodes {
-		i := regionISO.index(tc.Type) + isoOffset
-		if d := m49map[i]; d != 0 {
-			log.Panicf("%s found as a duplicate UN.M49 code of %03d", tc.Numeric, d)
-		}
-		m49 := parseM49(tc.Numeric)
-		m49map[i] = m49
-		if r := fromM49map[m49]; r == 0 {
-			fromM49map[m49] = i
-		} else if r != i {
-			dep := b.registry[regionISO.s[r-isoOffset]].deprecated
-			if t := b.registry[tc.Type]; t != nil && dep != "" && (t.deprecated == "" || t.deprecated > dep) {
-				fromM49map[m49] = i
-			}
-		}
-	}
-	for _, ta := range b.supp.Metadata.Alias.TerritoryAlias {
-		if len(ta.Type) == 3 && ta.Type[0] <= '9' && len(ta.Replacement) == 2 {
-			from := parseM49(ta.Type)
-			if r := fromM49map[from]; r == 0 {
-				fromM49map[from] = regionISO.index(ta.Replacement) + isoOffset
-			}
-		}
-	}
-	for _, tc := range b.supp.CodeMappings.TerritoryCodes {
-		if len(tc.Alpha3) == 3 {
-			update(tc.Type, tc.Alpha3)
-		}
-	}
-	// This entries are not included in territoryCodes. Mostly 3-letter variants
-	// of deleted codes and an entry for QU.
-	for _, m := range []struct{ iso2, iso3 string }{
-		{"CT", "CTE"},
-		{"DY", "DHY"},
-		{"HV", "HVO"},
-		{"JT", "JTN"},
-		{"MI", "MID"},
-		{"NH", "NHB"},
-		{"NQ", "ATN"},
-		{"PC", "PCI"},
-		{"PU", "PUS"},
-		{"PZ", "PCZ"},
-		{"RH", "RHO"},
-		{"VD", "VDR"},
-		{"WK", "WAK"},
-		// These three-letter codes are used for others as well.
-		{"FQ", "ATF"},
-	} {
-		update(m.iso2, m.iso3)
-	}
-	for i, s := range regionISO.s {
-		if len(s) != 4 {
-			regionISO.s[i] = s + "  "
-		}
-	}
-	b.writeConst("regionISO", tag.Index(regionISO.join()))
-	b.writeConst("altRegionISO3", altRegionISO3)
-	b.writeSlice("altRegionIDs", altRegionIDs)
-
-	// Create list of deprecated regions.
-	// TODO: consider inserting SF -> FI. Not included by CLDR, but is the only
-	// Transitionally-reserved mapping not included.
-	regionOldMap := stringSet{}
-	// Include regions in territoryAlias (not all are in the IANA registry!)
-	for _, reg := range b.supp.Metadata.Alias.TerritoryAlias {
-		if len(reg.Type) == 2 && reg.Reason == "deprecated" && len(reg.Replacement) == 2 {
-			regionOldMap.add(reg.Type)
-			regionOldMap.updateLater(reg.Type, reg.Replacement)
-			i, _ := regionISO.find(reg.Type)
-			j, _ := regionISO.find(reg.Replacement)
-			if k := m49map[i+isoOffset]; k == 0 {
-				m49map[i+isoOffset] = m49map[j+isoOffset]
-			}
-		}
-	}
-	b.writeSortedMap("regionOldMap", &regionOldMap, func(s string) uint16 {
-		return uint16(b.region.index(s))
-	})
-	// 3-digit region lookup, groupings.
-	for i := 1; i < isoOffset; i++ {
-		m := parseM49(b.region.s[i])
-		m49map[i] = m
-		fromM49map[m] = i
-	}
-	b.writeSlice("m49", m49map)
-
-	const (
-		searchBits = 7
-		regionBits = 9
-	)
-	if len(m49map) >= 1<<regionBits {
-		log.Fatalf("Maximum number of regions exceeded: %d > %d", len(m49map), 1<<regionBits)
-	}
-	m49Index := [9]int16{}
-	fromM49 := []uint16{}
-	m49 := []int{}
-	for k, _ := range fromM49map {
-		m49 = append(m49, int(k))
-	}
-	sort.Ints(m49)
-	for _, k := range m49[1:] {
-		val := (k & (1<<searchBits - 1)) << regionBits
-		fromM49 = append(fromM49, uint16(val|fromM49map[int16(k)]))
-		m49Index[1:][k>>searchBits] = int16(len(fromM49))
-	}
-	b.writeSlice("m49Index", m49Index)
-	b.writeSlice("fromM49", fromM49)
-}
-
-const (
-	// TODO: put these lists in regionTypes as user data? Could be used for
-	// various optimizations and refinements and could be exposed in the API.
-	iso3166Except = "AC CP DG EA EU FX IC SU TA UK"
-	iso3166Trans  = "AN BU CS NT TP YU ZR" // SF is not in our set of Regions.
-	// DY and RH are actually not deleted, but indeterminately reserved.
-	iso3166DelCLDR = "CT DD DY FQ HV JT MI NH NQ PC PU PZ RH VD WK YD"
-)
-
-const (
-	iso3166UserAssgined = 1 << iota
-	ccTLD
-	bcp47Region
-)
-
-func find(list []string, s string) int {
-	for i, t := range list {
-		if t == s {
-			return i
-		}
-	}
-	return -1
-}
-
-// writeVariants generates per-variant information and creates a map from variant
-// name to index value. We assign index values such that sorting multiple
-// variants by index value will result in the correct order.
-// There are two types of variants: specialized and general. Specialized variants
-// are only applicable to certain language or language-script pairs. Generalized
-// variants apply to any language. Generalized variants always sort after
-// specialized variants.  We will therefore always assign a higher index value
-// to a generalized variant than any other variant. Generalized variants are
-// sorted alphabetically among themselves.
-// Specialized variants may also sort after other specialized variants. Such
-// variants will be ordered after any of the variants they may follow.
-// We assume that if a variant x is followed by a variant y, then for any prefix
-// p of x, p-x is a prefix of y. This allows us to order tags based on the
-// maximum of the length of any of its prefixes.
-// TODO: it is possible to define a set of Prefix values on variants such that
-// a total order cannot be defined to the point that this algorithm breaks.
-// In other words, we cannot guarantee the same order of variants for the
-// future using the same algorithm or for non-compliant combinations of
-// variants. For this reason, consider using simple alphabetic sorting
-// of variants and ignore Prefix restrictions altogether.
-func (b *builder) writeVariant() {
-	generalized := stringSet{}
-	specialized := stringSet{}
-	specializedExtend := stringSet{}
-	// Collate the variants by type and check assumptions.
-	for _, v := range b.variant.slice() {
-		e := b.registry[v]
-		if len(e.prefix) == 0 {
-			generalized.add(v)
-			continue
-		}
-		c := strings.Split(e.prefix[0], "-")
-		hasScriptOrRegion := false
-		if len(c) > 1 {
-			_, hasScriptOrRegion = b.script.find(c[1])
-			if !hasScriptOrRegion {
-				_, hasScriptOrRegion = b.region.find(c[1])
-
-			}
-		}
-		if len(c) == 1 || len(c) == 2 && hasScriptOrRegion {
-			// Variant is preceded by a language.
-			specialized.add(v)
-			continue
-		}
-		// Variant is preceded by another variant.
-		specializedExtend.add(v)
-		prefix := c[0] + "-"
-		if hasScriptOrRegion {
-			prefix += c[1]
-		}
-		for _, p := range e.prefix {
-			// Verify that the prefix minus the last element is a prefix of the
-			// predecessor element.
-			i := strings.LastIndex(p, "-")
-			pred := b.registry[p[i+1:]]
-			if find(pred.prefix, p[:i]) < 0 {
-				log.Fatalf("prefix %q for variant %q not consistent with predecessor spec", p, v)
-			}
-			// The sorting used below does not work in the general case. It works
-			// if we assume that variants that may be followed by others only have
-			// prefixes of the same length. Verify this.
-			count := strings.Count(p[:i], "-")
-			for _, q := range pred.prefix {
-				if c := strings.Count(q, "-"); c != count {
-					log.Fatalf("variant %q preceding %q has a prefix %q of size %d; want %d", p[i+1:], v, q, c, count)
-				}
-			}
-			if !strings.HasPrefix(p, prefix) {
-				log.Fatalf("prefix %q of variant %q should start with %q", p, v, prefix)
-			}
-		}
-	}
-
-	// Sort extended variants.
-	a := specializedExtend.s
-	less := func(v, w string) bool {
-		// Sort by the maximum number of elements.
-		maxCount := func(s string) (max int) {
-			for _, p := range b.registry[s].prefix {
-				if c := strings.Count(p, "-"); c > max {
-					max = c
-				}
-			}
-			return
-		}
-		if cv, cw := maxCount(v), maxCount(w); cv != cw {
-			return cv < cw
-		}
-		// Sort by name as tie breaker.
-		return v < w
-	}
-	sort.Sort(funcSorter{less, sort.StringSlice(a)})
-	specializedExtend.frozen = true
-
-	// Create index from variant name to index.
-	variantIndex := make(map[string]uint8)
-	add := func(s []string) {
-		for _, v := range s {
-			variantIndex[v] = uint8(len(variantIndex))
-		}
-	}
-	add(specialized.slice())
-	add(specializedExtend.s)
-	numSpecialized := len(variantIndex)
-	add(generalized.slice())
-	if n := len(variantIndex); n > 255 {
-		log.Fatalf("maximum number of variants exceeded: was %d; want <= 255", n)
-	}
-	b.writeMap("variantIndex", variantIndex)
-	b.writeConst("variantNumSpecialized", numSpecialized)
-}
-
-func (b *builder) writeLanguageInfo() {
-}
-
-// writeLikelyData writes tables that are used both for finding parent relations and for
-// language matching.  Each entry contains additional bits to indicate the status of the
-// data to know when it cannot be used for parent relations.
-func (b *builder) writeLikelyData() {
-	const (
-		isList = 1 << iota
-		scriptInFrom
-		regionInFrom
-	)
-	type ( // generated types
-		likelyScriptRegion struct {
-			region uint16
-			script uint8
-			flags  uint8
-		}
-		likelyLangScript struct {
-			lang   uint16
-			script uint8
-			flags  uint8
-		}
-		likelyLangRegion struct {
-			lang   uint16
-			region uint16
-		}
-		// likelyTag is used for getting likely tags for group regions, where
-		// the likely region might be a region contained in the group.
-		likelyTag struct {
-			lang   uint16
-			region uint16
-			script uint8
-		}
-	)
-	var ( // generated variables
-		likelyRegionGroup = make([]likelyTag, len(b.groups))
-		likelyLang        = make([]likelyScriptRegion, len(b.lang.s))
-		likelyRegion      = make([]likelyLangScript, len(b.region.s))
-		likelyScript      = make([]likelyLangRegion, len(b.script.s))
-		likelyLangList    = []likelyScriptRegion{}
-		likelyRegionList  = []likelyLangScript{}
-	)
-	type fromTo struct {
-		from, to []string
-	}
-	langToOther := map[int][]fromTo{}
-	regionToOther := map[int][]fromTo{}
-	for _, m := range b.supp.LikelySubtags.LikelySubtag {
-		from := strings.Split(m.From, "_")
-		to := strings.Split(m.To, "_")
-		if len(to) != 3 {
-			log.Fatalf("invalid number of subtags in %q: found %d, want 3", m.To, len(to))
-		}
-		if len(from) > 3 {
-			log.Fatalf("invalid number of subtags: found %d, want 1-3", len(from))
-		}
-		if from[0] != to[0] && from[0] != "und" {
-			log.Fatalf("unexpected language change in expansion: %s -> %s", from, to)
-		}
-		if len(from) == 3 {
-			if from[2] != to[2] {
-				log.Fatalf("unexpected region change in expansion: %s -> %s", from, to)
-			}
-			if from[0] != "und" {
-				log.Fatalf("unexpected fully specified from tag: %s -> %s", from, to)
-			}
-		}
-		if len(from) == 1 || from[0] != "und" {
-			id := 0
-			if from[0] != "und" {
-				id = b.lang.index(from[0])
-			}
-			langToOther[id] = append(langToOther[id], fromTo{from, to})
-		} else if len(from) == 2 && len(from[1]) == 4 {
-			sid := b.script.index(from[1])
-			likelyScript[sid].lang = uint16(b.langIndex(to[0]))
-			likelyScript[sid].region = uint16(b.region.index(to[2]))
-		} else {
-			r := b.region.index(from[len(from)-1])
-			if id, ok := b.groups[r]; ok {
-				if from[0] != "und" {
-					log.Fatalf("region changed unexpectedly: %s -> %s", from, to)
-				}
-				likelyRegionGroup[id].lang = uint16(b.langIndex(to[0]))
-				likelyRegionGroup[id].script = uint8(b.script.index(to[1]))
-				likelyRegionGroup[id].region = uint16(b.region.index(to[2]))
-			} else {
-				regionToOther[r] = append(regionToOther[r], fromTo{from, to})
-			}
-		}
-	}
-	b.writeType(likelyLangRegion{})
-	b.writeSlice("likelyScript", likelyScript)
-
-	for id := range b.lang.s {
-		list := langToOther[id]
-		if len(list) == 1 {
-			likelyLang[id].region = uint16(b.region.index(list[0].to[2]))
-			likelyLang[id].script = uint8(b.script.index(list[0].to[1]))
-		} else if len(list) > 1 {
-			likelyLang[id].flags = isList
-			likelyLang[id].region = uint16(len(likelyLangList))
-			likelyLang[id].script = uint8(len(list))
-			for _, x := range list {
-				flags := uint8(0)
-				if len(x.from) > 1 {
-					if x.from[1] == x.to[2] {
-						flags = regionInFrom
-					} else {
-						flags = scriptInFrom
-					}
-				}
-				likelyLangList = append(likelyLangList, likelyScriptRegion{
-					region: uint16(b.region.index(x.to[2])),
-					script: uint8(b.script.index(x.to[1])),
-					flags:  flags,
-				})
-			}
-		}
-	}
-	// TODO: merge suppressScript data with this table.
-	b.writeType(likelyScriptRegion{})
-	b.writeSlice("likelyLang", likelyLang)
-	b.writeSlice("likelyLangList", likelyLangList)
-
-	for id := range b.region.s {
-		list := regionToOther[id]
-		if len(list) == 1 {
-			likelyRegion[id].lang = uint16(b.langIndex(list[0].to[0]))
-			likelyRegion[id].script = uint8(b.script.index(list[0].to[1]))
-			if len(list[0].from) > 2 {
-				likelyRegion[id].flags = scriptInFrom
-			}
-		} else if len(list) > 1 {
-			likelyRegion[id].flags = isList
-			likelyRegion[id].lang = uint16(len(likelyRegionList))
-			likelyRegion[id].script = uint8(len(list))
-			for i, x := range list {
-				if len(x.from) == 2 && i != 0 || i > 0 && len(x.from) != 3 {
-					log.Fatalf("unspecified script must be first in list: %v at %d", x.from, i)
-				}
-				x := likelyLangScript{
-					lang:   uint16(b.langIndex(x.to[0])),
-					script: uint8(b.script.index(x.to[1])),
-				}
-				if len(list[0].from) > 2 {
-					x.flags = scriptInFrom
-				}
-				likelyRegionList = append(likelyRegionList, x)
-			}
-		}
-	}
-	b.writeType(likelyLangScript{})
-	b.writeSlice("likelyRegion", likelyRegion)
-	b.writeSlice("likelyRegionList", likelyRegionList)
-
-	b.writeType(likelyTag{})
-	b.writeSlice("likelyRegionGroup", likelyRegionGroup)
-}
-
-type mutualIntelligibility struct {
-	want, have uint16
-	conf       uint8
-	oneway     bool
-}
-
-type scriptIntelligibility struct {
-	lang       uint16 // langID or 0 if *
-	want, have uint8
-	conf       uint8
-}
-
-type sortByConf []mutualIntelligibility
-
-func (l sortByConf) Less(a, b int) bool {
-	return l[a].conf > l[b].conf
-}
-
-func (l sortByConf) Swap(a, b int) {
-	l[a], l[b] = l[b], l[a]
-}
-
-func (l sortByConf) Len() int {
-	return len(l)
-}
-
-// toConf converts a percentage value [0, 100] to a confidence class.
-func toConf(pct uint8) uint8 {
-	switch {
-	case pct == 100:
-		return 3 // Exact
-	case pct >= 90:
-		return 2 // High
-	case pct > 50:
-		return 1 // Low
-	default:
-		return 0 // No
-	}
-}
-
-// writeMatchData writes tables with languages and scripts for which there is
-// mutual intelligibility. The data is based on CLDR's languageMatching data.
-// Note that we use a different algorithm than the one defined by CLDR and that
-// we slightly modify the data. For example, we convert scores to confidence levels.
-// We also drop all region-related data as we use a different algorithm to
-// determine region equivalence.
-func (b *builder) writeMatchData() {
-	b.writeType(mutualIntelligibility{})
-	b.writeType(scriptIntelligibility{})
-	lm := b.supp.LanguageMatching.LanguageMatches
-	cldr.MakeSlice(&lm).SelectAnyOf("type", "written")
-
-	matchLang := []mutualIntelligibility{}
-	matchScript := []scriptIntelligibility{}
-	// Convert the languageMatch entries in lists keyed by desired language.
-	for _, m := range lm[0].LanguageMatch {
-		// Different versions of CLDR use different separators.
-		desired := strings.Replace(m.Desired, "-", "_", -1)
-		supported := strings.Replace(m.Supported, "-", "_", -1)
-		d := strings.Split(desired, "_")
-		s := strings.Split(supported, "_")
-		if len(d) != len(s) || len(d) > 2 {
-			// Skip all entries with regions and work around CLDR bug.
-			continue
-		}
-		pct, _ := strconv.ParseInt(m.Percent, 10, 8)
-		if len(d) == 2 && d[0] == s[0] && len(d[1]) == 4 {
-			// language-script pair.
-			lang := uint16(0)
-			if d[0] != "*" {
-				lang = uint16(b.langIndex(d[0]))
-			}
-			matchScript = append(matchScript, scriptIntelligibility{
-				lang: lang,
-				want: uint8(b.script.index(d[1])),
-				have: uint8(b.script.index(s[1])),
-				conf: toConf(uint8(pct)),
-			})
-			if m.Oneway != "true" {
-				matchScript = append(matchScript, scriptIntelligibility{
-					lang: lang,
-					want: uint8(b.script.index(s[1])),
-					have: uint8(b.script.index(d[1])),
-					conf: toConf(uint8(pct)),
-				})
-			}
-		} else if len(d) == 1 && d[0] != "*" {
-			if pct == 100 {
-				// nb == no is already handled by macro mapping. Check there
-				// really is only this case.
-				if d[0] != "no" || s[0] != "nb" {
-					log.Fatalf("unhandled equivalence %s == %s", s[0], d[0])
-				}
-				continue
-			}
-			matchLang = append(matchLang, mutualIntelligibility{
-				want:   uint16(b.langIndex(d[0])),
-				have:   uint16(b.langIndex(s[0])),
-				conf:   uint8(pct),
-				oneway: m.Oneway == "true",
-			})
-		} else {
-			// TODO: Handle other mappings.
-			a := []string{"*;*", "*_*;*_*", "es_MX;es_419"}
-			s := strings.Join([]string{desired, supported}, ";")
-			if i := sort.SearchStrings(a, s); i == len(a) || a[i] != s {
-				log.Printf("%q not handled", s)
-			}
-		}
-	}
-	sort.Stable(sortByConf(matchLang))
-	// collapse percentage into confidence classes
-	for i, m := range matchLang {
-		matchLang[i].conf = toConf(m.conf)
-	}
-	b.writeSlice("matchLang", matchLang)
-	b.writeSlice("matchScript", matchScript)
-}
-
-func (b *builder) writeRegionInclusionData() {
-	var (
-		// mm holds for each group the set of groups with a distance of 1.
-		mm = make(map[int][]index)
-
-		// containment holds for each group the transitive closure of
-		// containment of other groups.
-		containment = make(map[index][]index)
-	)
-	for _, g := range b.supp.TerritoryContainment.Group {
-		// Skip UN and EURO zone as they are flattening the containment
-		// relationship.
-		if g.Type == "EZ" || g.Type == "UN" {
-			continue
-		}
-		group := b.region.index(g.Type)
-		groupIdx := b.groups[group]
-		for _, mem := range strings.Split(g.Contains, " ") {
-			r := b.region.index(mem)
-			mm[r] = append(mm[r], groupIdx)
-			if g, ok := b.groups[r]; ok {
-				mm[group] = append(mm[group], g)
-				containment[groupIdx] = append(containment[groupIdx], g)
-			}
-		}
-	}
-
-	regionContainment := make([]uint32, len(b.groups))
-	for _, g := range b.groups {
-		l := containment[g]
-
-		// Compute the transitive closure of containment.
-		for i := 0; i < len(l); i++ {
-			l = append(l, containment[l[i]]...)
-		}
-
-		// Compute the bitmask.
-		regionContainment[g] = 1 << g
-		for _, v := range l {
-			regionContainment[g] |= 1 << v
-		}
-		// log.Printf("%d: %X", g, regionContainment[g])
-	}
-	b.writeSlice("regionContainment", regionContainment)
-
-	regionInclusion := make([]uint8, len(b.region.s))
-	bvs := make(map[uint32]index)
-	// Make the first bitvector positions correspond with the groups.
-	for r, i := range b.groups {
-		bv := uint32(1 << i)
-		for _, g := range mm[r] {
-			bv |= 1 << g
-		}
-		bvs[bv] = i
-		regionInclusion[r] = uint8(bvs[bv])
-	}
-	for r := 1; r < len(b.region.s); r++ {
-		if _, ok := b.groups[r]; !ok {
-			bv := uint32(0)
-			for _, g := range mm[r] {
-				bv |= 1 << g
-			}
-			if bv == 0 {
-				// Pick the world for unspecified regions.
-				bv = 1 << b.groups[b.region.index("001")]
-			}
-			if _, ok := bvs[bv]; !ok {
-				bvs[bv] = index(len(bvs))
-			}
-			regionInclusion[r] = uint8(bvs[bv])
-		}
-	}
-	b.writeSlice("regionInclusion", regionInclusion)
-	regionInclusionBits := make([]uint32, len(bvs))
-	for k, v := range bvs {
-		regionInclusionBits[v] = uint32(k)
-	}
-	// Add bit vectors for increasingly large distances until a fixed point is reached.
-	regionInclusionNext := []uint8{}
-	for i := 0; i < len(regionInclusionBits); i++ {
-		bits := regionInclusionBits[i]
-		next := bits
-		for i := uint(0); i < uint(len(b.groups)); i++ {
-			if bits&(1<<i) != 0 {
-				next |= regionInclusionBits[i]
-			}
-		}
-		if _, ok := bvs[next]; !ok {
-			bvs[next] = index(len(bvs))
-			regionInclusionBits = append(regionInclusionBits, next)
-		}
-		regionInclusionNext = append(regionInclusionNext, uint8(bvs[next]))
-	}
-	b.writeSlice("regionInclusionBits", regionInclusionBits)
-	b.writeSlice("regionInclusionNext", regionInclusionNext)
-}
-
-type parentRel struct {
-	lang       uint16
-	script     uint8
-	maxScript  uint8
-	toRegion   uint16
-	fromRegion []uint16
-}
-
-func (b *builder) writeParents() {
-	b.writeType(parentRel{})
-
-	parents := []parentRel{}
-
-	// Construct parent overrides.
-	n := 0
-	for _, p := range b.data.Supplemental().ParentLocales.ParentLocale {
-		// Skipping non-standard scripts to root is implemented using addTags.
-		if p.Parent == "root" {
-			continue
-		}
-
-		sub := strings.Split(p.Parent, "_")
-		parent := parentRel{lang: b.langIndex(sub[0])}
-		if len(sub) == 2 {
-			// TODO: check that all undefined scripts are indeed Latn in these
-			// cases.
-			parent.maxScript = uint8(b.script.index("Latn"))
-			parent.toRegion = uint16(b.region.index(sub[1]))
-		} else {
-			parent.script = uint8(b.script.index(sub[1]))
-			parent.maxScript = parent.script
-			parent.toRegion = uint16(b.region.index(sub[2]))
-		}
-		for _, c := range strings.Split(p.Locales, " ") {
-			region := b.region.index(c[strings.LastIndex(c, "_")+1:])
-			parent.fromRegion = append(parent.fromRegion, uint16(region))
-		}
-		parents = append(parents, parent)
-		n += len(parent.fromRegion)
-	}
-	b.writeSliceAddSize("parents", n*2, parents)
-}
-
-func main() {
-	gen.Init()
-
-	gen.Repackage("gen_common.go", "common.go", "language")
-
-	w := gen.NewCodeWriter()
-	defer w.WriteGoFile("tables.go", "language")
-
-	fmt.Fprintln(w, `import "golang.org/x/text/internal/tag"`)
-
-	b := newBuilder(w)
-	gen.WriteCLDRVersion(w)
-
-	b.parseIndices()
-	b.writeType(fromTo{})
-	b.writeLanguage()
-	b.writeScript()
-	b.writeRegion()
-	b.writeVariant()
-	// TODO: b.writeLocale()
-	b.computeRegionGroups()
-	b.writeLikelyData()
-	b.writeMatchData()
-	b.writeRegionInclusionData()
-	b.writeParents()
-}
diff --git a/vendor/golang.org/x/text/language/match.go b/vendor/golang.org/x/text/language/match.go
index 8ad950533..bb4fff24d 100644
--- a/vendor/golang.org/x/text/language/match.go
+++ b/vendor/golang.org/x/text/language/match.go
@@ -440,8 +440,10 @@ func makeHaveTag(tag Tag, index int) (haveTag, langID) {
 // script to map to another and we rely on this to keep the code simple.
 func altScript(l langID, s scriptID) scriptID {
 	for _, alt := range matchScript {
-		if (alt.lang == 0 || langID(alt.lang) == l) && scriptID(alt.have) == s {
-			return scriptID(alt.want)
+		// TODO: also match cases where language is not the same.
+		if (langID(alt.wantLang) == l || langID(alt.haveLang) == l) &&
+			scriptID(alt.haveScript) == s {
+			return scriptID(alt.wantScript)
 		}
 	}
 	return 0
@@ -486,6 +488,16 @@ func (m *matcher) header(l langID) *matchHeader {
 	return h
 }
 
+func toConf(d uint8) Confidence {
+	if d <= 10 {
+		return High
+	}
+	if d < 30 {
+		return Low
+	}
+	return No
+}
+
 // newMatcher builds an index for the given supported tags and returns it as
 // a matcher. It also expands the index by considering various equivalence classes
 // for a given tag.
@@ -537,9 +549,9 @@ func newMatcher(supported []Tag) *matcher {
 	// Add entries for languages with mutual intelligibility as defined by CLDR's
 	// languageMatch data.
 	for _, ml := range matchLang {
-		update(ml.want, ml.have, Confidence(ml.conf), false)
+		update(ml.want, ml.have, toConf(ml.distance), false)
 		if !ml.oneway {
-			update(ml.have, ml.want, Confidence(ml.conf), false)
+			update(ml.have, ml.want, toConf(ml.distance), false)
 		}
 	}
 
diff --git a/vendor/golang.org/x/text/language/tables.go b/vendor/golang.org/x/text/language/tables.go
index 1a92e582b..a108554a4 100644
--- a/vendor/golang.org/x/text/language/tables.go
+++ b/vendor/golang.org/x/text/language/tables.go
@@ -1,11 +1,11 @@
-// This file was generated by go generate; DO NOT EDIT
+// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
 
 package language
 
 import "golang.org/x/text/internal/tag"
 
 // CLDRVersion is the CLDR version from which the tables in this package are derived.
-const CLDRVersion = "30"
+const CLDRVersion = "31"
 
 const numLanguages = 8654
 
@@ -18,105 +18,105 @@ type fromTo struct {
 	to   uint16
 }
 
-const nonCanonicalUnd = 1191
+const nonCanonicalUnd = 1199
 const (
-	_af  = 21
-	_am  = 38
-	_ar  = 57
-	_az  = 87
-	_bg  = 125
-	_bn  = 163
-	_ca  = 213
-	_cs  = 246
-	_da  = 253
-	_de  = 265
-	_el  = 305
-	_en  = 308
-	_es  = 313
-	_et  = 315
-	_fa  = 323
-	_fi  = 332
-	_fil = 334
-	_fr  = 345
-	_gu  = 413
-	_he  = 437
-	_hi  = 439
-	_hr  = 458
-	_hu  = 462
-	_hy  = 464
-	_id  = 474
-	_is  = 496
-	_it  = 497
-	_ja  = 504
-	_ka  = 520
-	_kk  = 570
-	_km  = 578
-	_kn  = 585
-	_ko  = 587
-	_ky  = 641
-	_lo  = 687
-	_lt  = 695
-	_lv  = 702
-	_mk  = 758
-	_ml  = 763
-	_mn  = 770
-	_mo  = 775
-	_mr  = 786
-	_ms  = 790
-	_mul = 797
-	_my  = 808
-	_nb  = 830
-	_ne  = 840
-	_nl  = 862
-	_no  = 870
-	_pa  = 916
-	_pl  = 938
-	_pt  = 951
-	_ro  = 979
-	_ru  = 985
-	_sh  = 1021
-	_si  = 1026
-	_sk  = 1032
-	_sl  = 1036
-	_sq  = 1063
-	_sr  = 1064
-	_sv  = 1082
-	_sw  = 1083
-	_ta  = 1094
-	_te  = 1111
-	_th  = 1121
-	_tl  = 1136
-	_tn  = 1142
-	_tr  = 1152
-	_uk  = 1188
-	_ur  = 1194
-	_uz  = 1202
-	_vi  = 1209
-	_zh  = 1311
-	_zu  = 1316
-	_jbo = 507
-	_ami = 1639
-	_bnn = 2346
-	_hak = 431
-	_tlh = 14456
-	_lb  = 652
-	_nv  = 890
-	_pwn = 12044
-	_tao = 14177
-	_tay = 14187
-	_tsu = 14651
-	_nn  = 865
-	_sfb = 13618
-	_vgt = 15690
-	_sgg = 13649
-	_cmn = 2996
-	_nan = 826
-	_hsn = 460
+	_af  = 22
+	_am  = 39
+	_ar  = 58
+	_az  = 88
+	_bg  = 126
+	_bn  = 165
+	_ca  = 215
+	_cs  = 249
+	_da  = 256
+	_de  = 268
+	_el  = 309
+	_en  = 312
+	_es  = 317
+	_et  = 319
+	_fa  = 327
+	_fi  = 336
+	_fil = 338
+	_fr  = 349
+	_gu  = 418
+	_he  = 442
+	_hi  = 444
+	_hr  = 463
+	_hu  = 467
+	_hy  = 469
+	_id  = 479
+	_is  = 502
+	_it  = 503
+	_ja  = 510
+	_ka  = 526
+	_kk  = 576
+	_km  = 584
+	_kn  = 591
+	_ko  = 594
+	_ky  = 648
+	_lo  = 694
+	_lt  = 702
+	_lv  = 709
+	_mk  = 765
+	_ml  = 770
+	_mn  = 777
+	_mo  = 782
+	_mr  = 793
+	_ms  = 797
+	_mul = 804
+	_my  = 815
+	_nb  = 837
+	_ne  = 847
+	_nl  = 869
+	_no  = 877
+	_pa  = 923
+	_pl  = 945
+	_pt  = 958
+	_ro  = 986
+	_ru  = 992
+	_sh  = 1029
+	_si  = 1034
+	_sk  = 1040
+	_sl  = 1044
+	_sq  = 1071
+	_sr  = 1072
+	_sv  = 1090
+	_sw  = 1091
+	_ta  = 1102
+	_te  = 1119
+	_th  = 1129
+	_tl  = 1144
+	_tn  = 1150
+	_tr  = 1160
+	_uk  = 1196
+	_ur  = 1202
+	_uz  = 1210
+	_vi  = 1217
+	_zh  = 1319
+	_zu  = 1324
+	_jbo = 513
+	_ami = 1647
+	_bnn = 2354
+	_hak = 436
+	_tlh = 14464
+	_lb  = 659
+	_nv  = 897
+	_pwn = 12052
+	_tao = 14185
+	_tay = 14195
+	_tsu = 14659
+	_nn  = 872
+	_sfb = 13626
+	_vgt = 15698
+	_sgg = 13657
+	_cmn = 3004
+	_nan = 833
+	_hsn = 465
 )
 
-const langPrivateStart = 0x2f67
+const langPrivateStart = 0x2f6f
 
-const langPrivateEnd = 0x316e
+const langPrivateEnd = 0x3176
 
 // lang holds an alphabetically sorted list of ISO-639 language identifiers.
 // All entries are 4 bytes. The index of the identifier (divided by 4) is the language tag.
@@ -125,132 +125,133 @@ const langPrivateEnd = 0x316e
 //       the second and third letter of the 3-letter ISO code.
 //     - otherwise: a 0 and a by 2 bits right-shifted index into altLangISO3.
 // For 3-byte language identifiers the 4th byte is 0.
-var lang tag.Index = "" + // Size: 5280 bytes
-	"---\x00aaaraai\x00aak\x00aau\x00abbkabi\x00abr\x00abt\x00aby\x00acd\x00a" +
-	"ce\x00ach\x00ada\x00ade\x00adj\x00ady\x00adz\x00aeveaeb\x00aey\x00affrag" +
-	"c\x00agd\x00agg\x00agm\x00ago\x00agq\x00aha\x00ahl\x00aho\x00ajg\x00akka" +
-	"akk\x00ala\x00ali\x00aln\x00alt\x00ammhamm\x00amn\x00amo\x00amp\x00anrga" +
-	"nc\x00ank\x00ann\x00any\x00aoj\x00aom\x00aoz\x00apc\x00apd\x00ape\x00apr" +
-	"\x00aps\x00apz\x00arraarc\x00arh\x00arn\x00aro\x00arq\x00ars\x00ary\x00a" +
-	"rz\x00assmasa\x00ase\x00asg\x00aso\x00ast\x00ata\x00atg\x00atj\x00auy" +
-	"\x00avvaavl\x00avn\x00avt\x00avu\x00awa\x00awb\x00awo\x00awx\x00ayymayb" +
-	"\x00azzebaakbal\x00ban\x00bap\x00bar\x00bas\x00bav\x00bax\x00bba\x00bbb" +
-	"\x00bbc\x00bbd\x00bbj\x00bbp\x00bbr\x00bcf\x00bch\x00bci\x00bcm\x00bcn" +
-	"\x00bco\x00bcq\x00bcu\x00bdd\x00beelbef\x00beh\x00bej\x00bem\x00bet\x00b" +
-	"ew\x00bex\x00bez\x00bfd\x00bfq\x00bft\x00bfy\x00bgulbgc\x00bgn\x00bgx" +
-	"\x00bhihbhb\x00bhg\x00bhi\x00bhk\x00bhl\x00bho\x00bhy\x00biisbib\x00big" +
-	"\x00bik\x00bim\x00bin\x00bio\x00biq\x00bjh\x00bji\x00bjj\x00bjn\x00bjo" +
-	"\x00bjr\x00bjz\x00bkc\x00bkm\x00bkq\x00bku\x00bkv\x00blt\x00bmambmh\x00b" +
-	"mk\x00bmq\x00bmu\x00bnenbng\x00bnm\x00bnp\x00boodboj\x00bom\x00bon\x00bp" +
-	"y\x00bqc\x00bqi\x00bqp\x00bqv\x00brrebra\x00brh\x00brx\x00brz\x00bsosbsj" +
-	"\x00bsq\x00bss\x00bst\x00bto\x00btt\x00btv\x00bua\x00buc\x00bud\x00bug" +
-	"\x00buk\x00bum\x00buo\x00bus\x00buu\x00bvb\x00bwd\x00bwr\x00bxh\x00bye" +
-	"\x00byn\x00byr\x00bys\x00byv\x00byx\x00bza\x00bze\x00bzf\x00bzh\x00bzw" +
-	"\x00caatcan\x00cbj\x00cch\x00ccp\x00ceheceb\x00cfa\x00cgg\x00chhachk\x00" +
-	"chm\x00cho\x00chp\x00chr\x00cja\x00cjm\x00cjv\x00ckb\x00ckl\x00cko\x00ck" +
-	"y\x00cla\x00cme\x00cooscop\x00cps\x00crrecrj\x00crk\x00crl\x00crm\x00crs" +
-	"\x00csescsb\x00csw\x00ctd\x00cuhucvhvcyymdaandad\x00daf\x00dag\x00dah" +
-	"\x00dak\x00dar\x00dav\x00dbd\x00dbq\x00dcc\x00ddn\x00deeuded\x00den\x00d" +
-	"ga\x00dgh\x00dgi\x00dgl\x00dgr\x00dgz\x00dia\x00dje\x00dnj\x00dob\x00doi" +
-	"\x00dop\x00dow\x00dri\x00drs\x00dsb\x00dtm\x00dtp\x00dts\x00dty\x00dua" +
-	"\x00duc\x00dud\x00dug\x00dvivdva\x00dww\x00dyo\x00dyu\x00dzzodzg\x00ebu" +
-	"\x00eeweefi\x00egl\x00egy\x00eky\x00elllema\x00emi\x00enngenn\x00enq\x00" +
-	"eopoeri\x00es\x00\x05esu\x00etstetr\x00ett\x00etu\x00etx\x00euusewo\x00e" +
-	"xt\x00faasfaa\x00fab\x00fag\x00fai\x00fan\x00ffulffi\x00ffm\x00fiinfia" +
-	"\x00fil\x00fit\x00fjijflr\x00fmp\x00foaofod\x00fon\x00for\x00fpe\x00fqs" +
-	"\x00frrafrc\x00frp\x00frr\x00frs\x00fub\x00fud\x00fue\x00fuf\x00fuh\x00f" +
-	"uq\x00fur\x00fuv\x00fuy\x00fvr\x00fyrygalegaa\x00gaf\x00gag\x00gah\x00ga" +
-	"j\x00gam\x00gan\x00gaw\x00gay\x00gbf\x00gbm\x00gby\x00gbz\x00gcr\x00gdla" +
-	"gde\x00gdn\x00gdr\x00geb\x00gej\x00gel\x00gez\x00gfk\x00ggn\x00ghs\x00gi" +
-	"l\x00gim\x00gjk\x00gjn\x00gju\x00gkn\x00gkp\x00gllgglk\x00gmm\x00gmv\x00" +
-	"gnrngnd\x00gng\x00god\x00gof\x00goi\x00gom\x00gon\x00gor\x00gos\x00got" +
-	"\x00grc\x00grt\x00grw\x00gsw\x00guujgub\x00guc\x00gud\x00gur\x00guw\x00g" +
-	"ux\x00guz\x00gvlvgvf\x00gvr\x00gvs\x00gwc\x00gwi\x00gwt\x00gyi\x00haauha" +
-	"g\x00hak\x00ham\x00haw\x00haz\x00hbb\x00hdy\x00heebhhy\x00hiinhia\x00hif" +
-	"\x00hig\x00hih\x00hil\x00hla\x00hlu\x00hmd\x00hmt\x00hnd\x00hne\x00hnj" +
-	"\x00hnn\x00hno\x00homohoc\x00hoj\x00hot\x00hrrvhsb\x00hsn\x00htathuunhui" +
-	"\x00hyyehzerianaian\x00iar\x00iba\x00ibb\x00iby\x00ica\x00ich\x00idndidd" +
-	"\x00idi\x00idu\x00ieleigboigb\x00ige\x00iiiiijj\x00ikpkikk\x00ikt\x00ikw" +
-	"\x00ikx\x00ilo\x00imo\x00inndinh\x00iodoiou\x00iri\x00isslittaiukuiw\x00" +
-	"\x03iwm\x00iws\x00izh\x00izi\x00japnjab\x00jam\x00jbo\x00jbu\x00jen\x00j" +
-	"gk\x00jgo\x00ji\x00\x06jib\x00jmc\x00jml\x00jra\x00jut\x00jvavjwavkaatka" +
-	"a\x00kab\x00kac\x00kad\x00kai\x00kaj\x00kam\x00kao\x00kbd\x00kbm\x00kbp" +
-	"\x00kbq\x00kbx\x00kby\x00kcg\x00kck\x00kcl\x00kct\x00kde\x00kdh\x00kdl" +
-	"\x00kdt\x00kea\x00ken\x00kez\x00kfo\x00kfr\x00kfy\x00kgonkge\x00kgf\x00k" +
-	"gp\x00kha\x00khb\x00khn\x00khq\x00khs\x00kht\x00khw\x00khz\x00kiikkij" +
-	"\x00kiu\x00kiw\x00kjuakjd\x00kjg\x00kjs\x00kjy\x00kkazkkc\x00kkj\x00klal" +
-	"kln\x00klq\x00klt\x00klx\x00kmhmkmb\x00kmh\x00kmo\x00kms\x00kmu\x00kmw" +
-	"\x00knanknp\x00koorkoi\x00kok\x00kol\x00kos\x00koz\x00kpe\x00kpf\x00kpo" +
-	"\x00kpr\x00kpx\x00kqb\x00kqf\x00kqs\x00kqy\x00kraukrc\x00kri\x00krj\x00k" +
-	"rl\x00krs\x00kru\x00ksasksb\x00ksd\x00ksf\x00ksh\x00ksj\x00ksr\x00ktb" +
-	"\x00ktm\x00kto\x00kuurkub\x00kud\x00kue\x00kuj\x00kum\x00kun\x00kup\x00k" +
-	"us\x00kvomkvg\x00kvr\x00kvx\x00kw\x00\x01kwj\x00kwo\x00kxa\x00kxc\x00kxm" +
-	"\x00kxp\x00kxw\x00kxz\x00kyirkye\x00kyx\x00kzr\x00laatlab\x00lad\x00lag" +
-	"\x00lah\x00laj\x00las\x00lbtzlbe\x00lbu\x00lbw\x00lcm\x00lcp\x00ldb\x00l" +
-	"ed\x00lee\x00lem\x00lep\x00leq\x00leu\x00lez\x00lguglgg\x00liimlia\x00li" +
-	"d\x00lif\x00lig\x00lih\x00lij\x00lis\x00ljp\x00lki\x00lkt\x00lle\x00lln" +
-	"\x00lmn\x00lmo\x00lmp\x00lninlns\x00lnu\x00loaoloj\x00lok\x00lol\x00lor" +
-	"\x00los\x00loz\x00lrc\x00ltitltg\x00luublua\x00luo\x00luy\x00luz\x00lvav" +
-	"lwl\x00lzh\x00lzz\x00mad\x00maf\x00mag\x00mai\x00mak\x00man\x00mas\x00ma" +
-	"w\x00maz\x00mbh\x00mbo\x00mbq\x00mbu\x00mbw\x00mci\x00mcp\x00mcq\x00mcr" +
-	"\x00mcu\x00mda\x00mde\x00mdf\x00mdh\x00mdj\x00mdr\x00mdx\x00med\x00mee" +
-	"\x00mek\x00men\x00mer\x00met\x00meu\x00mfa\x00mfe\x00mfn\x00mfo\x00mfq" +
-	"\x00mglgmgh\x00mgl\x00mgo\x00mgp\x00mgy\x00mhahmhi\x00mhl\x00mirimif\x00" +
-	"min\x00mis\x00miw\x00mkkdmki\x00mkl\x00mkp\x00mkw\x00mlalmle\x00mlp\x00m" +
-	"ls\x00mmo\x00mmu\x00mmx\x00mnonmna\x00mnf\x00mni\x00mnw\x00moolmoa\x00mo" +
-	"e\x00moh\x00mos\x00mox\x00mpp\x00mps\x00mpt\x00mpx\x00mql\x00mrarmrd\x00" +
-	"mrj\x00mro\x00mssamtltmtc\x00mtf\x00mti\x00mtr\x00mua\x00mul\x00mur\x00m" +
-	"us\x00mva\x00mvn\x00mvy\x00mwk\x00mwr\x00mwv\x00mxc\x00mxm\x00myyamyk" +
-	"\x00mym\x00myv\x00myw\x00myx\x00myz\x00mzk\x00mzm\x00mzn\x00mzp\x00mzw" +
-	"\x00mzz\x00naaunac\x00naf\x00nah\x00nak\x00nan\x00nap\x00naq\x00nas\x00n" +
-	"bobnca\x00nce\x00ncf\x00nch\x00nco\x00ncu\x00nddendc\x00nds\x00neepneb" +
-	"\x00new\x00nex\x00nfr\x00ngdonga\x00ngb\x00ngl\x00nhb\x00nhe\x00nhw\x00n" +
-	"if\x00nii\x00nij\x00nin\x00niu\x00niy\x00niz\x00njo\x00nkg\x00nko\x00nll" +
-	"dnmg\x00nmz\x00nnnonnf\x00nnh\x00nnk\x00nnm\x00noornod\x00noe\x00non\x00" +
-	"nop\x00nou\x00nqo\x00nrblnrb\x00nsk\x00nsn\x00nso\x00nss\x00ntm\x00ntr" +
-	"\x00nui\x00nup\x00nus\x00nuv\x00nux\x00nvavnwb\x00nxq\x00nxr\x00nyyanym" +
-	"\x00nyn\x00nzi\x00occiogc\x00ojjiokr\x00okv\x00omrmong\x00onn\x00ons\x00" +
-	"opm\x00orrioro\x00oru\x00osssosa\x00ota\x00otk\x00ozm\x00paanpag\x00pal" +
-	"\x00pam\x00pap\x00pau\x00pbi\x00pcd\x00pcm\x00pdc\x00pdt\x00ped\x00peo" +
-	"\x00pex\x00pfl\x00phl\x00phn\x00pilipil\x00pip\x00pka\x00pko\x00plolpla" +
-	"\x00pms\x00png\x00pnn\x00pnt\x00pon\x00ppo\x00pra\x00prd\x00prg\x00psusp" +
-	"ss\x00ptorptp\x00puu\x00pwa\x00quuequc\x00qug\x00rai\x00raj\x00rao\x00rc" +
-	"f\x00rej\x00rel\x00res\x00rgn\x00rhg\x00ria\x00rif\x00rjs\x00rkt\x00rmoh" +
-	"rmf\x00rmo\x00rmt\x00rmu\x00rnunrna\x00rng\x00roonrob\x00rof\x00roo\x00r" +
-	"ro\x00rtm\x00ruusrue\x00rug\x00rw\x00\x04rwk\x00rwo\x00ryu\x00saansaf" +
-	"\x00sah\x00saq\x00sas\x00sat\x00saz\x00sba\x00sbe\x00sbp\x00scrdsck\x00s" +
-	"cl\x00scn\x00sco\x00scs\x00sdndsdc\x00sdh\x00semesef\x00seh\x00sei\x00se" +
-	"s\x00sgagsga\x00sgs\x00sgw\x00sgz\x00sh\x00\x02shi\x00shk\x00shn\x00shu" +
-	"\x00siinsid\x00sig\x00sil\x00sim\x00sjr\x00sklkskc\x00skr\x00sks\x00sllv" +
-	"sld\x00sli\x00sll\x00sly\x00smmosma\x00smi\x00smj\x00smn\x00smp\x00smq" +
-	"\x00sms\x00snnasnc\x00snk\x00snp\x00snx\x00sny\x00soomsok\x00soq\x00sou" +
-	"\x00soy\x00spd\x00spl\x00sps\x00sqqisrrpsrb\x00srn\x00srr\x00srx\x00sssw" +
-	"ssd\x00ssg\x00ssy\x00stotstk\x00stq\x00suunsua\x00sue\x00suk\x00sur\x00s" +
-	"us\x00svweswwaswb\x00swc\x00swg\x00swp\x00swv\x00sxn\x00sxw\x00syl\x00sy" +
-	"r\x00szl\x00taamtaj\x00tal\x00tan\x00taq\x00tbc\x00tbd\x00tbf\x00tbg\x00" +
-	"tbo\x00tbw\x00tbz\x00tci\x00tcy\x00tdd\x00tdg\x00tdh\x00teelted\x00tem" +
-	"\x00teo\x00tet\x00tfi\x00tggktgc\x00tgo\x00tgu\x00thhathl\x00thq\x00thr" +
-	"\x00tiirtif\x00tig\x00tik\x00tim\x00tio\x00tiv\x00tkuktkl\x00tkr\x00tkt" +
-	"\x00tlgltlf\x00tlx\x00tly\x00tmh\x00tmy\x00tnsntnh\x00toontof\x00tog\x00" +
-	"toq\x00tpi\x00tpm\x00tpz\x00tqo\x00trurtru\x00trv\x00trw\x00tssotsd\x00t" +
-	"sf\x00tsg\x00tsj\x00tsw\x00ttatttd\x00tte\x00ttj\x00ttr\x00tts\x00ttt" +
-	"\x00tuh\x00tul\x00tum\x00tuq\x00tvd\x00tvl\x00tvu\x00twwitwh\x00twq\x00t" +
-	"xg\x00tyahtya\x00tyv\x00tzm\x00ubu\x00udm\x00ugiguga\x00ukkruli\x00umb" +
-	"\x00und\x00unr\x00unx\x00urrduri\x00urt\x00urw\x00usa\x00utr\x00uvh\x00u" +
-	"vl\x00uzzbvag\x00vai\x00van\x00veenvec\x00vep\x00viievic\x00viv\x00vls" +
-	"\x00vmf\x00vmw\x00voolvot\x00vro\x00vun\x00vut\x00walnwae\x00waj\x00wal" +
-	"\x00wan\x00war\x00wbp\x00wbq\x00wbr\x00wci\x00wer\x00wgi\x00whg\x00wib" +
-	"\x00wiu\x00wiv\x00wja\x00wji\x00wls\x00wmo\x00wnc\x00wni\x00wnu\x00woolw" +
-	"ob\x00wos\x00wrs\x00wsk\x00wtm\x00wuu\x00wuv\x00wwa\x00xav\x00xbi\x00xcr" +
-	"\x00xes\x00xhhoxla\x00xlc\x00xld\x00xmf\x00xmn\x00xmr\x00xna\x00xnr\x00x" +
-	"og\x00xon\x00xpr\x00xrb\x00xsa\x00xsi\x00xsm\x00xsr\x00xwe\x00yam\x00yao" +
-	"\x00yap\x00yas\x00yat\x00yav\x00yay\x00yaz\x00yba\x00ybb\x00yby\x00yer" +
-	"\x00ygr\x00ygw\x00yiidyko\x00yle\x00ylg\x00yll\x00yml\x00yooryon\x00yrb" +
-	"\x00yre\x00yrl\x00yss\x00yua\x00yue\x00yuj\x00yut\x00yuw\x00zahazag\x00z" +
-	"bl\x00zdj\x00zea\x00zgh\x00zhhozia\x00zlm\x00zmi\x00zne\x00zuulzxx\x00zz" +
-	"a\x00\xff\xff\xff\xff"
+const lang tag.Index = "" + // Size: 5312 bytes
+	"---\x00aaaraai\x00aak\x00aau\x00abbkabi\x00abq\x00abr\x00abt\x00aby\x00a" +
+	"cd\x00ace\x00ach\x00ada\x00ade\x00adj\x00ady\x00adz\x00aeveaeb\x00aey" +
+	"\x00affragc\x00agd\x00agg\x00agm\x00ago\x00agq\x00aha\x00ahl\x00aho\x00a" +
+	"jg\x00akkaakk\x00ala\x00ali\x00aln\x00alt\x00ammhamm\x00amn\x00amo\x00am" +
+	"p\x00anrganc\x00ank\x00ann\x00any\x00aoj\x00aom\x00aoz\x00apc\x00apd\x00" +
+	"ape\x00apr\x00aps\x00apz\x00arraarc\x00arh\x00arn\x00aro\x00arq\x00ars" +
+	"\x00ary\x00arz\x00assmasa\x00ase\x00asg\x00aso\x00ast\x00ata\x00atg\x00a" +
+	"tj\x00auy\x00avvaavl\x00avn\x00avt\x00avu\x00awa\x00awb\x00awo\x00awx" +
+	"\x00ayymayb\x00azzebaakbal\x00ban\x00bap\x00bar\x00bas\x00bav\x00bax\x00" +
+	"bba\x00bbb\x00bbc\x00bbd\x00bbj\x00bbp\x00bbr\x00bcf\x00bch\x00bci\x00bc" +
+	"m\x00bcn\x00bco\x00bcq\x00bcu\x00bdd\x00beelbef\x00beh\x00bej\x00bem\x00" +
+	"bet\x00bew\x00bex\x00bez\x00bfd\x00bfq\x00bft\x00bfy\x00bgulbgc\x00bgn" +
+	"\x00bgx\x00bhihbhb\x00bhg\x00bhi\x00bhk\x00bhl\x00bho\x00bhy\x00biisbib" +
+	"\x00big\x00bik\x00bim\x00bin\x00bio\x00biq\x00bjh\x00bji\x00bjj\x00bjn" +
+	"\x00bjo\x00bjr\x00bjt\x00bjz\x00bkc\x00bkm\x00bkq\x00bku\x00bkv\x00blt" +
+	"\x00bmambmh\x00bmk\x00bmq\x00bmu\x00bnenbng\x00bnm\x00bnp\x00boodboj\x00" +
+	"bom\x00bon\x00bpy\x00bqc\x00bqi\x00bqp\x00bqv\x00brrebra\x00brh\x00brx" +
+	"\x00brz\x00bsosbsj\x00bsq\x00bss\x00bst\x00bto\x00btt\x00btv\x00bua\x00b" +
+	"uc\x00bud\x00bug\x00buk\x00bum\x00buo\x00bus\x00buu\x00bvb\x00bwd\x00bwr" +
+	"\x00bxh\x00bye\x00byn\x00byr\x00bys\x00byv\x00byx\x00bza\x00bze\x00bzf" +
+	"\x00bzh\x00bzw\x00caatcan\x00cbj\x00cch\x00ccp\x00ceheceb\x00cfa\x00cgg" +
+	"\x00chhachk\x00chm\x00cho\x00chp\x00chr\x00cja\x00cjm\x00cjv\x00ckb\x00c" +
+	"kl\x00cko\x00cky\x00cla\x00cme\x00cooscop\x00cps\x00crrecrh\x00crj\x00cr" +
+	"k\x00crl\x00crm\x00crs\x00csescsb\x00csw\x00ctd\x00cuhucvhvcyymdaandad" +
+	"\x00daf\x00dag\x00dah\x00dak\x00dar\x00dav\x00dbd\x00dbq\x00dcc\x00ddn" +
+	"\x00deeuded\x00den\x00dga\x00dgh\x00dgi\x00dgl\x00dgr\x00dgz\x00dia\x00d" +
+	"je\x00dnj\x00dob\x00doi\x00dop\x00dow\x00dri\x00drs\x00dsb\x00dtm\x00dtp" +
+	"\x00dts\x00dty\x00dua\x00duc\x00dud\x00dug\x00dvivdva\x00dww\x00dyo\x00d" +
+	"yu\x00dzzodzg\x00ebu\x00eeweefi\x00egl\x00egy\x00eka\x00eky\x00elllema" +
+	"\x00emi\x00enngenn\x00enq\x00eopoeri\x00es\x00\x05esu\x00etstetr\x00ett" +
+	"\x00etu\x00etx\x00euusewo\x00ext\x00faasfaa\x00fab\x00fag\x00fai\x00fan" +
+	"\x00ffulffi\x00ffm\x00fiinfia\x00fil\x00fit\x00fjijflr\x00fmp\x00foaofod" +
+	"\x00fon\x00for\x00fpe\x00fqs\x00frrafrc\x00frp\x00frr\x00frs\x00fub\x00f" +
+	"ud\x00fue\x00fuf\x00fuh\x00fuq\x00fur\x00fuv\x00fuy\x00fvr\x00fyrygalega" +
+	"a\x00gaf\x00gag\x00gah\x00gaj\x00gam\x00gan\x00gaw\x00gay\x00gbf\x00gbm" +
+	"\x00gby\x00gbz\x00gcr\x00gdlagde\x00gdn\x00gdr\x00geb\x00gej\x00gel\x00g" +
+	"ez\x00gfk\x00ggn\x00ghs\x00gil\x00gim\x00gjk\x00gjn\x00gju\x00gkn\x00gkp" +
+	"\x00gllgglk\x00gmm\x00gmv\x00gnrngnd\x00gng\x00god\x00gof\x00goi\x00gom" +
+	"\x00gon\x00gor\x00gos\x00got\x00grb\x00grc\x00grt\x00grw\x00gsw\x00guujg" +
+	"ub\x00guc\x00gud\x00gur\x00guw\x00gux\x00guz\x00gvlvgvf\x00gvr\x00gvs" +
+	"\x00gwc\x00gwi\x00gwt\x00gyi\x00haauhag\x00hak\x00ham\x00haw\x00haz\x00h" +
+	"bb\x00hdy\x00heebhhy\x00hiinhia\x00hif\x00hig\x00hih\x00hil\x00hla\x00hl" +
+	"u\x00hmd\x00hmt\x00hnd\x00hne\x00hnj\x00hnn\x00hno\x00homohoc\x00hoj\x00" +
+	"hot\x00hrrvhsb\x00hsn\x00htathuunhui\x00hyyehzerianaian\x00iar\x00iba" +
+	"\x00ibb\x00iby\x00ica\x00ich\x00idndidd\x00idi\x00idu\x00ieleife\x00igbo" +
+	"igb\x00ige\x00iiiiijj\x00ikpkikk\x00ikt\x00ikw\x00ikx\x00ilo\x00imo\x00i" +
+	"nndinh\x00iodoiou\x00iri\x00isslittaiukuiw\x00\x03iwm\x00iws\x00izh\x00i" +
+	"zi\x00japnjab\x00jam\x00jbo\x00jbu\x00jen\x00jgk\x00jgo\x00ji\x00\x06jib" +
+	"\x00jmc\x00jml\x00jra\x00jut\x00jvavjwavkaatkaa\x00kab\x00kac\x00kad\x00" +
+	"kai\x00kaj\x00kam\x00kao\x00kbd\x00kbm\x00kbp\x00kbq\x00kbx\x00kby\x00kc" +
+	"g\x00kck\x00kcl\x00kct\x00kde\x00kdh\x00kdl\x00kdt\x00kea\x00ken\x00kez" +
+	"\x00kfo\x00kfr\x00kfy\x00kgonkge\x00kgf\x00kgp\x00kha\x00khb\x00khn\x00k" +
+	"hq\x00khs\x00kht\x00khw\x00khz\x00kiikkij\x00kiu\x00kiw\x00kjuakjd\x00kj" +
+	"g\x00kjs\x00kjy\x00kkazkkc\x00kkj\x00klalkln\x00klq\x00klt\x00klx\x00kmh" +
+	"mkmb\x00kmh\x00kmo\x00kms\x00kmu\x00kmw\x00knanknf\x00knp\x00koorkoi\x00" +
+	"kok\x00kol\x00kos\x00koz\x00kpe\x00kpf\x00kpo\x00kpr\x00kpx\x00kqb\x00kq" +
+	"f\x00kqs\x00kqy\x00kraukrc\x00kri\x00krj\x00krl\x00krs\x00kru\x00ksasksb" +
+	"\x00ksd\x00ksf\x00ksh\x00ksj\x00ksr\x00ktb\x00ktm\x00kto\x00kuurkub\x00k" +
+	"ud\x00kue\x00kuj\x00kum\x00kun\x00kup\x00kus\x00kvomkvg\x00kvr\x00kvx" +
+	"\x00kw\x00\x01kwj\x00kwo\x00kxa\x00kxc\x00kxm\x00kxp\x00kxw\x00kxz\x00ky" +
+	"irkye\x00kyx\x00kzr\x00laatlab\x00lad\x00lag\x00lah\x00laj\x00las\x00lbt" +
+	"zlbe\x00lbu\x00lbw\x00lcm\x00lcp\x00ldb\x00led\x00lee\x00lem\x00lep\x00l" +
+	"eq\x00leu\x00lez\x00lguglgg\x00liimlia\x00lid\x00lif\x00lig\x00lih\x00li" +
+	"j\x00lis\x00ljp\x00lki\x00lkt\x00lle\x00lln\x00lmn\x00lmo\x00lmp\x00lnin" +
+	"lns\x00lnu\x00loaoloj\x00lok\x00lol\x00lor\x00los\x00loz\x00lrc\x00ltitl" +
+	"tg\x00luublua\x00luo\x00luy\x00luz\x00lvavlwl\x00lzh\x00lzz\x00mad\x00ma" +
+	"f\x00mag\x00mai\x00mak\x00man\x00mas\x00maw\x00maz\x00mbh\x00mbo\x00mbq" +
+	"\x00mbu\x00mbw\x00mci\x00mcp\x00mcq\x00mcr\x00mcu\x00mda\x00mde\x00mdf" +
+	"\x00mdh\x00mdj\x00mdr\x00mdx\x00med\x00mee\x00mek\x00men\x00mer\x00met" +
+	"\x00meu\x00mfa\x00mfe\x00mfn\x00mfo\x00mfq\x00mglgmgh\x00mgl\x00mgo\x00m" +
+	"gp\x00mgy\x00mhahmhi\x00mhl\x00mirimif\x00min\x00mis\x00miw\x00mkkdmki" +
+	"\x00mkl\x00mkp\x00mkw\x00mlalmle\x00mlp\x00mls\x00mmo\x00mmu\x00mmx\x00m" +
+	"nonmna\x00mnf\x00mni\x00mnw\x00moolmoa\x00moe\x00moh\x00mos\x00mox\x00mp" +
+	"p\x00mps\x00mpt\x00mpx\x00mql\x00mrarmrd\x00mrj\x00mro\x00mssamtltmtc" +
+	"\x00mtf\x00mti\x00mtr\x00mua\x00mul\x00mur\x00mus\x00mva\x00mvn\x00mvy" +
+	"\x00mwk\x00mwr\x00mwv\x00mxc\x00mxm\x00myyamyk\x00mym\x00myv\x00myw\x00m" +
+	"yx\x00myz\x00mzk\x00mzm\x00mzn\x00mzp\x00mzw\x00mzz\x00naaunac\x00naf" +
+	"\x00nah\x00nak\x00nan\x00nap\x00naq\x00nas\x00nbobnca\x00nce\x00ncf\x00n" +
+	"ch\x00nco\x00ncu\x00nddendc\x00nds\x00neepneb\x00new\x00nex\x00nfr\x00ng" +
+	"donga\x00ngb\x00ngl\x00nhb\x00nhe\x00nhw\x00nif\x00nii\x00nij\x00nin\x00" +
+	"niu\x00niy\x00niz\x00njo\x00nkg\x00nko\x00nlldnmg\x00nmz\x00nnnonnf\x00n" +
+	"nh\x00nnk\x00nnm\x00noornod\x00noe\x00non\x00nop\x00nou\x00nqo\x00nrblnr" +
+	"b\x00nsk\x00nsn\x00nso\x00nss\x00ntm\x00ntr\x00nui\x00nup\x00nus\x00nuv" +
+	"\x00nux\x00nvavnwb\x00nxq\x00nxr\x00nyyanym\x00nyn\x00nzi\x00occiogc\x00" +
+	"ojjiokr\x00okv\x00omrmong\x00onn\x00ons\x00opm\x00orrioro\x00oru\x00osss" +
+	"osa\x00ota\x00otk\x00ozm\x00paanpag\x00pal\x00pam\x00pap\x00pau\x00pbi" +
+	"\x00pcd\x00pcm\x00pdc\x00pdt\x00ped\x00peo\x00pex\x00pfl\x00phl\x00phn" +
+	"\x00pilipil\x00pip\x00pka\x00pko\x00plolpla\x00pms\x00png\x00pnn\x00pnt" +
+	"\x00pon\x00ppo\x00pra\x00prd\x00prg\x00psuspss\x00ptorptp\x00puu\x00pwa" +
+	"\x00quuequc\x00qug\x00rai\x00raj\x00rao\x00rcf\x00rej\x00rel\x00res\x00r" +
+	"gn\x00rhg\x00ria\x00rif\x00rjs\x00rkt\x00rmohrmf\x00rmo\x00rmt\x00rmu" +
+	"\x00rnunrna\x00rng\x00roonrob\x00rof\x00roo\x00rro\x00rtm\x00ruusrue\x00" +
+	"rug\x00rw\x00\x04rwk\x00rwo\x00ryu\x00saansaf\x00sah\x00saq\x00sas\x00sa" +
+	"t\x00sav\x00saz\x00sba\x00sbe\x00sbp\x00scrdsck\x00scl\x00scn\x00sco\x00" +
+	"scs\x00sdndsdc\x00sdh\x00semesef\x00seh\x00sei\x00ses\x00sgagsga\x00sgs" +
+	"\x00sgw\x00sgz\x00sh\x00\x02shi\x00shk\x00shn\x00shu\x00siinsid\x00sig" +
+	"\x00sil\x00sim\x00sjr\x00sklkskc\x00skr\x00sks\x00sllvsld\x00sli\x00sll" +
+	"\x00sly\x00smmosma\x00smi\x00smj\x00smn\x00smp\x00smq\x00sms\x00snnasnc" +
+	"\x00snk\x00snp\x00snx\x00sny\x00soomsok\x00soq\x00sou\x00soy\x00spd\x00s" +
+	"pl\x00sps\x00sqqisrrpsrb\x00srn\x00srr\x00srx\x00ssswssd\x00ssg\x00ssy" +
+	"\x00stotstk\x00stq\x00suunsua\x00sue\x00suk\x00sur\x00sus\x00svweswwaswb" +
+	"\x00swc\x00swg\x00swp\x00swv\x00sxn\x00sxw\x00syl\x00syr\x00szl\x00taamt" +
+	"aj\x00tal\x00tan\x00taq\x00tbc\x00tbd\x00tbf\x00tbg\x00tbo\x00tbw\x00tbz" +
+	"\x00tci\x00tcy\x00tdd\x00tdg\x00tdh\x00teelted\x00tem\x00teo\x00tet\x00t" +
+	"fi\x00tggktgc\x00tgo\x00tgu\x00thhathl\x00thq\x00thr\x00tiirtif\x00tig" +
+	"\x00tik\x00tim\x00tio\x00tiv\x00tkuktkl\x00tkr\x00tkt\x00tlgltlf\x00tlx" +
+	"\x00tly\x00tmh\x00tmy\x00tnsntnh\x00toontof\x00tog\x00toq\x00tpi\x00tpm" +
+	"\x00tpz\x00tqo\x00trurtru\x00trv\x00trw\x00tssotsd\x00tsf\x00tsg\x00tsj" +
+	"\x00tsw\x00ttatttd\x00tte\x00ttj\x00ttr\x00tts\x00ttt\x00tuh\x00tul\x00t" +
+	"um\x00tuq\x00tvd\x00tvl\x00tvu\x00twwitwh\x00twq\x00txg\x00tyahtya\x00ty" +
+	"v\x00tzm\x00ubu\x00udm\x00ugiguga\x00ukkruli\x00umb\x00und\x00unr\x00unx" +
+	"\x00urrduri\x00urt\x00urw\x00usa\x00utr\x00uvh\x00uvl\x00uzzbvag\x00vai" +
+	"\x00van\x00veenvec\x00vep\x00viievic\x00viv\x00vls\x00vmf\x00vmw\x00vool" +
+	"vot\x00vro\x00vun\x00vut\x00walnwae\x00waj\x00wal\x00wan\x00war\x00wbp" +
+	"\x00wbq\x00wbr\x00wci\x00wer\x00wgi\x00whg\x00wib\x00wiu\x00wiv\x00wja" +
+	"\x00wji\x00wls\x00wmo\x00wnc\x00wni\x00wnu\x00woolwob\x00wos\x00wrs\x00w" +
+	"sk\x00wtm\x00wuu\x00wuv\x00wwa\x00xav\x00xbi\x00xcr\x00xes\x00xhhoxla" +
+	"\x00xlc\x00xld\x00xmf\x00xmn\x00xmr\x00xna\x00xnr\x00xog\x00xon\x00xpr" +
+	"\x00xrb\x00xsa\x00xsi\x00xsm\x00xsr\x00xwe\x00yam\x00yao\x00yap\x00yas" +
+	"\x00yat\x00yav\x00yay\x00yaz\x00yba\x00ybb\x00yby\x00yer\x00ygr\x00ygw" +
+	"\x00yiidyko\x00yle\x00ylg\x00yll\x00yml\x00yooryon\x00yrb\x00yre\x00yrl" +
+	"\x00yss\x00yua\x00yue\x00yuj\x00yut\x00yuw\x00zahazag\x00zbl\x00zdj\x00z" +
+	"ea\x00zgh\x00zhhozia\x00zlm\x00zmi\x00zne\x00zuulzxx\x00zza\x00\xff\xff" +
+	"\xff\xff"
 
-const langNoIndexOffset = 1319
+const langNoIndexOffset = 1327
 
 // langNoIndex is a bit vector of all 3-letter language codes that are not used as an index
 // in lookup tables. The language ids for these language codes are derived directly
@@ -258,7 +259,7 @@ const langNoIndexOffset = 1319
 // Size: 2197 bytes, 2197 elements
 var langNoIndex = [2197]uint8{
 	// Entry 0 - 3F
-	0xff, 0xf8, 0xed, 0xfe, 0xeb, 0xd7, 0x3b, 0xd2,
+	0xff, 0xf8, 0xed, 0xfe, 0xeb, 0xd3, 0x3b, 0xd2,
 	0xfb, 0xbf, 0x7a, 0xfa, 0x37, 0x1d, 0x3c, 0x57,
 	0x6e, 0x97, 0x73, 0x38, 0xfb, 0xea, 0xbf, 0x70,
 	0xad, 0x03, 0xff, 0xff, 0xcf, 0x05, 0x84, 0x62,
@@ -273,7 +274,7 @@ var langNoIndex = [2197]uint8{
 	0x7c, 0x5f, 0xff, 0x5f, 0x8e, 0x6e, 0xdf, 0xff,
 	0xff, 0xff, 0x55, 0x7c, 0xd3, 0xfd, 0xbf, 0xb5,
 	0x7b, 0xdf, 0x7f, 0xf7, 0xca, 0xfe, 0xdb, 0xa3,
-	0xa8, 0xff, 0x1f, 0x67, 0x7f, 0xeb, 0xef, 0xce,
+	0xa8, 0xff, 0x1f, 0x67, 0x7d, 0xeb, 0xef, 0xce,
 	0xff, 0xff, 0x9f, 0xff, 0xb7, 0xef, 0xfe, 0xcf,
 	// Entry 80 - BF
 	0xdb, 0xff, 0xf3, 0xcd, 0xfb, 0x2f, 0xff, 0xff,
@@ -289,7 +290,7 @@ var langNoIndex = [2197]uint8{
 	0x1b, 0x14, 0x08, 0xf2, 0x2b, 0xe7, 0x17, 0x56,
 	0x45, 0x7d, 0x0e, 0x1c, 0x37, 0x71, 0xf3, 0xef,
 	0x97, 0xff, 0x5d, 0x38, 0x64, 0x08, 0x00, 0x10,
-	0xbc, 0x87, 0xaf, 0xdf, 0xff, 0xf7, 0x73, 0x35,
+	0xbc, 0x85, 0xaf, 0xdf, 0xff, 0xf7, 0x73, 0x35,
 	0x3e, 0x87, 0xc7, 0xdf, 0xff, 0x00, 0x81, 0x00,
 	0xb0, 0x05, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03,
 	0x40, 0x00, 0x40, 0x92, 0x21, 0x50, 0xb1, 0x5d,
@@ -309,7 +310,7 @@ var langNoIndex = [2197]uint8{
 	0x00, 0x00, 0x60, 0x10, 0x00, 0x00, 0x00, 0x10,
 	0x00, 0x00, 0x44, 0x00, 0x00, 0x10, 0x00, 0x04,
 	0x08, 0x00, 0x00, 0x04, 0x00, 0x80, 0x28, 0x04,
-	0x00, 0x00, 0x50, 0xd5, 0x2d, 0x00, 0x64, 0x35,
+	0x00, 0x00, 0x40, 0xd5, 0x2d, 0x00, 0x64, 0x35,
 	0x24, 0x52, 0xf4, 0xd4, 0xbd, 0x62, 0xc9, 0x03,
 	// Entry 180 - 1BF
 	0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
@@ -336,7 +337,7 @@ var langNoIndex = [2197]uint8{
 	0x03, 0x44, 0x08, 0x10, 0x01, 0x04, 0x01, 0xe3,
 	0x92, 0x54, 0xdb, 0x28, 0xd1, 0x5f, 0xf6, 0x6d,
 	0x79, 0xed, 0x1c, 0x7d, 0x04, 0x08, 0x00, 0x01,
-	0x21, 0x12, 0x6c, 0x5f, 0xdd, 0x0e, 0x85, 0x4f,
+	0x21, 0x12, 0x64, 0x5f, 0xdd, 0x0e, 0x85, 0x4f,
 	0x40, 0x40, 0x00, 0x04, 0xf1, 0xfd, 0x3d, 0x54,
 	// Entry 240 - 27F
 	0xe8, 0x03, 0xb4, 0x27, 0x23, 0x0d, 0x00, 0x00,
@@ -354,7 +355,7 @@ var langNoIndex = [2197]uint8{
 	0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
 	0x08, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x60,
 	0xe5, 0x48, 0x00, 0x81, 0x20, 0xc0, 0x05, 0x80,
-	0x03, 0x00, 0x00, 0x00, 0xcc, 0x50, 0x40, 0x04,
+	0x03, 0x00, 0x00, 0x00, 0x8c, 0x50, 0x40, 0x04,
 	0x84, 0x47, 0x84, 0x40, 0x20, 0x10, 0x00, 0x20,
 	// Entry 2C0 - 2FF
 	0x02, 0x50, 0x80, 0x11, 0x00, 0x91, 0x6c, 0xe2,
@@ -381,7 +382,7 @@ var langNoIndex = [2197]uint8{
 	0xfd, 0xfc, 0xfe, 0xdf, 0xff, 0xfd, 0xff, 0xf6,
 	0xfb, 0xfc, 0xf7, 0x1f, 0xff, 0xb3, 0x6c, 0xff,
 	0xd9, 0xad, 0xdf, 0xfe, 0xef, 0xba, 0xdf, 0xff,
-	0xff, 0xff, 0xb7, 0xdd, 0x7d, 0xbf, 0xab, 0xff,
+	0xff, 0xff, 0xb7, 0xdd, 0x7d, 0xbf, 0xab, 0x7f,
 	0xfd, 0xfd, 0xdf, 0x2f, 0x9c, 0xdf, 0xf3, 0x6f,
 	// Entry 380 - 3BF
 	0xdf, 0xdd, 0xff, 0xfb, 0xee, 0xd2, 0xab, 0x5f,
@@ -471,7 +472,7 @@ var langNoIndex = [2197]uint8{
 	0x19, 0x00, 0x10, 0x02, 0x10, 0x61, 0x5a, 0x9d,
 	0x31, 0x00, 0x00, 0x00, 0x01, 0x10, 0x02, 0x20,
 	0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x20, 0x00,
-	0x00, 0x1f, 0xdf, 0xf2, 0xb9, 0xff, 0xfd, 0x3f,
+	0x00, 0x1f, 0xdf, 0xd2, 0xb9, 0xff, 0xfd, 0x3f,
 	0x1f, 0x18, 0xcf, 0x9c, 0xbf, 0xaf, 0x5f, 0xfe,
 	// Entry 600 - 63F
 	0x7b, 0x4b, 0x40, 0x10, 0xe1, 0xfd, 0xaf, 0xd9,
@@ -572,178 +573,178 @@ var langNoIndex = [2197]uint8{
 // altLangISO3 holds an alphabetically sorted list of 3-letter language code alternatives
 // to 2-letter language codes that cannot be derived using the method described above.
 // Each 3-letter code is followed by its 1-byte langID.
-var altLangISO3 tag.Index = "---\x00cor\x00hbs\x01heb\x02kin\x03spa\x04yid\x05\xff\xff\xff\xff"
+const altLangISO3 tag.Index = "---\x00cor\x00hbs\x01heb\x02kin\x03spa\x04yid\x05\xff\xff\xff\xff"
 
 // altLangIndex is used to convert indexes in altLangISO3 to langIDs.
 // Size: 12 bytes, 6 elements
 var altLangIndex = [6]uint16{
-	0x0278, 0x03fd, 0x01f3, 0x03dc, 0x0139, 0x0200,
+	0x027f, 0x0405, 0x01f9, 0x03e3, 0x013d, 0x0206,
 }
 
 // langAliasMap maps langIDs to their suggested replacements.
 // Size: 644 bytes, 161 elements
 var langAliasMap = [161]fromTo{
-	0:   {from: 0x81, to: 0x87},
-	1:   {from: 0x181, to: 0x1a7},
-	2:   {from: 0x1eb, to: 0x1da},
-	3:   {from: 0x1f3, to: 0x1b5},
-	4:   {from: 0x200, to: 0x508},
-	5:   {from: 0x207, to: 0x206},
-	6:   {from: 0x307, to: 0x3d3},
-	7:   {from: 0x33e, to: 0x366},
-	8:   {from: 0x3fd, to: 0x428},
-	9:   {from: 0x470, to: 0x14e},
-	10:  {from: 0x486, to: 0x447},
-	11:  {from: 0x498, to: 0x20},
-	12:  {from: 0x533, to: 0x539},
-	13:  {from: 0x584, to: 0x129},
-	14:  {from: 0x625, to: 0x1ea6},
-	15:  {from: 0x646, to: 0x427},
-	16:  {from: 0x657, to: 0x427},
-	17:  {from: 0x6e2, to: 0x39},
-	18:  {from: 0x6ed, to: 0x1d0},
-	19:  {from: 0x733, to: 0x2196},
-	20:  {from: 0x7a8, to: 0x55},
-	21:  {from: 0x7ae, to: 0x2990},
-	22:  {from: 0x7ba, to: 0x57},
-	23:  {from: 0x7db, to: 0x140},
-	24:  {from: 0x801, to: 0x59},
-	25:  {from: 0x80a, to: 0x8c},
-	26:  {from: 0x873, to: 0x805},
-	27:  {from: 0x8b8, to: 0xed8},
-	28:  {from: 0x9e4, to: 0x328},
-	29:  {from: 0xa2b, to: 0x2bc},
-	30:  {from: 0xa32, to: 0xbd},
-	31:  {from: 0xab3, to: 0x3317},
-	32:  {from: 0xb2d, to: 0x51f},
-	33:  {from: 0xb6a, to: 0x264f},
-	34:  {from: 0xb73, to: 0xbb8},
-	35:  {from: 0xb90, to: 0x444},
-	36:  {from: 0xbb1, to: 0x421e},
-	37:  {from: 0xbb4, to: 0x51f},
-	38:  {from: 0xbf3, to: 0x2d9c},
-	39:  {from: 0xc23, to: 0x3176},
-	40:  {from: 0xcae, to: 0xf0},
-	41:  {from: 0xcfd, to: 0xf6},
-	42:  {from: 0xdbd, to: 0x116},
-	43:  {from: 0xdcc, to: 0x324},
-	44:  {from: 0xded, to: 0xdf0},
-	45:  {from: 0xdf3, to: 0x526},
-	46:  {from: 0xed4, to: 0x204f},
-	47:  {from: 0xee3, to: 0x2e8f},
-	48:  {from: 0xf2e, to: 0x35e},
-	49:  {from: 0x10c5, to: 0x13b},
-	50:  {from: 0x10f9, to: 0x2c7},
-	51:  {from: 0x1195, to: 0x1e4},
-	52:  {from: 0x126e, to: 0x20},
-	53:  {from: 0x1419, to: 0x159},
-	54:  {from: 0x1465, to: 0x149},
-	55:  {from: 0x1514, to: 0xd90},
-	56:  {from: 0x1518, to: 0x387},
-	57:  {from: 0x1527, to: 0x16ba},
-	58:  {from: 0x1575, to: 0x208},
-	59:  {from: 0x1578, to: 0x109},
-	60:  {from: 0x1598, to: 0x3ca4},
-	61:  {from: 0x165f, to: 0x195},
-	62:  {from: 0x16bd, to: 0x131},
-	63:  {from: 0x16f5, to: 0x29ed},
-	64:  {from: 0x170d, to: 0x18e},
-	65:  {from: 0x171c, to: 0xf34},
-	66:  {from: 0x176f, to: 0x1519},
-	67:  {from: 0x17fe, to: 0x17ab},
-	68:  {from: 0x180b, to: 0x18e8},
-	69:  {from: 0x187f, to: 0x42c},
-	70:  {from: 0x196e, to: 0x1cf6},
-	71:  {from: 0x1a69, to: 0x2ba5},
-	72:  {from: 0x1a7f, to: 0x1f0},
-	73:  {from: 0x1b4f, to: 0x1f2},
-	74:  {from: 0x1b7b, to: 0x150a},
-	75:  {from: 0x202d, to: 0x37a6},
-	76:  {from: 0x2032, to: 0x20d2},
-	77:  {from: 0x204f, to: 0x302},
-	78:  {from: 0x20d8, to: 0x26b},
-	79:  {from: 0x20e3, to: 0x25a},
-	80:  {from: 0x20e7, to: 0x225},
-	81:  {from: 0x20ee, to: 0x24d},
-	82:  {from: 0x2104, to: 0x21e0},
-	83:  {from: 0x212a, to: 0x274},
-	84:  {from: 0x218e, to: 0x11d},
-	85:  {from: 0x21c3, to: 0x1556},
-	86:  {from: 0x21db, to: 0x4fa},
-	87:  {from: 0x21e9, to: 0x495},
-	88:  {from: 0x2222, to: 0x11d},
-	89:  {from: 0x222c, to: 0x11d},
-	90:  {from: 0x2257, to: 0x91f},
-	91:  {from: 0x230b, to: 0x321b},
-	92:  {from: 0x2377, to: 0x335a},
-	93:  {from: 0x2467, to: 0x2be},
-	94:  {from: 0x24d9, to: 0x2f6},
-	95:  {from: 0x24e5, to: 0x2f1},
-	96:  {from: 0x24ef, to: 0x316},
-	97:  {from: 0x2545, to: 0xb50},
-	98:  {from: 0x259e, to: 0xe0},
-	99:  {from: 0x2633, to: 0x2c7},
-	100: {from: 0x26be, to: 0x26a9},
-	101: {from: 0x26ee, to: 0x3bf},
-	102: {from: 0x271c, to: 0x3ca4},
-	103: {from: 0x275a, to: 0x26a9},
-	104: {from: 0x277e, to: 0x434d},
-	105: {from: 0x28e4, to: 0x282c},
-	106: {from: 0x2909, to: 0x348},
-	107: {from: 0x297b, to: 0x2d9c},
-	108: {from: 0x2b0f, to: 0x384},
-	109: {from: 0x2bf1, to: 0x38c},
-	110: {from: 0x2c34, to: 0x3ca4},
-	111: {from: 0x2cf1, to: 0x3b5},
-	112: {from: 0x2d08, to: 0x58c},
-	113: {from: 0x2d3c, to: 0x143},
-	114: {from: 0x2d3d, to: 0x143},
-	115: {from: 0x2df4, to: 0x2e8},
-	116: {from: 0x2dfd, to: 0x19c1},
-	117: {from: 0x2e0f, to: 0x2d8a},
-	118: {from: 0x2e16, to: 0x289},
-	119: {from: 0x2e49, to: 0x7c},
-	120: {from: 0x2e5a, to: 0x2277},
-	121: {from: 0x2e95, to: 0x2e90},
-	122: {from: 0x2ee4, to: 0x2ecc},
-	123: {from: 0x3188, to: 0x3bb},
-	124: {from: 0x335b, to: 0x3383},
-	125: {from: 0x341f, to: 0x3d3},
-	126: {from: 0x34e3, to: 0x18c5},
-	127: {from: 0x35db, to: 0x408},
-	128: {from: 0x364d, to: 0x23e},
-	129: {from: 0x366b, to: 0x3ea},
-	130: {from: 0x36f2, to: 0x43b},
-	131: {from: 0x37b5, to: 0x11d},
-	132: {from: 0x380b, to: 0x38e7},
-	133: {from: 0x3820, to: 0x2c90},
-	134: {from: 0x3824, to: 0xa7},
-	135: {from: 0x3827, to: 0x321d},
-	136: {from: 0x3861, to: 0x399b},
-	137: {from: 0x3887, to: 0x3fb5},
-	138: {from: 0x389a, to: 0x39cc},
-	139: {from: 0x38a9, to: 0x1f99},
-	140: {from: 0x38aa, to: 0x2e8f},
-	141: {from: 0x3951, to: 0x474},
-	142: {from: 0x3b43, to: 0xd86},
-	143: {from: 0x3b6d, to: 0x132},
-	144: {from: 0x3c8e, to: 0x4b2},
-	145: {from: 0x3fb2, to: 0xfc},
-	146: {from: 0x41fd, to: 0xa86},
-	147: {from: 0x42b3, to: 0x568},
-	148: {from: 0x42ee, to: 0x3f55},
-	149: {from: 0x436d, to: 0x251},
-	150: {from: 0x43c0, to: 0x36c0},
-	151: {from: 0x43c2, to: 0x10b},
-	152: {from: 0x44a4, to: 0x3317},
-	153: {from: 0x44d8, to: 0x508},
-	154: {from: 0x45bf, to: 0x23fe},
-	155: {from: 0x45d2, to: 0x26d1},
-	156: {from: 0x4605, to: 0x48a3},
-	157: {from: 0x46a3, to: 0x4695},
-	158: {from: 0x4733, to: 0x473a},
-	159: {from: 0x490b, to: 0x316},
-	160: {from: 0x499c, to: 0x519},
+	0:   {from: 0x82, to: 0x88},
+	1:   {from: 0x185, to: 0x1ac},
+	2:   {from: 0x1f1, to: 0x1df},
+	3:   {from: 0x1f9, to: 0x1ba},
+	4:   {from: 0x206, to: 0x510},
+	5:   {from: 0x20d, to: 0x20c},
+	6:   {from: 0x30e, to: 0x3da},
+	7:   {from: 0x345, to: 0x36d},
+	8:   {from: 0x405, to: 0x430},
+	9:   {from: 0x478, to: 0x152},
+	10:  {from: 0x48e, to: 0x44f},
+	11:  {from: 0x4a0, to: 0x21},
+	12:  {from: 0x53b, to: 0x541},
+	13:  {from: 0x58c, to: 0x12c},
+	14:  {from: 0x62d, to: 0x1eae},
+	15:  {from: 0x64e, to: 0x42f},
+	16:  {from: 0x65f, to: 0x42f},
+	17:  {from: 0x6ea, to: 0x3a},
+	18:  {from: 0x6f5, to: 0x1d5},
+	19:  {from: 0x73b, to: 0x219e},
+	20:  {from: 0x7b0, to: 0x56},
+	21:  {from: 0x7b6, to: 0x2998},
+	22:  {from: 0x7c2, to: 0x58},
+	23:  {from: 0x7e3, to: 0x144},
+	24:  {from: 0x809, to: 0x5a},
+	25:  {from: 0x812, to: 0x8d},
+	26:  {from: 0x87b, to: 0x80d},
+	27:  {from: 0x8c0, to: 0xee0},
+	28:  {from: 0x9ec, to: 0x32f},
+	29:  {from: 0xa33, to: 0x2c3},
+	30:  {from: 0xa3a, to: 0xbf},
+	31:  {from: 0xabb, to: 0x331f},
+	32:  {from: 0xb35, to: 0x527},
+	33:  {from: 0xb72, to: 0x2657},
+	34:  {from: 0xb7b, to: 0xbc0},
+	35:  {from: 0xb98, to: 0x44c},
+	36:  {from: 0xbb9, to: 0x4226},
+	37:  {from: 0xbbc, to: 0x527},
+	38:  {from: 0xbfb, to: 0x2da4},
+	39:  {from: 0xc2b, to: 0x317e},
+	40:  {from: 0xcb6, to: 0xf2},
+	41:  {from: 0xd05, to: 0xf9},
+	42:  {from: 0xdc5, to: 0x119},
+	43:  {from: 0xdd4, to: 0x32b},
+	44:  {from: 0xdf5, to: 0xdf8},
+	45:  {from: 0xdfb, to: 0x52e},
+	46:  {from: 0xedc, to: 0x2057},
+	47:  {from: 0xeeb, to: 0x2e97},
+	48:  {from: 0xf36, to: 0x365},
+	49:  {from: 0x10cd, to: 0x13f},
+	50:  {from: 0x1101, to: 0x2ce},
+	51:  {from: 0x119d, to: 0x1ea},
+	52:  {from: 0x1276, to: 0x21},
+	53:  {from: 0x1421, to: 0x15d},
+	54:  {from: 0x146d, to: 0x14d},
+	55:  {from: 0x151c, to: 0xd98},
+	56:  {from: 0x1520, to: 0x38e},
+	57:  {from: 0x152f, to: 0x19d},
+	58:  {from: 0x157d, to: 0x20e},
+	59:  {from: 0x1580, to: 0x10c},
+	60:  {from: 0x15a0, to: 0x3cac},
+	61:  {from: 0x1667, to: 0x199},
+	62:  {from: 0x16c5, to: 0x135},
+	63:  {from: 0x16fd, to: 0x29f5},
+	64:  {from: 0x1715, to: 0x192},
+	65:  {from: 0x1724, to: 0xf3c},
+	66:  {from: 0x1777, to: 0x1521},
+	67:  {from: 0x1806, to: 0x17b3},
+	68:  {from: 0x1813, to: 0x18f0},
+	69:  {from: 0x1887, to: 0x434},
+	70:  {from: 0x1976, to: 0x1cfe},
+	71:  {from: 0x1a71, to: 0x2bad},
+	72:  {from: 0x1a87, to: 0x1f6},
+	73:  {from: 0x1b57, to: 0x1f8},
+	74:  {from: 0x1b83, to: 0x1512},
+	75:  {from: 0x2035, to: 0x37ae},
+	76:  {from: 0x203a, to: 0x20da},
+	77:  {from: 0x2057, to: 0x309},
+	78:  {from: 0x20e0, to: 0x272},
+	79:  {from: 0x20eb, to: 0x261},
+	80:  {from: 0x20ef, to: 0x22b},
+	81:  {from: 0x20f6, to: 0x254},
+	82:  {from: 0x210c, to: 0x21e8},
+	83:  {from: 0x2132, to: 0x27b},
+	84:  {from: 0x2196, to: 0x120},
+	85:  {from: 0x21cb, to: 0x155e},
+	86:  {from: 0x21e3, to: 0x502},
+	87:  {from: 0x21f1, to: 0x49d},
+	88:  {from: 0x222a, to: 0x120},
+	89:  {from: 0x2234, to: 0x120},
+	90:  {from: 0x225f, to: 0x927},
+	91:  {from: 0x2313, to: 0x3223},
+	92:  {from: 0x237f, to: 0x3362},
+	93:  {from: 0x246f, to: 0x2c5},
+	94:  {from: 0x24e1, to: 0x2fd},
+	95:  {from: 0x24ed, to: 0x2f8},
+	96:  {from: 0x24f7, to: 0x31d},
+	97:  {from: 0x254d, to: 0xb58},
+	98:  {from: 0x25a6, to: 0xe2},
+	99:  {from: 0x263b, to: 0x2ce},
+	100: {from: 0x26c6, to: 0x26b1},
+	101: {from: 0x26f6, to: 0x3c6},
+	102: {from: 0x2724, to: 0x3cac},
+	103: {from: 0x2762, to: 0x26b1},
+	104: {from: 0x2786, to: 0x4355},
+	105: {from: 0x28ec, to: 0x2834},
+	106: {from: 0x2911, to: 0x34f},
+	107: {from: 0x2983, to: 0x2da4},
+	108: {from: 0x2b17, to: 0x38b},
+	109: {from: 0x2bf9, to: 0x393},
+	110: {from: 0x2c3c, to: 0x3cac},
+	111: {from: 0x2cf9, to: 0x3bc},
+	112: {from: 0x2d10, to: 0x594},
+	113: {from: 0x2d44, to: 0x147},
+	114: {from: 0x2d45, to: 0x147},
+	115: {from: 0x2dfc, to: 0x2ef},
+	116: {from: 0x2e05, to: 0x19c9},
+	117: {from: 0x2e17, to: 0x2d92},
+	118: {from: 0x2e1e, to: 0x290},
+	119: {from: 0x2e51, to: 0x7d},
+	120: {from: 0x2e62, to: 0x227f},
+	121: {from: 0x2e9d, to: 0x2e98},
+	122: {from: 0x2eec, to: 0x2ed4},
+	123: {from: 0x3190, to: 0x3c2},
+	124: {from: 0x3363, to: 0x338b},
+	125: {from: 0x3427, to: 0x3da},
+	126: {from: 0x34eb, to: 0x18cd},
+	127: {from: 0x35e3, to: 0x410},
+	128: {from: 0x3655, to: 0x244},
+	129: {from: 0x3673, to: 0x3f2},
+	130: {from: 0x36fa, to: 0x443},
+	131: {from: 0x37bd, to: 0x120},
+	132: {from: 0x3813, to: 0x38ef},
+	133: {from: 0x3828, to: 0x2c98},
+	134: {from: 0x382c, to: 0xa9},
+	135: {from: 0x382f, to: 0x3225},
+	136: {from: 0x3869, to: 0x39a3},
+	137: {from: 0x388f, to: 0x3fbd},
+	138: {from: 0x38a2, to: 0x39d4},
+	139: {from: 0x38b1, to: 0x1fa1},
+	140: {from: 0x38b2, to: 0x2e97},
+	141: {from: 0x3959, to: 0x47c},
+	142: {from: 0x3b4b, to: 0xd8e},
+	143: {from: 0x3b75, to: 0x136},
+	144: {from: 0x3c96, to: 0x4ba},
+	145: {from: 0x3fba, to: 0xff},
+	146: {from: 0x4205, to: 0xa8e},
+	147: {from: 0x42bb, to: 0x570},
+	148: {from: 0x42f6, to: 0x3f5d},
+	149: {from: 0x4375, to: 0x258},
+	150: {from: 0x43c8, to: 0x36c8},
+	151: {from: 0x43ca, to: 0x10e},
+	152: {from: 0x44ac, to: 0x331f},
+	153: {from: 0x44e0, to: 0x510},
+	154: {from: 0x45c7, to: 0x2406},
+	155: {from: 0x45da, to: 0x26d9},
+	156: {from: 0x460d, to: 0x48ab},
+	157: {from: 0x46ab, to: 0x469d},
+	158: {from: 0x473b, to: 0x4742},
+	159: {from: 0x4913, to: 0x31d},
+	160: {from: 0x49a4, to: 0x521},
 }
 
 // Size: 161 bytes, 161 elements
@@ -779,7 +780,7 @@ const (
 
 // script is an alphabetically sorted list of ISO 15924 codes. The index
 // of the script in the string, divided by 4, is the internal scriptID.
-var script tag.Index = "" + // Size: 928 bytes
+const script tag.Index = "" + // Size: 928 bytes
 	"----AdlmAfakAghbAhomArabAranArmiArmnAvstBaliBamuBassBatkBengBhksBlisBopo" +
 	"BrahBraiBugiBuhdCakmCansCariChamCherCirtCoptCprtCyrlCyrsDevaDsrtDuplEgyd" +
 	"EgyhEgypElbaEthiGeokGeorGlagGothGranGrekGujrGuruHanbHangHaniHanoHansHant" +
@@ -797,153 +798,154 @@ var script tag.Index = "" + // Size: 928 bytes
 
 // suppressScript is an index from langID to the dominant script for that language,
 // if it exists.  If a script is given, it should be suppressed from the language tag.
-// Size: 1319 bytes, 1319 elements
-var suppressScript = [1319]uint8{
+// Size: 1327 bytes, 1327 elements
+var suppressScript = [1327]uint8{
 	// Entry 0 - 3F
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
 	// Entry 40 - 7F
-	0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
+	0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00,
 	// Entry 80 - BF
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	// Entry C0 - FF
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x52, 0x52, 0x00, 0x00,
+	0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
 	// Entry 100 - 13F
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00,
-	0x00, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x2d, 0x00, 0x00, 0x52, 0x00, 0x00, 0x52,
-	0x00, 0x52, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00,
-	// Entry 140 - 17F
-	0x52, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
+	0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
-	0x52, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x52, 0x00, 0x00, 0x52, 0x52, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4,
+	0x00, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00,
+	0x52, 0x00, 0x00, 0x52, 0x00, 0x52, 0x00, 0x52,
+	// Entry 140 - 17F
+	0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x05,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x52,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
 	0x52, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x52, 0x52, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	// Entry 180 - 1BF
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x52, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x52, 0x2e, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x20,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	// Entry 1C0 - 1FF
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x52, 0x52, 0x00, 0x52, 0x52, 0x00,
-	0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
 	0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00,
-	0x52, 0x52, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00,
-	0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x52, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x37, 0x00, 0x20, 0x00, 0x00, 0x00,
+	// Entry 1C0 - 1FF
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
+	0x52, 0x00, 0x52, 0x52, 0x00, 0x08, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x52, 0x52,
+	0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00,
 	// Entry 200 - 23F
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x1e, 0x00, 0x00, 0x52, 0x00, 0x00,
 	// Entry 240 - 27F
-	0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x4a, 0x00, 0x4b, 0x00, 0x20, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x1e, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00,
+	0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a,
+	0x00, 0x00, 0x4b, 0x00, 0x20, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	// Entry 280 - 2BF
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x4f,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
+	0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x4f, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
 	// Entry 2C0 - 2FF
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00,
-	0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
 	// Entry 300 - 33F
+	0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x20, 0x00, 0x00, 0x00, 0x52, 0x52, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
+	// Entry 340 - 37F
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x20,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x52, 0x52,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
+	0x52, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x70, 0x52, 0x00, 0x00, 0x00,
+	0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	// Entry 380 - 3BF
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
-	// Entry 340 - 37F
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x52,
-	0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
-	0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x70, 0x52, 0x00, 0x00,
 	0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
-	// Entry 380 - 3BF
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
-	0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x52,
-	0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x52, 0x00,
 	// Entry 3C0 - 3FF
+	0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00,
-	0x52, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x1e, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x52,
+	0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x1e, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	// Entry 400 - 43F
+	0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
 	0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -951,8 +953,8 @@ var suppressScript = [1319]uint8{
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
 	0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x52, 0x52, 0x00, 0x00, 0x00, 0x00,
 	// Entry 440 - 47F
+	0x00, 0x00, 0x52, 0x52, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0,
@@ -960,17 +962,17 @@ var suppressScript = [1319]uint8{
 	0x00, 0xd5, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00,
 	0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x52, 0x00,
-	0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
 	// Entry 480 - 4BF
 	0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
+	0x52, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00,
-	0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	// Entry 4C0 - 4FF
+	0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -978,9 +980,9 @@ var suppressScript = [1319]uint8{
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	// Entry 500 - 53F
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 	0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
@@ -1070,7 +1072,7 @@ var regionTypes = [357]uint8{
 //     - [A-Z}{2}: the first letter of the 2-letter code plus these two
 //                 letters form the 3-letter ISO code.
 //     - 0, n:     index into altRegionISO3.
-var regionISO tag.Index = "" + // Size: 1308 bytes
+const regionISO tag.Index = "" + // Size: 1308 bytes
 	"AAAAACSCADNDAEREAFFGAGTGAIIAALLBAMRMANNTAOGOAQTAARRGASSMATUTAUUSAWBWAXLA" +
 	"AZZEBAIHBBRBBDGDBEELBFFABGGRBHHRBIDIBJENBLLMBMMUBNRNBOOLBQESBRRABSHSBTTN" +
 	"BUURBVVTBWWABYLRBZLZCAANCCCKCDODCFAFCGOGCHHECIIVCKOKCLHLCMMRCNHNCOOLCPPT" +
@@ -1094,7 +1096,7 @@ var regionISO tag.Index = "" + // Size: 1308 bytes
 
 // altRegionISO3 holds a list of 3-letter region codes that cannot be
 // mapped to 2-letter codes using the default algorithm. This is a short list.
-var altRegionISO3 string = "SCGQUUSGSCOMPRKCYMSPMSRBATFMYTATN"
+const altRegionISO3 string = "SCGQUUSGSCOMPRKCYMSPMSRBATFMYTATN"
 
 // altRegionIDs holds a list of regionIDs the positions of which match those
 // of the 3-letter ISO codes in altRegionISO3.
@@ -1345,145 +1347,145 @@ type likelyLangRegion struct {
 // languages and regions given a script.
 // Size: 928 bytes, 232 elements
 var likelyScript = [232]likelyLangRegion{
-	1:   {lang: 0x149, region: 0x83},
-	3:   {lang: 0x299, region: 0x105},
-	4:   {lang: 0x1e, region: 0x98},
-	5:   {lang: 0x39, region: 0x6a},
-	7:   {lang: 0x3a, region: 0x9b},
-	8:   {lang: 0x1d0, region: 0x27},
-	9:   {lang: 0x12, region: 0x9b},
-	10:  {lang: 0x5a, region: 0x94},
-	11:  {lang: 0x5f, region: 0x51},
-	12:  {lang: 0xb7, region: 0xb3},
-	13:  {lang: 0x62, region: 0x94},
-	14:  {lang: 0xa3, region: 0x34},
-	15:  {lang: 0x3e0, region: 0x98},
-	17:  {lang: 0x51f, region: 0x12d},
-	18:  {lang: 0x3a8, region: 0x98},
-	19:  {lang: 0x159, region: 0x77},
-	20:  {lang: 0xc0, region: 0x94},
-	21:  {lang: 0x9b, region: 0xe6},
-	22:  {lang: 0xd9, region: 0x34},
-	23:  {lang: 0xf0, region: 0x48},
-	24:  {lang: 0x4e6, region: 0x12a},
-	25:  {lang: 0xe5, region: 0x13d},
-	26:  {lang: 0xe3, region: 0x134},
-	28:  {lang: 0xee, region: 0x6a},
-	29:  {lang: 0x199, region: 0x5c},
-	30:  {lang: 0x3d9, region: 0x105},
-	32:  {lang: 0x1b7, region: 0x98},
-	34:  {lang: 0x159, region: 0x77},
-	37:  {lang: 0x12f, region: 0x6a},
-	38:  {lang: 0x427, region: 0x26},
-	39:  {lang: 0x26, region: 0x6e},
-	41:  {lang: 0x208, region: 0x7c},
-	42:  {lang: 0xfa, region: 0x37},
-	43:  {lang: 0x198, region: 0x12f},
-	44:  {lang: 0x3e0, region: 0x98},
-	45:  {lang: 0x131, region: 0x86},
-	46:  {lang: 0x19d, region: 0x98},
-	47:  {lang: 0x394, region: 0x98},
-	48:  {lang: 0x51f, region: 0x12d},
-	49:  {lang: 0x24b, region: 0xaa},
-	50:  {lang: 0x51f, region: 0x52},
-	51:  {lang: 0x1c4, region: 0xe6},
-	52:  {lang: 0x51f, region: 0x52},
-	53:  {lang: 0x51f, region: 0x12d},
-	54:  {lang: 0x2f4, region: 0x9a},
-	55:  {lang: 0x1b5, region: 0x96},
-	56:  {lang: 0x1f8, region: 0xa1},
-	57:  {lang: 0x1be, region: 0x12a},
-	58:  {lang: 0x1c3, region: 0xae},
-	60:  {lang: 0x1ce, region: 0x91},
-	62:  {lang: 0x13d, region: 0x9d},
-	63:  {lang: 0x24b, region: 0xaa},
-	64:  {lang: 0x206, region: 0x94},
-	65:  {lang: 0x1f8, region: 0xa1},
-	67:  {lang: 0x130, region: 0xc3},
-	68:  {lang: 0x1f8, region: 0xa1},
-	69:  {lang: 0x3b2, region: 0xe7},
-	70:  {lang: 0x242, region: 0xa5},
-	71:  {lang: 0x3f0, region: 0x98},
-	74:  {lang: 0x249, region: 0x98},
-	75:  {lang: 0x24b, region: 0xaa},
-	77:  {lang: 0x87, region: 0x98},
-	78:  {lang: 0x367, region: 0x122},
-	79:  {lang: 0x2af, region: 0xae},
-	84:  {lang: 0x296, region: 0x98},
-	85:  {lang: 0x29f, region: 0x98},
-	86:  {lang: 0x286, region: 0x86},
-	87:  {lang: 0x199, region: 0x86},
-	88:  {lang: 0x2a3, region: 0x52},
-	90:  {lang: 0x4ea, region: 0x12a},
-	91:  {lang: 0x4eb, region: 0x12a},
-	92:  {lang: 0x1b7, region: 0x98},
-	93:  {lang: 0x32e, region: 0x9b},
-	94:  {lang: 0x4ed, region: 0x52},
-	95:  {lang: 0xa7, region: 0x52},
-	97:  {lang: 0x2df, region: 0x111},
-	98:  {lang: 0x4ee, region: 0x10a},
-	99:  {lang: 0x4ee, region: 0x10a},
-	100: {lang: 0x2fb, region: 0x98},
-	101: {lang: 0x312, region: 0x98},
-	102: {lang: 0x302, region: 0x52},
-	104: {lang: 0x315, region: 0x34},
-	105: {lang: 0x305, region: 0x98},
-	106: {lang: 0x40a, region: 0xe7},
-	107: {lang: 0x328, region: 0xc3},
-	108: {lang: 0x4ef, region: 0x107},
-	109: {lang: 0x3a, region: 0xa0},
-	110: {lang: 0x34a, region: 0xda},
-	112: {lang: 0x2c7, region: 0x83},
-	114: {lang: 0x3f9, region: 0x95},
-	115: {lang: 0x3e5, region: 0x98},
-	116: {lang: 0x392, region: 0xc4},
-	117: {lang: 0x38c, region: 0x98},
-	118: {lang: 0x390, region: 0x134},
-	119: {lang: 0x41f, region: 0x114},
-	120: {lang: 0x3a, region: 0x11b},
-	121: {lang: 0xf9, region: 0xc3},
-	122: {lang: 0x274, region: 0x105},
-	123: {lang: 0x2c0, region: 0x52},
-	124: {lang: 0x396, region: 0x9b},
-	125: {lang: 0x396, region: 0x52},
-	127: {lang: 0x3a4, region: 0xaf},
-	129: {lang: 0x1bf, region: 0x52},
-	130: {lang: 0x4f3, region: 0x9b},
-	181: {lang: 0x3c2, region: 0x94},
-	183: {lang: 0x369, region: 0x10b},
-	184: {lang: 0x416, region: 0x96},
-	186: {lang: 0x4f5, region: 0x15d},
-	187: {lang: 0x3e6, region: 0x98},
-	188: {lang: 0x44, region: 0x134},
-	189: {lang: 0x134, region: 0x7a},
-	190: {lang: 0x3e0, region: 0x98},
-	191: {lang: 0x3e0, region: 0x98},
-	192: {lang: 0x3f0, region: 0x98},
-	193: {lang: 0x402, region: 0xb2},
-	194: {lang: 0x429, region: 0x98},
-	195: {lang: 0x434, region: 0x94},
-	196: {lang: 0x443, region: 0x34},
-	197: {lang: 0x444, region: 0x9a},
-	201: {lang: 0x450, region: 0xe6},
-	202: {lang: 0x116, region: 0x98},
-	203: {lang: 0x454, region: 0x52},
-	204: {lang: 0x22a, region: 0x52},
-	205: {lang: 0x446, region: 0x98},
-	206: {lang: 0x49b, region: 0x52},
-	207: {lang: 0x9d, region: 0x13d},
-	208: {lang: 0x457, region: 0x98},
-	210: {lang: 0x51e, region: 0xb9},
-	211: {lang: 0x14e, region: 0xe6},
-	212: {lang: 0x124, region: 0xcc},
-	213: {lang: 0x461, region: 0x122},
-	214: {lang: 0xa7, region: 0x52},
-	215: {lang: 0x2c5, region: 0x98},
-	216: {lang: 0x4a3, region: 0x11b},
-	217: {lang: 0x4b4, region: 0xb3},
-	219: {lang: 0x1c7, region: 0x98},
-	221: {lang: 0x3a0, region: 0x9b},
-	222: {lang: 0x21, region: 0x9a},
-	223: {lang: 0x1e2, region: 0x52},
+	1:   {lang: 0x14d, region: 0x83},
+	3:   {lang: 0x2a0, region: 0x105},
+	4:   {lang: 0x1f, region: 0x98},
+	5:   {lang: 0x3a, region: 0x6a},
+	7:   {lang: 0x3b, region: 0x9b},
+	8:   {lang: 0x1d5, region: 0x27},
+	9:   {lang: 0x13, region: 0x9b},
+	10:  {lang: 0x5b, region: 0x94},
+	11:  {lang: 0x60, region: 0x51},
+	12:  {lang: 0xb9, region: 0xb3},
+	13:  {lang: 0x63, region: 0x94},
+	14:  {lang: 0xa5, region: 0x34},
+	15:  {lang: 0x3e7, region: 0x98},
+	17:  {lang: 0x527, region: 0x12d},
+	18:  {lang: 0x3af, region: 0x98},
+	19:  {lang: 0x15d, region: 0x77},
+	20:  {lang: 0xc2, region: 0x94},
+	21:  {lang: 0x9d, region: 0xe6},
+	22:  {lang: 0xdb, region: 0x34},
+	23:  {lang: 0xf2, region: 0x48},
+	24:  {lang: 0x4ee, region: 0x12a},
+	25:  {lang: 0xe7, region: 0x13d},
+	26:  {lang: 0xe5, region: 0x134},
+	28:  {lang: 0xf0, region: 0x6a},
+	29:  {lang: 0x19e, region: 0x5c},
+	30:  {lang: 0x3e0, region: 0x105},
+	32:  {lang: 0x1bc, region: 0x98},
+	34:  {lang: 0x15d, region: 0x77},
+	37:  {lang: 0x132, region: 0x6a},
+	38:  {lang: 0x42f, region: 0x26},
+	39:  {lang: 0x27, region: 0x6e},
+	41:  {lang: 0x20e, region: 0x7c},
+	42:  {lang: 0xfd, region: 0x37},
+	43:  {lang: 0x19c, region: 0x12f},
+	44:  {lang: 0x3e7, region: 0x98},
+	45:  {lang: 0x135, region: 0x86},
+	46:  {lang: 0x1a2, region: 0x98},
+	47:  {lang: 0x39b, region: 0x98},
+	48:  {lang: 0x527, region: 0x12d},
+	49:  {lang: 0x252, region: 0xaa},
+	50:  {lang: 0x527, region: 0x52},
+	51:  {lang: 0x1c9, region: 0xe6},
+	52:  {lang: 0x527, region: 0x52},
+	53:  {lang: 0x527, region: 0x12d},
+	54:  {lang: 0x2fb, region: 0x9a},
+	55:  {lang: 0x1ba, region: 0x96},
+	56:  {lang: 0x1fe, region: 0xa1},
+	57:  {lang: 0x1c3, region: 0x12a},
+	58:  {lang: 0x1c8, region: 0xae},
+	60:  {lang: 0x1d3, region: 0x91},
+	62:  {lang: 0x141, region: 0x9d},
+	63:  {lang: 0x252, region: 0xaa},
+	64:  {lang: 0x20c, region: 0x94},
+	65:  {lang: 0x1fe, region: 0xa1},
+	67:  {lang: 0x134, region: 0xc3},
+	68:  {lang: 0x1fe, region: 0xa1},
+	69:  {lang: 0x3b9, region: 0xe7},
+	70:  {lang: 0x248, region: 0xa5},
+	71:  {lang: 0x3f8, region: 0x98},
+	74:  {lang: 0x24f, region: 0x98},
+	75:  {lang: 0x252, region: 0xaa},
+	77:  {lang: 0x88, region: 0x98},
+	78:  {lang: 0x36e, region: 0x122},
+	79:  {lang: 0x2b6, region: 0xae},
+	84:  {lang: 0x29d, region: 0x98},
+	85:  {lang: 0x2a6, region: 0x98},
+	86:  {lang: 0x28d, region: 0x86},
+	87:  {lang: 0x19e, region: 0x86},
+	88:  {lang: 0x2aa, region: 0x52},
+	90:  {lang: 0x4f2, region: 0x12a},
+	91:  {lang: 0x4f3, region: 0x12a},
+	92:  {lang: 0x1bc, region: 0x98},
+	93:  {lang: 0x335, region: 0x9b},
+	94:  {lang: 0x4f5, region: 0x52},
+	95:  {lang: 0xa9, region: 0x52},
+	97:  {lang: 0x2e6, region: 0x111},
+	98:  {lang: 0x4f6, region: 0x10a},
+	99:  {lang: 0x4f6, region: 0x10a},
+	100: {lang: 0x302, region: 0x98},
+	101: {lang: 0x319, region: 0x98},
+	102: {lang: 0x309, region: 0x52},
+	104: {lang: 0x31c, region: 0x34},
+	105: {lang: 0x30c, region: 0x98},
+	106: {lang: 0x412, region: 0xe7},
+	107: {lang: 0x32f, region: 0xc3},
+	108: {lang: 0x4f7, region: 0x107},
+	109: {lang: 0x3b, region: 0xa0},
+	110: {lang: 0x351, region: 0xda},
+	112: {lang: 0x2ce, region: 0x83},
+	114: {lang: 0x401, region: 0x95},
+	115: {lang: 0x3ec, region: 0x98},
+	116: {lang: 0x399, region: 0xc4},
+	117: {lang: 0x393, region: 0x98},
+	118: {lang: 0x397, region: 0x134},
+	119: {lang: 0x427, region: 0x114},
+	120: {lang: 0x3b, region: 0x11b},
+	121: {lang: 0xfc, region: 0xc3},
+	122: {lang: 0x27b, region: 0x105},
+	123: {lang: 0x2c7, region: 0x52},
+	124: {lang: 0x39d, region: 0x9b},
+	125: {lang: 0x39d, region: 0x52},
+	127: {lang: 0x3ab, region: 0xaf},
+	129: {lang: 0x1c4, region: 0x52},
+	130: {lang: 0x4fb, region: 0x9b},
+	181: {lang: 0x3c9, region: 0x94},
+	183: {lang: 0x370, region: 0x10b},
+	184: {lang: 0x41e, region: 0x96},
+	186: {lang: 0x4fd, region: 0x15d},
+	187: {lang: 0x3ee, region: 0x98},
+	188: {lang: 0x45, region: 0x134},
+	189: {lang: 0x138, region: 0x7a},
+	190: {lang: 0x3e7, region: 0x98},
+	191: {lang: 0x3e7, region: 0x98},
+	192: {lang: 0x3f8, region: 0x98},
+	193: {lang: 0x40a, region: 0xb2},
+	194: {lang: 0x431, region: 0x98},
+	195: {lang: 0x43c, region: 0x94},
+	196: {lang: 0x44b, region: 0x34},
+	197: {lang: 0x44c, region: 0x9a},
+	201: {lang: 0x458, region: 0xe6},
+	202: {lang: 0x119, region: 0x98},
+	203: {lang: 0x45c, region: 0x52},
+	204: {lang: 0x230, region: 0x52},
+	205: {lang: 0x44e, region: 0x98},
+	206: {lang: 0x4a3, region: 0x52},
+	207: {lang: 0x9f, region: 0x13d},
+	208: {lang: 0x45f, region: 0x98},
+	210: {lang: 0x526, region: 0xb9},
+	211: {lang: 0x152, region: 0xe6},
+	212: {lang: 0x127, region: 0xcc},
+	213: {lang: 0x469, region: 0x122},
+	214: {lang: 0xa9, region: 0x52},
+	215: {lang: 0x2cc, region: 0x98},
+	216: {lang: 0x4ab, region: 0x11b},
+	217: {lang: 0x4bc, region: 0xb3},
+	219: {lang: 0x1cc, region: 0x98},
+	221: {lang: 0x3a7, region: 0x9b},
+	222: {lang: 0x22, region: 0x9a},
+	223: {lang: 0x1e8, region: 0x52},
 }
 
 type likelyScriptRegion struct {
@@ -1496,8 +1498,8 @@ type likelyScriptRegion struct {
 // scripts and regions given incomplete information. If more entries exist for a
 // given language, region and script are the index and size respectively
 // of the list in likelyLangList.
-// Size: 5276 bytes, 1319 elements
-var likelyLang = [1319]likelyScriptRegion{
+// Size: 5308 bytes, 1327 elements
+var likelyLang = [1327]likelyScriptRegion{
 	0:    {region: 0x134, script: 0x52, flags: 0x0},
 	1:    {region: 0x6e, script: 0x52, flags: 0x0},
 	2:    {region: 0x164, script: 0x52, flags: 0x0},
@@ -1505,1305 +1507,1313 @@ var likelyLang = [1319]likelyScriptRegion{
 	4:    {region: 0x164, script: 0x52, flags: 0x0},
 	5:    {region: 0x7c, script: 0x1e, flags: 0x0},
 	6:    {region: 0x164, script: 0x52, flags: 0x0},
-	7:    {region: 0x7f, script: 0x52, flags: 0x0},
-	8:    {region: 0x164, script: 0x52, flags: 0x0},
+	7:    {region: 0x164, script: 0x1e, flags: 0x0},
+	8:    {region: 0x7f, script: 0x52, flags: 0x0},
 	9:    {region: 0x164, script: 0x52, flags: 0x0},
 	10:   {region: 0x164, script: 0x52, flags: 0x0},
-	11:   {region: 0x94, script: 0x52, flags: 0x0},
-	12:   {region: 0x130, script: 0x52, flags: 0x0},
-	13:   {region: 0x7f, script: 0x52, flags: 0x0},
-	14:   {region: 0x164, script: 0x52, flags: 0x0},
+	11:   {region: 0x164, script: 0x52, flags: 0x0},
+	12:   {region: 0x94, script: 0x52, flags: 0x0},
+	13:   {region: 0x130, script: 0x52, flags: 0x0},
+	14:   {region: 0x7f, script: 0x52, flags: 0x0},
 	15:   {region: 0x164, script: 0x52, flags: 0x0},
-	16:   {region: 0x105, script: 0x1e, flags: 0x0},
-	17:   {region: 0x164, script: 0x52, flags: 0x0},
-	18:   {region: 0x9b, script: 0x9, flags: 0x0},
-	19:   {region: 0x127, script: 0x5, flags: 0x0},
-	20:   {region: 0x164, script: 0x52, flags: 0x0},
-	21:   {region: 0x160, script: 0x52, flags: 0x0},
-	22:   {region: 0x164, script: 0x52, flags: 0x0},
+	16:   {region: 0x164, script: 0x52, flags: 0x0},
+	17:   {region: 0x105, script: 0x1e, flags: 0x0},
+	18:   {region: 0x164, script: 0x52, flags: 0x0},
+	19:   {region: 0x9b, script: 0x9, flags: 0x0},
+	20:   {region: 0x127, script: 0x5, flags: 0x0},
+	21:   {region: 0x164, script: 0x52, flags: 0x0},
+	22:   {region: 0x160, script: 0x52, flags: 0x0},
 	23:   {region: 0x164, script: 0x52, flags: 0x0},
 	24:   {region: 0x164, script: 0x52, flags: 0x0},
 	25:   {region: 0x164, script: 0x52, flags: 0x0},
 	26:   {region: 0x164, script: 0x52, flags: 0x0},
-	27:   {region: 0x51, script: 0x52, flags: 0x0},
-	28:   {region: 0x164, script: 0x52, flags: 0x0},
+	27:   {region: 0x164, script: 0x52, flags: 0x0},
+	28:   {region: 0x51, script: 0x52, flags: 0x0},
 	29:   {region: 0x164, script: 0x52, flags: 0x0},
-	30:   {region: 0x98, script: 0x4, flags: 0x0},
-	31:   {region: 0x164, script: 0x52, flags: 0x0},
-	32:   {region: 0x7f, script: 0x52, flags: 0x0},
-	33:   {region: 0x9a, script: 0xde, flags: 0x0},
-	34:   {region: 0x164, script: 0x52, flags: 0x0},
+	30:   {region: 0x164, script: 0x52, flags: 0x0},
+	31:   {region: 0x98, script: 0x4, flags: 0x0},
+	32:   {region: 0x164, script: 0x52, flags: 0x0},
+	33:   {region: 0x7f, script: 0x52, flags: 0x0},
+	34:   {region: 0x9a, script: 0xde, flags: 0x0},
 	35:   {region: 0x164, script: 0x52, flags: 0x0},
-	36:   {region: 0x14c, script: 0x52, flags: 0x0},
-	37:   {region: 0x105, script: 0x1e, flags: 0x0},
-	38:   {region: 0x6e, script: 0x27, flags: 0x0},
-	39:   {region: 0x164, script: 0x52, flags: 0x0},
+	36:   {region: 0x164, script: 0x52, flags: 0x0},
+	37:   {region: 0x14c, script: 0x52, flags: 0x0},
+	38:   {region: 0x105, script: 0x1e, flags: 0x0},
+	39:   {region: 0x6e, script: 0x27, flags: 0x0},
 	40:   {region: 0x164, script: 0x52, flags: 0x0},
-	41:   {region: 0xd5, script: 0x52, flags: 0x0},
-	42:   {region: 0x164, script: 0x52, flags: 0x0},
-	44:   {region: 0x164, script: 0x52, flags: 0x0},
+	41:   {region: 0x164, script: 0x52, flags: 0x0},
+	42:   {region: 0xd5, script: 0x52, flags: 0x0},
+	43:   {region: 0x164, script: 0x52, flags: 0x0},
 	45:   {region: 0x164, script: 0x52, flags: 0x0},
 	46:   {region: 0x164, script: 0x52, flags: 0x0},
 	47:   {region: 0x164, script: 0x52, flags: 0x0},
 	48:   {region: 0x164, script: 0x52, flags: 0x0},
 	49:   {region: 0x164, script: 0x52, flags: 0x0},
-	50:   {region: 0x94, script: 0x52, flags: 0x0},
-	51:   {region: 0x164, script: 0x5, flags: 0x0},
-	52:   {region: 0x121, script: 0x5, flags: 0x0},
-	53:   {region: 0x164, script: 0x52, flags: 0x0},
+	50:   {region: 0x164, script: 0x52, flags: 0x0},
+	51:   {region: 0x94, script: 0x52, flags: 0x0},
+	52:   {region: 0x164, script: 0x5, flags: 0x0},
+	53:   {region: 0x121, script: 0x5, flags: 0x0},
 	54:   {region: 0x164, script: 0x52, flags: 0x0},
 	55:   {region: 0x164, script: 0x52, flags: 0x0},
 	56:   {region: 0x164, script: 0x52, flags: 0x0},
-	57:   {region: 0x6a, script: 0x5, flags: 0x0},
-	58:   {region: 0x0, script: 0x3, flags: 0x1},
-	59:   {region: 0x164, script: 0x52, flags: 0x0},
-	60:   {region: 0x50, script: 0x52, flags: 0x0},
-	61:   {region: 0x3e, script: 0x52, flags: 0x0},
-	62:   {region: 0x66, script: 0x5, flags: 0x0},
-	64:   {region: 0xb9, script: 0x5, flags: 0x0},
-	65:   {region: 0x6a, script: 0x5, flags: 0x0},
-	66:   {region: 0x98, script: 0xe, flags: 0x0},
-	67:   {region: 0x12e, script: 0x52, flags: 0x0},
-	68:   {region: 0x134, script: 0xbc, flags: 0x0},
-	69:   {region: 0x164, script: 0x52, flags: 0x0},
+	57:   {region: 0x164, script: 0x52, flags: 0x0},
+	58:   {region: 0x6a, script: 0x5, flags: 0x0},
+	59:   {region: 0x0, script: 0x3, flags: 0x1},
+	60:   {region: 0x164, script: 0x52, flags: 0x0},
+	61:   {region: 0x50, script: 0x52, flags: 0x0},
+	62:   {region: 0x3e, script: 0x52, flags: 0x0},
+	63:   {region: 0x66, script: 0x5, flags: 0x0},
+	65:   {region: 0xb9, script: 0x5, flags: 0x0},
+	66:   {region: 0x6a, script: 0x5, flags: 0x0},
+	67:   {region: 0x98, script: 0xe, flags: 0x0},
+	68:   {region: 0x12e, script: 0x52, flags: 0x0},
+	69:   {region: 0x134, script: 0xbc, flags: 0x0},
 	70:   {region: 0x164, script: 0x52, flags: 0x0},
-	71:   {region: 0x6d, script: 0x52, flags: 0x0},
-	72:   {region: 0x164, script: 0x52, flags: 0x0},
+	71:   {region: 0x164, script: 0x52, flags: 0x0},
+	72:   {region: 0x6d, script: 0x52, flags: 0x0},
 	73:   {region: 0x164, script: 0x52, flags: 0x0},
-	74:   {region: 0x48, script: 0x52, flags: 0x0},
-	75:   {region: 0x164, script: 0x52, flags: 0x0},
-	76:   {region: 0x105, script: 0x1e, flags: 0x0},
-	77:   {region: 0x164, script: 0x5, flags: 0x0},
-	78:   {region: 0x164, script: 0x52, flags: 0x0},
+	74:   {region: 0x164, script: 0x52, flags: 0x0},
+	75:   {region: 0x48, script: 0x52, flags: 0x0},
+	76:   {region: 0x164, script: 0x52, flags: 0x0},
+	77:   {region: 0x105, script: 0x1e, flags: 0x0},
+	78:   {region: 0x164, script: 0x5, flags: 0x0},
 	79:   {region: 0x164, script: 0x52, flags: 0x0},
 	80:   {region: 0x164, script: 0x52, flags: 0x0},
-	81:   {region: 0x98, script: 0x20, flags: 0x0},
-	82:   {region: 0x164, script: 0x52, flags: 0x0},
+	81:   {region: 0x164, script: 0x52, flags: 0x0},
+	82:   {region: 0x98, script: 0x20, flags: 0x0},
 	83:   {region: 0x164, script: 0x52, flags: 0x0},
 	84:   {region: 0x164, script: 0x52, flags: 0x0},
-	85:   {region: 0x3e, script: 0x52, flags: 0x0},
-	86:   {region: 0x164, script: 0x52, flags: 0x0},
-	87:   {region: 0x3, script: 0x5, flags: 0x1},
-	88:   {region: 0x105, script: 0x1e, flags: 0x0},
-	89:   {region: 0xe7, script: 0x5, flags: 0x0},
-	90:   {region: 0x94, script: 0x52, flags: 0x0},
-	91:   {region: 0xda, script: 0x20, flags: 0x0},
-	92:   {region: 0x2d, script: 0x52, flags: 0x0},
-	93:   {region: 0x51, script: 0x52, flags: 0x0},
-	94:   {region: 0x164, script: 0x52, flags: 0x0},
-	95:   {region: 0x51, script: 0xb, flags: 0x0},
-	96:   {region: 0x164, script: 0x52, flags: 0x0},
+	85:   {region: 0x164, script: 0x52, flags: 0x0},
+	86:   {region: 0x3e, script: 0x52, flags: 0x0},
+	87:   {region: 0x164, script: 0x52, flags: 0x0},
+	88:   {region: 0x3, script: 0x5, flags: 0x1},
+	89:   {region: 0x105, script: 0x1e, flags: 0x0},
+	90:   {region: 0xe7, script: 0x5, flags: 0x0},
+	91:   {region: 0x94, script: 0x52, flags: 0x0},
+	92:   {region: 0xda, script: 0x20, flags: 0x0},
+	93:   {region: 0x2d, script: 0x52, flags: 0x0},
+	94:   {region: 0x51, script: 0x52, flags: 0x0},
+	95:   {region: 0x164, script: 0x52, flags: 0x0},
+	96:   {region: 0x51, script: 0xb, flags: 0x0},
 	97:   {region: 0x164, script: 0x52, flags: 0x0},
-	98:   {region: 0x94, script: 0x52, flags: 0x0},
-	99:   {region: 0x164, script: 0x52, flags: 0x0},
-	100:  {region: 0x51, script: 0x52, flags: 0x0},
-	101:  {region: 0x164, script: 0x52, flags: 0x0},
+	98:   {region: 0x164, script: 0x52, flags: 0x0},
+	99:   {region: 0x94, script: 0x52, flags: 0x0},
+	100:  {region: 0x164, script: 0x52, flags: 0x0},
+	101:  {region: 0x51, script: 0x52, flags: 0x0},
 	102:  {region: 0x164, script: 0x52, flags: 0x0},
 	103:  {region: 0x164, script: 0x52, flags: 0x0},
 	104:  {region: 0x164, script: 0x52, flags: 0x0},
-	105:  {region: 0x4e, script: 0x52, flags: 0x0},
-	106:  {region: 0x164, script: 0x52, flags: 0x0},
+	105:  {region: 0x164, script: 0x52, flags: 0x0},
+	106:  {region: 0x4e, script: 0x52, flags: 0x0},
 	107:  {region: 0x164, script: 0x52, flags: 0x0},
 	108:  {region: 0x164, script: 0x52, flags: 0x0},
-	109:  {region: 0x164, script: 0x27, flags: 0x0},
-	110:  {region: 0x164, script: 0x52, flags: 0x0},
+	109:  {region: 0x164, script: 0x52, flags: 0x0},
+	110:  {region: 0x164, script: 0x27, flags: 0x0},
 	111:  {region: 0x164, script: 0x52, flags: 0x0},
-	112:  {region: 0x46, script: 0x1e, flags: 0x0},
-	113:  {region: 0x164, script: 0x52, flags: 0x0},
+	112:  {region: 0x164, script: 0x52, flags: 0x0},
+	113:  {region: 0x46, script: 0x1e, flags: 0x0},
 	114:  {region: 0x164, script: 0x52, flags: 0x0},
-	115:  {region: 0x10a, script: 0x5, flags: 0x0},
-	116:  {region: 0x161, script: 0x52, flags: 0x0},
-	117:  {region: 0x164, script: 0x52, flags: 0x0},
-	118:  {region: 0x94, script: 0x52, flags: 0x0},
-	119:  {region: 0x164, script: 0x52, flags: 0x0},
-	120:  {region: 0x12e, script: 0x52, flags: 0x0},
-	121:  {region: 0x51, script: 0x52, flags: 0x0},
-	122:  {region: 0x98, script: 0xcd, flags: 0x0},
-	123:  {region: 0xe7, script: 0x5, flags: 0x0},
-	124:  {region: 0x98, script: 0x20, flags: 0x0},
-	125:  {region: 0x37, script: 0x1e, flags: 0x0},
-	126:  {region: 0x98, script: 0x20, flags: 0x0},
-	127:  {region: 0xe7, script: 0x5, flags: 0x0},
-	128:  {region: 0x12a, script: 0x2d, flags: 0x0},
-	130:  {region: 0x98, script: 0x20, flags: 0x0},
-	131:  {region: 0x164, script: 0x52, flags: 0x0},
-	132:  {region: 0x98, script: 0x20, flags: 0x0},
-	133:  {region: 0xe6, script: 0x52, flags: 0x0},
-	134:  {region: 0x164, script: 0x52, flags: 0x0},
-	135:  {region: 0x98, script: 0x20, flags: 0x0},
-	136:  {region: 0x164, script: 0x52, flags: 0x0},
-	137:  {region: 0x13e, script: 0x52, flags: 0x0},
-	138:  {region: 0x164, script: 0x52, flags: 0x0},
+	115:  {region: 0x164, script: 0x52, flags: 0x0},
+	116:  {region: 0x10a, script: 0x5, flags: 0x0},
+	117:  {region: 0x161, script: 0x52, flags: 0x0},
+	118:  {region: 0x164, script: 0x52, flags: 0x0},
+	119:  {region: 0x94, script: 0x52, flags: 0x0},
+	120:  {region: 0x164, script: 0x52, flags: 0x0},
+	121:  {region: 0x12e, script: 0x52, flags: 0x0},
+	122:  {region: 0x51, script: 0x52, flags: 0x0},
+	123:  {region: 0x98, script: 0xcd, flags: 0x0},
+	124:  {region: 0xe7, script: 0x5, flags: 0x0},
+	125:  {region: 0x98, script: 0x20, flags: 0x0},
+	126:  {region: 0x37, script: 0x1e, flags: 0x0},
+	127:  {region: 0x98, script: 0x20, flags: 0x0},
+	128:  {region: 0xe7, script: 0x5, flags: 0x0},
+	129:  {region: 0x12a, script: 0x2d, flags: 0x0},
+	131:  {region: 0x98, script: 0x20, flags: 0x0},
+	132:  {region: 0x164, script: 0x52, flags: 0x0},
+	133:  {region: 0x98, script: 0x20, flags: 0x0},
+	134:  {region: 0xe6, script: 0x52, flags: 0x0},
+	135:  {region: 0x164, script: 0x52, flags: 0x0},
+	136:  {region: 0x98, script: 0x20, flags: 0x0},
+	137:  {region: 0x164, script: 0x52, flags: 0x0},
+	138:  {region: 0x13e, script: 0x52, flags: 0x0},
 	139:  {region: 0x164, script: 0x52, flags: 0x0},
-	140:  {region: 0xe6, script: 0x52, flags: 0x0},
-	141:  {region: 0x164, script: 0x52, flags: 0x0},
-	142:  {region: 0xd5, script: 0x52, flags: 0x0},
-	143:  {region: 0x164, script: 0x52, flags: 0x0},
+	140:  {region: 0x164, script: 0x52, flags: 0x0},
+	141:  {region: 0xe6, script: 0x52, flags: 0x0},
+	142:  {region: 0x164, script: 0x52, flags: 0x0},
+	143:  {region: 0xd5, script: 0x52, flags: 0x0},
 	144:  {region: 0x164, script: 0x52, flags: 0x0},
 	145:  {region: 0x164, script: 0x52, flags: 0x0},
-	146:  {region: 0x164, script: 0x27, flags: 0x0},
-	147:  {region: 0x98, script: 0x20, flags: 0x0},
-	148:  {region: 0x94, script: 0x52, flags: 0x0},
-	149:  {region: 0x164, script: 0x52, flags: 0x0},
+	146:  {region: 0x164, script: 0x52, flags: 0x0},
+	147:  {region: 0x164, script: 0x27, flags: 0x0},
+	148:  {region: 0x98, script: 0x20, flags: 0x0},
+	149:  {region: 0x94, script: 0x52, flags: 0x0},
 	150:  {region: 0x164, script: 0x52, flags: 0x0},
 	151:  {region: 0x164, script: 0x52, flags: 0x0},
-	152:  {region: 0x164, script: 0x52, flags: 0x0},
-	153:  {region: 0x51, script: 0x52, flags: 0x0},
+	152:  {region: 0x113, script: 0x52, flags: 0x0},
+	153:  {region: 0x164, script: 0x52, flags: 0x0},
 	154:  {region: 0x164, script: 0x52, flags: 0x0},
-	155:  {region: 0xe6, script: 0x52, flags: 0x0},
+	155:  {region: 0x51, script: 0x52, flags: 0x0},
 	156:  {region: 0x164, script: 0x52, flags: 0x0},
-	157:  {region: 0x13d, script: 0xcf, flags: 0x0},
-	158:  {region: 0xc2, script: 0x52, flags: 0x0},
-	159:  {region: 0x164, script: 0x52, flags: 0x0},
-	160:  {region: 0x164, script: 0x52, flags: 0x0},
-	161:  {region: 0xc2, script: 0x52, flags: 0x0},
+	157:  {region: 0xe6, script: 0x52, flags: 0x0},
+	158:  {region: 0x164, script: 0x52, flags: 0x0},
+	159:  {region: 0x13d, script: 0xcf, flags: 0x0},
+	160:  {region: 0xc2, script: 0x52, flags: 0x0},
+	161:  {region: 0x164, script: 0x52, flags: 0x0},
 	162:  {region: 0x164, script: 0x52, flags: 0x0},
-	163:  {region: 0x34, script: 0xe, flags: 0x0},
+	163:  {region: 0xc2, script: 0x52, flags: 0x0},
 	164:  {region: 0x164, script: 0x52, flags: 0x0},
-	165:  {region: 0x164, script: 0x52, flags: 0x0},
+	165:  {region: 0x34, script: 0xe, flags: 0x0},
 	166:  {region: 0x164, script: 0x52, flags: 0x0},
-	167:  {region: 0x52, script: 0xd6, flags: 0x0},
+	167:  {region: 0x164, script: 0x52, flags: 0x0},
 	168:  {region: 0x164, script: 0x52, flags: 0x0},
-	169:  {region: 0x164, script: 0x52, flags: 0x0},
+	169:  {region: 0x52, script: 0xd6, flags: 0x0},
 	170:  {region: 0x164, script: 0x52, flags: 0x0},
-	171:  {region: 0x98, script: 0xe, flags: 0x0},
+	171:  {region: 0x164, script: 0x52, flags: 0x0},
 	172:  {region: 0x164, script: 0x52, flags: 0x0},
-	173:  {region: 0x9b, script: 0x5, flags: 0x0},
+	173:  {region: 0x98, script: 0xe, flags: 0x0},
 	174:  {region: 0x164, script: 0x52, flags: 0x0},
-	175:  {region: 0x4e, script: 0x52, flags: 0x0},
-	176:  {region: 0x77, script: 0x52, flags: 0x0},
-	177:  {region: 0x98, script: 0x20, flags: 0x0},
-	178:  {region: 0xe7, script: 0x5, flags: 0x0},
+	175:  {region: 0x9b, script: 0x5, flags: 0x0},
+	176:  {region: 0x164, script: 0x52, flags: 0x0},
+	177:  {region: 0x4e, script: 0x52, flags: 0x0},
+	178:  {region: 0x77, script: 0x52, flags: 0x0},
 	179:  {region: 0x98, script: 0x20, flags: 0x0},
-	180:  {region: 0x164, script: 0x52, flags: 0x0},
-	181:  {region: 0x32, script: 0x52, flags: 0x0},
+	180:  {region: 0xe7, script: 0x5, flags: 0x0},
+	181:  {region: 0x98, script: 0x20, flags: 0x0},
 	182:  {region: 0x164, script: 0x52, flags: 0x0},
-	183:  {region: 0xb3, script: 0xc, flags: 0x0},
-	184:  {region: 0x51, script: 0x52, flags: 0x0},
-	185:  {region: 0x164, script: 0x27, flags: 0x0},
-	186:  {region: 0xe6, script: 0x52, flags: 0x0},
-	187:  {region: 0x164, script: 0x52, flags: 0x0},
-	188:  {region: 0xe7, script: 0x20, flags: 0x0},
-	189:  {region: 0x105, script: 0x1e, flags: 0x0},
-	190:  {region: 0x15e, script: 0x52, flags: 0x0},
-	191:  {region: 0x164, script: 0x52, flags: 0x0},
-	192:  {region: 0x94, script: 0x52, flags: 0x0},
+	183:  {region: 0x32, script: 0x52, flags: 0x0},
+	184:  {region: 0x164, script: 0x52, flags: 0x0},
+	185:  {region: 0xb3, script: 0xc, flags: 0x0},
+	186:  {region: 0x51, script: 0x52, flags: 0x0},
+	187:  {region: 0x164, script: 0x27, flags: 0x0},
+	188:  {region: 0xe6, script: 0x52, flags: 0x0},
+	189:  {region: 0x164, script: 0x52, flags: 0x0},
+	190:  {region: 0xe7, script: 0x20, flags: 0x0},
+	191:  {region: 0x105, script: 0x1e, flags: 0x0},
+	192:  {region: 0x15e, script: 0x52, flags: 0x0},
 	193:  {region: 0x164, script: 0x52, flags: 0x0},
-	194:  {region: 0x51, script: 0x52, flags: 0x0},
+	194:  {region: 0x94, script: 0x52, flags: 0x0},
 	195:  {region: 0x164, script: 0x52, flags: 0x0},
-	196:  {region: 0x164, script: 0x52, flags: 0x0},
+	196:  {region: 0x51, script: 0x52, flags: 0x0},
 	197:  {region: 0x164, script: 0x52, flags: 0x0},
-	198:  {region: 0x85, script: 0x52, flags: 0x0},
+	198:  {region: 0x164, script: 0x52, flags: 0x0},
 	199:  {region: 0x164, script: 0x52, flags: 0x0},
-	200:  {region: 0x164, script: 0x52, flags: 0x0},
+	200:  {region: 0x85, script: 0x52, flags: 0x0},
 	201:  {region: 0x164, script: 0x52, flags: 0x0},
 	202:  {region: 0x164, script: 0x52, flags: 0x0},
-	203:  {region: 0x6c, script: 0x27, flags: 0x0},
+	203:  {region: 0x164, script: 0x52, flags: 0x0},
 	204:  {region: 0x164, script: 0x52, flags: 0x0},
-	205:  {region: 0x164, script: 0x52, flags: 0x0},
-	206:  {region: 0x51, script: 0x52, flags: 0x0},
+	205:  {region: 0x6c, script: 0x27, flags: 0x0},
+	206:  {region: 0x164, script: 0x52, flags: 0x0},
 	207:  {region: 0x164, script: 0x52, flags: 0x0},
-	208:  {region: 0x164, script: 0x52, flags: 0x0},
-	209:  {region: 0xc2, script: 0x52, flags: 0x0},
+	208:  {region: 0x51, script: 0x52, flags: 0x0},
+	209:  {region: 0x164, script: 0x52, flags: 0x0},
 	210:  {region: 0x164, script: 0x52, flags: 0x0},
-	211:  {region: 0x164, script: 0x52, flags: 0x0},
+	211:  {region: 0xc2, script: 0x52, flags: 0x0},
 	212:  {region: 0x164, script: 0x52, flags: 0x0},
-	213:  {region: 0x6d, script: 0x52, flags: 0x0},
+	213:  {region: 0x164, script: 0x52, flags: 0x0},
 	214:  {region: 0x164, script: 0x52, flags: 0x0},
-	215:  {region: 0x164, script: 0x52, flags: 0x0},
-	216:  {region: 0xd5, script: 0x52, flags: 0x0},
-	217:  {region: 0x8, script: 0x2, flags: 0x1},
-	218:  {region: 0x105, script: 0x1e, flags: 0x0},
-	219:  {region: 0xe6, script: 0x52, flags: 0x0},
-	220:  {region: 0x164, script: 0x52, flags: 0x0},
-	221:  {region: 0x130, script: 0x52, flags: 0x0},
-	222:  {region: 0x89, script: 0x52, flags: 0x0},
-	223:  {region: 0x74, script: 0x52, flags: 0x0},
-	224:  {region: 0x105, script: 0x1e, flags: 0x0},
-	225:  {region: 0x134, script: 0x52, flags: 0x0},
-	226:  {region: 0x48, script: 0x52, flags: 0x0},
-	227:  {region: 0x134, script: 0x1a, flags: 0x0},
-	228:  {region: 0xa5, script: 0x5, flags: 0x0},
-	229:  {region: 0x13d, script: 0x19, flags: 0x0},
-	230:  {region: 0x164, script: 0x52, flags: 0x0},
-	231:  {region: 0x9a, script: 0x5, flags: 0x0},
+	215:  {region: 0x6d, script: 0x52, flags: 0x0},
+	216:  {region: 0x164, script: 0x52, flags: 0x0},
+	217:  {region: 0x164, script: 0x52, flags: 0x0},
+	218:  {region: 0xd5, script: 0x52, flags: 0x0},
+	219:  {region: 0x34, script: 0x16, flags: 0x0},
+	220:  {region: 0x105, script: 0x1e, flags: 0x0},
+	221:  {region: 0xe6, script: 0x52, flags: 0x0},
+	222:  {region: 0x164, script: 0x52, flags: 0x0},
+	223:  {region: 0x130, script: 0x52, flags: 0x0},
+	224:  {region: 0x89, script: 0x52, flags: 0x0},
+	225:  {region: 0x74, script: 0x52, flags: 0x0},
+	226:  {region: 0x105, script: 0x1e, flags: 0x0},
+	227:  {region: 0x134, script: 0x52, flags: 0x0},
+	228:  {region: 0x48, script: 0x52, flags: 0x0},
+	229:  {region: 0x134, script: 0x1a, flags: 0x0},
+	230:  {region: 0xa5, script: 0x5, flags: 0x0},
+	231:  {region: 0x13d, script: 0x19, flags: 0x0},
 	232:  {region: 0x164, script: 0x52, flags: 0x0},
-	233:  {region: 0x164, script: 0x52, flags: 0x0},
+	233:  {region: 0x9a, script: 0x5, flags: 0x0},
 	234:  {region: 0x164, script: 0x52, flags: 0x0},
 	235:  {region: 0x164, script: 0x52, flags: 0x0},
 	236:  {region: 0x164, script: 0x52, flags: 0x0},
-	237:  {region: 0x77, script: 0x52, flags: 0x0},
-	238:  {region: 0x6a, script: 0x1c, flags: 0x0},
-	239:  {region: 0xe6, script: 0x52, flags: 0x0},
-	240:  {region: 0x48, script: 0x17, flags: 0x0},
-	241:  {region: 0x48, script: 0x17, flags: 0x0},
+	237:  {region: 0x164, script: 0x52, flags: 0x0},
+	238:  {region: 0x164, script: 0x52, flags: 0x0},
+	239:  {region: 0x77, script: 0x52, flags: 0x0},
+	240:  {region: 0x6a, script: 0x1c, flags: 0x0},
+	241:  {region: 0xe6, script: 0x52, flags: 0x0},
 	242:  {region: 0x48, script: 0x17, flags: 0x0},
-	243:  {region: 0x48, script: 0x17, flags: 0x0},
+	243:  {region: 0x12f, script: 0x1e, flags: 0x0},
 	244:  {region: 0x48, script: 0x17, flags: 0x0},
-	245:  {region: 0x109, script: 0x52, flags: 0x0},
-	246:  {region: 0x5d, script: 0x52, flags: 0x0},
-	247:  {region: 0xe8, script: 0x52, flags: 0x0},
-	248:  {region: 0x48, script: 0x17, flags: 0x0},
-	249:  {region: 0xc3, script: 0x79, flags: 0x0},
-	250:  {region: 0xa, script: 0x2, flags: 0x1},
-	251:  {region: 0x105, script: 0x1e, flags: 0x0},
-	252:  {region: 0x7a, script: 0x52, flags: 0x0},
-	253:  {region: 0x62, script: 0x52, flags: 0x0},
-	254:  {region: 0x164, script: 0x52, flags: 0x0},
-	255:  {region: 0x164, script: 0x52, flags: 0x0},
-	256:  {region: 0x164, script: 0x52, flags: 0x0},
+	245:  {region: 0x48, script: 0x17, flags: 0x0},
+	246:  {region: 0x48, script: 0x17, flags: 0x0},
+	247:  {region: 0x48, script: 0x17, flags: 0x0},
+	248:  {region: 0x109, script: 0x52, flags: 0x0},
+	249:  {region: 0x5d, script: 0x52, flags: 0x0},
+	250:  {region: 0xe8, script: 0x52, flags: 0x0},
+	251:  {region: 0x48, script: 0x17, flags: 0x0},
+	252:  {region: 0xc3, script: 0x79, flags: 0x0},
+	253:  {region: 0x8, script: 0x2, flags: 0x1},
+	254:  {region: 0x105, script: 0x1e, flags: 0x0},
+	255:  {region: 0x7a, script: 0x52, flags: 0x0},
+	256:  {region: 0x62, script: 0x52, flags: 0x0},
 	257:  {region: 0x164, script: 0x52, flags: 0x0},
-	258:  {region: 0x134, script: 0x52, flags: 0x0},
-	259:  {region: 0x105, script: 0x1e, flags: 0x0},
-	260:  {region: 0xa3, script: 0x52, flags: 0x0},
-	261:  {region: 0x164, script: 0x52, flags: 0x0},
-	262:  {region: 0x164, script: 0x52, flags: 0x0},
-	263:  {region: 0x98, script: 0x5, flags: 0x0},
+	258:  {region: 0x164, script: 0x52, flags: 0x0},
+	259:  {region: 0x164, script: 0x52, flags: 0x0},
+	260:  {region: 0x164, script: 0x52, flags: 0x0},
+	261:  {region: 0x134, script: 0x52, flags: 0x0},
+	262:  {region: 0x105, script: 0x1e, flags: 0x0},
+	263:  {region: 0xa3, script: 0x52, flags: 0x0},
 	264:  {region: 0x164, script: 0x52, flags: 0x0},
-	265:  {region: 0x5f, script: 0x52, flags: 0x0},
-	266:  {region: 0x164, script: 0x52, flags: 0x0},
-	267:  {region: 0x48, script: 0x52, flags: 0x0},
-	268:  {region: 0x164, script: 0x52, flags: 0x0},
+	265:  {region: 0x164, script: 0x52, flags: 0x0},
+	266:  {region: 0x98, script: 0x5, flags: 0x0},
+	267:  {region: 0x164, script: 0x52, flags: 0x0},
+	268:  {region: 0x5f, script: 0x52, flags: 0x0},
 	269:  {region: 0x164, script: 0x52, flags: 0x0},
-	270:  {region: 0x164, script: 0x52, flags: 0x0},
-	271:  {region: 0x164, script: 0x5, flags: 0x0},
-	272:  {region: 0x48, script: 0x52, flags: 0x0},
+	270:  {region: 0x48, script: 0x52, flags: 0x0},
+	271:  {region: 0x164, script: 0x52, flags: 0x0},
+	272:  {region: 0x164, script: 0x52, flags: 0x0},
 	273:  {region: 0x164, script: 0x52, flags: 0x0},
-	274:  {region: 0x164, script: 0x52, flags: 0x0},
-	275:  {region: 0xd3, script: 0x52, flags: 0x0},
-	276:  {region: 0x4e, script: 0x52, flags: 0x0},
+	274:  {region: 0x164, script: 0x5, flags: 0x0},
+	275:  {region: 0x48, script: 0x52, flags: 0x0},
+	276:  {region: 0x164, script: 0x52, flags: 0x0},
 	277:  {region: 0x164, script: 0x52, flags: 0x0},
-	278:  {region: 0x98, script: 0x5, flags: 0x0},
-	279:  {region: 0x164, script: 0x52, flags: 0x0},
+	278:  {region: 0xd3, script: 0x52, flags: 0x0},
+	279:  {region: 0x4e, script: 0x52, flags: 0x0},
 	280:  {region: 0x164, script: 0x52, flags: 0x0},
-	281:  {region: 0x164, script: 0x52, flags: 0x0},
-	282:  {region: 0x164, script: 0x27, flags: 0x0},
-	283:  {region: 0x5f, script: 0x52, flags: 0x0},
-	284:  {region: 0xc2, script: 0x52, flags: 0x0},
-	285:  {region: 0xcf, script: 0x52, flags: 0x0},
-	286:  {region: 0x164, script: 0x52, flags: 0x0},
-	287:  {region: 0xda, script: 0x20, flags: 0x0},
-	288:  {region: 0x51, script: 0x52, flags: 0x0},
+	281:  {region: 0x98, script: 0x5, flags: 0x0},
+	282:  {region: 0x164, script: 0x52, flags: 0x0},
+	283:  {region: 0x164, script: 0x52, flags: 0x0},
+	284:  {region: 0x164, script: 0x52, flags: 0x0},
+	285:  {region: 0x164, script: 0x27, flags: 0x0},
+	286:  {region: 0x5f, script: 0x52, flags: 0x0},
+	287:  {region: 0xc2, script: 0x52, flags: 0x0},
+	288:  {region: 0xcf, script: 0x52, flags: 0x0},
 	289:  {region: 0x164, script: 0x52, flags: 0x0},
-	290:  {region: 0x164, script: 0x52, flags: 0x0},
-	291:  {region: 0x164, script: 0x52, flags: 0x0},
-	292:  {region: 0xcc, script: 0xd4, flags: 0x0},
+	290:  {region: 0xda, script: 0x20, flags: 0x0},
+	291:  {region: 0x51, script: 0x52, flags: 0x0},
+	292:  {region: 0x164, script: 0x52, flags: 0x0},
 	293:  {region: 0x164, script: 0x52, flags: 0x0},
 	294:  {region: 0x164, script: 0x52, flags: 0x0},
-	295:  {region: 0x113, script: 0x52, flags: 0x0},
-	296:  {region: 0x36, script: 0x52, flags: 0x0},
-	297:  {region: 0x42, script: 0xd6, flags: 0x0},
-	298:  {region: 0x164, script: 0x52, flags: 0x0},
-	299:  {region: 0xa3, script: 0x52, flags: 0x0},
-	300:  {region: 0x7f, script: 0x52, flags: 0x0},
-	301:  {region: 0xd5, script: 0x52, flags: 0x0},
-	302:  {region: 0x9d, script: 0x52, flags: 0x0},
-	303:  {region: 0x6a, script: 0x25, flags: 0x0},
-	304:  {region: 0xc3, script: 0x43, flags: 0x0},
-	305:  {region: 0x86, script: 0x2d, flags: 0x0},
-	306:  {region: 0x164, script: 0x52, flags: 0x0},
+	295:  {region: 0xcc, script: 0xd4, flags: 0x0},
+	296:  {region: 0x164, script: 0x52, flags: 0x0},
+	297:  {region: 0x164, script: 0x52, flags: 0x0},
+	298:  {region: 0x113, script: 0x52, flags: 0x0},
+	299:  {region: 0x36, script: 0x52, flags: 0x0},
+	300:  {region: 0x42, script: 0xd6, flags: 0x0},
+	301:  {region: 0x164, script: 0x52, flags: 0x0},
+	302:  {region: 0xa3, script: 0x52, flags: 0x0},
+	303:  {region: 0x7f, script: 0x52, flags: 0x0},
+	304:  {region: 0xd5, script: 0x52, flags: 0x0},
+	305:  {region: 0x9d, script: 0x52, flags: 0x0},
+	306:  {region: 0x6a, script: 0x25, flags: 0x0},
 	307:  {region: 0x164, script: 0x52, flags: 0x0},
-	308:  {region: 0xc, script: 0x2, flags: 0x1},
-	309:  {region: 0x164, script: 0x52, flags: 0x0},
+	308:  {region: 0xc3, script: 0x43, flags: 0x0},
+	309:  {region: 0x86, script: 0x2d, flags: 0x0},
 	310:  {region: 0x164, script: 0x52, flags: 0x0},
-	311:  {region: 0x1, script: 0x52, flags: 0x0},
-	312:  {region: 0x164, script: 0x52, flags: 0x0},
-	313:  {region: 0x6d, script: 0x52, flags: 0x0},
-	314:  {region: 0x134, script: 0x52, flags: 0x0},
-	315:  {region: 0x69, script: 0x52, flags: 0x0},
+	311:  {region: 0x164, script: 0x52, flags: 0x0},
+	312:  {region: 0xa, script: 0x2, flags: 0x1},
+	313:  {region: 0x164, script: 0x52, flags: 0x0},
+	314:  {region: 0x164, script: 0x52, flags: 0x0},
+	315:  {region: 0x1, script: 0x52, flags: 0x0},
 	316:  {region: 0x164, script: 0x52, flags: 0x0},
-	317:  {region: 0x9d, script: 0x3e, flags: 0x0},
-	318:  {region: 0x164, script: 0x52, flags: 0x0},
-	319:  {region: 0x164, script: 0x52, flags: 0x0},
-	320:  {region: 0x6d, script: 0x52, flags: 0x0},
-	321:  {region: 0x51, script: 0x52, flags: 0x0},
-	322:  {region: 0x6d, script: 0x52, flags: 0x0},
-	323:  {region: 0x9b, script: 0x5, flags: 0x0},
-	324:  {region: 0x164, script: 0x52, flags: 0x0},
-	325:  {region: 0x164, script: 0x52, flags: 0x0},
-	326:  {region: 0x164, script: 0x52, flags: 0x0},
-	327:  {region: 0x164, script: 0x52, flags: 0x0},
-	328:  {region: 0x85, script: 0x52, flags: 0x0},
-	329:  {region: 0xe, script: 0x2, flags: 0x1},
+	317:  {region: 0x6d, script: 0x52, flags: 0x0},
+	318:  {region: 0x134, script: 0x52, flags: 0x0},
+	319:  {region: 0x69, script: 0x52, flags: 0x0},
+	320:  {region: 0x164, script: 0x52, flags: 0x0},
+	321:  {region: 0x9d, script: 0x3e, flags: 0x0},
+	322:  {region: 0x164, script: 0x52, flags: 0x0},
+	323:  {region: 0x164, script: 0x52, flags: 0x0},
+	324:  {region: 0x6d, script: 0x52, flags: 0x0},
+	325:  {region: 0x51, script: 0x52, flags: 0x0},
+	326:  {region: 0x6d, script: 0x52, flags: 0x0},
+	327:  {region: 0x9b, script: 0x5, flags: 0x0},
+	328:  {region: 0x164, script: 0x52, flags: 0x0},
+	329:  {region: 0x164, script: 0x52, flags: 0x0},
 	330:  {region: 0x164, script: 0x52, flags: 0x0},
-	331:  {region: 0xc2, script: 0x52, flags: 0x0},
-	332:  {region: 0x71, script: 0x52, flags: 0x0},
-	333:  {region: 0x10a, script: 0x5, flags: 0x0},
-	334:  {region: 0xe6, script: 0x52, flags: 0x0},
-	335:  {region: 0x10b, script: 0x52, flags: 0x0},
-	336:  {region: 0x72, script: 0x52, flags: 0x0},
-	337:  {region: 0x164, script: 0x52, flags: 0x0},
-	338:  {region: 0x164, script: 0x52, flags: 0x0},
-	339:  {region: 0x75, script: 0x52, flags: 0x0},
-	340:  {region: 0x164, script: 0x52, flags: 0x0},
-	341:  {region: 0x3a, script: 0x52, flags: 0x0},
+	331:  {region: 0x164, script: 0x52, flags: 0x0},
+	332:  {region: 0x85, script: 0x52, flags: 0x0},
+	333:  {region: 0xc, script: 0x2, flags: 0x1},
+	334:  {region: 0x164, script: 0x52, flags: 0x0},
+	335:  {region: 0xc2, script: 0x52, flags: 0x0},
+	336:  {region: 0x71, script: 0x52, flags: 0x0},
+	337:  {region: 0x10a, script: 0x5, flags: 0x0},
+	338:  {region: 0xe6, script: 0x52, flags: 0x0},
+	339:  {region: 0x10b, script: 0x52, flags: 0x0},
+	340:  {region: 0x72, script: 0x52, flags: 0x0},
+	341:  {region: 0x164, script: 0x52, flags: 0x0},
 	342:  {region: 0x164, script: 0x52, flags: 0x0},
-	343:  {region: 0x164, script: 0x52, flags: 0x0},
+	343:  {region: 0x75, script: 0x52, flags: 0x0},
 	344:  {region: 0x164, script: 0x52, flags: 0x0},
-	345:  {region: 0x77, script: 0x52, flags: 0x0},
-	346:  {region: 0x134, script: 0x52, flags: 0x0},
-	347:  {region: 0x77, script: 0x52, flags: 0x0},
-	348:  {region: 0x5f, script: 0x52, flags: 0x0},
-	349:  {region: 0x5f, script: 0x52, flags: 0x0},
-	350:  {region: 0x51, script: 0x5, flags: 0x0},
-	351:  {region: 0x13f, script: 0x52, flags: 0x0},
-	352:  {region: 0x164, script: 0x52, flags: 0x0},
-	353:  {region: 0x83, script: 0x52, flags: 0x0},
-	354:  {region: 0x164, script: 0x52, flags: 0x0},
-	355:  {region: 0xd3, script: 0x52, flags: 0x0},
-	356:  {region: 0x9d, script: 0x52, flags: 0x0},
-	357:  {region: 0xd5, script: 0x52, flags: 0x0},
+	345:  {region: 0x3a, script: 0x52, flags: 0x0},
+	346:  {region: 0x164, script: 0x52, flags: 0x0},
+	347:  {region: 0x164, script: 0x52, flags: 0x0},
+	348:  {region: 0x164, script: 0x52, flags: 0x0},
+	349:  {region: 0x77, script: 0x52, flags: 0x0},
+	350:  {region: 0x134, script: 0x52, flags: 0x0},
+	351:  {region: 0x77, script: 0x52, flags: 0x0},
+	352:  {region: 0x5f, script: 0x52, flags: 0x0},
+	353:  {region: 0x5f, script: 0x52, flags: 0x0},
+	354:  {region: 0x51, script: 0x5, flags: 0x0},
+	355:  {region: 0x13f, script: 0x52, flags: 0x0},
+	356:  {region: 0x164, script: 0x52, flags: 0x0},
+	357:  {region: 0x83, script: 0x52, flags: 0x0},
 	358:  {region: 0x164, script: 0x52, flags: 0x0},
-	359:  {region: 0x10a, script: 0x52, flags: 0x0},
-	360:  {region: 0xd8, script: 0x52, flags: 0x0},
-	361:  {region: 0x95, script: 0x52, flags: 0x0},
-	362:  {region: 0x7f, script: 0x52, flags: 0x0},
-	363:  {region: 0x164, script: 0x52, flags: 0x0},
-	364:  {region: 0xbb, script: 0x52, flags: 0x0},
-	365:  {region: 0x164, script: 0x52, flags: 0x0},
-	366:  {region: 0x164, script: 0x52, flags: 0x0},
+	359:  {region: 0xd3, script: 0x52, flags: 0x0},
+	360:  {region: 0x9d, script: 0x52, flags: 0x0},
+	361:  {region: 0xd5, script: 0x52, flags: 0x0},
+	362:  {region: 0x164, script: 0x52, flags: 0x0},
+	363:  {region: 0x10a, script: 0x52, flags: 0x0},
+	364:  {region: 0xd8, script: 0x52, flags: 0x0},
+	365:  {region: 0x95, script: 0x52, flags: 0x0},
+	366:  {region: 0x7f, script: 0x52, flags: 0x0},
 	367:  {region: 0x164, script: 0x52, flags: 0x0},
-	368:  {region: 0x52, script: 0x34, flags: 0x0},
+	368:  {region: 0xbb, script: 0x52, flags: 0x0},
 	369:  {region: 0x164, script: 0x52, flags: 0x0},
-	370:  {region: 0x94, script: 0x52, flags: 0x0},
+	370:  {region: 0x164, script: 0x52, flags: 0x0},
 	371:  {region: 0x164, script: 0x52, flags: 0x0},
-	372:  {region: 0x98, script: 0x20, flags: 0x0},
+	372:  {region: 0x52, script: 0x34, flags: 0x0},
 	373:  {region: 0x164, script: 0x52, flags: 0x0},
-	374:  {region: 0x9b, script: 0x5, flags: 0x0},
-	375:  {region: 0x7d, script: 0x52, flags: 0x0},
-	376:  {region: 0x7a, script: 0x52, flags: 0x0},
+	374:  {region: 0x94, script: 0x52, flags: 0x0},
+	375:  {region: 0x164, script: 0x52, flags: 0x0},
+	376:  {region: 0x98, script: 0x20, flags: 0x0},
 	377:  {region: 0x164, script: 0x52, flags: 0x0},
-	378:  {region: 0x164, script: 0x52, flags: 0x0},
-	379:  {region: 0x164, script: 0x52, flags: 0x0},
-	380:  {region: 0x164, script: 0x52, flags: 0x0},
+	378:  {region: 0x9b, script: 0x5, flags: 0x0},
+	379:  {region: 0x7d, script: 0x52, flags: 0x0},
+	380:  {region: 0x7a, script: 0x52, flags: 0x0},
 	381:  {region: 0x164, script: 0x52, flags: 0x0},
 	382:  {region: 0x164, script: 0x52, flags: 0x0},
-	383:  {region: 0x6e, script: 0x27, flags: 0x0},
+	383:  {region: 0x164, script: 0x52, flags: 0x0},
 	384:  {region: 0x164, script: 0x52, flags: 0x0},
-	385:  {region: 0xda, script: 0x20, flags: 0x0},
+	385:  {region: 0x164, script: 0x52, flags: 0x0},
 	386:  {region: 0x164, script: 0x52, flags: 0x0},
-	387:  {region: 0xa6, script: 0x52, flags: 0x0},
+	387:  {region: 0x6e, script: 0x27, flags: 0x0},
 	388:  {region: 0x164, script: 0x52, flags: 0x0},
-	389:  {region: 0xe7, script: 0x5, flags: 0x0},
+	389:  {region: 0xda, script: 0x20, flags: 0x0},
 	390:  {region: 0x164, script: 0x52, flags: 0x0},
-	391:  {region: 0xe7, script: 0x5, flags: 0x0},
+	391:  {region: 0xa6, script: 0x52, flags: 0x0},
 	392:  {region: 0x164, script: 0x52, flags: 0x0},
-	393:  {region: 0x164, script: 0x52, flags: 0x0},
-	394:  {region: 0x6d, script: 0x52, flags: 0x0},
-	395:  {region: 0x9b, script: 0x5, flags: 0x0},
+	393:  {region: 0xe7, script: 0x5, flags: 0x0},
+	394:  {region: 0x164, script: 0x52, flags: 0x0},
+	395:  {region: 0xe7, script: 0x5, flags: 0x0},
 	396:  {region: 0x164, script: 0x52, flags: 0x0},
-	397:  {region: 0x164, script: 0x27, flags: 0x0},
-	398:  {region: 0xf0, script: 0x52, flags: 0x0},
-	399:  {region: 0x164, script: 0x52, flags: 0x0},
+	397:  {region: 0x164, script: 0x52, flags: 0x0},
+	398:  {region: 0x6d, script: 0x52, flags: 0x0},
+	399:  {region: 0x9b, script: 0x5, flags: 0x0},
 	400:  {region: 0x164, script: 0x52, flags: 0x0},
-	401:  {region: 0x164, script: 0x52, flags: 0x0},
-	402:  {region: 0x164, script: 0x27, flags: 0x0},
+	401:  {region: 0x164, script: 0x27, flags: 0x0},
+	402:  {region: 0xf0, script: 0x52, flags: 0x0},
 	403:  {region: 0x164, script: 0x52, flags: 0x0},
-	404:  {region: 0x98, script: 0x20, flags: 0x0},
-	405:  {region: 0x98, script: 0xd0, flags: 0x0},
-	406:  {region: 0x94, script: 0x52, flags: 0x0},
-	407:  {region: 0xd8, script: 0x52, flags: 0x0},
-	408:  {region: 0x12f, script: 0x2b, flags: 0x0},
-	409:  {region: 0x10, script: 0x2, flags: 0x1},
-	410:  {region: 0x98, script: 0xe, flags: 0x0},
-	411:  {region: 0x164, script: 0x52, flags: 0x0},
-	412:  {region: 0x4d, script: 0x52, flags: 0x0},
-	413:  {region: 0x98, script: 0x2e, flags: 0x0},
-	414:  {region: 0x40, script: 0x52, flags: 0x0},
-	415:  {region: 0x53, script: 0x52, flags: 0x0},
+	404:  {region: 0x164, script: 0x52, flags: 0x0},
+	405:  {region: 0x164, script: 0x52, flags: 0x0},
+	406:  {region: 0x164, script: 0x27, flags: 0x0},
+	407:  {region: 0x164, script: 0x52, flags: 0x0},
+	408:  {region: 0x98, script: 0x20, flags: 0x0},
+	409:  {region: 0x98, script: 0xd0, flags: 0x0},
+	410:  {region: 0x94, script: 0x52, flags: 0x0},
+	411:  {region: 0xd8, script: 0x52, flags: 0x0},
+	412:  {region: 0x12f, script: 0x2b, flags: 0x0},
+	413:  {region: 0x164, script: 0x52, flags: 0x0},
+	414:  {region: 0xe, script: 0x2, flags: 0x1},
+	415:  {region: 0x98, script: 0xe, flags: 0x0},
 	416:  {region: 0x164, script: 0x52, flags: 0x0},
-	417:  {region: 0x7f, script: 0x52, flags: 0x0},
-	418:  {region: 0x164, script: 0x52, flags: 0x0},
-	419:  {region: 0x164, script: 0x52, flags: 0x0},
-	420:  {region: 0xa3, script: 0x52, flags: 0x0},
-	421:  {region: 0x97, script: 0x52, flags: 0x0},
-	422:  {region: 0x164, script: 0x52, flags: 0x0},
-	423:  {region: 0xda, script: 0x20, flags: 0x0},
+	417:  {region: 0x4d, script: 0x52, flags: 0x0},
+	418:  {region: 0x98, script: 0x2e, flags: 0x0},
+	419:  {region: 0x40, script: 0x52, flags: 0x0},
+	420:  {region: 0x53, script: 0x52, flags: 0x0},
+	421:  {region: 0x164, script: 0x52, flags: 0x0},
+	422:  {region: 0x7f, script: 0x52, flags: 0x0},
+	423:  {region: 0x164, script: 0x52, flags: 0x0},
 	424:  {region: 0x164, script: 0x52, flags: 0x0},
-	425:  {region: 0x164, script: 0x5, flags: 0x0},
-	426:  {region: 0x48, script: 0x52, flags: 0x0},
-	427:  {region: 0x164, script: 0x5, flags: 0x0},
-	428:  {region: 0x164, script: 0x52, flags: 0x0},
-	429:  {region: 0x12, script: 0x3, flags: 0x1},
-	430:  {region: 0x164, script: 0x52, flags: 0x0},
-	431:  {region: 0x52, script: 0x34, flags: 0x0},
-	432:  {region: 0x164, script: 0x52, flags: 0x0},
-	433:  {region: 0x134, script: 0x52, flags: 0x0},
-	434:  {region: 0x23, script: 0x5, flags: 0x0},
+	425:  {region: 0xa3, script: 0x52, flags: 0x0},
+	426:  {region: 0x97, script: 0x52, flags: 0x0},
+	427:  {region: 0x164, script: 0x52, flags: 0x0},
+	428:  {region: 0xda, script: 0x20, flags: 0x0},
+	429:  {region: 0x164, script: 0x52, flags: 0x0},
+	430:  {region: 0x164, script: 0x5, flags: 0x0},
+	431:  {region: 0x48, script: 0x52, flags: 0x0},
+	432:  {region: 0x164, script: 0x5, flags: 0x0},
+	433:  {region: 0x164, script: 0x52, flags: 0x0},
+	434:  {region: 0x10, script: 0x3, flags: 0x1},
 	435:  {region: 0x164, script: 0x52, flags: 0x0},
-	436:  {region: 0x164, script: 0x27, flags: 0x0},
-	437:  {region: 0x96, script: 0x37, flags: 0x0},
-	438:  {region: 0x164, script: 0x52, flags: 0x0},
-	439:  {region: 0x98, script: 0x20, flags: 0x0},
+	436:  {region: 0x52, script: 0x34, flags: 0x0},
+	437:  {region: 0x164, script: 0x52, flags: 0x0},
+	438:  {region: 0x134, script: 0x52, flags: 0x0},
+	439:  {region: 0x23, script: 0x5, flags: 0x0},
 	440:  {region: 0x164, script: 0x52, flags: 0x0},
-	441:  {region: 0x72, script: 0x52, flags: 0x0},
-	442:  {region: 0x164, script: 0x52, flags: 0x0},
+	441:  {region: 0x164, script: 0x27, flags: 0x0},
+	442:  {region: 0x96, script: 0x37, flags: 0x0},
 	443:  {region: 0x164, script: 0x52, flags: 0x0},
-	444:  {region: 0xe6, script: 0x52, flags: 0x0},
+	444:  {region: 0x98, script: 0x20, flags: 0x0},
 	445:  {region: 0x164, script: 0x52, flags: 0x0},
-	446:  {region: 0x12a, script: 0x39, flags: 0x0},
-	447:  {region: 0x52, script: 0x81, flags: 0x0},
+	446:  {region: 0x72, script: 0x52, flags: 0x0},
+	447:  {region: 0x164, script: 0x52, flags: 0x0},
 	448:  {region: 0x164, script: 0x52, flags: 0x0},
-	449:  {region: 0xe7, script: 0x5, flags: 0x0},
-	450:  {region: 0x98, script: 0x20, flags: 0x0},
-	451:  {region: 0xae, script: 0x3a, flags: 0x0},
-	452:  {region: 0xe6, script: 0x52, flags: 0x0},
-	453:  {region: 0xe7, script: 0x5, flags: 0x0},
-	454:  {region: 0xe5, script: 0x52, flags: 0x0},
+	449:  {region: 0xe6, script: 0x52, flags: 0x0},
+	450:  {region: 0x164, script: 0x52, flags: 0x0},
+	451:  {region: 0x12a, script: 0x39, flags: 0x0},
+	452:  {region: 0x52, script: 0x81, flags: 0x0},
+	453:  {region: 0x164, script: 0x52, flags: 0x0},
+	454:  {region: 0xe7, script: 0x5, flags: 0x0},
 	455:  {region: 0x98, script: 0x20, flags: 0x0},
-	456:  {region: 0x98, script: 0x20, flags: 0x0},
-	457:  {region: 0x164, script: 0x52, flags: 0x0},
-	458:  {region: 0x8f, script: 0x52, flags: 0x0},
-	459:  {region: 0x5f, script: 0x52, flags: 0x0},
-	460:  {region: 0x52, script: 0x34, flags: 0x0},
-	461:  {region: 0x90, script: 0x52, flags: 0x0},
-	462:  {region: 0x91, script: 0x52, flags: 0x0},
-	463:  {region: 0x164, script: 0x52, flags: 0x0},
-	464:  {region: 0x27, script: 0x8, flags: 0x0},
-	465:  {region: 0xd1, script: 0x52, flags: 0x0},
-	466:  {region: 0x77, script: 0x52, flags: 0x0},
-	467:  {region: 0x164, script: 0x52, flags: 0x0},
+	456:  {region: 0xae, script: 0x3a, flags: 0x0},
+	457:  {region: 0xe6, script: 0x52, flags: 0x0},
+	458:  {region: 0xe7, script: 0x5, flags: 0x0},
+	459:  {region: 0xe5, script: 0x52, flags: 0x0},
+	460:  {region: 0x98, script: 0x20, flags: 0x0},
+	461:  {region: 0x98, script: 0x20, flags: 0x0},
+	462:  {region: 0x164, script: 0x52, flags: 0x0},
+	463:  {region: 0x8f, script: 0x52, flags: 0x0},
+	464:  {region: 0x5f, script: 0x52, flags: 0x0},
+	465:  {region: 0x52, script: 0x34, flags: 0x0},
+	466:  {region: 0x90, script: 0x52, flags: 0x0},
+	467:  {region: 0x91, script: 0x52, flags: 0x0},
 	468:  {region: 0x164, script: 0x52, flags: 0x0},
-	469:  {region: 0xcf, script: 0x52, flags: 0x0},
-	470:  {region: 0xd5, script: 0x52, flags: 0x0},
-	471:  {region: 0x164, script: 0x52, flags: 0x0},
+	469:  {region: 0x27, script: 0x8, flags: 0x0},
+	470:  {region: 0xd1, script: 0x52, flags: 0x0},
+	471:  {region: 0x77, script: 0x52, flags: 0x0},
 	472:  {region: 0x164, script: 0x52, flags: 0x0},
 	473:  {region: 0x164, script: 0x52, flags: 0x0},
-	474:  {region: 0x94, script: 0x52, flags: 0x0},
-	475:  {region: 0x164, script: 0x52, flags: 0x0},
+	474:  {region: 0xcf, script: 0x52, flags: 0x0},
+	475:  {region: 0xd5, script: 0x52, flags: 0x0},
 	476:  {region: 0x164, script: 0x52, flags: 0x0},
 	477:  {region: 0x164, script: 0x52, flags: 0x0},
-	479:  {region: 0xd5, script: 0x52, flags: 0x0},
+	478:  {region: 0x164, script: 0x52, flags: 0x0},
+	479:  {region: 0x94, script: 0x52, flags: 0x0},
 	480:  {region: 0x164, script: 0x52, flags: 0x0},
 	481:  {region: 0x164, script: 0x52, flags: 0x0},
-	482:  {region: 0x52, script: 0xdf, flags: 0x0},
-	483:  {region: 0x164, script: 0x52, flags: 0x0},
-	484:  {region: 0x134, script: 0x52, flags: 0x0},
-	485:  {region: 0x164, script: 0x52, flags: 0x0},
-	486:  {region: 0x48, script: 0x52, flags: 0x0},
+	482:  {region: 0x164, script: 0x52, flags: 0x0},
+	484:  {region: 0x121, script: 0x52, flags: 0x0},
+	485:  {region: 0xd5, script: 0x52, flags: 0x0},
+	486:  {region: 0x164, script: 0x52, flags: 0x0},
 	487:  {region: 0x164, script: 0x52, flags: 0x0},
-	488:  {region: 0x164, script: 0x52, flags: 0x0},
-	489:  {region: 0xe6, script: 0x52, flags: 0x0},
-	490:  {region: 0x164, script: 0x52, flags: 0x0},
-	491:  {region: 0x94, script: 0x52, flags: 0x0},
-	492:  {region: 0x105, script: 0x1e, flags: 0x0},
+	488:  {region: 0x52, script: 0xdf, flags: 0x0},
+	489:  {region: 0x164, script: 0x52, flags: 0x0},
+	490:  {region: 0x134, script: 0x52, flags: 0x0},
+	491:  {region: 0x164, script: 0x52, flags: 0x0},
+	492:  {region: 0x48, script: 0x52, flags: 0x0},
+	493:  {region: 0x164, script: 0x52, flags: 0x0},
 	494:  {region: 0x164, script: 0x52, flags: 0x0},
-	495:  {region: 0x164, script: 0x52, flags: 0x0},
-	496:  {region: 0x9c, script: 0x52, flags: 0x0},
-	497:  {region: 0x9d, script: 0x52, flags: 0x0},
-	498:  {region: 0x48, script: 0x17, flags: 0x0},
-	499:  {region: 0x96, script: 0x37, flags: 0x0},
+	495:  {region: 0xe6, script: 0x52, flags: 0x0},
+	496:  {region: 0x164, script: 0x52, flags: 0x0},
+	497:  {region: 0x94, script: 0x52, flags: 0x0},
+	498:  {region: 0x105, script: 0x1e, flags: 0x0},
 	500:  {region: 0x164, script: 0x52, flags: 0x0},
 	501:  {region: 0x164, script: 0x52, flags: 0x0},
-	502:  {region: 0x105, script: 0x52, flags: 0x0},
-	503:  {region: 0x164, script: 0x52, flags: 0x0},
-	504:  {region: 0xa1, script: 0x41, flags: 0x0},
-	505:  {region: 0x164, script: 0x52, flags: 0x0},
-	506:  {region: 0x9f, script: 0x52, flags: 0x0},
-	508:  {region: 0x164, script: 0x52, flags: 0x0},
+	502:  {region: 0x9c, script: 0x52, flags: 0x0},
+	503:  {region: 0x9d, script: 0x52, flags: 0x0},
+	504:  {region: 0x48, script: 0x17, flags: 0x0},
+	505:  {region: 0x96, script: 0x37, flags: 0x0},
+	506:  {region: 0x164, script: 0x52, flags: 0x0},
+	507:  {region: 0x164, script: 0x52, flags: 0x0},
+	508:  {region: 0x105, script: 0x52, flags: 0x0},
 	509:  {region: 0x164, script: 0x52, flags: 0x0},
-	510:  {region: 0x164, script: 0x52, flags: 0x0},
-	511:  {region: 0x51, script: 0x52, flags: 0x0},
-	512:  {region: 0x12f, script: 0x37, flags: 0x0},
-	513:  {region: 0x164, script: 0x52, flags: 0x0},
-	514:  {region: 0x12e, script: 0x52, flags: 0x0},
-	515:  {region: 0xda, script: 0x20, flags: 0x0},
+	510:  {region: 0xa1, script: 0x41, flags: 0x0},
+	511:  {region: 0x164, script: 0x52, flags: 0x0},
+	512:  {region: 0x9f, script: 0x52, flags: 0x0},
+	514:  {region: 0x164, script: 0x52, flags: 0x0},
+	515:  {region: 0x164, script: 0x52, flags: 0x0},
 	516:  {region: 0x164, script: 0x52, flags: 0x0},
-	517:  {region: 0x62, script: 0x52, flags: 0x0},
-	518:  {region: 0x94, script: 0x52, flags: 0x0},
-	519:  {region: 0x94, script: 0x52, flags: 0x0},
-	520:  {region: 0x7c, script: 0x29, flags: 0x0},
-	521:  {region: 0x136, script: 0x1e, flags: 0x0},
-	522:  {region: 0x66, script: 0x52, flags: 0x0},
-	523:  {region: 0xc3, script: 0x52, flags: 0x0},
-	524:  {region: 0x164, script: 0x52, flags: 0x0},
-	525:  {region: 0x164, script: 0x52, flags: 0x0},
-	526:  {region: 0xd5, script: 0x52, flags: 0x0},
-	527:  {region: 0xa3, script: 0x52, flags: 0x0},
-	528:  {region: 0xc2, script: 0x52, flags: 0x0},
-	529:  {region: 0x105, script: 0x1e, flags: 0x0},
+	517:  {region: 0x51, script: 0x52, flags: 0x0},
+	518:  {region: 0x12f, script: 0x37, flags: 0x0},
+	519:  {region: 0x164, script: 0x52, flags: 0x0},
+	520:  {region: 0x12e, script: 0x52, flags: 0x0},
+	521:  {region: 0xda, script: 0x20, flags: 0x0},
+	522:  {region: 0x164, script: 0x52, flags: 0x0},
+	523:  {region: 0x62, script: 0x52, flags: 0x0},
+	524:  {region: 0x94, script: 0x52, flags: 0x0},
+	525:  {region: 0x94, script: 0x52, flags: 0x0},
+	526:  {region: 0x7c, script: 0x29, flags: 0x0},
+	527:  {region: 0x136, script: 0x1e, flags: 0x0},
+	528:  {region: 0x66, script: 0x52, flags: 0x0},
+	529:  {region: 0xc3, script: 0x52, flags: 0x0},
 	530:  {region: 0x164, script: 0x52, flags: 0x0},
 	531:  {region: 0x164, script: 0x52, flags: 0x0},
-	532:  {region: 0x164, script: 0x52, flags: 0x0},
-	533:  {region: 0x164, script: 0x52, flags: 0x0},
-	534:  {region: 0xd3, script: 0x5, flags: 0x0},
-	535:  {region: 0xd5, script: 0x52, flags: 0x0},
-	536:  {region: 0x163, script: 0x52, flags: 0x0},
+	532:  {region: 0xd5, script: 0x52, flags: 0x0},
+	533:  {region: 0xa3, script: 0x52, flags: 0x0},
+	534:  {region: 0xc2, script: 0x52, flags: 0x0},
+	535:  {region: 0x105, script: 0x1e, flags: 0x0},
+	536:  {region: 0x164, script: 0x52, flags: 0x0},
 	537:  {region: 0x164, script: 0x52, flags: 0x0},
 	538:  {region: 0x164, script: 0x52, flags: 0x0},
-	539:  {region: 0x12e, script: 0x52, flags: 0x0},
-	540:  {region: 0x121, script: 0x5, flags: 0x0},
-	541:  {region: 0x164, script: 0x52, flags: 0x0},
-	542:  {region: 0x122, script: 0xd5, flags: 0x0},
-	543:  {region: 0x59, script: 0x52, flags: 0x0},
-	544:  {region: 0x51, script: 0x52, flags: 0x0},
-	545:  {region: 0x164, script: 0x52, flags: 0x0},
-	546:  {region: 0x4e, script: 0x52, flags: 0x0},
-	547:  {region: 0x98, script: 0x20, flags: 0x0},
-	548:  {region: 0x98, script: 0x20, flags: 0x0},
-	549:  {region: 0x4a, script: 0x52, flags: 0x0},
-	550:  {region: 0x94, script: 0x52, flags: 0x0},
+	539:  {region: 0x164, script: 0x52, flags: 0x0},
+	540:  {region: 0xd3, script: 0x5, flags: 0x0},
+	541:  {region: 0xd5, script: 0x52, flags: 0x0},
+	542:  {region: 0x163, script: 0x52, flags: 0x0},
+	543:  {region: 0x164, script: 0x52, flags: 0x0},
+	544:  {region: 0x164, script: 0x52, flags: 0x0},
+	545:  {region: 0x12e, script: 0x52, flags: 0x0},
+	546:  {region: 0x121, script: 0x5, flags: 0x0},
+	547:  {region: 0x164, script: 0x52, flags: 0x0},
+	548:  {region: 0x122, script: 0xd5, flags: 0x0},
+	549:  {region: 0x59, script: 0x52, flags: 0x0},
+	550:  {region: 0x51, script: 0x52, flags: 0x0},
 	551:  {region: 0x164, script: 0x52, flags: 0x0},
-	552:  {region: 0x40, script: 0x52, flags: 0x0},
-	553:  {region: 0x98, script: 0x52, flags: 0x0},
-	554:  {region: 0x52, script: 0xcc, flags: 0x0},
-	555:  {region: 0x98, script: 0x20, flags: 0x0},
-	556:  {region: 0xc2, script: 0x52, flags: 0x0},
+	552:  {region: 0x4e, script: 0x52, flags: 0x0},
+	553:  {region: 0x98, script: 0x20, flags: 0x0},
+	554:  {region: 0x98, script: 0x20, flags: 0x0},
+	555:  {region: 0x4a, script: 0x52, flags: 0x0},
+	556:  {region: 0x94, script: 0x52, flags: 0x0},
 	557:  {region: 0x164, script: 0x52, flags: 0x0},
-	558:  {region: 0x98, script: 0x6b, flags: 0x0},
-	559:  {region: 0xe7, script: 0x5, flags: 0x0},
-	560:  {region: 0x164, script: 0x52, flags: 0x0},
-	561:  {region: 0xa3, script: 0x52, flags: 0x0},
-	562:  {region: 0x164, script: 0x52, flags: 0x0},
-	563:  {region: 0x12a, script: 0x52, flags: 0x0},
-	564:  {region: 0x164, script: 0x52, flags: 0x0},
-	565:  {region: 0xd1, script: 0x52, flags: 0x0},
+	558:  {region: 0x40, script: 0x52, flags: 0x0},
+	559:  {region: 0x98, script: 0x52, flags: 0x0},
+	560:  {region: 0x52, script: 0xcc, flags: 0x0},
+	561:  {region: 0x98, script: 0x20, flags: 0x0},
+	562:  {region: 0xc2, script: 0x52, flags: 0x0},
+	563:  {region: 0x164, script: 0x52, flags: 0x0},
+	564:  {region: 0x98, script: 0x6b, flags: 0x0},
+	565:  {region: 0xe7, script: 0x5, flags: 0x0},
 	566:  {region: 0x164, script: 0x52, flags: 0x0},
-	567:  {region: 0xae, script: 0x4f, flags: 0x0},
+	567:  {region: 0xa3, script: 0x52, flags: 0x0},
 	568:  {region: 0x164, script: 0x52, flags: 0x0},
-	569:  {region: 0x164, script: 0x52, flags: 0x0},
-	570:  {region: 0x15, script: 0x6, flags: 0x1},
-	571:  {region: 0x164, script: 0x52, flags: 0x0},
-	572:  {region: 0x51, script: 0x52, flags: 0x0},
-	573:  {region: 0x81, script: 0x52, flags: 0x0},
-	574:  {region: 0xa3, script: 0x52, flags: 0x0},
+	569:  {region: 0x12a, script: 0x52, flags: 0x0},
+	570:  {region: 0x164, script: 0x52, flags: 0x0},
+	571:  {region: 0xd1, script: 0x52, flags: 0x0},
+	572:  {region: 0x164, script: 0x52, flags: 0x0},
+	573:  {region: 0xae, script: 0x4f, flags: 0x0},
+	574:  {region: 0x164, script: 0x52, flags: 0x0},
 	575:  {region: 0x164, script: 0x52, flags: 0x0},
-	576:  {region: 0x164, script: 0x52, flags: 0x0},
+	576:  {region: 0x13, script: 0x6, flags: 0x1},
 	577:  {region: 0x164, script: 0x52, flags: 0x0},
-	578:  {region: 0xa5, script: 0x46, flags: 0x0},
-	579:  {region: 0x29, script: 0x52, flags: 0x0},
-	580:  {region: 0x164, script: 0x52, flags: 0x0},
+	578:  {region: 0x51, script: 0x52, flags: 0x0},
+	579:  {region: 0x81, script: 0x52, flags: 0x0},
+	580:  {region: 0xa3, script: 0x52, flags: 0x0},
 	581:  {region: 0x164, script: 0x52, flags: 0x0},
 	582:  {region: 0x164, script: 0x52, flags: 0x0},
 	583:  {region: 0x164, script: 0x52, flags: 0x0},
-	584:  {region: 0x164, script: 0x52, flags: 0x0},
-	585:  {region: 0x98, script: 0x4a, flags: 0x0},
+	584:  {region: 0xa5, script: 0x46, flags: 0x0},
+	585:  {region: 0x29, script: 0x52, flags: 0x0},
 	586:  {region: 0x164, script: 0x52, flags: 0x0},
-	587:  {region: 0xaa, script: 0x4b, flags: 0x0},
-	588:  {region: 0x105, script: 0x1e, flags: 0x0},
-	589:  {region: 0x98, script: 0x20, flags: 0x0},
+	587:  {region: 0x164, script: 0x52, flags: 0x0},
+	588:  {region: 0x164, script: 0x52, flags: 0x0},
+	589:  {region: 0x164, script: 0x52, flags: 0x0},
 	590:  {region: 0x164, script: 0x52, flags: 0x0},
-	591:  {region: 0x74, script: 0x52, flags: 0x0},
-	592:  {region: 0x164, script: 0x52, flags: 0x0},
-	593:  {region: 0xb3, script: 0x52, flags: 0x0},
-	594:  {region: 0x164, script: 0x52, flags: 0x0},
-	595:  {region: 0x164, script: 0x52, flags: 0x0},
-	596:  {region: 0x164, script: 0x52, flags: 0x0},
+	591:  {region: 0x98, script: 0x4a, flags: 0x0},
+	592:  {region: 0x113, script: 0x52, flags: 0x0},
+	593:  {region: 0x164, script: 0x52, flags: 0x0},
+	594:  {region: 0xaa, script: 0x4b, flags: 0x0},
+	595:  {region: 0x105, script: 0x1e, flags: 0x0},
+	596:  {region: 0x98, script: 0x20, flags: 0x0},
 	597:  {region: 0x164, script: 0x52, flags: 0x0},
-	598:  {region: 0x164, script: 0x52, flags: 0x0},
+	598:  {region: 0x74, script: 0x52, flags: 0x0},
 	599:  {region: 0x164, script: 0x52, flags: 0x0},
-	600:  {region: 0x164, script: 0x52, flags: 0x0},
-	601:  {region: 0x164, script: 0x27, flags: 0x0},
-	603:  {region: 0x105, script: 0x1e, flags: 0x0},
-	604:  {region: 0x111, script: 0x52, flags: 0x0},
-	605:  {region: 0xe6, script: 0x52, flags: 0x0},
-	606:  {region: 0x105, script: 0x52, flags: 0x0},
+	600:  {region: 0xb3, script: 0x52, flags: 0x0},
+	601:  {region: 0x164, script: 0x52, flags: 0x0},
+	602:  {region: 0x164, script: 0x52, flags: 0x0},
+	603:  {region: 0x164, script: 0x52, flags: 0x0},
+	604:  {region: 0x164, script: 0x52, flags: 0x0},
+	605:  {region: 0x164, script: 0x52, flags: 0x0},
+	606:  {region: 0x164, script: 0x52, flags: 0x0},
 	607:  {region: 0x164, script: 0x52, flags: 0x0},
-	608:  {region: 0x98, script: 0x20, flags: 0x0},
-	609:  {region: 0x98, script: 0x5, flags: 0x0},
-	610:  {region: 0x12e, script: 0x52, flags: 0x0},
-	611:  {region: 0x164, script: 0x52, flags: 0x0},
-	612:  {region: 0x51, script: 0x52, flags: 0x0},
-	613:  {region: 0x5f, script: 0x52, flags: 0x0},
+	608:  {region: 0x164, script: 0x27, flags: 0x0},
+	610:  {region: 0x105, script: 0x1e, flags: 0x0},
+	611:  {region: 0x111, script: 0x52, flags: 0x0},
+	612:  {region: 0xe6, script: 0x52, flags: 0x0},
+	613:  {region: 0x105, script: 0x52, flags: 0x0},
 	614:  {region: 0x164, script: 0x52, flags: 0x0},
-	615:  {region: 0x164, script: 0x52, flags: 0x0},
-	616:  {region: 0x164, script: 0x27, flags: 0x0},
-	617:  {region: 0x164, script: 0x52, flags: 0x0},
+	615:  {region: 0x98, script: 0x20, flags: 0x0},
+	616:  {region: 0x98, script: 0x5, flags: 0x0},
+	617:  {region: 0x12e, script: 0x52, flags: 0x0},
 	618:  {region: 0x164, script: 0x52, flags: 0x0},
-	619:  {region: 0x1b, script: 0x3, flags: 0x1},
-	620:  {region: 0x164, script: 0x52, flags: 0x0},
+	619:  {region: 0x51, script: 0x52, flags: 0x0},
+	620:  {region: 0x5f, script: 0x52, flags: 0x0},
 	621:  {region: 0x164, script: 0x52, flags: 0x0},
 	622:  {region: 0x164, script: 0x52, flags: 0x0},
-	623:  {region: 0x164, script: 0x52, flags: 0x0},
-	624:  {region: 0x105, script: 0x1e, flags: 0x0},
+	623:  {region: 0x164, script: 0x27, flags: 0x0},
+	624:  {region: 0x164, script: 0x52, flags: 0x0},
 	625:  {region: 0x164, script: 0x52, flags: 0x0},
-	626:  {region: 0x164, script: 0x52, flags: 0x0},
+	626:  {region: 0x19, script: 0x3, flags: 0x1},
 	627:  {region: 0x164, script: 0x52, flags: 0x0},
-	628:  {region: 0x105, script: 0x1e, flags: 0x0},
+	628:  {region: 0x164, script: 0x52, flags: 0x0},
 	629:  {region: 0x164, script: 0x52, flags: 0x0},
-	630:  {region: 0x94, script: 0x52, flags: 0x0},
-	631:  {region: 0xe7, script: 0x5, flags: 0x0},
-	632:  {region: 0x7a, script: 0x52, flags: 0x0},
+	630:  {region: 0x164, script: 0x52, flags: 0x0},
+	631:  {region: 0x105, script: 0x1e, flags: 0x0},
+	632:  {region: 0x164, script: 0x52, flags: 0x0},
 	633:  {region: 0x164, script: 0x52, flags: 0x0},
 	634:  {region: 0x164, script: 0x52, flags: 0x0},
-	635:  {region: 0x164, script: 0x52, flags: 0x0},
-	636:  {region: 0x164, script: 0x27, flags: 0x0},
-	637:  {region: 0x122, script: 0xd5, flags: 0x0},
+	635:  {region: 0x105, script: 0x1e, flags: 0x0},
+	636:  {region: 0x164, script: 0x52, flags: 0x0},
+	637:  {region: 0x94, script: 0x52, flags: 0x0},
 	638:  {region: 0xe7, script: 0x5, flags: 0x0},
-	639:  {region: 0x164, script: 0x52, flags: 0x0},
+	639:  {region: 0x7a, script: 0x52, flags: 0x0},
 	640:  {region: 0x164, script: 0x52, flags: 0x0},
-	641:  {region: 0x1e, script: 0x5, flags: 0x1},
+	641:  {region: 0x164, script: 0x52, flags: 0x0},
 	642:  {region: 0x164, script: 0x52, flags: 0x0},
-	643:  {region: 0x164, script: 0x52, flags: 0x0},
-	644:  {region: 0x164, script: 0x52, flags: 0x0},
-	645:  {region: 0x137, script: 0x52, flags: 0x0},
-	646:  {region: 0x86, script: 0x56, flags: 0x0},
-	647:  {region: 0x96, script: 0x37, flags: 0x0},
-	648:  {region: 0x12e, script: 0x52, flags: 0x0},
-	649:  {region: 0xe7, script: 0x5, flags: 0x0},
-	650:  {region: 0x130, script: 0x52, flags: 0x0},
+	643:  {region: 0x164, script: 0x27, flags: 0x0},
+	644:  {region: 0x122, script: 0xd5, flags: 0x0},
+	645:  {region: 0xe7, script: 0x5, flags: 0x0},
+	646:  {region: 0x164, script: 0x52, flags: 0x0},
+	647:  {region: 0x164, script: 0x52, flags: 0x0},
+	648:  {region: 0x1c, script: 0x5, flags: 0x1},
+	649:  {region: 0x164, script: 0x52, flags: 0x0},
+	650:  {region: 0x164, script: 0x52, flags: 0x0},
 	651:  {region: 0x164, script: 0x52, flags: 0x0},
-	652:  {region: 0xb6, script: 0x52, flags: 0x0},
-	653:  {region: 0x105, script: 0x1e, flags: 0x0},
-	654:  {region: 0x164, script: 0x52, flags: 0x0},
-	655:  {region: 0x94, script: 0x52, flags: 0x0},
-	656:  {region: 0x164, script: 0x52, flags: 0x0},
-	657:  {region: 0x52, script: 0xd5, flags: 0x0},
+	652:  {region: 0x137, script: 0x52, flags: 0x0},
+	653:  {region: 0x86, script: 0x56, flags: 0x0},
+	654:  {region: 0x96, script: 0x37, flags: 0x0},
+	655:  {region: 0x12e, script: 0x52, flags: 0x0},
+	656:  {region: 0xe7, script: 0x5, flags: 0x0},
+	657:  {region: 0x130, script: 0x52, flags: 0x0},
 	658:  {region: 0x164, script: 0x52, flags: 0x0},
-	659:  {region: 0x164, script: 0x52, flags: 0x0},
-	660:  {region: 0x164, script: 0x52, flags: 0x0},
+	659:  {region: 0xb6, script: 0x52, flags: 0x0},
+	660:  {region: 0x105, script: 0x1e, flags: 0x0},
 	661:  {region: 0x164, script: 0x52, flags: 0x0},
-	662:  {region: 0x98, script: 0x54, flags: 0x0},
+	662:  {region: 0x94, script: 0x52, flags: 0x0},
 	663:  {region: 0x164, script: 0x52, flags: 0x0},
-	664:  {region: 0x164, script: 0x52, flags: 0x0},
-	665:  {region: 0x105, script: 0x1e, flags: 0x0},
-	666:  {region: 0x130, script: 0x52, flags: 0x0},
+	664:  {region: 0x52, script: 0xd5, flags: 0x0},
+	665:  {region: 0x164, script: 0x52, flags: 0x0},
+	666:  {region: 0x164, script: 0x52, flags: 0x0},
 	667:  {region: 0x164, script: 0x52, flags: 0x0},
-	668:  {region: 0xd8, script: 0x52, flags: 0x0},
-	669:  {region: 0x164, script: 0x52, flags: 0x0},
+	668:  {region: 0x164, script: 0x52, flags: 0x0},
+	669:  {region: 0x98, script: 0x54, flags: 0x0},
 	670:  {region: 0x164, script: 0x52, flags: 0x0},
-	671:  {region: 0x23, script: 0x2, flags: 0x1},
-	672:  {region: 0x164, script: 0x52, flags: 0x0},
-	673:  {region: 0x164, script: 0x52, flags: 0x0},
-	674:  {region: 0x9d, script: 0x52, flags: 0x0},
-	675:  {region: 0x52, script: 0x58, flags: 0x0},
-	676:  {region: 0x94, script: 0x52, flags: 0x0},
-	677:  {region: 0x9b, script: 0x5, flags: 0x0},
-	678:  {region: 0x134, script: 0x52, flags: 0x0},
+	671:  {region: 0x164, script: 0x52, flags: 0x0},
+	672:  {region: 0x105, script: 0x1e, flags: 0x0},
+	673:  {region: 0x130, script: 0x52, flags: 0x0},
+	674:  {region: 0x164, script: 0x52, flags: 0x0},
+	675:  {region: 0xd8, script: 0x52, flags: 0x0},
+	676:  {region: 0x164, script: 0x52, flags: 0x0},
+	677:  {region: 0x164, script: 0x52, flags: 0x0},
+	678:  {region: 0x21, script: 0x2, flags: 0x1},
 	679:  {region: 0x164, script: 0x52, flags: 0x0},
 	680:  {region: 0x164, script: 0x52, flags: 0x0},
-	681:  {region: 0x98, script: 0xd0, flags: 0x0},
-	682:  {region: 0x9d, script: 0x52, flags: 0x0},
-	683:  {region: 0x164, script: 0x52, flags: 0x0},
-	684:  {region: 0x4a, script: 0x52, flags: 0x0},
-	685:  {region: 0x164, script: 0x52, flags: 0x0},
+	681:  {region: 0x9d, script: 0x52, flags: 0x0},
+	682:  {region: 0x52, script: 0x58, flags: 0x0},
+	683:  {region: 0x94, script: 0x52, flags: 0x0},
+	684:  {region: 0x9b, script: 0x5, flags: 0x0},
+	685:  {region: 0x134, script: 0x52, flags: 0x0},
 	686:  {region: 0x164, script: 0x52, flags: 0x0},
-	687:  {region: 0xae, script: 0x4f, flags: 0x0},
-	688:  {region: 0x164, script: 0x52, flags: 0x0},
-	689:  {region: 0x164, script: 0x52, flags: 0x0},
-	690:  {region: 0x4a, script: 0x52, flags: 0x0},
-	691:  {region: 0x164, script: 0x52, flags: 0x0},
+	687:  {region: 0x164, script: 0x52, flags: 0x0},
+	688:  {region: 0x98, script: 0xd0, flags: 0x0},
+	689:  {region: 0x9d, script: 0x52, flags: 0x0},
+	690:  {region: 0x164, script: 0x52, flags: 0x0},
+	691:  {region: 0x4a, script: 0x52, flags: 0x0},
 	692:  {region: 0x164, script: 0x52, flags: 0x0},
-	693:  {region: 0x161, script: 0x52, flags: 0x0},
-	694:  {region: 0x9b, script: 0x5, flags: 0x0},
-	695:  {region: 0xb5, script: 0x52, flags: 0x0},
-	696:  {region: 0xb7, script: 0x52, flags: 0x0},
+	693:  {region: 0x164, script: 0x52, flags: 0x0},
+	694:  {region: 0xae, script: 0x4f, flags: 0x0},
+	695:  {region: 0x164, script: 0x52, flags: 0x0},
+	696:  {region: 0x164, script: 0x52, flags: 0x0},
 	697:  {region: 0x4a, script: 0x52, flags: 0x0},
-	698:  {region: 0x4a, script: 0x52, flags: 0x0},
-	699:  {region: 0xa3, script: 0x52, flags: 0x0},
-	700:  {region: 0xa3, script: 0x52, flags: 0x0},
+	698:  {region: 0x164, script: 0x52, flags: 0x0},
+	699:  {region: 0x164, script: 0x52, flags: 0x0},
+	700:  {region: 0x161, script: 0x52, flags: 0x0},
 	701:  {region: 0x9b, script: 0x5, flags: 0x0},
-	702:  {region: 0xb7, script: 0x52, flags: 0x0},
-	703:  {region: 0x122, script: 0xd5, flags: 0x0},
-	704:  {region: 0x52, script: 0x34, flags: 0x0},
-	705:  {region: 0x12a, script: 0x52, flags: 0x0},
-	706:  {region: 0x94, script: 0x52, flags: 0x0},
-	707:  {region: 0x51, script: 0x52, flags: 0x0},
-	708:  {region: 0x98, script: 0x20, flags: 0x0},
-	709:  {region: 0x98, script: 0x20, flags: 0x0},
-	710:  {region: 0x94, script: 0x52, flags: 0x0},
-	711:  {region: 0x25, script: 0x3, flags: 0x1},
-	712:  {region: 0xa3, script: 0x52, flags: 0x0},
-	713:  {region: 0x164, script: 0x52, flags: 0x0},
-	714:  {region: 0xce, script: 0x52, flags: 0x0},
-	715:  {region: 0x164, script: 0x52, flags: 0x0},
-	716:  {region: 0x164, script: 0x52, flags: 0x0},
-	717:  {region: 0x164, script: 0x52, flags: 0x0},
-	718:  {region: 0x164, script: 0x52, flags: 0x0},
-	719:  {region: 0x164, script: 0x52, flags: 0x0},
+	702:  {region: 0xb5, script: 0x52, flags: 0x0},
+	703:  {region: 0xb7, script: 0x52, flags: 0x0},
+	704:  {region: 0x4a, script: 0x52, flags: 0x0},
+	705:  {region: 0x4a, script: 0x52, flags: 0x0},
+	706:  {region: 0xa3, script: 0x52, flags: 0x0},
+	707:  {region: 0xa3, script: 0x52, flags: 0x0},
+	708:  {region: 0x9b, script: 0x5, flags: 0x0},
+	709:  {region: 0xb7, script: 0x52, flags: 0x0},
+	710:  {region: 0x122, script: 0xd5, flags: 0x0},
+	711:  {region: 0x52, script: 0x34, flags: 0x0},
+	712:  {region: 0x12a, script: 0x52, flags: 0x0},
+	713:  {region: 0x94, script: 0x52, flags: 0x0},
+	714:  {region: 0x51, script: 0x52, flags: 0x0},
+	715:  {region: 0x98, script: 0x20, flags: 0x0},
+	716:  {region: 0x98, script: 0x20, flags: 0x0},
+	717:  {region: 0x94, script: 0x52, flags: 0x0},
+	718:  {region: 0x23, script: 0x3, flags: 0x1},
+	719:  {region: 0xa3, script: 0x52, flags: 0x0},
 	720:  {region: 0x164, script: 0x52, flags: 0x0},
-	721:  {region: 0x164, script: 0x52, flags: 0x0},
+	721:  {region: 0xce, script: 0x52, flags: 0x0},
 	722:  {region: 0x164, script: 0x52, flags: 0x0},
 	723:  {region: 0x164, script: 0x52, flags: 0x0},
 	724:  {region: 0x164, script: 0x52, flags: 0x0},
 	725:  {region: 0x164, script: 0x52, flags: 0x0},
-	726:  {region: 0x164, script: 0x5, flags: 0x0},
-	727:  {region: 0x105, script: 0x1e, flags: 0x0},
-	728:  {region: 0xe6, script: 0x52, flags: 0x0},
+	726:  {region: 0x164, script: 0x52, flags: 0x0},
+	727:  {region: 0x164, script: 0x52, flags: 0x0},
+	728:  {region: 0x164, script: 0x52, flags: 0x0},
 	729:  {region: 0x164, script: 0x52, flags: 0x0},
-	730:  {region: 0x94, script: 0x52, flags: 0x0},
-	731:  {region: 0x164, script: 0x27, flags: 0x0},
+	730:  {region: 0x164, script: 0x52, flags: 0x0},
+	731:  {region: 0x164, script: 0x52, flags: 0x0},
 	732:  {region: 0x164, script: 0x52, flags: 0x0},
-	733:  {region: 0x164, script: 0x52, flags: 0x0},
-	734:  {region: 0x164, script: 0x52, flags: 0x0},
-	735:  {region: 0x111, script: 0x52, flags: 0x0},
-	736:  {region: 0xa3, script: 0x52, flags: 0x0},
-	737:  {region: 0x164, script: 0x52, flags: 0x0},
-	738:  {region: 0x164, script: 0x52, flags: 0x0},
-	739:  {region: 0x122, script: 0x5, flags: 0x0},
-	740:  {region: 0xcb, script: 0x52, flags: 0x0},
+	733:  {region: 0x164, script: 0x5, flags: 0x0},
+	734:  {region: 0x105, script: 0x1e, flags: 0x0},
+	735:  {region: 0xe6, script: 0x52, flags: 0x0},
+	736:  {region: 0x164, script: 0x52, flags: 0x0},
+	737:  {region: 0x94, script: 0x52, flags: 0x0},
+	738:  {region: 0x164, script: 0x27, flags: 0x0},
+	739:  {region: 0x164, script: 0x52, flags: 0x0},
+	740:  {region: 0x164, script: 0x52, flags: 0x0},
 	741:  {region: 0x164, script: 0x52, flags: 0x0},
-	742:  {region: 0x164, script: 0x52, flags: 0x0},
-	743:  {region: 0x164, script: 0x52, flags: 0x0},
-	744:  {region: 0xbe, script: 0x52, flags: 0x0},
-	745:  {region: 0xd0, script: 0x52, flags: 0x0},
-	746:  {region: 0x164, script: 0x52, flags: 0x0},
-	747:  {region: 0x51, script: 0x52, flags: 0x0},
-	748:  {region: 0xda, script: 0x20, flags: 0x0},
-	749:  {region: 0x12e, script: 0x52, flags: 0x0},
-	750:  {region: 0xbf, script: 0x52, flags: 0x0},
-	751:  {region: 0x164, script: 0x52, flags: 0x0},
-	752:  {region: 0x164, script: 0x52, flags: 0x0},
-	753:  {region: 0xdf, script: 0x52, flags: 0x0},
-	754:  {region: 0x164, script: 0x52, flags: 0x0},
-	755:  {region: 0x94, script: 0x52, flags: 0x0},
-	756:  {region: 0x9a, script: 0x36, flags: 0x0},
-	757:  {region: 0x164, script: 0x52, flags: 0x0},
-	758:  {region: 0xc1, script: 0x1e, flags: 0x0},
-	759:  {region: 0x164, script: 0x5, flags: 0x0},
-	760:  {region: 0x164, script: 0x52, flags: 0x0},
+	742:  {region: 0x111, script: 0x52, flags: 0x0},
+	743:  {region: 0xa3, script: 0x52, flags: 0x0},
+	744:  {region: 0x164, script: 0x52, flags: 0x0},
+	745:  {region: 0x164, script: 0x52, flags: 0x0},
+	746:  {region: 0x122, script: 0x5, flags: 0x0},
+	747:  {region: 0xcb, script: 0x52, flags: 0x0},
+	748:  {region: 0x164, script: 0x52, flags: 0x0},
+	749:  {region: 0x164, script: 0x52, flags: 0x0},
+	750:  {region: 0x164, script: 0x52, flags: 0x0},
+	751:  {region: 0xbe, script: 0x52, flags: 0x0},
+	752:  {region: 0xd0, script: 0x52, flags: 0x0},
+	753:  {region: 0x164, script: 0x52, flags: 0x0},
+	754:  {region: 0x51, script: 0x52, flags: 0x0},
+	755:  {region: 0xda, script: 0x20, flags: 0x0},
+	756:  {region: 0x12e, script: 0x52, flags: 0x0},
+	757:  {region: 0xbf, script: 0x52, flags: 0x0},
+	758:  {region: 0x164, script: 0x52, flags: 0x0},
+	759:  {region: 0x164, script: 0x52, flags: 0x0},
+	760:  {region: 0xdf, script: 0x52, flags: 0x0},
 	761:  {region: 0x164, script: 0x52, flags: 0x0},
-	762:  {region: 0x164, script: 0x52, flags: 0x0},
-	763:  {region: 0x98, script: 0x64, flags: 0x0},
+	762:  {region: 0x94, script: 0x52, flags: 0x0},
+	763:  {region: 0x9a, script: 0x36, flags: 0x0},
 	764:  {region: 0x164, script: 0x52, flags: 0x0},
-	765:  {region: 0x164, script: 0x52, flags: 0x0},
-	766:  {region: 0x10a, script: 0x52, flags: 0x0},
+	765:  {region: 0xc1, script: 0x1e, flags: 0x0},
+	766:  {region: 0x164, script: 0x5, flags: 0x0},
 	767:  {region: 0x164, script: 0x52, flags: 0x0},
 	768:  {region: 0x164, script: 0x52, flags: 0x0},
 	769:  {region: 0x164, script: 0x52, flags: 0x0},
-	770:  {region: 0x28, script: 0x3, flags: 0x1},
+	770:  {region: 0x98, script: 0x64, flags: 0x0},
 	771:  {region: 0x164, script: 0x52, flags: 0x0},
 	772:  {region: 0x164, script: 0x52, flags: 0x0},
-	773:  {region: 0x98, script: 0xe, flags: 0x0},
-	774:  {region: 0xc3, script: 0x6b, flags: 0x0},
+	773:  {region: 0x10a, script: 0x52, flags: 0x0},
+	774:  {region: 0x164, script: 0x52, flags: 0x0},
+	775:  {region: 0x164, script: 0x52, flags: 0x0},
 	776:  {region: 0x164, script: 0x52, flags: 0x0},
-	777:  {region: 0x48, script: 0x52, flags: 0x0},
-	778:  {region: 0x48, script: 0x52, flags: 0x0},
-	779:  {region: 0x36, script: 0x52, flags: 0x0},
-	780:  {region: 0x164, script: 0x52, flags: 0x0},
-	781:  {region: 0x164, script: 0x52, flags: 0x0},
-	782:  {region: 0x164, script: 0x52, flags: 0x0},
+	777:  {region: 0x26, script: 0x3, flags: 0x1},
+	778:  {region: 0x164, script: 0x52, flags: 0x0},
+	779:  {region: 0x164, script: 0x52, flags: 0x0},
+	780:  {region: 0x98, script: 0xe, flags: 0x0},
+	781:  {region: 0xc3, script: 0x6b, flags: 0x0},
 	783:  {region: 0x164, script: 0x52, flags: 0x0},
-	784:  {region: 0x164, script: 0x52, flags: 0x0},
-	785:  {region: 0x164, script: 0x52, flags: 0x0},
-	786:  {region: 0x98, script: 0x20, flags: 0x0},
-	787:  {region: 0xda, script: 0x20, flags: 0x0},
-	788:  {region: 0x105, script: 0x1e, flags: 0x0},
-	789:  {region: 0x34, script: 0x68, flags: 0x0},
-	790:  {region: 0x2b, script: 0x3, flags: 0x1},
-	791:  {region: 0xca, script: 0x52, flags: 0x0},
+	784:  {region: 0x48, script: 0x52, flags: 0x0},
+	785:  {region: 0x48, script: 0x52, flags: 0x0},
+	786:  {region: 0x36, script: 0x52, flags: 0x0},
+	787:  {region: 0x164, script: 0x52, flags: 0x0},
+	788:  {region: 0x164, script: 0x52, flags: 0x0},
+	789:  {region: 0x164, script: 0x52, flags: 0x0},
+	790:  {region: 0x164, script: 0x52, flags: 0x0},
+	791:  {region: 0x164, script: 0x52, flags: 0x0},
 	792:  {region: 0x164, script: 0x52, flags: 0x0},
-	793:  {region: 0x164, script: 0x52, flags: 0x0},
-	794:  {region: 0x164, script: 0x52, flags: 0x0},
-	795:  {region: 0x98, script: 0x20, flags: 0x0},
-	796:  {region: 0x51, script: 0x52, flags: 0x0},
-	798:  {region: 0x164, script: 0x52, flags: 0x0},
-	799:  {region: 0x134, script: 0x52, flags: 0x0},
+	793:  {region: 0x98, script: 0x20, flags: 0x0},
+	794:  {region: 0xda, script: 0x20, flags: 0x0},
+	795:  {region: 0x105, script: 0x1e, flags: 0x0},
+	796:  {region: 0x34, script: 0x68, flags: 0x0},
+	797:  {region: 0x29, script: 0x3, flags: 0x1},
+	798:  {region: 0xca, script: 0x52, flags: 0x0},
+	799:  {region: 0x164, script: 0x52, flags: 0x0},
 	800:  {region: 0x164, script: 0x52, flags: 0x0},
 	801:  {region: 0x164, script: 0x52, flags: 0x0},
-	802:  {region: 0xe7, script: 0x5, flags: 0x0},
-	803:  {region: 0xc2, script: 0x52, flags: 0x0},
-	804:  {region: 0x98, script: 0x20, flags: 0x0},
-	805:  {region: 0x94, script: 0x52, flags: 0x0},
-	806:  {region: 0x163, script: 0x52, flags: 0x0},
+	802:  {region: 0x98, script: 0x20, flags: 0x0},
+	803:  {region: 0x51, script: 0x52, flags: 0x0},
+	805:  {region: 0x164, script: 0x52, flags: 0x0},
+	806:  {region: 0x134, script: 0x52, flags: 0x0},
 	807:  {region: 0x164, script: 0x52, flags: 0x0},
-	808:  {region: 0xc3, script: 0x6b, flags: 0x0},
-	809:  {region: 0x164, script: 0x52, flags: 0x0},
-	810:  {region: 0x164, script: 0x27, flags: 0x0},
-	811:  {region: 0x105, script: 0x1e, flags: 0x0},
-	812:  {region: 0x164, script: 0x52, flags: 0x0},
-	813:  {region: 0x130, script: 0x52, flags: 0x0},
-	814:  {region: 0x9b, script: 0x5d, flags: 0x0},
-	815:  {region: 0x164, script: 0x52, flags: 0x0},
+	808:  {region: 0x164, script: 0x52, flags: 0x0},
+	809:  {region: 0xe7, script: 0x5, flags: 0x0},
+	810:  {region: 0xc2, script: 0x52, flags: 0x0},
+	811:  {region: 0x98, script: 0x20, flags: 0x0},
+	812:  {region: 0x94, script: 0x52, flags: 0x0},
+	813:  {region: 0x163, script: 0x52, flags: 0x0},
+	814:  {region: 0x164, script: 0x52, flags: 0x0},
+	815:  {region: 0xc3, script: 0x6b, flags: 0x0},
 	816:  {region: 0x164, script: 0x52, flags: 0x0},
-	817:  {region: 0x9b, script: 0x5, flags: 0x0},
-	818:  {region: 0x164, script: 0x52, flags: 0x0},
+	817:  {region: 0x164, script: 0x27, flags: 0x0},
+	818:  {region: 0x105, script: 0x1e, flags: 0x0},
 	819:  {region: 0x164, script: 0x52, flags: 0x0},
-	820:  {region: 0x164, script: 0x52, flags: 0x0},
-	821:  {region: 0xdc, script: 0x52, flags: 0x0},
+	820:  {region: 0x130, script: 0x52, flags: 0x0},
+	821:  {region: 0x9b, script: 0x5d, flags: 0x0},
 	822:  {region: 0x164, script: 0x52, flags: 0x0},
 	823:  {region: 0x164, script: 0x52, flags: 0x0},
+	824:  {region: 0x9b, script: 0x5, flags: 0x0},
 	825:  {region: 0x164, script: 0x52, flags: 0x0},
-	826:  {region: 0x52, script: 0x34, flags: 0x0},
-	827:  {region: 0x9d, script: 0x52, flags: 0x0},
-	828:  {region: 0xd1, script: 0x52, flags: 0x0},
+	826:  {region: 0x164, script: 0x52, flags: 0x0},
+	827:  {region: 0x164, script: 0x52, flags: 0x0},
+	828:  {region: 0xdc, script: 0x52, flags: 0x0},
 	829:  {region: 0x164, script: 0x52, flags: 0x0},
-	830:  {region: 0xd9, script: 0x52, flags: 0x0},
-	831:  {region: 0x164, script: 0x52, flags: 0x0},
+	830:  {region: 0x164, script: 0x52, flags: 0x0},
 	832:  {region: 0x164, script: 0x52, flags: 0x0},
-	833:  {region: 0x164, script: 0x52, flags: 0x0},
-	834:  {region: 0xce, script: 0x52, flags: 0x0},
-	835:  {region: 0x164, script: 0x52, flags: 0x0},
+	833:  {region: 0x52, script: 0x34, flags: 0x0},
+	834:  {region: 0x9d, script: 0x52, flags: 0x0},
+	835:  {region: 0xd1, script: 0x52, flags: 0x0},
 	836:  {region: 0x164, script: 0x52, flags: 0x0},
-	837:  {region: 0x163, script: 0x52, flags: 0x0},
-	838:  {region: 0xd0, script: 0x52, flags: 0x0},
-	839:  {region: 0x5f, script: 0x52, flags: 0x0},
-	840:  {region: 0xda, script: 0x20, flags: 0x0},
-	841:  {region: 0x164, script: 0x52, flags: 0x0},
-	842:  {region: 0xda, script: 0x20, flags: 0x0},
+	837:  {region: 0xd9, script: 0x52, flags: 0x0},
+	838:  {region: 0x164, script: 0x52, flags: 0x0},
+	839:  {region: 0x164, script: 0x52, flags: 0x0},
+	840:  {region: 0x164, script: 0x52, flags: 0x0},
+	841:  {region: 0xce, script: 0x52, flags: 0x0},
+	842:  {region: 0x164, script: 0x52, flags: 0x0},
 	843:  {region: 0x164, script: 0x52, flags: 0x0},
-	844:  {region: 0x164, script: 0x52, flags: 0x0},
-	845:  {region: 0xd1, script: 0x52, flags: 0x0},
-	846:  {region: 0x164, script: 0x52, flags: 0x0},
-	847:  {region: 0x164, script: 0x52, flags: 0x0},
-	848:  {region: 0xd0, script: 0x52, flags: 0x0},
-	849:  {region: 0x164, script: 0x52, flags: 0x0},
-	850:  {region: 0xce, script: 0x52, flags: 0x0},
-	851:  {region: 0xce, script: 0x52, flags: 0x0},
-	852:  {region: 0x164, script: 0x52, flags: 0x0},
+	844:  {region: 0x163, script: 0x52, flags: 0x0},
+	845:  {region: 0xd0, script: 0x52, flags: 0x0},
+	846:  {region: 0x5f, script: 0x52, flags: 0x0},
+	847:  {region: 0xda, script: 0x20, flags: 0x0},
+	848:  {region: 0x164, script: 0x52, flags: 0x0},
+	849:  {region: 0xda, script: 0x20, flags: 0x0},
+	850:  {region: 0x164, script: 0x52, flags: 0x0},
+	851:  {region: 0x164, script: 0x52, flags: 0x0},
+	852:  {region: 0xd1, script: 0x52, flags: 0x0},
 	853:  {region: 0x164, script: 0x52, flags: 0x0},
-	854:  {region: 0x94, script: 0x52, flags: 0x0},
-	855:  {region: 0x164, script: 0x52, flags: 0x0},
-	856:  {region: 0xde, script: 0x52, flags: 0x0},
-	857:  {region: 0x164, script: 0x52, flags: 0x0},
-	858:  {region: 0x164, script: 0x52, flags: 0x0},
-	859:  {region: 0x98, script: 0x52, flags: 0x0},
+	854:  {region: 0x164, script: 0x52, flags: 0x0},
+	855:  {region: 0xd0, script: 0x52, flags: 0x0},
+	856:  {region: 0x164, script: 0x52, flags: 0x0},
+	857:  {region: 0xce, script: 0x52, flags: 0x0},
+	858:  {region: 0xce, script: 0x52, flags: 0x0},
+	859:  {region: 0x164, script: 0x52, flags: 0x0},
 	860:  {region: 0x164, script: 0x52, flags: 0x0},
-	861:  {region: 0x164, script: 0x52, flags: 0x0},
-	862:  {region: 0xd8, script: 0x52, flags: 0x0},
-	863:  {region: 0x51, script: 0x52, flags: 0x0},
+	861:  {region: 0x94, script: 0x52, flags: 0x0},
+	862:  {region: 0x164, script: 0x52, flags: 0x0},
+	863:  {region: 0xde, script: 0x52, flags: 0x0},
 	864:  {region: 0x164, script: 0x52, flags: 0x0},
-	865:  {region: 0xd9, script: 0x52, flags: 0x0},
-	866:  {region: 0x164, script: 0x52, flags: 0x0},
-	867:  {region: 0x51, script: 0x52, flags: 0x0},
+	865:  {region: 0x164, script: 0x52, flags: 0x0},
+	866:  {region: 0x98, script: 0x52, flags: 0x0},
+	867:  {region: 0x164, script: 0x52, flags: 0x0},
 	868:  {region: 0x164, script: 0x52, flags: 0x0},
-	869:  {region: 0x164, script: 0x52, flags: 0x0},
-	870:  {region: 0xd9, script: 0x52, flags: 0x0},
-	871:  {region: 0x122, script: 0x4e, flags: 0x0},
-	872:  {region: 0x98, script: 0x20, flags: 0x0},
-	873:  {region: 0x10b, script: 0xb7, flags: 0x0},
-	874:  {region: 0x164, script: 0x52, flags: 0x0},
+	869:  {region: 0xd8, script: 0x52, flags: 0x0},
+	870:  {region: 0x51, script: 0x52, flags: 0x0},
+	871:  {region: 0x164, script: 0x52, flags: 0x0},
+	872:  {region: 0xd9, script: 0x52, flags: 0x0},
+	873:  {region: 0x164, script: 0x52, flags: 0x0},
+	874:  {region: 0x51, script: 0x52, flags: 0x0},
 	875:  {region: 0x164, script: 0x52, flags: 0x0},
-	876:  {region: 0x83, script: 0x70, flags: 0x0},
-	877:  {region: 0x160, script: 0x52, flags: 0x0},
-	878:  {region: 0x164, script: 0x52, flags: 0x0},
-	879:  {region: 0x48, script: 0x17, flags: 0x0},
-	880:  {region: 0x164, script: 0x52, flags: 0x0},
-	881:  {region: 0x160, script: 0x52, flags: 0x0},
+	876:  {region: 0x164, script: 0x52, flags: 0x0},
+	877:  {region: 0xd9, script: 0x52, flags: 0x0},
+	878:  {region: 0x122, script: 0x4e, flags: 0x0},
+	879:  {region: 0x98, script: 0x20, flags: 0x0},
+	880:  {region: 0x10b, script: 0xb7, flags: 0x0},
+	881:  {region: 0x164, script: 0x52, flags: 0x0},
 	882:  {region: 0x164, script: 0x52, flags: 0x0},
-	883:  {region: 0x164, script: 0x52, flags: 0x0},
-	884:  {region: 0x164, script: 0x52, flags: 0x0},
+	883:  {region: 0x83, script: 0x70, flags: 0x0},
+	884:  {region: 0x160, script: 0x52, flags: 0x0},
 	885:  {region: 0x164, script: 0x52, flags: 0x0},
-	886:  {region: 0x164, script: 0x52, flags: 0x0},
-	887:  {region: 0x116, script: 0x52, flags: 0x0},
-	888:  {region: 0x164, script: 0x52, flags: 0x0},
+	886:  {region: 0x48, script: 0x17, flags: 0x0},
+	887:  {region: 0x164, script: 0x52, flags: 0x0},
+	888:  {region: 0x160, script: 0x52, flags: 0x0},
 	889:  {region: 0x164, script: 0x52, flags: 0x0},
-	890:  {region: 0x134, script: 0x52, flags: 0x0},
+	890:  {region: 0x164, script: 0x52, flags: 0x0},
 	891:  {region: 0x164, script: 0x52, flags: 0x0},
-	892:  {region: 0x52, script: 0x52, flags: 0x0},
+	892:  {region: 0x164, script: 0x52, flags: 0x0},
 	893:  {region: 0x164, script: 0x52, flags: 0x0},
-	894:  {region: 0xcd, script: 0x52, flags: 0x0},
-	895:  {region: 0x12e, script: 0x52, flags: 0x0},
-	896:  {region: 0x130, script: 0x52, flags: 0x0},
-	897:  {region: 0x7f, script: 0x52, flags: 0x0},
-	898:  {region: 0x77, script: 0x52, flags: 0x0},
-	899:  {region: 0x164, script: 0x52, flags: 0x0},
-	901:  {region: 0x164, script: 0x52, flags: 0x0},
-	902:  {region: 0x164, script: 0x52, flags: 0x0},
-	903:  {region: 0x6e, script: 0x52, flags: 0x0},
-	904:  {region: 0x164, script: 0x52, flags: 0x0},
-	905:  {region: 0x164, script: 0x52, flags: 0x0},
+	894:  {region: 0x116, script: 0x52, flags: 0x0},
+	895:  {region: 0x164, script: 0x52, flags: 0x0},
+	896:  {region: 0x164, script: 0x52, flags: 0x0},
+	897:  {region: 0x134, script: 0x52, flags: 0x0},
+	898:  {region: 0x164, script: 0x52, flags: 0x0},
+	899:  {region: 0x52, script: 0x52, flags: 0x0},
+	900:  {region: 0x164, script: 0x52, flags: 0x0},
+	901:  {region: 0xcd, script: 0x52, flags: 0x0},
+	902:  {region: 0x12e, script: 0x52, flags: 0x0},
+	903:  {region: 0x130, script: 0x52, flags: 0x0},
+	904:  {region: 0x7f, script: 0x52, flags: 0x0},
+	905:  {region: 0x77, script: 0x52, flags: 0x0},
 	906:  {region: 0x164, script: 0x52, flags: 0x0},
-	907:  {region: 0x164, script: 0x52, flags: 0x0},
-	908:  {region: 0x98, script: 0x75, flags: 0x0},
+	908:  {region: 0x164, script: 0x52, flags: 0x0},
 	909:  {region: 0x164, script: 0x52, flags: 0x0},
-	910:  {region: 0x164, script: 0x5, flags: 0x0},
-	911:  {region: 0x7c, script: 0x1e, flags: 0x0},
-	912:  {region: 0x134, script: 0x76, flags: 0x0},
-	913:  {region: 0x164, script: 0x5, flags: 0x0},
-	914:  {region: 0xc4, script: 0x74, flags: 0x0},
-	915:  {region: 0x164, script: 0x52, flags: 0x0},
-	916:  {region: 0x2e, script: 0x3, flags: 0x1},
-	917:  {region: 0xe6, script: 0x52, flags: 0x0},
-	918:  {region: 0x31, script: 0x2, flags: 0x1},
-	919:  {region: 0xe6, script: 0x52, flags: 0x0},
-	920:  {region: 0x2f, script: 0x52, flags: 0x0},
-	921:  {region: 0xef, script: 0x52, flags: 0x0},
+	910:  {region: 0x6e, script: 0x52, flags: 0x0},
+	911:  {region: 0x164, script: 0x52, flags: 0x0},
+	912:  {region: 0x164, script: 0x52, flags: 0x0},
+	913:  {region: 0x164, script: 0x52, flags: 0x0},
+	914:  {region: 0x164, script: 0x52, flags: 0x0},
+	915:  {region: 0x98, script: 0x75, flags: 0x0},
+	916:  {region: 0x164, script: 0x52, flags: 0x0},
+	917:  {region: 0x164, script: 0x5, flags: 0x0},
+	918:  {region: 0x7c, script: 0x1e, flags: 0x0},
+	919:  {region: 0x134, script: 0x76, flags: 0x0},
+	920:  {region: 0x164, script: 0x5, flags: 0x0},
+	921:  {region: 0xc4, script: 0x74, flags: 0x0},
 	922:  {region: 0x164, script: 0x52, flags: 0x0},
-	923:  {region: 0x77, script: 0x52, flags: 0x0},
-	924:  {region: 0xd5, script: 0x52, flags: 0x0},
-	925:  {region: 0x134, script: 0x52, flags: 0x0},
-	926:  {region: 0x48, script: 0x52, flags: 0x0},
-	927:  {region: 0x164, script: 0x52, flags: 0x0},
-	928:  {region: 0x9b, script: 0xdd, flags: 0x0},
+	923:  {region: 0x2c, script: 0x3, flags: 0x1},
+	924:  {region: 0xe6, script: 0x52, flags: 0x0},
+	925:  {region: 0x2f, script: 0x2, flags: 0x1},
+	926:  {region: 0xe6, script: 0x52, flags: 0x0},
+	927:  {region: 0x2f, script: 0x52, flags: 0x0},
+	928:  {region: 0xef, script: 0x52, flags: 0x0},
 	929:  {region: 0x164, script: 0x52, flags: 0x0},
-	930:  {region: 0x5f, script: 0x52, flags: 0x0},
-	931:  {region: 0x164, script: 0x5, flags: 0x0},
-	932:  {region: 0xaf, script: 0x7f, flags: 0x0},
+	930:  {region: 0x77, script: 0x52, flags: 0x0},
+	931:  {region: 0xd5, script: 0x52, flags: 0x0},
+	932:  {region: 0x134, script: 0x52, flags: 0x0},
+	933:  {region: 0x48, script: 0x52, flags: 0x0},
 	934:  {region: 0x164, script: 0x52, flags: 0x0},
-	935:  {region: 0x164, script: 0x52, flags: 0x0},
-	936:  {region: 0x98, script: 0x12, flags: 0x0},
-	937:  {region: 0xa3, script: 0x52, flags: 0x0},
-	938:  {region: 0xe8, script: 0x52, flags: 0x0},
-	939:  {region: 0x164, script: 0x52, flags: 0x0},
-	940:  {region: 0x9d, script: 0x52, flags: 0x0},
+	935:  {region: 0x9b, script: 0xdd, flags: 0x0},
+	936:  {region: 0x164, script: 0x52, flags: 0x0},
+	937:  {region: 0x5f, script: 0x52, flags: 0x0},
+	938:  {region: 0x164, script: 0x5, flags: 0x0},
+	939:  {region: 0xaf, script: 0x7f, flags: 0x0},
 	941:  {region: 0x164, script: 0x52, flags: 0x0},
 	942:  {region: 0x164, script: 0x52, flags: 0x0},
-	943:  {region: 0x86, script: 0x2d, flags: 0x0},
-	944:  {region: 0x74, script: 0x52, flags: 0x0},
-	945:  {region: 0x164, script: 0x52, flags: 0x0},
-	946:  {region: 0xe7, script: 0x45, flags: 0x0},
-	947:  {region: 0x9b, script: 0x5, flags: 0x0},
-	948:  {region: 0x1, script: 0x52, flags: 0x0},
-	949:  {region: 0x23, script: 0x5, flags: 0x0},
-	950:  {region: 0x164, script: 0x52, flags: 0x0},
-	951:  {region: 0x40, script: 0x52, flags: 0x0},
+	943:  {region: 0x98, script: 0x12, flags: 0x0},
+	944:  {region: 0xa3, script: 0x52, flags: 0x0},
+	945:  {region: 0xe8, script: 0x52, flags: 0x0},
+	946:  {region: 0x164, script: 0x52, flags: 0x0},
+	947:  {region: 0x9d, script: 0x52, flags: 0x0},
+	948:  {region: 0x164, script: 0x52, flags: 0x0},
+	949:  {region: 0x164, script: 0x52, flags: 0x0},
+	950:  {region: 0x86, script: 0x2d, flags: 0x0},
+	951:  {region: 0x74, script: 0x52, flags: 0x0},
 	952:  {region: 0x164, script: 0x52, flags: 0x0},
-	953:  {region: 0x79, script: 0x52, flags: 0x0},
-	954:  {region: 0x164, script: 0x52, flags: 0x0},
-	955:  {region: 0xe3, script: 0x52, flags: 0x0},
-	956:  {region: 0x88, script: 0x52, flags: 0x0},
-	957:  {region: 0x68, script: 0x52, flags: 0x0},
-	958:  {region: 0x164, script: 0x52, flags: 0x0},
-	959:  {region: 0x98, script: 0x20, flags: 0x0},
-	960:  {region: 0x164, script: 0x52, flags: 0x0},
-	961:  {region: 0x101, script: 0x52, flags: 0x0},
-	962:  {region: 0x94, script: 0x52, flags: 0x0},
-	963:  {region: 0x164, script: 0x52, flags: 0x0},
-	964:  {region: 0x164, script: 0x52, flags: 0x0},
-	965:  {region: 0x9d, script: 0x52, flags: 0x0},
-	966:  {region: 0x164, script: 0x5, flags: 0x0},
-	967:  {region: 0x98, script: 0x52, flags: 0x0},
-	968:  {region: 0x33, script: 0x2, flags: 0x1},
-	969:  {region: 0xda, script: 0x20, flags: 0x0},
-	970:  {region: 0x34, script: 0xe, flags: 0x0},
-	971:  {region: 0x4d, script: 0x52, flags: 0x0},
-	972:  {region: 0x71, script: 0x52, flags: 0x0},
-	973:  {region: 0x4d, script: 0x52, flags: 0x0},
-	974:  {region: 0x9b, script: 0x5, flags: 0x0},
-	975:  {region: 0x10b, script: 0x52, flags: 0x0},
-	976:  {region: 0x39, script: 0x52, flags: 0x0},
-	977:  {region: 0x164, script: 0x52, flags: 0x0},
-	978:  {region: 0xd0, script: 0x52, flags: 0x0},
-	979:  {region: 0x103, script: 0x52, flags: 0x0},
-	980:  {region: 0x94, script: 0x52, flags: 0x0},
-	981:  {region: 0x12e, script: 0x52, flags: 0x0},
-	982:  {region: 0x164, script: 0x52, flags: 0x0},
-	983:  {region: 0x164, script: 0x52, flags: 0x0},
-	984:  {region: 0x72, script: 0x52, flags: 0x0},
-	985:  {region: 0x105, script: 0x1e, flags: 0x0},
-	986:  {region: 0x12f, script: 0x1e, flags: 0x0},
-	987:  {region: 0x108, script: 0x52, flags: 0x0},
-	988:  {region: 0x106, script: 0x52, flags: 0x0},
-	989:  {region: 0x12e, script: 0x52, flags: 0x0},
+	953:  {region: 0xe7, script: 0x45, flags: 0x0},
+	954:  {region: 0x9b, script: 0x5, flags: 0x0},
+	955:  {region: 0x1, script: 0x52, flags: 0x0},
+	956:  {region: 0x23, script: 0x5, flags: 0x0},
+	957:  {region: 0x164, script: 0x52, flags: 0x0},
+	958:  {region: 0x40, script: 0x52, flags: 0x0},
+	959:  {region: 0x164, script: 0x52, flags: 0x0},
+	960:  {region: 0x79, script: 0x52, flags: 0x0},
+	961:  {region: 0x164, script: 0x52, flags: 0x0},
+	962:  {region: 0xe3, script: 0x52, flags: 0x0},
+	963:  {region: 0x88, script: 0x52, flags: 0x0},
+	964:  {region: 0x68, script: 0x52, flags: 0x0},
+	965:  {region: 0x164, script: 0x52, flags: 0x0},
+	966:  {region: 0x98, script: 0x20, flags: 0x0},
+	967:  {region: 0x164, script: 0x52, flags: 0x0},
+	968:  {region: 0x101, script: 0x52, flags: 0x0},
+	969:  {region: 0x94, script: 0x52, flags: 0x0},
+	970:  {region: 0x164, script: 0x52, flags: 0x0},
+	971:  {region: 0x164, script: 0x52, flags: 0x0},
+	972:  {region: 0x9d, script: 0x52, flags: 0x0},
+	973:  {region: 0x164, script: 0x5, flags: 0x0},
+	974:  {region: 0x98, script: 0x52, flags: 0x0},
+	975:  {region: 0x31, script: 0x2, flags: 0x1},
+	976:  {region: 0xda, script: 0x20, flags: 0x0},
+	977:  {region: 0x34, script: 0xe, flags: 0x0},
+	978:  {region: 0x4d, script: 0x52, flags: 0x0},
+	979:  {region: 0x71, script: 0x52, flags: 0x0},
+	980:  {region: 0x4d, script: 0x52, flags: 0x0},
+	981:  {region: 0x9b, script: 0x5, flags: 0x0},
+	982:  {region: 0x10b, script: 0x52, flags: 0x0},
+	983:  {region: 0x39, script: 0x52, flags: 0x0},
+	984:  {region: 0x164, script: 0x52, flags: 0x0},
+	985:  {region: 0xd0, script: 0x52, flags: 0x0},
+	986:  {region: 0x103, script: 0x52, flags: 0x0},
+	987:  {region: 0x94, script: 0x52, flags: 0x0},
+	988:  {region: 0x12e, script: 0x52, flags: 0x0},
+	989:  {region: 0x164, script: 0x52, flags: 0x0},
 	990:  {region: 0x164, script: 0x52, flags: 0x0},
-	991:  {region: 0xa1, script: 0x44, flags: 0x0},
-	992:  {region: 0x98, script: 0x20, flags: 0x0},
-	993:  {region: 0x7f, script: 0x52, flags: 0x0},
-	994:  {region: 0x105, script: 0x1e, flags: 0x0},
-	995:  {region: 0xa3, script: 0x52, flags: 0x0},
-	996:  {region: 0x94, script: 0x52, flags: 0x0},
-	997:  {region: 0x98, script: 0x52, flags: 0x0},
-	998:  {region: 0x98, script: 0xbb, flags: 0x0},
-	999:  {region: 0x164, script: 0x52, flags: 0x0},
-	1000: {region: 0x164, script: 0x52, flags: 0x0},
-	1001: {region: 0x12e, script: 0x52, flags: 0x0},
-	1002: {region: 0x9d, script: 0x52, flags: 0x0},
-	1003: {region: 0x98, script: 0x20, flags: 0x0},
-	1004: {region: 0x164, script: 0x5, flags: 0x0},
-	1005: {region: 0x9d, script: 0x52, flags: 0x0},
-	1006: {region: 0x7a, script: 0x52, flags: 0x0},
-	1007: {region: 0x48, script: 0x52, flags: 0x0},
-	1008: {region: 0x35, script: 0x4, flags: 0x1},
-	1009: {region: 0x9d, script: 0x52, flags: 0x0},
-	1010: {region: 0x9b, script: 0x5, flags: 0x0},
-	1011: {region: 0xd9, script: 0x52, flags: 0x0},
-	1012: {region: 0x4e, script: 0x52, flags: 0x0},
-	1013: {region: 0xd0, script: 0x52, flags: 0x0},
-	1014: {region: 0xce, script: 0x52, flags: 0x0},
-	1015: {region: 0xc2, script: 0x52, flags: 0x0},
-	1016: {region: 0x4b, script: 0x52, flags: 0x0},
-	1017: {region: 0x95, script: 0x72, flags: 0x0},
-	1018: {region: 0xb5, script: 0x52, flags: 0x0},
-	1019: {region: 0x164, script: 0x27, flags: 0x0},
-	1020: {region: 0x164, script: 0x52, flags: 0x0},
-	1022: {region: 0xb9, script: 0xd2, flags: 0x0},
-	1023: {region: 0x164, script: 0x52, flags: 0x0},
-	1024: {region: 0xc3, script: 0x6b, flags: 0x0},
-	1025: {region: 0x164, script: 0x5, flags: 0x0},
-	1026: {region: 0xb2, script: 0xc1, flags: 0x0},
-	1027: {region: 0x6e, script: 0x52, flags: 0x0},
+	991:  {region: 0x72, script: 0x52, flags: 0x0},
+	992:  {region: 0x105, script: 0x1e, flags: 0x0},
+	993:  {region: 0x12f, script: 0x1e, flags: 0x0},
+	994:  {region: 0x108, script: 0x52, flags: 0x0},
+	995:  {region: 0x106, script: 0x52, flags: 0x0},
+	996:  {region: 0x12e, script: 0x52, flags: 0x0},
+	997:  {region: 0x164, script: 0x52, flags: 0x0},
+	998:  {region: 0xa1, script: 0x44, flags: 0x0},
+	999:  {region: 0x98, script: 0x20, flags: 0x0},
+	1000: {region: 0x7f, script: 0x52, flags: 0x0},
+	1001: {region: 0x105, script: 0x1e, flags: 0x0},
+	1002: {region: 0xa3, script: 0x52, flags: 0x0},
+	1003: {region: 0x94, script: 0x52, flags: 0x0},
+	1004: {region: 0x98, script: 0x52, flags: 0x0},
+	1005: {region: 0x113, script: 0x52, flags: 0x0},
+	1006: {region: 0x98, script: 0xbb, flags: 0x0},
+	1007: {region: 0x164, script: 0x52, flags: 0x0},
+	1008: {region: 0x164, script: 0x52, flags: 0x0},
+	1009: {region: 0x12e, script: 0x52, flags: 0x0},
+	1010: {region: 0x9d, script: 0x52, flags: 0x0},
+	1011: {region: 0x98, script: 0x20, flags: 0x0},
+	1012: {region: 0x164, script: 0x5, flags: 0x0},
+	1013: {region: 0x9d, script: 0x52, flags: 0x0},
+	1014: {region: 0x7a, script: 0x52, flags: 0x0},
+	1015: {region: 0x48, script: 0x52, flags: 0x0},
+	1016: {region: 0x33, script: 0x4, flags: 0x1},
+	1017: {region: 0x9d, script: 0x52, flags: 0x0},
+	1018: {region: 0x9b, script: 0x5, flags: 0x0},
+	1019: {region: 0xd9, script: 0x52, flags: 0x0},
+	1020: {region: 0x4e, script: 0x52, flags: 0x0},
+	1021: {region: 0xd0, script: 0x52, flags: 0x0},
+	1022: {region: 0xce, script: 0x52, flags: 0x0},
+	1023: {region: 0xc2, script: 0x52, flags: 0x0},
+	1024: {region: 0x4b, script: 0x52, flags: 0x0},
+	1025: {region: 0x95, script: 0x72, flags: 0x0},
+	1026: {region: 0xb5, script: 0x52, flags: 0x0},
+	1027: {region: 0x164, script: 0x27, flags: 0x0},
 	1028: {region: 0x164, script: 0x52, flags: 0x0},
-	1029: {region: 0x164, script: 0x52, flags: 0x0},
-	1030: {region: 0x164, script: 0x52, flags: 0x0},
+	1030: {region: 0xb9, script: 0xd2, flags: 0x0},
 	1031: {region: 0x164, script: 0x52, flags: 0x0},
-	1032: {region: 0x110, script: 0x52, flags: 0x0},
-	1033: {region: 0x164, script: 0x52, flags: 0x0},
-	1034: {region: 0xe7, script: 0x5, flags: 0x0},
-	1035: {region: 0x164, script: 0x52, flags: 0x0},
-	1036: {region: 0x10e, script: 0x52, flags: 0x0},
+	1032: {region: 0xc3, script: 0x6b, flags: 0x0},
+	1033: {region: 0x164, script: 0x5, flags: 0x0},
+	1034: {region: 0xb2, script: 0xc1, flags: 0x0},
+	1035: {region: 0x6e, script: 0x52, flags: 0x0},
+	1036: {region: 0x164, script: 0x52, flags: 0x0},
 	1037: {region: 0x164, script: 0x52, flags: 0x0},
-	1038: {region: 0xe8, script: 0x52, flags: 0x0},
+	1038: {region: 0x164, script: 0x52, flags: 0x0},
 	1039: {region: 0x164, script: 0x52, flags: 0x0},
-	1040: {region: 0x94, script: 0x52, flags: 0x0},
-	1041: {region: 0x141, script: 0x52, flags: 0x0},
-	1042: {region: 0x10b, script: 0x52, flags: 0x0},
-	1044: {region: 0x10b, script: 0x52, flags: 0x0},
-	1045: {region: 0x71, script: 0x52, flags: 0x0},
-	1046: {region: 0x96, script: 0xb8, flags: 0x0},
+	1040: {region: 0x110, script: 0x52, flags: 0x0},
+	1041: {region: 0x164, script: 0x52, flags: 0x0},
+	1042: {region: 0xe7, script: 0x5, flags: 0x0},
+	1043: {region: 0x164, script: 0x52, flags: 0x0},
+	1044: {region: 0x10e, script: 0x52, flags: 0x0},
+	1045: {region: 0x164, script: 0x52, flags: 0x0},
+	1046: {region: 0xe8, script: 0x52, flags: 0x0},
 	1047: {region: 0x164, script: 0x52, flags: 0x0},
-	1048: {region: 0x71, script: 0x52, flags: 0x0},
-	1049: {region: 0x163, script: 0x52, flags: 0x0},
-	1050: {region: 0x164, script: 0x52, flags: 0x0},
-	1051: {region: 0xc2, script: 0x52, flags: 0x0},
-	1052: {region: 0x164, script: 0x52, flags: 0x0},
-	1053: {region: 0x164, script: 0x52, flags: 0x0},
-	1054: {region: 0x164, script: 0x52, flags: 0x0},
-	1055: {region: 0x114, script: 0x52, flags: 0x0},
-	1056: {region: 0x164, script: 0x52, flags: 0x0},
-	1057: {region: 0x164, script: 0x52, flags: 0x0},
-	1058: {region: 0x122, script: 0xd5, flags: 0x0},
-	1059: {region: 0x164, script: 0x52, flags: 0x0},
+	1048: {region: 0x94, script: 0x52, flags: 0x0},
+	1049: {region: 0x141, script: 0x52, flags: 0x0},
+	1050: {region: 0x10b, script: 0x52, flags: 0x0},
+	1052: {region: 0x10b, script: 0x52, flags: 0x0},
+	1053: {region: 0x71, script: 0x52, flags: 0x0},
+	1054: {region: 0x96, script: 0xb8, flags: 0x0},
+	1055: {region: 0x164, script: 0x52, flags: 0x0},
+	1056: {region: 0x71, script: 0x52, flags: 0x0},
+	1057: {region: 0x163, script: 0x52, flags: 0x0},
+	1058: {region: 0x164, script: 0x52, flags: 0x0},
+	1059: {region: 0xc2, script: 0x52, flags: 0x0},
 	1060: {region: 0x164, script: 0x52, flags: 0x0},
 	1061: {region: 0x164, script: 0x52, flags: 0x0},
 	1062: {region: 0x164, script: 0x52, flags: 0x0},
-	1063: {region: 0x26, script: 0x52, flags: 0x0},
-	1064: {region: 0x39, script: 0x5, flags: 0x1},
-	1065: {region: 0x98, script: 0xc2, flags: 0x0},
-	1066: {region: 0x115, script: 0x52, flags: 0x0},
-	1067: {region: 0x113, script: 0x52, flags: 0x0},
-	1068: {region: 0x98, script: 0x20, flags: 0x0},
-	1069: {region: 0x160, script: 0x52, flags: 0x0},
+	1063: {region: 0x114, script: 0x52, flags: 0x0},
+	1064: {region: 0x164, script: 0x52, flags: 0x0},
+	1065: {region: 0x164, script: 0x52, flags: 0x0},
+	1066: {region: 0x122, script: 0xd5, flags: 0x0},
+	1067: {region: 0x164, script: 0x52, flags: 0x0},
+	1068: {region: 0x164, script: 0x52, flags: 0x0},
+	1069: {region: 0x164, script: 0x52, flags: 0x0},
 	1070: {region: 0x164, script: 0x52, flags: 0x0},
-	1071: {region: 0x164, script: 0x52, flags: 0x0},
-	1072: {region: 0x6c, script: 0x52, flags: 0x0},
-	1073: {region: 0x160, script: 0x52, flags: 0x0},
-	1074: {region: 0x164, script: 0x52, flags: 0x0},
-	1075: {region: 0x5f, script: 0x52, flags: 0x0},
-	1076: {region: 0x94, script: 0x52, flags: 0x0},
-	1077: {region: 0x164, script: 0x52, flags: 0x0},
+	1071: {region: 0x26, script: 0x52, flags: 0x0},
+	1072: {region: 0x37, script: 0x5, flags: 0x1},
+	1073: {region: 0x98, script: 0xc2, flags: 0x0},
+	1074: {region: 0x115, script: 0x52, flags: 0x0},
+	1075: {region: 0x113, script: 0x52, flags: 0x0},
+	1076: {region: 0x98, script: 0x20, flags: 0x0},
+	1077: {region: 0x160, script: 0x52, flags: 0x0},
 	1078: {region: 0x164, script: 0x52, flags: 0x0},
-	1079: {region: 0x12e, script: 0x52, flags: 0x0},
-	1080: {region: 0x164, script: 0x52, flags: 0x0},
-	1081: {region: 0x83, script: 0x52, flags: 0x0},
-	1082: {region: 0x10b, script: 0x52, flags: 0x0},
-	1083: {region: 0x12e, script: 0x52, flags: 0x0},
-	1084: {region: 0x15e, script: 0x5, flags: 0x0},
-	1085: {region: 0x4a, script: 0x52, flags: 0x0},
-	1086: {region: 0x5f, script: 0x52, flags: 0x0},
-	1087: {region: 0x164, script: 0x52, flags: 0x0},
-	1088: {region: 0x98, script: 0x20, flags: 0x0},
-	1089: {region: 0x94, script: 0x52, flags: 0x0},
-	1090: {region: 0x164, script: 0x52, flags: 0x0},
-	1091: {region: 0x34, script: 0xe, flags: 0x0},
-	1092: {region: 0x9a, script: 0xc5, flags: 0x0},
-	1093: {region: 0xe8, script: 0x52, flags: 0x0},
-	1094: {region: 0x98, script: 0xcd, flags: 0x0},
-	1095: {region: 0xda, script: 0x20, flags: 0x0},
-	1096: {region: 0x164, script: 0x52, flags: 0x0},
-	1097: {region: 0x164, script: 0x52, flags: 0x0},
+	1079: {region: 0x164, script: 0x52, flags: 0x0},
+	1080: {region: 0x6c, script: 0x52, flags: 0x0},
+	1081: {region: 0x160, script: 0x52, flags: 0x0},
+	1082: {region: 0x164, script: 0x52, flags: 0x0},
+	1083: {region: 0x5f, script: 0x52, flags: 0x0},
+	1084: {region: 0x94, script: 0x52, flags: 0x0},
+	1085: {region: 0x164, script: 0x52, flags: 0x0},
+	1086: {region: 0x164, script: 0x52, flags: 0x0},
+	1087: {region: 0x12e, script: 0x52, flags: 0x0},
+	1088: {region: 0x164, script: 0x52, flags: 0x0},
+	1089: {region: 0x83, script: 0x52, flags: 0x0},
+	1090: {region: 0x10b, script: 0x52, flags: 0x0},
+	1091: {region: 0x12e, script: 0x52, flags: 0x0},
+	1092: {region: 0x15e, script: 0x5, flags: 0x0},
+	1093: {region: 0x4a, script: 0x52, flags: 0x0},
+	1094: {region: 0x5f, script: 0x52, flags: 0x0},
+	1095: {region: 0x164, script: 0x52, flags: 0x0},
+	1096: {region: 0x98, script: 0x20, flags: 0x0},
+	1097: {region: 0x94, script: 0x52, flags: 0x0},
 	1098: {region: 0x164, script: 0x52, flags: 0x0},
-	1099: {region: 0x164, script: 0x52, flags: 0x0},
-	1100: {region: 0x164, script: 0x52, flags: 0x0},
-	1101: {region: 0x164, script: 0x52, flags: 0x0},
-	1102: {region: 0x164, script: 0x52, flags: 0x0},
-	1103: {region: 0x164, script: 0x52, flags: 0x0},
-	1104: {region: 0xe6, script: 0x52, flags: 0x0},
+	1099: {region: 0x34, script: 0xe, flags: 0x0},
+	1100: {region: 0x9a, script: 0xc5, flags: 0x0},
+	1101: {region: 0xe8, script: 0x52, flags: 0x0},
+	1102: {region: 0x98, script: 0xcd, flags: 0x0},
+	1103: {region: 0xda, script: 0x20, flags: 0x0},
+	1104: {region: 0x164, script: 0x52, flags: 0x0},
 	1105: {region: 0x164, script: 0x52, flags: 0x0},
 	1106: {region: 0x164, script: 0x52, flags: 0x0},
-	1107: {region: 0x98, script: 0x4a, flags: 0x0},
-	1108: {region: 0x52, script: 0xcb, flags: 0x0},
-	1109: {region: 0xda, script: 0x20, flags: 0x0},
-	1110: {region: 0xda, script: 0x20, flags: 0x0},
-	1111: {region: 0x98, script: 0xd0, flags: 0x0},
-	1112: {region: 0x164, script: 0x52, flags: 0x0},
-	1113: {region: 0x111, script: 0x52, flags: 0x0},
-	1114: {region: 0x130, script: 0x52, flags: 0x0},
-	1115: {region: 0x125, script: 0x52, flags: 0x0},
-	1116: {region: 0x164, script: 0x52, flags: 0x0},
-	1117: {region: 0x3e, script: 0x3, flags: 0x1},
-	1118: {region: 0x164, script: 0x52, flags: 0x0},
-	1119: {region: 0x164, script: 0x52, flags: 0x0},
+	1107: {region: 0x164, script: 0x52, flags: 0x0},
+	1108: {region: 0x164, script: 0x52, flags: 0x0},
+	1109: {region: 0x164, script: 0x52, flags: 0x0},
+	1110: {region: 0x164, script: 0x52, flags: 0x0},
+	1111: {region: 0x164, script: 0x52, flags: 0x0},
+	1112: {region: 0xe6, script: 0x52, flags: 0x0},
+	1113: {region: 0x164, script: 0x52, flags: 0x0},
+	1114: {region: 0x164, script: 0x52, flags: 0x0},
+	1115: {region: 0x98, script: 0x4a, flags: 0x0},
+	1116: {region: 0x52, script: 0xcb, flags: 0x0},
+	1117: {region: 0xda, script: 0x20, flags: 0x0},
+	1118: {region: 0xda, script: 0x20, flags: 0x0},
+	1119: {region: 0x98, script: 0xd0, flags: 0x0},
 	1120: {region: 0x164, script: 0x52, flags: 0x0},
-	1121: {region: 0x122, script: 0xd5, flags: 0x0},
-	1122: {region: 0xda, script: 0x20, flags: 0x0},
-	1123: {region: 0xda, script: 0x20, flags: 0x0},
-	1124: {region: 0xda, script: 0x20, flags: 0x0},
-	1125: {region: 0x6e, script: 0x27, flags: 0x0},
+	1121: {region: 0x111, script: 0x52, flags: 0x0},
+	1122: {region: 0x130, script: 0x52, flags: 0x0},
+	1123: {region: 0x125, script: 0x52, flags: 0x0},
+	1124: {region: 0x164, script: 0x52, flags: 0x0},
+	1125: {region: 0x3c, script: 0x3, flags: 0x1},
 	1126: {region: 0x164, script: 0x52, flags: 0x0},
-	1127: {region: 0x6c, script: 0x27, flags: 0x0},
+	1127: {region: 0x164, script: 0x52, flags: 0x0},
 	1128: {region: 0x164, script: 0x52, flags: 0x0},
-	1129: {region: 0x164, script: 0x52, flags: 0x0},
-	1130: {region: 0x164, script: 0x52, flags: 0x0},
-	1131: {region: 0xd5, script: 0x52, flags: 0x0},
-	1132: {region: 0x126, script: 0x52, flags: 0x0},
-	1133: {region: 0x124, script: 0x52, flags: 0x0},
-	1134: {region: 0x31, script: 0x52, flags: 0x0},
-	1135: {region: 0xda, script: 0x20, flags: 0x0},
-	1136: {region: 0xe6, script: 0x52, flags: 0x0},
+	1129: {region: 0x122, script: 0xd5, flags: 0x0},
+	1130: {region: 0xda, script: 0x20, flags: 0x0},
+	1131: {region: 0xda, script: 0x20, flags: 0x0},
+	1132: {region: 0xda, script: 0x20, flags: 0x0},
+	1133: {region: 0x6e, script: 0x27, flags: 0x0},
+	1134: {region: 0x164, script: 0x52, flags: 0x0},
+	1135: {region: 0x6c, script: 0x27, flags: 0x0},
+	1136: {region: 0x164, script: 0x52, flags: 0x0},
 	1137: {region: 0x164, script: 0x52, flags: 0x0},
 	1138: {region: 0x164, script: 0x52, flags: 0x0},
-	1139: {region: 0x31, script: 0x52, flags: 0x0},
-	1140: {region: 0xd3, script: 0x52, flags: 0x0},
-	1141: {region: 0x164, script: 0x52, flags: 0x0},
-	1142: {region: 0x160, script: 0x52, flags: 0x0},
-	1143: {region: 0x164, script: 0x52, flags: 0x0},
-	1144: {region: 0x128, script: 0x52, flags: 0x0},
+	1139: {region: 0xd5, script: 0x52, flags: 0x0},
+	1140: {region: 0x126, script: 0x52, flags: 0x0},
+	1141: {region: 0x124, script: 0x52, flags: 0x0},
+	1142: {region: 0x31, script: 0x52, flags: 0x0},
+	1143: {region: 0xda, script: 0x20, flags: 0x0},
+	1144: {region: 0xe6, script: 0x52, flags: 0x0},
 	1145: {region: 0x164, script: 0x52, flags: 0x0},
-	1146: {region: 0xcd, script: 0x52, flags: 0x0},
-	1147: {region: 0x164, script: 0x52, flags: 0x0},
-	1148: {region: 0xe5, script: 0x52, flags: 0x0},
+	1146: {region: 0x164, script: 0x52, flags: 0x0},
+	1147: {region: 0x31, script: 0x52, flags: 0x0},
+	1148: {region: 0xd3, script: 0x52, flags: 0x0},
 	1149: {region: 0x164, script: 0x52, flags: 0x0},
-	1150: {region: 0x164, script: 0x52, flags: 0x0},
+	1150: {region: 0x160, script: 0x52, flags: 0x0},
 	1151: {region: 0x164, script: 0x52, flags: 0x0},
-	1152: {region: 0x12a, script: 0x52, flags: 0x0},
-	1153: {region: 0x12a, script: 0x52, flags: 0x0},
-	1154: {region: 0x12d, script: 0x52, flags: 0x0},
-	1155: {region: 0x164, script: 0x5, flags: 0x0},
-	1156: {region: 0x160, script: 0x52, flags: 0x0},
-	1157: {region: 0x86, script: 0x2d, flags: 0x0},
-	1158: {region: 0xda, script: 0x20, flags: 0x0},
-	1159: {region: 0xe6, script: 0x52, flags: 0x0},
-	1160: {region: 0x42, script: 0xd6, flags: 0x0},
-	1161: {region: 0x164, script: 0x52, flags: 0x0},
-	1162: {region: 0x105, script: 0x1e, flags: 0x0},
-	1163: {region: 0x164, script: 0x52, flags: 0x0},
-	1164: {region: 0x164, script: 0x52, flags: 0x0},
-	1165: {region: 0x130, script: 0x52, flags: 0x0},
-	1166: {region: 0x164, script: 0x52, flags: 0x0},
-	1167: {region: 0x122, script: 0xd5, flags: 0x0},
-	1168: {region: 0x31, script: 0x52, flags: 0x0},
+	1152: {region: 0x128, script: 0x52, flags: 0x0},
+	1153: {region: 0x164, script: 0x52, flags: 0x0},
+	1154: {region: 0xcd, script: 0x52, flags: 0x0},
+	1155: {region: 0x164, script: 0x52, flags: 0x0},
+	1156: {region: 0xe5, script: 0x52, flags: 0x0},
+	1157: {region: 0x164, script: 0x52, flags: 0x0},
+	1158: {region: 0x164, script: 0x52, flags: 0x0},
+	1159: {region: 0x164, script: 0x52, flags: 0x0},
+	1160: {region: 0x12a, script: 0x52, flags: 0x0},
+	1161: {region: 0x12a, script: 0x52, flags: 0x0},
+	1162: {region: 0x12d, script: 0x52, flags: 0x0},
+	1163: {region: 0x164, script: 0x5, flags: 0x0},
+	1164: {region: 0x160, script: 0x52, flags: 0x0},
+	1165: {region: 0x86, script: 0x2d, flags: 0x0},
+	1166: {region: 0xda, script: 0x20, flags: 0x0},
+	1167: {region: 0xe6, script: 0x52, flags: 0x0},
+	1168: {region: 0x42, script: 0xd6, flags: 0x0},
 	1169: {region: 0x164, script: 0x52, flags: 0x0},
-	1170: {region: 0x164, script: 0x52, flags: 0x0},
-	1171: {region: 0xcd, script: 0x52, flags: 0x0},
+	1170: {region: 0x105, script: 0x1e, flags: 0x0},
+	1171: {region: 0x164, script: 0x52, flags: 0x0},
 	1172: {region: 0x164, script: 0x52, flags: 0x0},
-	1173: {region: 0x164, script: 0x52, flags: 0x0},
-	1174: {region: 0x12c, script: 0x52, flags: 0x0},
-	1175: {region: 0x164, script: 0x52, flags: 0x0},
+	1173: {region: 0x130, script: 0x52, flags: 0x0},
+	1174: {region: 0x164, script: 0x52, flags: 0x0},
+	1175: {region: 0x122, script: 0xd5, flags: 0x0},
+	1176: {region: 0x31, script: 0x52, flags: 0x0},
 	1177: {region: 0x164, script: 0x52, flags: 0x0},
-	1178: {region: 0xd3, script: 0x52, flags: 0x0},
-	1179: {region: 0x52, script: 0xce, flags: 0x0},
-	1180: {region: 0xe4, script: 0x52, flags: 0x0},
+	1178: {region: 0x164, script: 0x52, flags: 0x0},
+	1179: {region: 0xcd, script: 0x52, flags: 0x0},
+	1180: {region: 0x164, script: 0x52, flags: 0x0},
 	1181: {region: 0x164, script: 0x52, flags: 0x0},
-	1182: {region: 0x105, script: 0x1e, flags: 0x0},
-	1183: {region: 0xb9, script: 0x52, flags: 0x0},
-	1184: {region: 0x164, script: 0x52, flags: 0x0},
-	1185: {region: 0x105, script: 0x1e, flags: 0x0},
-	1186: {region: 0x41, script: 0x4, flags: 0x1},
-	1187: {region: 0x11b, script: 0xd8, flags: 0x0},
-	1188: {region: 0x12f, script: 0x1e, flags: 0x0},
-	1189: {region: 0x74, script: 0x52, flags: 0x0},
-	1190: {region: 0x29, script: 0x52, flags: 0x0},
-	1192: {region: 0x45, script: 0x3, flags: 0x1},
-	1193: {region: 0x98, script: 0xe, flags: 0x0},
-	1194: {region: 0xe7, script: 0x5, flags: 0x0},
-	1195: {region: 0x164, script: 0x52, flags: 0x0},
-	1196: {region: 0x164, script: 0x52, flags: 0x0},
-	1197: {region: 0x164, script: 0x52, flags: 0x0},
-	1198: {region: 0x164, script: 0x52, flags: 0x0},
-	1199: {region: 0x164, script: 0x52, flags: 0x0},
-	1200: {region: 0x164, script: 0x52, flags: 0x0},
-	1201: {region: 0x164, script: 0x52, flags: 0x0},
-	1202: {region: 0x48, script: 0x4, flags: 0x1},
+	1182: {region: 0x12c, script: 0x52, flags: 0x0},
+	1183: {region: 0x164, script: 0x52, flags: 0x0},
+	1185: {region: 0x164, script: 0x52, flags: 0x0},
+	1186: {region: 0xd3, script: 0x52, flags: 0x0},
+	1187: {region: 0x52, script: 0xce, flags: 0x0},
+	1188: {region: 0xe4, script: 0x52, flags: 0x0},
+	1189: {region: 0x164, script: 0x52, flags: 0x0},
+	1190: {region: 0x105, script: 0x1e, flags: 0x0},
+	1191: {region: 0xb9, script: 0x52, flags: 0x0},
+	1192: {region: 0x164, script: 0x52, flags: 0x0},
+	1193: {region: 0x105, script: 0x1e, flags: 0x0},
+	1194: {region: 0x3f, script: 0x4, flags: 0x1},
+	1195: {region: 0x11b, script: 0xd8, flags: 0x0},
+	1196: {region: 0x12f, script: 0x1e, flags: 0x0},
+	1197: {region: 0x74, script: 0x52, flags: 0x0},
+	1198: {region: 0x29, script: 0x52, flags: 0x0},
+	1200: {region: 0x43, script: 0x3, flags: 0x1},
+	1201: {region: 0x98, script: 0xe, flags: 0x0},
+	1202: {region: 0xe7, script: 0x5, flags: 0x0},
 	1203: {region: 0x164, script: 0x52, flags: 0x0},
-	1204: {region: 0xb3, script: 0xd9, flags: 0x0},
+	1204: {region: 0x164, script: 0x52, flags: 0x0},
 	1205: {region: 0x164, script: 0x52, flags: 0x0},
-	1206: {region: 0x160, script: 0x52, flags: 0x0},
-	1207: {region: 0x9d, script: 0x52, flags: 0x0},
-	1208: {region: 0x105, script: 0x52, flags: 0x0},
-	1209: {region: 0x13d, script: 0x52, flags: 0x0},
-	1210: {region: 0x11a, script: 0x52, flags: 0x0},
+	1206: {region: 0x164, script: 0x52, flags: 0x0},
+	1207: {region: 0x164, script: 0x52, flags: 0x0},
+	1208: {region: 0x164, script: 0x52, flags: 0x0},
+	1209: {region: 0x164, script: 0x52, flags: 0x0},
+	1210: {region: 0x46, script: 0x4, flags: 0x1},
 	1211: {region: 0x164, script: 0x52, flags: 0x0},
-	1212: {region: 0x35, script: 0x52, flags: 0x0},
-	1213: {region: 0x5f, script: 0x52, flags: 0x0},
-	1214: {region: 0xd0, script: 0x52, flags: 0x0},
-	1215: {region: 0x1, script: 0x52, flags: 0x0},
+	1212: {region: 0xb3, script: 0xd9, flags: 0x0},
+	1213: {region: 0x164, script: 0x52, flags: 0x0},
+	1214: {region: 0x160, script: 0x52, flags: 0x0},
+	1215: {region: 0x9d, script: 0x52, flags: 0x0},
 	1216: {region: 0x105, script: 0x52, flags: 0x0},
-	1217: {region: 0x69, script: 0x52, flags: 0x0},
-	1218: {region: 0x12e, script: 0x52, flags: 0x0},
+	1217: {region: 0x13d, script: 0x52, flags: 0x0},
+	1218: {region: 0x11a, script: 0x52, flags: 0x0},
 	1219: {region: 0x164, script: 0x52, flags: 0x0},
 	1220: {region: 0x35, script: 0x52, flags: 0x0},
-	1221: {region: 0x4d, script: 0x52, flags: 0x0},
-	1222: {region: 0x164, script: 0x52, flags: 0x0},
-	1223: {region: 0x6e, script: 0x27, flags: 0x0},
-	1224: {region: 0x164, script: 0x52, flags: 0x0},
-	1225: {region: 0xe6, script: 0x52, flags: 0x0},
-	1226: {region: 0x2e, script: 0x52, flags: 0x0},
-	1227: {region: 0x98, script: 0xd0, flags: 0x0},
-	1228: {region: 0x98, script: 0x20, flags: 0x0},
-	1229: {region: 0x164, script: 0x52, flags: 0x0},
+	1221: {region: 0x5f, script: 0x52, flags: 0x0},
+	1222: {region: 0xd0, script: 0x52, flags: 0x0},
+	1223: {region: 0x1, script: 0x52, flags: 0x0},
+	1224: {region: 0x105, script: 0x52, flags: 0x0},
+	1225: {region: 0x69, script: 0x52, flags: 0x0},
+	1226: {region: 0x12e, script: 0x52, flags: 0x0},
+	1227: {region: 0x164, script: 0x52, flags: 0x0},
+	1228: {region: 0x35, script: 0x52, flags: 0x0},
+	1229: {region: 0x4d, script: 0x52, flags: 0x0},
 	1230: {region: 0x164, script: 0x52, flags: 0x0},
-	1231: {region: 0x164, script: 0x52, flags: 0x0},
+	1231: {region: 0x6e, script: 0x27, flags: 0x0},
 	1232: {region: 0x164, script: 0x52, flags: 0x0},
-	1233: {region: 0x164, script: 0x52, flags: 0x0},
-	1234: {region: 0x164, script: 0x52, flags: 0x0},
-	1235: {region: 0x164, script: 0x52, flags: 0x0},
-	1236: {region: 0x164, script: 0x52, flags: 0x0},
+	1233: {region: 0xe6, script: 0x52, flags: 0x0},
+	1234: {region: 0x2e, script: 0x52, flags: 0x0},
+	1235: {region: 0x98, script: 0xd0, flags: 0x0},
+	1236: {region: 0x98, script: 0x20, flags: 0x0},
 	1237: {region: 0x164, script: 0x52, flags: 0x0},
-	1238: {region: 0x13f, script: 0x52, flags: 0x0},
+	1238: {region: 0x164, script: 0x52, flags: 0x0},
 	1239: {region: 0x164, script: 0x52, flags: 0x0},
 	1240: {region: 0x164, script: 0x52, flags: 0x0},
-	1241: {region: 0xa7, script: 0x5, flags: 0x0},
+	1241: {region: 0x164, script: 0x52, flags: 0x0},
 	1242: {region: 0x164, script: 0x52, flags: 0x0},
-	1243: {region: 0x113, script: 0x52, flags: 0x0},
+	1243: {region: 0x164, script: 0x52, flags: 0x0},
 	1244: {region: 0x164, script: 0x52, flags: 0x0},
 	1245: {region: 0x164, script: 0x52, flags: 0x0},
-	1246: {region: 0x164, script: 0x52, flags: 0x0},
+	1246: {region: 0x13f, script: 0x52, flags: 0x0},
 	1247: {region: 0x164, script: 0x52, flags: 0x0},
-	1248: {region: 0x98, script: 0x20, flags: 0x0},
-	1249: {region: 0x52, script: 0x34, flags: 0x0},
+	1248: {region: 0x164, script: 0x52, flags: 0x0},
+	1249: {region: 0xa7, script: 0x5, flags: 0x0},
 	1250: {region: 0x164, script: 0x52, flags: 0x0},
-	1251: {region: 0x164, script: 0x52, flags: 0x0},
-	1252: {region: 0x40, script: 0x52, flags: 0x0},
+	1251: {region: 0x113, script: 0x52, flags: 0x0},
+	1252: {region: 0x164, script: 0x52, flags: 0x0},
 	1253: {region: 0x164, script: 0x52, flags: 0x0},
-	1254: {region: 0x12a, script: 0x18, flags: 0x0},
+	1254: {region: 0x164, script: 0x52, flags: 0x0},
 	1255: {region: 0x164, script: 0x52, flags: 0x0},
-	1256: {region: 0x160, script: 0x52, flags: 0x0},
-	1257: {region: 0x164, script: 0x52, flags: 0x0},
-	1258: {region: 0x12a, script: 0x5a, flags: 0x0},
-	1259: {region: 0x12a, script: 0x5b, flags: 0x0},
-	1260: {region: 0x7c, script: 0x29, flags: 0x0},
-	1261: {region: 0x52, script: 0x5e, flags: 0x0},
-	1262: {region: 0x10a, script: 0x62, flags: 0x0},
-	1263: {region: 0x107, script: 0x6c, flags: 0x0},
-	1264: {region: 0x98, script: 0x20, flags: 0x0},
-	1265: {region: 0x130, script: 0x52, flags: 0x0},
-	1266: {region: 0x164, script: 0x52, flags: 0x0},
-	1267: {region: 0x9b, script: 0x82, flags: 0x0},
-	1268: {region: 0x164, script: 0x52, flags: 0x0},
-	1269: {region: 0x15d, script: 0xba, flags: 0x0},
-	1270: {region: 0x164, script: 0x52, flags: 0x0},
-	1271: {region: 0x164, script: 0x52, flags: 0x0},
-	1272: {region: 0xda, script: 0x20, flags: 0x0},
-	1273: {region: 0x164, script: 0x52, flags: 0x0},
+	1256: {region: 0x98, script: 0x20, flags: 0x0},
+	1257: {region: 0x52, script: 0x34, flags: 0x0},
+	1258: {region: 0x164, script: 0x52, flags: 0x0},
+	1259: {region: 0x164, script: 0x52, flags: 0x0},
+	1260: {region: 0x40, script: 0x52, flags: 0x0},
+	1261: {region: 0x164, script: 0x52, flags: 0x0},
+	1262: {region: 0x12a, script: 0x18, flags: 0x0},
+	1263: {region: 0x164, script: 0x52, flags: 0x0},
+	1264: {region: 0x160, script: 0x52, flags: 0x0},
+	1265: {region: 0x164, script: 0x52, flags: 0x0},
+	1266: {region: 0x12a, script: 0x5a, flags: 0x0},
+	1267: {region: 0x12a, script: 0x5b, flags: 0x0},
+	1268: {region: 0x7c, script: 0x29, flags: 0x0},
+	1269: {region: 0x52, script: 0x5e, flags: 0x0},
+	1270: {region: 0x10a, script: 0x62, flags: 0x0},
+	1271: {region: 0x107, script: 0x6c, flags: 0x0},
+	1272: {region: 0x98, script: 0x20, flags: 0x0},
+	1273: {region: 0x130, script: 0x52, flags: 0x0},
 	1274: {region: 0x164, script: 0x52, flags: 0x0},
-	1275: {region: 0xd0, script: 0x52, flags: 0x0},
-	1276: {region: 0x74, script: 0x52, flags: 0x0},
-	1277: {region: 0x164, script: 0x52, flags: 0x0},
+	1275: {region: 0x9b, script: 0x82, flags: 0x0},
+	1276: {region: 0x164, script: 0x52, flags: 0x0},
+	1277: {region: 0x15d, script: 0xba, flags: 0x0},
 	1278: {region: 0x164, script: 0x52, flags: 0x0},
-	1279: {region: 0x51, script: 0x52, flags: 0x0},
-	1280: {region: 0x164, script: 0x52, flags: 0x0},
+	1279: {region: 0x164, script: 0x52, flags: 0x0},
+	1280: {region: 0xda, script: 0x20, flags: 0x0},
 	1281: {region: 0x164, script: 0x52, flags: 0x0},
 	1282: {region: 0x164, script: 0x52, flags: 0x0},
-	1283: {region: 0x51, script: 0x52, flags: 0x0},
-	1284: {region: 0x164, script: 0x52, flags: 0x0},
+	1283: {region: 0xd0, script: 0x52, flags: 0x0},
+	1284: {region: 0x74, script: 0x52, flags: 0x0},
 	1285: {region: 0x164, script: 0x52, flags: 0x0},
 	1286: {region: 0x164, script: 0x52, flags: 0x0},
-	1287: {region: 0x164, script: 0x52, flags: 0x0},
-	1288: {region: 0x1, script: 0x37, flags: 0x0},
+	1287: {region: 0x51, script: 0x52, flags: 0x0},
+	1288: {region: 0x164, script: 0x52, flags: 0x0},
 	1289: {region: 0x164, script: 0x52, flags: 0x0},
 	1290: {region: 0x164, script: 0x52, flags: 0x0},
-	1291: {region: 0x164, script: 0x52, flags: 0x0},
+	1291: {region: 0x51, script: 0x52, flags: 0x0},
 	1292: {region: 0x164, script: 0x52, flags: 0x0},
 	1293: {region: 0x164, script: 0x52, flags: 0x0},
-	1294: {region: 0xd5, script: 0x52, flags: 0x0},
+	1294: {region: 0x164, script: 0x52, flags: 0x0},
 	1295: {region: 0x164, script: 0x52, flags: 0x0},
-	1296: {region: 0x164, script: 0x52, flags: 0x0},
+	1296: {region: 0x1, script: 0x37, flags: 0x0},
 	1297: {region: 0x164, script: 0x52, flags: 0x0},
-	1298: {region: 0x40, script: 0x52, flags: 0x0},
+	1298: {region: 0x164, script: 0x52, flags: 0x0},
 	1299: {region: 0x164, script: 0x52, flags: 0x0},
-	1300: {region: 0xce, script: 0x52, flags: 0x0},
-	1301: {region: 0x4c, script: 0x3, flags: 0x1},
-	1302: {region: 0x164, script: 0x52, flags: 0x0},
+	1300: {region: 0x164, script: 0x52, flags: 0x0},
+	1301: {region: 0x164, script: 0x52, flags: 0x0},
+	1302: {region: 0xd5, script: 0x52, flags: 0x0},
 	1303: {region: 0x164, script: 0x52, flags: 0x0},
 	1304: {region: 0x164, script: 0x52, flags: 0x0},
-	1305: {region: 0x52, script: 0x52, flags: 0x0},
-	1306: {region: 0x10a, script: 0x52, flags: 0x0},
-	1308: {region: 0xa7, script: 0x5, flags: 0x0},
-	1309: {region: 0xd8, script: 0x52, flags: 0x0},
-	1310: {region: 0xb9, script: 0xd2, flags: 0x0},
-	1311: {region: 0x4f, script: 0x14, flags: 0x1},
+	1305: {region: 0x164, script: 0x52, flags: 0x0},
+	1306: {region: 0x40, script: 0x52, flags: 0x0},
+	1307: {region: 0x164, script: 0x52, flags: 0x0},
+	1308: {region: 0xce, script: 0x52, flags: 0x0},
+	1309: {region: 0x4a, script: 0x3, flags: 0x1},
+	1310: {region: 0x164, script: 0x52, flags: 0x0},
+	1311: {region: 0x164, script: 0x52, flags: 0x0},
 	1312: {region: 0x164, script: 0x52, flags: 0x0},
-	1313: {region: 0x121, script: 0x52, flags: 0x0},
-	1314: {region: 0xcf, script: 0x52, flags: 0x0},
-	1315: {region: 0x164, script: 0x52, flags: 0x0},
-	1316: {region: 0x160, script: 0x52, flags: 0x0},
-	1318: {region: 0x12a, script: 0x52, flags: 0x0},
+	1313: {region: 0x52, script: 0x52, flags: 0x0},
+	1314: {region: 0x10a, script: 0x52, flags: 0x0},
+	1316: {region: 0xa7, script: 0x5, flags: 0x0},
+	1317: {region: 0xd8, script: 0x52, flags: 0x0},
+	1318: {region: 0xb9, script: 0xd2, flags: 0x0},
+	1319: {region: 0x4d, script: 0x14, flags: 0x1},
+	1320: {region: 0x164, script: 0x52, flags: 0x0},
+	1321: {region: 0x121, script: 0x52, flags: 0x0},
+	1322: {region: 0xcf, script: 0x52, flags: 0x0},
+	1323: {region: 0x164, script: 0x52, flags: 0x0},
+	1324: {region: 0x160, script: 0x52, flags: 0x0},
+	1326: {region: 0x12a, script: 0x52, flags: 0x0},
 }
 
 // likelyLangList holds lists info associated with likelyLang.
-// Size: 396 bytes, 99 elements
-var likelyLangList = [99]likelyScriptRegion{
+// Size: 388 bytes, 97 elements
+var likelyLangList = [97]likelyScriptRegion{
 	0:  {region: 0x9b, script: 0x7, flags: 0x0},
 	1:  {region: 0xa0, script: 0x6d, flags: 0x2},
 	2:  {region: 0x11b, script: 0x78, flags: 0x2},
@@ -2812,97 +2822,95 @@ var likelyLangList = [99]likelyScriptRegion{
 	5:  {region: 0x9b, script: 0x5, flags: 0x4},
 	6:  {region: 0x105, script: 0x1e, flags: 0x4},
 	7:  {region: 0x9b, script: 0x5, flags: 0x2},
-	8:  {region: 0x98, script: 0xe, flags: 0x0},
-	9:  {region: 0x34, script: 0x16, flags: 0x2},
-	10: {region: 0x105, script: 0x1e, flags: 0x0},
-	11: {region: 0x37, script: 0x2a, flags: 0x2},
-	12: {region: 0x134, script: 0x52, flags: 0x0},
-	13: {region: 0x7a, script: 0xbd, flags: 0x2},
-	14: {region: 0x113, script: 0x52, flags: 0x0},
-	15: {region: 0x83, script: 0x1, flags: 0x2},
-	16: {region: 0x5c, script: 0x1d, flags: 0x0},
-	17: {region: 0x86, script: 0x57, flags: 0x2},
-	18: {region: 0xd5, script: 0x52, flags: 0x0},
-	19: {region: 0x51, script: 0x5, flags: 0x4},
-	20: {region: 0x10a, script: 0x5, flags: 0x4},
-	21: {region: 0xad, script: 0x1e, flags: 0x0},
-	22: {region: 0x23, script: 0x5, flags: 0x4},
-	23: {region: 0x52, script: 0x5, flags: 0x4},
-	24: {region: 0x9b, script: 0x5, flags: 0x4},
-	25: {region: 0xc4, script: 0x5, flags: 0x4},
-	26: {region: 0x52, script: 0x5, flags: 0x2},
-	27: {region: 0x12a, script: 0x52, flags: 0x0},
-	28: {region: 0xaf, script: 0x5, flags: 0x4},
-	29: {region: 0x9a, script: 0x5, flags: 0x2},
-	30: {region: 0xa4, script: 0x1e, flags: 0x0},
-	31: {region: 0x52, script: 0x5, flags: 0x4},
-	32: {region: 0x12a, script: 0x52, flags: 0x4},
-	33: {region: 0x52, script: 0x5, flags: 0x2},
-	34: {region: 0x12a, script: 0x52, flags: 0x2},
-	35: {region: 0xda, script: 0x20, flags: 0x0},
-	36: {region: 0x98, script: 0x55, flags: 0x2},
-	37: {region: 0x82, script: 0x52, flags: 0x0},
-	38: {region: 0x83, script: 0x70, flags: 0x4},
-	39: {region: 0x83, script: 0x70, flags: 0x2},
-	40: {region: 0xc4, script: 0x1e, flags: 0x0},
-	41: {region: 0x52, script: 0x66, flags: 0x4},
-	42: {region: 0x52, script: 0x66, flags: 0x2},
-	43: {region: 0xcf, script: 0x52, flags: 0x0},
-	44: {region: 0x49, script: 0x5, flags: 0x4},
-	45: {region: 0x94, script: 0x5, flags: 0x4},
-	46: {region: 0x98, script: 0x2f, flags: 0x0},
-	47: {region: 0xe7, script: 0x5, flags: 0x4},
-	48: {region: 0xe7, script: 0x5, flags: 0x2},
-	49: {region: 0x9b, script: 0x7c, flags: 0x0},
-	50: {region: 0x52, script: 0x7d, flags: 0x2},
-	51: {region: 0xb9, script: 0xd2, flags: 0x0},
-	52: {region: 0xd8, script: 0x52, flags: 0x4},
-	53: {region: 0xe7, script: 0x5, flags: 0x0},
-	54: {region: 0x98, script: 0x20, flags: 0x2},
-	55: {region: 0x98, script: 0x47, flags: 0x2},
-	56: {region: 0x98, script: 0xc0, flags: 0x2},
-	57: {region: 0x104, script: 0x1e, flags: 0x0},
-	58: {region: 0xbc, script: 0x52, flags: 0x4},
-	59: {region: 0x103, script: 0x52, flags: 0x4},
-	60: {region: 0x105, script: 0x52, flags: 0x4},
-	61: {region: 0x12a, script: 0x52, flags: 0x4},
-	62: {region: 0x123, script: 0x1e, flags: 0x0},
-	63: {region: 0xe7, script: 0x5, flags: 0x4},
-	64: {region: 0xe7, script: 0x5, flags: 0x2},
-	65: {region: 0x52, script: 0x5, flags: 0x0},
-	66: {region: 0xad, script: 0x1e, flags: 0x4},
-	67: {region: 0xc4, script: 0x1e, flags: 0x4},
-	68: {region: 0xad, script: 0x1e, flags: 0x2},
-	69: {region: 0x98, script: 0xe, flags: 0x0},
-	70: {region: 0xda, script: 0x20, flags: 0x4},
-	71: {region: 0xda, script: 0x20, flags: 0x2},
-	72: {region: 0x136, script: 0x52, flags: 0x0},
-	73: {region: 0x23, script: 0x5, flags: 0x4},
-	74: {region: 0x52, script: 0x1e, flags: 0x4},
-	75: {region: 0x23, script: 0x5, flags: 0x2},
-	76: {region: 0x8c, script: 0x35, flags: 0x0},
-	77: {region: 0x52, script: 0x34, flags: 0x4},
-	78: {region: 0x52, script: 0x34, flags: 0x2},
-	79: {region: 0x52, script: 0x34, flags: 0x0},
-	80: {region: 0x2e, script: 0x35, flags: 0x4},
-	81: {region: 0x3d, script: 0x35, flags: 0x4},
-	82: {region: 0x7a, script: 0x35, flags: 0x4},
-	83: {region: 0x7d, script: 0x35, flags: 0x4},
-	84: {region: 0x8c, script: 0x35, flags: 0x4},
-	85: {region: 0x94, script: 0x35, flags: 0x4},
-	86: {region: 0xc5, script: 0x35, flags: 0x4},
-	87: {region: 0xcf, script: 0x35, flags: 0x4},
-	88: {region: 0xe1, script: 0x35, flags: 0x4},
-	89: {region: 0xe4, script: 0x35, flags: 0x4},
-	90: {region: 0xe6, script: 0x35, flags: 0x4},
-	91: {region: 0x115, script: 0x35, flags: 0x4},
-	92: {region: 0x122, script: 0x35, flags: 0x4},
-	93: {region: 0x12d, script: 0x35, flags: 0x4},
-	94: {region: 0x134, script: 0x35, flags: 0x4},
-	95: {region: 0x13d, script: 0x35, flags: 0x4},
-	96: {region: 0x12d, script: 0x11, flags: 0x2},
-	97: {region: 0x12d, script: 0x30, flags: 0x2},
-	98: {region: 0x12d, script: 0x35, flags: 0x2},
+	8:  {region: 0x105, script: 0x1e, flags: 0x0},
+	9:  {region: 0x37, script: 0x2a, flags: 0x2},
+	10: {region: 0x134, script: 0x52, flags: 0x0},
+	11: {region: 0x7a, script: 0xbd, flags: 0x2},
+	12: {region: 0x113, script: 0x52, flags: 0x0},
+	13: {region: 0x83, script: 0x1, flags: 0x2},
+	14: {region: 0x5c, script: 0x1d, flags: 0x0},
+	15: {region: 0x86, script: 0x57, flags: 0x2},
+	16: {region: 0xd5, script: 0x52, flags: 0x0},
+	17: {region: 0x51, script: 0x5, flags: 0x4},
+	18: {region: 0x10a, script: 0x5, flags: 0x4},
+	19: {region: 0xad, script: 0x1e, flags: 0x0},
+	20: {region: 0x23, script: 0x5, flags: 0x4},
+	21: {region: 0x52, script: 0x5, flags: 0x4},
+	22: {region: 0x9b, script: 0x5, flags: 0x4},
+	23: {region: 0xc4, script: 0x5, flags: 0x4},
+	24: {region: 0x52, script: 0x5, flags: 0x2},
+	25: {region: 0x12a, script: 0x52, flags: 0x0},
+	26: {region: 0xaf, script: 0x5, flags: 0x4},
+	27: {region: 0x9a, script: 0x5, flags: 0x2},
+	28: {region: 0xa4, script: 0x1e, flags: 0x0},
+	29: {region: 0x52, script: 0x5, flags: 0x4},
+	30: {region: 0x12a, script: 0x52, flags: 0x4},
+	31: {region: 0x52, script: 0x5, flags: 0x2},
+	32: {region: 0x12a, script: 0x52, flags: 0x2},
+	33: {region: 0xda, script: 0x20, flags: 0x0},
+	34: {region: 0x98, script: 0x55, flags: 0x2},
+	35: {region: 0x82, script: 0x52, flags: 0x0},
+	36: {region: 0x83, script: 0x70, flags: 0x4},
+	37: {region: 0x83, script: 0x70, flags: 0x2},
+	38: {region: 0xc4, script: 0x1e, flags: 0x0},
+	39: {region: 0x52, script: 0x66, flags: 0x4},
+	40: {region: 0x52, script: 0x66, flags: 0x2},
+	41: {region: 0xcf, script: 0x52, flags: 0x0},
+	42: {region: 0x49, script: 0x5, flags: 0x4},
+	43: {region: 0x94, script: 0x5, flags: 0x4},
+	44: {region: 0x98, script: 0x2f, flags: 0x0},
+	45: {region: 0xe7, script: 0x5, flags: 0x4},
+	46: {region: 0xe7, script: 0x5, flags: 0x2},
+	47: {region: 0x9b, script: 0x7c, flags: 0x0},
+	48: {region: 0x52, script: 0x7d, flags: 0x2},
+	49: {region: 0xb9, script: 0xd2, flags: 0x0},
+	50: {region: 0xd8, script: 0x52, flags: 0x4},
+	51: {region: 0xe7, script: 0x5, flags: 0x0},
+	52: {region: 0x98, script: 0x20, flags: 0x2},
+	53: {region: 0x98, script: 0x47, flags: 0x2},
+	54: {region: 0x98, script: 0xc0, flags: 0x2},
+	55: {region: 0x104, script: 0x1e, flags: 0x0},
+	56: {region: 0xbc, script: 0x52, flags: 0x4},
+	57: {region: 0x103, script: 0x52, flags: 0x4},
+	58: {region: 0x105, script: 0x52, flags: 0x4},
+	59: {region: 0x12a, script: 0x52, flags: 0x4},
+	60: {region: 0x123, script: 0x1e, flags: 0x0},
+	61: {region: 0xe7, script: 0x5, flags: 0x4},
+	62: {region: 0xe7, script: 0x5, flags: 0x2},
+	63: {region: 0x52, script: 0x5, flags: 0x0},
+	64: {region: 0xad, script: 0x1e, flags: 0x4},
+	65: {region: 0xc4, script: 0x1e, flags: 0x4},
+	66: {region: 0xad, script: 0x1e, flags: 0x2},
+	67: {region: 0x98, script: 0xe, flags: 0x0},
+	68: {region: 0xda, script: 0x20, flags: 0x4},
+	69: {region: 0xda, script: 0x20, flags: 0x2},
+	70: {region: 0x136, script: 0x52, flags: 0x0},
+	71: {region: 0x23, script: 0x5, flags: 0x4},
+	72: {region: 0x52, script: 0x1e, flags: 0x4},
+	73: {region: 0x23, script: 0x5, flags: 0x2},
+	74: {region: 0x8c, script: 0x35, flags: 0x0},
+	75: {region: 0x52, script: 0x34, flags: 0x4},
+	76: {region: 0x52, script: 0x34, flags: 0x2},
+	77: {region: 0x52, script: 0x34, flags: 0x0},
+	78: {region: 0x2e, script: 0x35, flags: 0x4},
+	79: {region: 0x3d, script: 0x35, flags: 0x4},
+	80: {region: 0x7a, script: 0x35, flags: 0x4},
+	81: {region: 0x7d, script: 0x35, flags: 0x4},
+	82: {region: 0x8c, script: 0x35, flags: 0x4},
+	83: {region: 0x94, script: 0x35, flags: 0x4},
+	84: {region: 0xc5, script: 0x35, flags: 0x4},
+	85: {region: 0xcf, script: 0x35, flags: 0x4},
+	86: {region: 0xe1, script: 0x35, flags: 0x4},
+	87: {region: 0xe4, script: 0x35, flags: 0x4},
+	88: {region: 0xe6, script: 0x35, flags: 0x4},
+	89: {region: 0x115, script: 0x35, flags: 0x4},
+	90: {region: 0x122, script: 0x35, flags: 0x4},
+	91: {region: 0x12d, script: 0x35, flags: 0x4},
+	92: {region: 0x134, script: 0x35, flags: 0x4},
+	93: {region: 0x13d, script: 0x35, flags: 0x4},
+	94: {region: 0x12d, script: 0x11, flags: 0x2},
+	95: {region: 0x12d, script: 0x30, flags: 0x2},
+	96: {region: 0x12d, script: 0x35, flags: 0x2},
 }
 
 type likelyLangScript struct {
@@ -2918,308 +2926,306 @@ type likelyLangScript struct {
 // TODO: exclude containers and user-definable regions from the list.
 // Size: 1428 bytes, 357 elements
 var likelyRegion = [357]likelyLangScript{
-	33:  {lang: 0xd5, script: 0x52, flags: 0x0},
-	34:  {lang: 0x39, script: 0x5, flags: 0x0},
+	33:  {lang: 0xd7, script: 0x52, flags: 0x0},
+	34:  {lang: 0x3a, script: 0x5, flags: 0x0},
 	35:  {lang: 0x0, script: 0x2, flags: 0x1},
 	38:  {lang: 0x2, script: 0x2, flags: 0x1},
 	39:  {lang: 0x4, script: 0x2, flags: 0x1},
-	41:  {lang: 0x3b7, script: 0x52, flags: 0x0},
+	41:  {lang: 0x3be, script: 0x52, flags: 0x0},
 	42:  {lang: 0x0, script: 0x52, flags: 0x0},
-	43:  {lang: 0x139, script: 0x52, flags: 0x0},
-	44:  {lang: 0x411, script: 0x52, flags: 0x0},
-	45:  {lang: 0x109, script: 0x52, flags: 0x0},
-	47:  {lang: 0x35e, script: 0x52, flags: 0x0},
-	48:  {lang: 0x43a, script: 0x52, flags: 0x0},
-	49:  {lang: 0x57, script: 0x52, flags: 0x0},
+	43:  {lang: 0x13d, script: 0x52, flags: 0x0},
+	44:  {lang: 0x419, script: 0x52, flags: 0x0},
+	45:  {lang: 0x10c, script: 0x52, flags: 0x0},
+	47:  {lang: 0x365, script: 0x52, flags: 0x0},
+	48:  {lang: 0x442, script: 0x52, flags: 0x0},
+	49:  {lang: 0x58, script: 0x52, flags: 0x0},
 	50:  {lang: 0x6, script: 0x2, flags: 0x1},
-	52:  {lang: 0xa3, script: 0xe, flags: 0x0},
-	53:  {lang: 0x35e, script: 0x52, flags: 0x0},
-	54:  {lang: 0x159, script: 0x52, flags: 0x0},
-	55:  {lang: 0x7d, script: 0x1e, flags: 0x0},
-	56:  {lang: 0x39, script: 0x5, flags: 0x0},
-	57:  {lang: 0x3d0, script: 0x52, flags: 0x0},
-	58:  {lang: 0x159, script: 0x52, flags: 0x0},
-	59:  {lang: 0x159, script: 0x52, flags: 0x0},
-	61:  {lang: 0x316, script: 0x52, flags: 0x0},
-	62:  {lang: 0x139, script: 0x52, flags: 0x0},
-	63:  {lang: 0x398, script: 0x52, flags: 0x0},
-	64:  {lang: 0x3b7, script: 0x52, flags: 0x0},
+	52:  {lang: 0xa5, script: 0xe, flags: 0x0},
+	53:  {lang: 0x365, script: 0x52, flags: 0x0},
+	54:  {lang: 0x15d, script: 0x52, flags: 0x0},
+	55:  {lang: 0x7e, script: 0x1e, flags: 0x0},
+	56:  {lang: 0x3a, script: 0x5, flags: 0x0},
+	57:  {lang: 0x3d7, script: 0x52, flags: 0x0},
+	58:  {lang: 0x15d, script: 0x52, flags: 0x0},
+	59:  {lang: 0x15d, script: 0x52, flags: 0x0},
+	61:  {lang: 0x31d, script: 0x52, flags: 0x0},
+	62:  {lang: 0x13d, script: 0x52, flags: 0x0},
+	63:  {lang: 0x39f, script: 0x52, flags: 0x0},
+	64:  {lang: 0x3be, script: 0x52, flags: 0x0},
 	66:  {lang: 0x8, script: 0x2, flags: 0x1},
 	68:  {lang: 0x0, script: 0x52, flags: 0x0},
-	70:  {lang: 0x70, script: 0x1e, flags: 0x0},
-	72:  {lang: 0x508, script: 0x37, flags: 0x2},
-	73:  {lang: 0x316, script: 0x5, flags: 0x2},
-	74:  {lang: 0x43b, script: 0x52, flags: 0x0},
-	75:  {lang: 0x159, script: 0x52, flags: 0x0},
-	76:  {lang: 0x159, script: 0x52, flags: 0x0},
-	77:  {lang: 0x109, script: 0x52, flags: 0x0},
-	78:  {lang: 0x159, script: 0x52, flags: 0x0},
-	80:  {lang: 0x139, script: 0x52, flags: 0x0},
-	81:  {lang: 0x159, script: 0x52, flags: 0x0},
+	70:  {lang: 0x71, script: 0x1e, flags: 0x0},
+	72:  {lang: 0x510, script: 0x37, flags: 0x2},
+	73:  {lang: 0x31d, script: 0x5, flags: 0x2},
+	74:  {lang: 0x443, script: 0x52, flags: 0x0},
+	75:  {lang: 0x15d, script: 0x52, flags: 0x0},
+	76:  {lang: 0x15d, script: 0x52, flags: 0x0},
+	77:  {lang: 0x10c, script: 0x52, flags: 0x0},
+	78:  {lang: 0x15d, script: 0x52, flags: 0x0},
+	80:  {lang: 0x13d, script: 0x52, flags: 0x0},
+	81:  {lang: 0x15d, script: 0x52, flags: 0x0},
 	82:  {lang: 0xa, script: 0x5, flags: 0x1},
-	83:  {lang: 0x139, script: 0x52, flags: 0x0},
+	83:  {lang: 0x13d, script: 0x52, flags: 0x0},
 	84:  {lang: 0x0, script: 0x52, flags: 0x0},
-	85:  {lang: 0x139, script: 0x52, flags: 0x0},
-	88:  {lang: 0x139, script: 0x52, flags: 0x0},
-	89:  {lang: 0x3b7, script: 0x52, flags: 0x0},
-	90:  {lang: 0x398, script: 0x52, flags: 0x0},
+	85:  {lang: 0x13d, script: 0x52, flags: 0x0},
+	88:  {lang: 0x13d, script: 0x52, flags: 0x0},
+	89:  {lang: 0x3be, script: 0x52, flags: 0x0},
+	90:  {lang: 0x39f, script: 0x52, flags: 0x0},
 	92:  {lang: 0xf, script: 0x2, flags: 0x1},
-	93:  {lang: 0xf6, script: 0x52, flags: 0x0},
-	95:  {lang: 0x109, script: 0x52, flags: 0x0},
+	93:  {lang: 0xf9, script: 0x52, flags: 0x0},
+	95:  {lang: 0x10c, script: 0x52, flags: 0x0},
 	97:  {lang: 0x1, script: 0x52, flags: 0x0},
-	98:  {lang: 0xfd, script: 0x52, flags: 0x0},
-	100: {lang: 0x139, script: 0x52, flags: 0x0},
+	98:  {lang: 0x100, script: 0x52, flags: 0x0},
+	100: {lang: 0x13d, script: 0x52, flags: 0x0},
 	102: {lang: 0x11, script: 0x2, flags: 0x1},
-	103: {lang: 0x139, script: 0x52, flags: 0x0},
-	104: {lang: 0x139, script: 0x52, flags: 0x0},
-	105: {lang: 0x13b, script: 0x52, flags: 0x0},
-	106: {lang: 0x39, script: 0x5, flags: 0x0},
-	107: {lang: 0x39, script: 0x5, flags: 0x0},
-	108: {lang: 0x465, script: 0x27, flags: 0x0},
-	109: {lang: 0x139, script: 0x52, flags: 0x0},
+	103: {lang: 0x13d, script: 0x52, flags: 0x0},
+	104: {lang: 0x13d, script: 0x52, flags: 0x0},
+	105: {lang: 0x13f, script: 0x52, flags: 0x0},
+	106: {lang: 0x3a, script: 0x5, flags: 0x0},
+	107: {lang: 0x3a, script: 0x5, flags: 0x0},
+	108: {lang: 0x46d, script: 0x27, flags: 0x0},
+	109: {lang: 0x13d, script: 0x52, flags: 0x0},
 	110: {lang: 0x13, script: 0x2, flags: 0x1},
-	112: {lang: 0x109, script: 0x52, flags: 0x0},
-	113: {lang: 0x14c, script: 0x52, flags: 0x0},
-	114: {lang: 0x1b9, script: 0x20, flags: 0x2},
-	117: {lang: 0x153, script: 0x52, flags: 0x0},
-	119: {lang: 0x159, script: 0x52, flags: 0x0},
-	121: {lang: 0x159, script: 0x52, flags: 0x0},
+	112: {lang: 0x10c, script: 0x52, flags: 0x0},
+	113: {lang: 0x150, script: 0x52, flags: 0x0},
+	114: {lang: 0x1be, script: 0x20, flags: 0x2},
+	117: {lang: 0x157, script: 0x52, flags: 0x0},
+	119: {lang: 0x15d, script: 0x52, flags: 0x0},
+	121: {lang: 0x15d, script: 0x52, flags: 0x0},
 	122: {lang: 0x15, script: 0x2, flags: 0x1},
 	124: {lang: 0x17, script: 0x3, flags: 0x1},
-	125: {lang: 0x159, script: 0x52, flags: 0x0},
-	127: {lang: 0x20, script: 0x52, flags: 0x0},
-	129: {lang: 0x23d, script: 0x52, flags: 0x0},
-	131: {lang: 0x159, script: 0x52, flags: 0x0},
-	132: {lang: 0x159, script: 0x52, flags: 0x0},
-	133: {lang: 0x139, script: 0x52, flags: 0x0},
+	125: {lang: 0x15d, script: 0x52, flags: 0x0},
+	127: {lang: 0x21, script: 0x52, flags: 0x0},
+	129: {lang: 0x243, script: 0x52, flags: 0x0},
+	131: {lang: 0x15d, script: 0x52, flags: 0x0},
+	132: {lang: 0x15d, script: 0x52, flags: 0x0},
+	133: {lang: 0x13d, script: 0x52, flags: 0x0},
 	134: {lang: 0x1a, script: 0x2, flags: 0x1},
 	135: {lang: 0x0, script: 0x52, flags: 0x0},
-	136: {lang: 0x139, script: 0x52, flags: 0x0},
-	138: {lang: 0x3b7, script: 0x52, flags: 0x0},
-	140: {lang: 0x51f, script: 0x35, flags: 0x0},
+	136: {lang: 0x13d, script: 0x52, flags: 0x0},
+	138: {lang: 0x3be, script: 0x52, flags: 0x0},
+	140: {lang: 0x527, script: 0x35, flags: 0x0},
 	141: {lang: 0x0, script: 0x52, flags: 0x0},
-	142: {lang: 0x139, script: 0x52, flags: 0x0},
-	143: {lang: 0x1ca, script: 0x52, flags: 0x0},
-	144: {lang: 0x1cd, script: 0x52, flags: 0x0},
-	145: {lang: 0x1ce, script: 0x52, flags: 0x0},
-	147: {lang: 0x139, script: 0x52, flags: 0x0},
+	142: {lang: 0x13d, script: 0x52, flags: 0x0},
+	143: {lang: 0x1cf, script: 0x52, flags: 0x0},
+	144: {lang: 0x1d2, script: 0x52, flags: 0x0},
+	145: {lang: 0x1d3, script: 0x52, flags: 0x0},
+	147: {lang: 0x13d, script: 0x52, flags: 0x0},
 	148: {lang: 0x1c, script: 0x2, flags: 0x1},
-	150: {lang: 0x1b5, script: 0x37, flags: 0x0},
+	150: {lang: 0x1ba, script: 0x37, flags: 0x0},
 	152: {lang: 0x1e, script: 0x3, flags: 0x1},
-	154: {lang: 0x39, script: 0x5, flags: 0x0},
+	154: {lang: 0x3a, script: 0x5, flags: 0x0},
 	155: {lang: 0x21, script: 0x2, flags: 0x1},
-	156: {lang: 0x1f0, script: 0x52, flags: 0x0},
-	157: {lang: 0x1f1, script: 0x52, flags: 0x0},
-	160: {lang: 0x39, script: 0x5, flags: 0x0},
-	161: {lang: 0x1f8, script: 0x41, flags: 0x0},
-	163: {lang: 0x43b, script: 0x52, flags: 0x0},
-	164: {lang: 0x281, script: 0x1e, flags: 0x0},
+	156: {lang: 0x1f6, script: 0x52, flags: 0x0},
+	157: {lang: 0x1f7, script: 0x52, flags: 0x0},
+	160: {lang: 0x3a, script: 0x5, flags: 0x0},
+	161: {lang: 0x1fe, script: 0x41, flags: 0x0},
+	163: {lang: 0x443, script: 0x52, flags: 0x0},
+	164: {lang: 0x288, script: 0x1e, flags: 0x0},
 	165: {lang: 0x23, script: 0x3, flags: 0x1},
 	167: {lang: 0x26, script: 0x2, flags: 0x1},
-	169: {lang: 0x24b, script: 0x4b, flags: 0x0},
-	170: {lang: 0x24b, script: 0x4b, flags: 0x0},
-	171: {lang: 0x39, script: 0x5, flags: 0x0},
-	173: {lang: 0x3d9, script: 0x1e, flags: 0x0},
+	169: {lang: 0x252, script: 0x4b, flags: 0x0},
+	170: {lang: 0x252, script: 0x4b, flags: 0x0},
+	171: {lang: 0x3a, script: 0x5, flags: 0x0},
+	173: {lang: 0x3e0, script: 0x1e, flags: 0x0},
 	174: {lang: 0x28, script: 0x2, flags: 0x1},
-	175: {lang: 0x39, script: 0x5, flags: 0x0},
-	177: {lang: 0x109, script: 0x52, flags: 0x0},
-	178: {lang: 0x402, script: 0xc1, flags: 0x0},
-	180: {lang: 0x431, script: 0x52, flags: 0x0},
-	181: {lang: 0x2b7, script: 0x52, flags: 0x0},
-	182: {lang: 0x159, script: 0x52, flags: 0x0},
-	183: {lang: 0x2be, script: 0x52, flags: 0x0},
-	184: {lang: 0x39, script: 0x5, flags: 0x0},
+	175: {lang: 0x3a, script: 0x5, flags: 0x0},
+	177: {lang: 0x10c, script: 0x52, flags: 0x0},
+	178: {lang: 0x40a, script: 0xc1, flags: 0x0},
+	180: {lang: 0x439, script: 0x52, flags: 0x0},
+	181: {lang: 0x2be, script: 0x52, flags: 0x0},
+	182: {lang: 0x15d, script: 0x52, flags: 0x0},
+	183: {lang: 0x2c5, script: 0x52, flags: 0x0},
+	184: {lang: 0x3a, script: 0x5, flags: 0x0},
 	185: {lang: 0x2a, script: 0x2, flags: 0x1},
-	186: {lang: 0x159, script: 0x52, flags: 0x0},
+	186: {lang: 0x15d, script: 0x52, flags: 0x0},
 	187: {lang: 0x2c, script: 0x2, flags: 0x1},
-	188: {lang: 0x428, script: 0x52, flags: 0x0},
-	189: {lang: 0x159, script: 0x52, flags: 0x0},
-	190: {lang: 0x2e8, script: 0x52, flags: 0x0},
+	188: {lang: 0x430, script: 0x52, flags: 0x0},
+	189: {lang: 0x15d, script: 0x52, flags: 0x0},
+	190: {lang: 0x2ef, script: 0x52, flags: 0x0},
 	193: {lang: 0x2e, script: 0x2, flags: 0x1},
-	194: {lang: 0x9e, script: 0x52, flags: 0x0},
+	194: {lang: 0xa0, script: 0x52, flags: 0x0},
 	195: {lang: 0x30, script: 0x2, flags: 0x1},
 	196: {lang: 0x32, script: 0x2, flags: 0x1},
 	197: {lang: 0x34, script: 0x2, flags: 0x1},
-	199: {lang: 0x159, script: 0x52, flags: 0x0},
+	199: {lang: 0x15d, script: 0x52, flags: 0x0},
 	200: {lang: 0x36, script: 0x2, flags: 0x1},
-	202: {lang: 0x317, script: 0x52, flags: 0x0},
+	202: {lang: 0x31e, script: 0x52, flags: 0x0},
 	203: {lang: 0x38, script: 0x3, flags: 0x1},
-	204: {lang: 0x124, script: 0xd4, flags: 0x0},
-	206: {lang: 0x139, script: 0x52, flags: 0x0},
-	207: {lang: 0x316, script: 0x52, flags: 0x0},
-	208: {lang: 0x3b7, script: 0x52, flags: 0x0},
-	209: {lang: 0x15, script: 0x52, flags: 0x0},
-	210: {lang: 0x159, script: 0x52, flags: 0x0},
-	211: {lang: 0x1ad, script: 0x52, flags: 0x0},
-	213: {lang: 0x1ad, script: 0x5, flags: 0x2},
-	215: {lang: 0x139, script: 0x52, flags: 0x0},
-	216: {lang: 0x35e, script: 0x52, flags: 0x0},
-	217: {lang: 0x33e, script: 0x52, flags: 0x0},
-	218: {lang: 0x348, script: 0x20, flags: 0x0},
-	224: {lang: 0x39, script: 0x5, flags: 0x0},
-	225: {lang: 0x139, script: 0x52, flags: 0x0},
-	227: {lang: 0x139, script: 0x52, flags: 0x0},
-	228: {lang: 0x159, script: 0x52, flags: 0x0},
-	229: {lang: 0x47c, script: 0x52, flags: 0x0},
-	230: {lang: 0x14e, script: 0x52, flags: 0x0},
+	204: {lang: 0x127, script: 0xd4, flags: 0x0},
+	206: {lang: 0x13d, script: 0x52, flags: 0x0},
+	207: {lang: 0x31d, script: 0x52, flags: 0x0},
+	208: {lang: 0x3be, script: 0x52, flags: 0x0},
+	209: {lang: 0x16, script: 0x52, flags: 0x0},
+	210: {lang: 0x15d, script: 0x52, flags: 0x0},
+	211: {lang: 0x1b2, script: 0x52, flags: 0x0},
+	213: {lang: 0x1b2, script: 0x5, flags: 0x2},
+	215: {lang: 0x13d, script: 0x52, flags: 0x0},
+	216: {lang: 0x365, script: 0x52, flags: 0x0},
+	217: {lang: 0x345, script: 0x52, flags: 0x0},
+	218: {lang: 0x34f, script: 0x20, flags: 0x0},
+	224: {lang: 0x3a, script: 0x5, flags: 0x0},
+	225: {lang: 0x13d, script: 0x52, flags: 0x0},
+	227: {lang: 0x13d, script: 0x52, flags: 0x0},
+	228: {lang: 0x15d, script: 0x52, flags: 0x0},
+	229: {lang: 0x484, script: 0x52, flags: 0x0},
+	230: {lang: 0x152, script: 0x52, flags: 0x0},
 	231: {lang: 0x3b, script: 0x3, flags: 0x1},
-	232: {lang: 0x3e, script: 0x2, flags: 0x1},
-	233: {lang: 0x159, script: 0x52, flags: 0x0},
-	235: {lang: 0x139, script: 0x52, flags: 0x0},
-	236: {lang: 0x39, script: 0x5, flags: 0x0},
-	237: {lang: 0x3b7, script: 0x52, flags: 0x0},
-	239: {lang: 0x399, script: 0x52, flags: 0x0},
-	240: {lang: 0x18e, script: 0x52, flags: 0x0},
-	242: {lang: 0x39, script: 0x5, flags: 0x0},
-	257: {lang: 0x159, script: 0x52, flags: 0x0},
-	259: {lang: 0x40, script: 0x2, flags: 0x1},
-	260: {lang: 0x428, script: 0x1e, flags: 0x0},
-	261: {lang: 0x42, script: 0x2, flags: 0x1},
-	262: {lang: 0x3dc, script: 0x52, flags: 0x0},
-	263: {lang: 0x39, script: 0x5, flags: 0x0},
-	265: {lang: 0x159, script: 0x52, flags: 0x0},
-	266: {lang: 0x39, script: 0x5, flags: 0x0},
-	267: {lang: 0x44, script: 0x2, flags: 0x1},
-	270: {lang: 0x40c, script: 0x52, flags: 0x0},
-	271: {lang: 0x33e, script: 0x52, flags: 0x0},
-	272: {lang: 0x46, script: 0x2, flags: 0x1},
-	274: {lang: 0x1f1, script: 0x52, flags: 0x0},
-	275: {lang: 0x159, script: 0x52, flags: 0x0},
-	276: {lang: 0x41f, script: 0x52, flags: 0x0},
-	277: {lang: 0x35e, script: 0x52, flags: 0x0},
-	279: {lang: 0x3b7, script: 0x52, flags: 0x0},
-	281: {lang: 0x139, script: 0x52, flags: 0x0},
-	283: {lang: 0x48, script: 0x2, flags: 0x1},
-	287: {lang: 0x159, script: 0x52, flags: 0x0},
-	288: {lang: 0x159, script: 0x52, flags: 0x0},
-	289: {lang: 0x4a, script: 0x2, flags: 0x1},
-	290: {lang: 0x4c, script: 0x3, flags: 0x1},
-	291: {lang: 0x4f, script: 0x2, flags: 0x1},
-	292: {lang: 0x46d, script: 0x52, flags: 0x0},
-	293: {lang: 0x3b7, script: 0x52, flags: 0x0},
-	294: {lang: 0x46c, script: 0x52, flags: 0x0},
-	295: {lang: 0x51, script: 0x2, flags: 0x1},
-	296: {lang: 0x478, script: 0x52, flags: 0x0},
-	298: {lang: 0x53, script: 0x4, flags: 0x1},
-	300: {lang: 0x496, script: 0x52, flags: 0x0},
-	301: {lang: 0x57, script: 0x2, flags: 0x1},
-	302: {lang: 0x43b, script: 0x52, flags: 0x0},
-	303: {lang: 0x59, script: 0x3, flags: 0x1},
-	304: {lang: 0x43b, script: 0x52, flags: 0x0},
-	308: {lang: 0x508, script: 0x37, flags: 0x2},
-	309: {lang: 0x139, script: 0x52, flags: 0x0},
-	310: {lang: 0x4b2, script: 0x52, flags: 0x0},
-	311: {lang: 0x1f1, script: 0x52, flags: 0x0},
-	314: {lang: 0x139, script: 0x52, flags: 0x0},
-	317: {lang: 0x4b9, script: 0x52, flags: 0x0},
-	318: {lang: 0x89, script: 0x52, flags: 0x0},
-	319: {lang: 0x159, script: 0x52, flags: 0x0},
-	321: {lang: 0x411, script: 0x52, flags: 0x0},
-	332: {lang: 0x5c, script: 0x2, flags: 0x1},
-	349: {lang: 0x39, script: 0x5, flags: 0x0},
-	350: {lang: 0x5e, script: 0x2, flags: 0x1},
-	355: {lang: 0x419, script: 0x52, flags: 0x0},
+	232: {lang: 0x3b1, script: 0x52, flags: 0x0},
+	233: {lang: 0x15d, script: 0x52, flags: 0x0},
+	235: {lang: 0x13d, script: 0x52, flags: 0x0},
+	236: {lang: 0x3a, script: 0x5, flags: 0x0},
+	237: {lang: 0x3be, script: 0x52, flags: 0x0},
+	239: {lang: 0x3a0, script: 0x52, flags: 0x0},
+	240: {lang: 0x192, script: 0x52, flags: 0x0},
+	242: {lang: 0x3a, script: 0x5, flags: 0x0},
+	257: {lang: 0x15d, script: 0x52, flags: 0x0},
+	259: {lang: 0x3e, script: 0x2, flags: 0x1},
+	260: {lang: 0x430, script: 0x1e, flags: 0x0},
+	261: {lang: 0x40, script: 0x2, flags: 0x1},
+	262: {lang: 0x3e3, script: 0x52, flags: 0x0},
+	263: {lang: 0x3a, script: 0x5, flags: 0x0},
+	265: {lang: 0x15d, script: 0x52, flags: 0x0},
+	266: {lang: 0x3a, script: 0x5, flags: 0x0},
+	267: {lang: 0x42, script: 0x2, flags: 0x1},
+	270: {lang: 0x414, script: 0x52, flags: 0x0},
+	271: {lang: 0x345, script: 0x52, flags: 0x0},
+	272: {lang: 0x44, script: 0x2, flags: 0x1},
+	274: {lang: 0x1f7, script: 0x52, flags: 0x0},
+	275: {lang: 0x15d, script: 0x52, flags: 0x0},
+	276: {lang: 0x427, script: 0x52, flags: 0x0},
+	277: {lang: 0x365, script: 0x52, flags: 0x0},
+	279: {lang: 0x3be, script: 0x52, flags: 0x0},
+	281: {lang: 0x13d, script: 0x52, flags: 0x0},
+	283: {lang: 0x46, script: 0x2, flags: 0x1},
+	287: {lang: 0x15d, script: 0x52, flags: 0x0},
+	288: {lang: 0x15d, script: 0x52, flags: 0x0},
+	289: {lang: 0x48, script: 0x2, flags: 0x1},
+	290: {lang: 0x4a, script: 0x3, flags: 0x1},
+	291: {lang: 0x4d, script: 0x2, flags: 0x1},
+	292: {lang: 0x475, script: 0x52, flags: 0x0},
+	293: {lang: 0x3be, script: 0x52, flags: 0x0},
+	294: {lang: 0x474, script: 0x52, flags: 0x0},
+	295: {lang: 0x4f, script: 0x2, flags: 0x1},
+	296: {lang: 0x480, script: 0x52, flags: 0x0},
+	298: {lang: 0x51, script: 0x4, flags: 0x1},
+	300: {lang: 0x49e, script: 0x52, flags: 0x0},
+	301: {lang: 0x55, script: 0x2, flags: 0x1},
+	302: {lang: 0x443, script: 0x52, flags: 0x0},
+	303: {lang: 0x57, script: 0x3, flags: 0x1},
+	304: {lang: 0x443, script: 0x52, flags: 0x0},
+	308: {lang: 0x510, script: 0x37, flags: 0x2},
+	309: {lang: 0x13d, script: 0x52, flags: 0x0},
+	310: {lang: 0x4ba, script: 0x52, flags: 0x0},
+	311: {lang: 0x1f7, script: 0x52, flags: 0x0},
+	314: {lang: 0x13d, script: 0x52, flags: 0x0},
+	317: {lang: 0x4c1, script: 0x52, flags: 0x0},
+	318: {lang: 0x8a, script: 0x52, flags: 0x0},
+	319: {lang: 0x15d, script: 0x52, flags: 0x0},
+	321: {lang: 0x419, script: 0x52, flags: 0x0},
+	332: {lang: 0x5a, script: 0x2, flags: 0x1},
+	349: {lang: 0x3a, script: 0x5, flags: 0x0},
+	350: {lang: 0x5c, script: 0x2, flags: 0x1},
+	355: {lang: 0x421, script: 0x52, flags: 0x0},
 }
 
 // likelyRegionList holds lists info associated with likelyRegion.
-// Size: 384 bytes, 96 elements
-var likelyRegionList = [96]likelyLangScript{
-	0:  {lang: 0x143, script: 0x5, flags: 0x0},
-	1:  {lang: 0x46c, script: 0x52, flags: 0x0},
-	2:  {lang: 0x427, script: 0x52, flags: 0x0},
-	3:  {lang: 0x2f6, script: 0x1e, flags: 0x0},
-	4:  {lang: 0x1d0, script: 0x8, flags: 0x0},
-	5:  {lang: 0x26b, script: 0x52, flags: 0x0},
-	6:  {lang: 0xb5, script: 0x52, flags: 0x0},
-	7:  {lang: 0x428, script: 0x1e, flags: 0x0},
-	8:  {lang: 0x129, script: 0xd6, flags: 0x0},
-	9:  {lang: 0x348, script: 0x20, flags: 0x0},
-	10: {lang: 0x51f, script: 0x34, flags: 0x0},
-	11: {lang: 0x4a2, script: 0x5, flags: 0x0},
-	12: {lang: 0x515, script: 0x35, flags: 0x0},
-	13: {lang: 0x519, script: 0x52, flags: 0x0},
-	14: {lang: 0x291, script: 0xd5, flags: 0x0},
-	15: {lang: 0x131, script: 0x2d, flags: 0x0},
-	16: {lang: 0x480, script: 0x52, flags: 0x0},
-	17: {lang: 0x39, script: 0x5, flags: 0x0},
-	18: {lang: 0x159, script: 0x52, flags: 0x0},
-	19: {lang: 0x26, script: 0x27, flags: 0x0},
-	20: {lang: 0x134, script: 0x52, flags: 0x0},
-	21: {lang: 0x261, script: 0x5, flags: 0x2},
-	22: {lang: 0x508, script: 0x37, flags: 0x2},
-	23: {lang: 0x208, script: 0x29, flags: 0x0},
+// Size: 376 bytes, 94 elements
+var likelyRegionList = [94]likelyLangScript{
+	0:  {lang: 0x147, script: 0x5, flags: 0x0},
+	1:  {lang: 0x474, script: 0x52, flags: 0x0},
+	2:  {lang: 0x42f, script: 0x52, flags: 0x0},
+	3:  {lang: 0x2fd, script: 0x1e, flags: 0x0},
+	4:  {lang: 0x1d5, script: 0x8, flags: 0x0},
+	5:  {lang: 0x272, script: 0x52, flags: 0x0},
+	6:  {lang: 0xb7, script: 0x52, flags: 0x0},
+	7:  {lang: 0x430, script: 0x1e, flags: 0x0},
+	8:  {lang: 0x12c, script: 0xd6, flags: 0x0},
+	9:  {lang: 0x34f, script: 0x20, flags: 0x0},
+	10: {lang: 0x527, script: 0x34, flags: 0x0},
+	11: {lang: 0x4aa, script: 0x5, flags: 0x0},
+	12: {lang: 0x51d, script: 0x35, flags: 0x0},
+	13: {lang: 0x521, script: 0x52, flags: 0x0},
+	14: {lang: 0x298, script: 0xd5, flags: 0x0},
+	15: {lang: 0x135, script: 0x2d, flags: 0x0},
+	16: {lang: 0x488, script: 0x52, flags: 0x0},
+	17: {lang: 0x3a, script: 0x5, flags: 0x0},
+	18: {lang: 0x15d, script: 0x52, flags: 0x0},
+	19: {lang: 0x27, script: 0x27, flags: 0x0},
+	20: {lang: 0x138, script: 0x52, flags: 0x0},
+	21: {lang: 0x268, script: 0x5, flags: 0x2},
+	22: {lang: 0x510, script: 0x37, flags: 0x2},
+	23: {lang: 0x20e, script: 0x29, flags: 0x0},
 	24: {lang: 0x5, script: 0x1e, flags: 0x0},
-	25: {lang: 0x26b, script: 0x52, flags: 0x0},
-	26: {lang: 0x131, script: 0x2d, flags: 0x0},
-	27: {lang: 0x2f6, script: 0x1e, flags: 0x0},
-	28: {lang: 0x1da, script: 0x52, flags: 0x0},
-	29: {lang: 0x316, script: 0x5, flags: 0x0},
-	30: {lang: 0x1b7, script: 0x20, flags: 0x0},
-	31: {lang: 0x4aa, script: 0x5, flags: 0x0},
-	32: {lang: 0x22e, script: 0x6b, flags: 0x0},
-	33: {lang: 0x143, script: 0x5, flags: 0x0},
-	34: {lang: 0x46c, script: 0x52, flags: 0x0},
-	35: {lang: 0x242, script: 0x46, flags: 0x0},
-	36: {lang: 0xe4, script: 0x5, flags: 0x0},
-	37: {lang: 0x21e, script: 0xd5, flags: 0x0},
-	38: {lang: 0x39, script: 0x5, flags: 0x0},
-	39: {lang: 0x159, script: 0x52, flags: 0x0},
-	40: {lang: 0x2af, script: 0x4f, flags: 0x0},
-	41: {lang: 0x21e, script: 0xd5, flags: 0x0},
-	42: {lang: 0x39, script: 0x5, flags: 0x0},
-	43: {lang: 0x159, script: 0x52, flags: 0x0},
-	44: {lang: 0x3d3, script: 0x52, flags: 0x0},
-	45: {lang: 0x4a4, script: 0x1e, flags: 0x0},
-	46: {lang: 0x2f6, script: 0x1e, flags: 0x0},
-	47: {lang: 0x427, script: 0x52, flags: 0x0},
-	48: {lang: 0x328, script: 0x6b, flags: 0x0},
-	49: {lang: 0x20b, script: 0x52, flags: 0x0},
-	50: {lang: 0x302, script: 0x1e, flags: 0x0},
-	51: {lang: 0x23a, script: 0x5, flags: 0x0},
-	52: {lang: 0x51f, script: 0x35, flags: 0x0},
-	53: {lang: 0x3b7, script: 0x52, flags: 0x0},
-	54: {lang: 0x39, script: 0x5, flags: 0x0},
-	55: {lang: 0x159, script: 0x52, flags: 0x0},
-	56: {lang: 0x2e4, script: 0x52, flags: 0x0},
-	57: {lang: 0x4aa, script: 0x5, flags: 0x0},
-	58: {lang: 0x87, script: 0x20, flags: 0x0},
-	59: {lang: 0x4aa, script: 0x5, flags: 0x0},
-	60: {lang: 0x4aa, script: 0x5, flags: 0x0},
-	61: {lang: 0xbc, script: 0x20, flags: 0x0},
-	62: {lang: 0x3aa, script: 0x52, flags: 0x0},
-	63: {lang: 0x70, script: 0x1e, flags: 0x0},
-	64: {lang: 0x3d3, script: 0x52, flags: 0x0},
-	65: {lang: 0x7d, script: 0x1e, flags: 0x0},
-	66: {lang: 0x3d9, script: 0x1e, flags: 0x0},
-	67: {lang: 0x25e, script: 0x52, flags: 0x0},
-	68: {lang: 0x43a, script: 0x52, flags: 0x0},
-	69: {lang: 0x508, script: 0x37, flags: 0x0},
-	70: {lang: 0x408, script: 0x52, flags: 0x0},
-	71: {lang: 0x4a4, script: 0x1e, flags: 0x0},
-	72: {lang: 0x39, script: 0x5, flags: 0x0},
-	73: {lang: 0x159, script: 0x52, flags: 0x0},
-	74: {lang: 0x159, script: 0x52, flags: 0x0},
-	75: {lang: 0x34, script: 0x5, flags: 0x0},
-	76: {lang: 0x461, script: 0xd5, flags: 0x0},
-	77: {lang: 0x2e3, script: 0x5, flags: 0x0},
-	78: {lang: 0x306, script: 0x6b, flags: 0x0},
-	79: {lang: 0x45d, script: 0x1e, flags: 0x0},
-	80: {lang: 0x143, script: 0x5, flags: 0x0},
-	81: {lang: 0x39, script: 0x5, flags: 0x0},
-	82: {lang: 0x159, script: 0x52, flags: 0x0},
-	83: {lang: 0x480, script: 0x52, flags: 0x0},
-	84: {lang: 0x57, script: 0x5, flags: 0x0},
-	85: {lang: 0x211, script: 0x1e, flags: 0x0},
-	86: {lang: 0x80, script: 0x2d, flags: 0x0},
-	87: {lang: 0x51f, script: 0x35, flags: 0x0},
-	88: {lang: 0x482, script: 0x52, flags: 0x0},
-	89: {lang: 0x4a4, script: 0x1e, flags: 0x0},
-	90: {lang: 0x508, script: 0x37, flags: 0x0},
-	91: {lang: 0x3aa, script: 0x52, flags: 0x0},
-	92: {lang: 0x427, script: 0x52, flags: 0x0},
-	93: {lang: 0x428, script: 0x1e, flags: 0x0},
-	94: {lang: 0x159, script: 0x52, flags: 0x0},
-	95: {lang: 0x43c, script: 0x5, flags: 0x0},
+	25: {lang: 0x272, script: 0x52, flags: 0x0},
+	26: {lang: 0x135, script: 0x2d, flags: 0x0},
+	27: {lang: 0x2fd, script: 0x1e, flags: 0x0},
+	28: {lang: 0x1df, script: 0x52, flags: 0x0},
+	29: {lang: 0x31d, script: 0x5, flags: 0x0},
+	30: {lang: 0x1bc, script: 0x20, flags: 0x0},
+	31: {lang: 0x4b2, script: 0x5, flags: 0x0},
+	32: {lang: 0x234, script: 0x6b, flags: 0x0},
+	33: {lang: 0x147, script: 0x5, flags: 0x0},
+	34: {lang: 0x474, script: 0x52, flags: 0x0},
+	35: {lang: 0x248, script: 0x46, flags: 0x0},
+	36: {lang: 0xe6, script: 0x5, flags: 0x0},
+	37: {lang: 0x224, script: 0xd5, flags: 0x0},
+	38: {lang: 0x3a, script: 0x5, flags: 0x0},
+	39: {lang: 0x15d, script: 0x52, flags: 0x0},
+	40: {lang: 0x2b6, script: 0x4f, flags: 0x0},
+	41: {lang: 0x224, script: 0xd5, flags: 0x0},
+	42: {lang: 0x3a, script: 0x5, flags: 0x0},
+	43: {lang: 0x15d, script: 0x52, flags: 0x0},
+	44: {lang: 0x3da, script: 0x52, flags: 0x0},
+	45: {lang: 0x4ac, script: 0x1e, flags: 0x0},
+	46: {lang: 0x2fd, script: 0x1e, flags: 0x0},
+	47: {lang: 0x42f, script: 0x52, flags: 0x0},
+	48: {lang: 0x32f, script: 0x6b, flags: 0x0},
+	49: {lang: 0x211, script: 0x52, flags: 0x0},
+	50: {lang: 0x309, script: 0x1e, flags: 0x0},
+	51: {lang: 0x240, script: 0x5, flags: 0x0},
+	52: {lang: 0x527, script: 0x35, flags: 0x0},
+	53: {lang: 0x3be, script: 0x52, flags: 0x0},
+	54: {lang: 0x3a, script: 0x5, flags: 0x0},
+	55: {lang: 0x15d, script: 0x52, flags: 0x0},
+	56: {lang: 0x2eb, script: 0x52, flags: 0x0},
+	57: {lang: 0x4b2, script: 0x5, flags: 0x0},
+	58: {lang: 0x88, script: 0x20, flags: 0x0},
+	59: {lang: 0x4b2, script: 0x5, flags: 0x0},
+	60: {lang: 0x4b2, script: 0x5, flags: 0x0},
+	61: {lang: 0xbe, script: 0x20, flags: 0x0},
+	62: {lang: 0x3da, script: 0x52, flags: 0x0},
+	63: {lang: 0x7e, script: 0x1e, flags: 0x0},
+	64: {lang: 0x3e0, script: 0x1e, flags: 0x0},
+	65: {lang: 0x265, script: 0x52, flags: 0x0},
+	66: {lang: 0x442, script: 0x52, flags: 0x0},
+	67: {lang: 0x510, script: 0x37, flags: 0x0},
+	68: {lang: 0x410, script: 0x52, flags: 0x0},
+	69: {lang: 0x4ac, script: 0x1e, flags: 0x0},
+	70: {lang: 0x3a, script: 0x5, flags: 0x0},
+	71: {lang: 0x15d, script: 0x52, flags: 0x0},
+	72: {lang: 0x15d, script: 0x52, flags: 0x0},
+	73: {lang: 0x35, script: 0x5, flags: 0x0},
+	74: {lang: 0x469, script: 0xd5, flags: 0x0},
+	75: {lang: 0x2ea, script: 0x5, flags: 0x0},
+	76: {lang: 0x30d, script: 0x6b, flags: 0x0},
+	77: {lang: 0x465, script: 0x1e, flags: 0x0},
+	78: {lang: 0x147, script: 0x5, flags: 0x0},
+	79: {lang: 0x3a, script: 0x5, flags: 0x0},
+	80: {lang: 0x15d, script: 0x52, flags: 0x0},
+	81: {lang: 0x488, script: 0x52, flags: 0x0},
+	82: {lang: 0x58, script: 0x5, flags: 0x0},
+	83: {lang: 0x217, script: 0x1e, flags: 0x0},
+	84: {lang: 0x81, script: 0x2d, flags: 0x0},
+	85: {lang: 0x527, script: 0x35, flags: 0x0},
+	86: {lang: 0x48a, script: 0x52, flags: 0x0},
+	87: {lang: 0x4ac, script: 0x1e, flags: 0x0},
+	88: {lang: 0x510, script: 0x37, flags: 0x0},
+	89: {lang: 0x3b1, script: 0x52, flags: 0x0},
+	90: {lang: 0x42f, script: 0x52, flags: 0x0},
+	91: {lang: 0x430, script: 0x1e, flags: 0x0},
+	92: {lang: 0x15d, script: 0x52, flags: 0x0},
+	93: {lang: 0x444, script: 0x5, flags: 0x0},
 }
 
 type likelyTag struct {
@@ -3230,186 +3236,287 @@ type likelyTag struct {
 
 // Size: 192 bytes, 32 elements
 var likelyRegionGroup = [32]likelyTag{
-	1:  {lang: 0x134, region: 0xd5, script: 0x52},
-	2:  {lang: 0x134, region: 0x134, script: 0x52},
-	3:  {lang: 0x3b7, region: 0x40, script: 0x52},
-	4:  {lang: 0x134, region: 0x2e, script: 0x52},
-	5:  {lang: 0x134, region: 0xd5, script: 0x52},
-	6:  {lang: 0x139, region: 0xce, script: 0x52},
-	7:  {lang: 0x43b, region: 0x12e, script: 0x52},
-	8:  {lang: 0x39, region: 0x6a, script: 0x5},
-	9:  {lang: 0x43b, region: 0x4a, script: 0x52},
-	10: {lang: 0x134, region: 0x160, script: 0x52},
-	11: {lang: 0x134, region: 0x134, script: 0x52},
-	12: {lang: 0x134, region: 0x134, script: 0x52},
-	13: {lang: 0x139, region: 0x58, script: 0x52},
-	14: {lang: 0x51f, region: 0x52, script: 0x34},
-	15: {lang: 0x1b7, region: 0x98, script: 0x20},
-	16: {lang: 0x1da, region: 0x94, script: 0x52},
-	17: {lang: 0x1f1, region: 0x9d, script: 0x52},
-	18: {lang: 0x134, region: 0x2e, script: 0x52},
-	19: {lang: 0x134, region: 0xe5, script: 0x52},
-	20: {lang: 0x134, region: 0x89, script: 0x52},
-	21: {lang: 0x411, region: 0x141, script: 0x52},
-	22: {lang: 0x51f, region: 0x52, script: 0x34},
-	23: {lang: 0x4b2, region: 0x136, script: 0x52},
-	24: {lang: 0x39, region: 0x107, script: 0x5},
-	25: {lang: 0x3d9, region: 0x105, script: 0x1e},
-	26: {lang: 0x3d9, region: 0x105, script: 0x1e},
-	27: {lang: 0x134, region: 0x7a, script: 0x52},
-	28: {lang: 0x109, region: 0x5f, script: 0x52},
-	29: {lang: 0x139, region: 0x1e, script: 0x52},
-	30: {lang: 0x134, region: 0x99, script: 0x52},
-	31: {lang: 0x134, region: 0x7a, script: 0x52},
+	1:  {lang: 0x138, region: 0xd5, script: 0x52},
+	2:  {lang: 0x138, region: 0x134, script: 0x52},
+	3:  {lang: 0x3be, region: 0x40, script: 0x52},
+	4:  {lang: 0x138, region: 0x2e, script: 0x52},
+	5:  {lang: 0x138, region: 0xd5, script: 0x52},
+	6:  {lang: 0x13d, region: 0xce, script: 0x52},
+	7:  {lang: 0x443, region: 0x12e, script: 0x52},
+	8:  {lang: 0x3a, region: 0x6a, script: 0x5},
+	9:  {lang: 0x443, region: 0x4a, script: 0x52},
+	10: {lang: 0x138, region: 0x160, script: 0x52},
+	11: {lang: 0x138, region: 0x134, script: 0x52},
+	12: {lang: 0x138, region: 0x134, script: 0x52},
+	13: {lang: 0x13d, region: 0x58, script: 0x52},
+	14: {lang: 0x527, region: 0x52, script: 0x34},
+	15: {lang: 0x1bc, region: 0x98, script: 0x20},
+	16: {lang: 0x1df, region: 0x94, script: 0x52},
+	17: {lang: 0x1f7, region: 0x9d, script: 0x52},
+	18: {lang: 0x138, region: 0x2e, script: 0x52},
+	19: {lang: 0x138, region: 0xe5, script: 0x52},
+	20: {lang: 0x138, region: 0x89, script: 0x52},
+	21: {lang: 0x419, region: 0x141, script: 0x52},
+	22: {lang: 0x527, region: 0x52, script: 0x34},
+	23: {lang: 0x4ba, region: 0x136, script: 0x52},
+	24: {lang: 0x3a, region: 0x107, script: 0x5},
+	25: {lang: 0x3e0, region: 0x105, script: 0x1e},
+	26: {lang: 0x3e0, region: 0x105, script: 0x1e},
+	27: {lang: 0x138, region: 0x7a, script: 0x52},
+	28: {lang: 0x10c, region: 0x5f, script: 0x52},
+	29: {lang: 0x13d, region: 0x1e, script: 0x52},
+	30: {lang: 0x138, region: 0x99, script: 0x52},
+	31: {lang: 0x138, region: 0x7a, script: 0x52},
+}
+
+// Size: 357 bytes, 357 elements
+var regionToGroups = [357]uint8{
+	// Entry 0 - 3F
+	0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x04,
+	0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00,
+	0x04, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x04,
+	0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x04, 0x04,
+	// Entry 40 - 7F
+	0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+	0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x04, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00,
+	0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x08, 0x00,
+	0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00,
+	// Entry 80 - BF
+	0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+	0x04, 0x01, 0x00, 0x04, 0x02, 0x00, 0x04, 0x00,
+	0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
+	0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x08, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01,
+	// Entry C0 - FF
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x04,
+	0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
+	0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	// Entry 100 - 13F
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
+	0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
+	0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x01, 0x00, 0x05, 0x04, 0x00, 0x00,
+	0x04, 0x00, 0x04, 0x04, 0x05, 0x00, 0x00, 0x00,
+	// Entry 140 - 17F
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+	0x00, 0x00, 0x00, 0x00, 0x00,
 }
 
 type mutualIntelligibility struct {
-	want   uint16
-	have   uint16
-	conf   uint8
-	oneway bool
+	want     uint16
+	have     uint16
+	distance uint8
+	oneway   bool
 }
 
 type scriptIntelligibility struct {
-	lang uint16
-	want uint8
-	have uint8
-	conf uint8
+	wantLang   uint16
+	haveLang   uint16
+	wantScript uint8
+	haveScript uint8
+	distance   uint8
+}
+
+type regionIntelligibility struct {
+	lang     uint16
+	script   uint8
+	group    uint8
+	distance uint8
 }
 
 // matchLang holds pairs of langIDs of base languages that are typically
 // mutually intelligible. Each pair is associated with a confidence and
 // whether the intelligibility goes one or both ways.
-// Size: 708 bytes, 118 elements
-var matchLang = [118]mutualIntelligibility{
-	0:   {want: 0x366, have: 0x33e, conf: 0x2, oneway: false},
-	1:   {want: 0x26b, have: 0xe7, conf: 0x2, oneway: false},
-	2:   {want: 0x1ca, have: 0xb5, conf: 0x2, oneway: false},
-	3:   {want: 0x3fd, have: 0xb5, conf: 0x2, oneway: false},
-	4:   {want: 0x428, have: 0xb5, conf: 0x2, oneway: false},
-	5:   {want: 0x3fd, have: 0x1ca, conf: 0x2, oneway: false},
-	6:   {want: 0x428, have: 0x1ca, conf: 0x2, oneway: false},
-	7:   {want: 0x3fd, have: 0x428, conf: 0x2, oneway: false},
-	8:   {want: 0x430, have: 0x1, conf: 0x2, oneway: false},
-	9:   {want: 0x19c, have: 0x109, conf: 0x2, oneway: true},
-	10:  {want: 0x28c, have: 0x109, conf: 0x2, oneway: true},
-	11:  {want: 0xfd, have: 0x366, conf: 0x2, oneway: false},
-	12:  {want: 0xfd, have: 0x33e, conf: 0x2, oneway: false},
-	13:  {want: 0xe7, have: 0x26b, conf: 0x2, oneway: false},
-	14:  {want: 0x5, have: 0x3d9, conf: 0x2, oneway: true},
-	15:  {want: 0xc, have: 0x134, conf: 0x2, oneway: true},
-	16:  {want: 0x15, have: 0x35e, conf: 0x2, oneway: true},
-	17:  {want: 0x20, have: 0x134, conf: 0x2, oneway: true},
-	18:  {want: 0x55, have: 0x139, conf: 0x2, oneway: true},
-	19:  {want: 0x57, have: 0x3d9, conf: 0x2, oneway: true},
-	20:  {want: 0x70, have: 0x3d9, conf: 0x2, oneway: true},
-	21:  {want: 0x74, have: 0x134, conf: 0x2, oneway: true},
-	22:  {want: 0x81, have: 0x1b7, conf: 0x2, oneway: true},
-	23:  {want: 0xa3, have: 0x134, conf: 0x2, oneway: true},
-	24:  {want: 0xb0, have: 0x159, conf: 0x2, oneway: true},
-	25:  {want: 0xdb, have: 0x14e, conf: 0x2, oneway: true},
-	26:  {want: 0xe3, have: 0x134, conf: 0x2, oneway: true},
-	27:  {want: 0xe7, have: 0x39, conf: 0x2, oneway: true},
-	28:  {want: 0xed, have: 0x159, conf: 0x2, oneway: true},
-	29:  {want: 0xf5, have: 0x159, conf: 0x2, oneway: true},
-	30:  {want: 0xfc, have: 0x134, conf: 0x2, oneway: true},
-	31:  {want: 0x12c, have: 0x134, conf: 0x2, oneway: true},
-	32:  {want: 0x137, have: 0x134, conf: 0x2, oneway: true},
-	33:  {want: 0x13b, have: 0x14c, conf: 0x2, oneway: true},
-	34:  {want: 0x140, have: 0x139, conf: 0x2, oneway: true},
-	35:  {want: 0x153, have: 0xfd, conf: 0x2, oneway: true},
-	36:  {want: 0x168, have: 0x35e, conf: 0x2, oneway: true},
-	37:  {want: 0x169, have: 0x134, conf: 0x2, oneway: true},
-	38:  {want: 0x16a, have: 0x134, conf: 0x2, oneway: true},
-	39:  {want: 0x178, have: 0x134, conf: 0x2, oneway: true},
-	40:  {want: 0x18a, have: 0x139, conf: 0x2, oneway: true},
-	41:  {want: 0x18e, have: 0x139, conf: 0x2, oneway: true},
-	42:  {want: 0x19d, have: 0x1b7, conf: 0x2, oneway: true},
-	43:  {want: 0x1ad, have: 0x134, conf: 0x2, oneway: true},
-	44:  {want: 0x1b1, have: 0x134, conf: 0x2, oneway: true},
-	45:  {want: 0x1cd, have: 0x159, conf: 0x2, oneway: true},
-	46:  {want: 0x1d0, have: 0x3d9, conf: 0x2, oneway: true},
-	47:  {want: 0x1d2, have: 0x134, conf: 0x2, oneway: true},
-	48:  {want: 0x1df, have: 0x134, conf: 0x2, oneway: true},
-	49:  {want: 0x1f0, have: 0x134, conf: 0x2, oneway: true},
-	50:  {want: 0x206, have: 0x1da, conf: 0x2, oneway: true},
-	51:  {want: 0x208, have: 0x134, conf: 0x2, oneway: true},
-	52:  {want: 0x225, have: 0x159, conf: 0x2, oneway: true},
-	53:  {want: 0x23a, have: 0x3d9, conf: 0x2, oneway: true},
-	54:  {want: 0x242, have: 0x134, conf: 0x2, oneway: true},
-	55:  {want: 0x249, have: 0x134, conf: 0x2, oneway: true},
-	56:  {want: 0x25c, have: 0x134, conf: 0x2, oneway: true},
-	57:  {want: 0x26b, have: 0x480, conf: 0x2, oneway: true},
-	58:  {want: 0x281, have: 0x3d9, conf: 0x2, oneway: true},
-	59:  {want: 0x285, have: 0x1f1, conf: 0x2, oneway: true},
-	60:  {want: 0x29a, have: 0x134, conf: 0x2, oneway: true},
-	61:  {want: 0x2ac, have: 0x159, conf: 0x2, oneway: true},
-	62:  {want: 0x2af, have: 0x134, conf: 0x2, oneway: true},
-	63:  {want: 0x2b5, have: 0x134, conf: 0x2, oneway: true},
-	64:  {want: 0x2ba, have: 0x159, conf: 0x2, oneway: true},
-	65:  {want: 0x2e4, have: 0x134, conf: 0x2, oneway: true},
-	66:  {want: 0x2e8, have: 0x159, conf: 0x2, oneway: true},
-	67:  {want: 0x2f1, have: 0x134, conf: 0x2, oneway: true},
-	68:  {want: 0x2f6, have: 0x7d, conf: 0x2, oneway: true},
-	69:  {want: 0x2fb, have: 0x134, conf: 0x2, oneway: true},
-	70:  {want: 0x302, have: 0x3d9, conf: 0x2, oneway: true},
-	71:  {want: 0x312, have: 0x1b7, conf: 0x2, oneway: true},
-	72:  {want: 0x316, have: 0x1da, conf: 0x2, oneway: true},
-	73:  {want: 0x317, have: 0x134, conf: 0x2, oneway: true},
-	74:  {want: 0x328, have: 0x134, conf: 0x2, oneway: true},
-	75:  {want: 0x348, have: 0x134, conf: 0x2, oneway: true},
-	76:  {want: 0x361, have: 0x33e, conf: 0x2, oneway: false},
-	77:  {want: 0x361, have: 0x366, conf: 0x2, oneway: true},
-	78:  {want: 0x371, have: 0x134, conf: 0x2, oneway: true},
-	79:  {want: 0x37e, have: 0x134, conf: 0x2, oneway: true},
-	80:  {want: 0x380, have: 0x134, conf: 0x2, oneway: true},
-	81:  {want: 0x382, have: 0x159, conf: 0x2, oneway: true},
-	82:  {want: 0x387, have: 0x134, conf: 0x2, oneway: true},
-	83:  {want: 0x38c, have: 0x134, conf: 0x2, oneway: true},
-	84:  {want: 0x394, have: 0x134, conf: 0x2, oneway: true},
-	85:  {want: 0x39c, have: 0x134, conf: 0x2, oneway: true},
-	86:  {want: 0x3b5, have: 0x134, conf: 0x2, oneway: true},
-	87:  {want: 0x3bb, have: 0x139, conf: 0x2, oneway: true},
-	88:  {want: 0x3cb, have: 0x109, conf: 0x2, oneway: true},
-	89:  {want: 0x3d0, have: 0x134, conf: 0x2, oneway: true},
-	90:  {want: 0x3dc, have: 0x159, conf: 0x2, oneway: true},
-	91:  {want: 0x3e0, have: 0x1b7, conf: 0x2, oneway: true},
-	92:  {want: 0x3f0, have: 0x134, conf: 0x2, oneway: true},
-	93:  {want: 0x402, have: 0x134, conf: 0x2, oneway: true},
-	94:  {want: 0x419, have: 0x134, conf: 0x2, oneway: true},
-	95:  {want: 0x41f, have: 0x134, conf: 0x2, oneway: true},
-	96:  {want: 0x427, have: 0x134, conf: 0x2, oneway: true},
-	97:  {want: 0x431, have: 0x134, conf: 0x2, oneway: true},
-	98:  {want: 0x434, have: 0x1da, conf: 0x2, oneway: true},
-	99:  {want: 0x43b, have: 0x134, conf: 0x2, oneway: true},
-	100: {want: 0x446, have: 0x134, conf: 0x2, oneway: true},
-	101: {want: 0x457, have: 0x134, conf: 0x2, oneway: true},
-	102: {want: 0x45d, have: 0x3d9, conf: 0x2, oneway: true},
-	103: {want: 0x465, have: 0x134, conf: 0x2, oneway: true},
-	104: {want: 0x46c, have: 0x3d9, conf: 0x2, oneway: true},
-	105: {want: 0x3878, have: 0x134, conf: 0x2, oneway: true},
-	106: {want: 0x476, have: 0x134, conf: 0x2, oneway: true},
-	107: {want: 0x478, have: 0x134, conf: 0x2, oneway: true},
-	108: {want: 0x48a, have: 0x3d9, conf: 0x2, oneway: true},
-	109: {want: 0x493, have: 0x134, conf: 0x2, oneway: true},
-	110: {want: 0x4a2, have: 0x51f, conf: 0x2, oneway: true},
-	111: {want: 0x4aa, have: 0x134, conf: 0x2, oneway: true},
-	112: {want: 0x4b2, have: 0x3d9, conf: 0x2, oneway: true},
-	113: {want: 0x4db, have: 0x159, conf: 0x2, oneway: true},
-	114: {want: 0x4e8, have: 0x134, conf: 0x2, oneway: true},
-	115: {want: 0x508, have: 0x134, conf: 0x2, oneway: true},
-	116: {want: 0x50e, have: 0x134, conf: 0x2, oneway: true},
-	117: {want: 0x524, have: 0x134, conf: 0x2, oneway: true},
+// Size: 690 bytes, 115 elements
+var matchLang = [115]mutualIntelligibility{
+	0:   {want: 0x1cf, have: 0xb7, distance: 0x4, oneway: false},
+	1:   {want: 0x405, have: 0xb7, distance: 0x4, oneway: false},
+	2:   {want: 0x405, have: 0x1cf, distance: 0x4, oneway: false},
+	3:   {want: 0x405, have: 0x430, distance: 0x4, oneway: false},
+	4:   {want: 0x438, have: 0x1, distance: 0x4, oneway: false},
+	5:   {want: 0x1a1, have: 0x10c, distance: 0x4, oneway: true},
+	6:   {want: 0x293, have: 0x10c, distance: 0x4, oneway: true},
+	7:   {want: 0x430, have: 0x1cf, distance: 0x5, oneway: false},
+	8:   {want: 0x430, have: 0xb7, distance: 0x5, oneway: false},
+	9:   {want: 0x100, have: 0x36d, distance: 0x8, oneway: false},
+	10:  {want: 0x100, have: 0x345, distance: 0x8, oneway: false},
+	11:  {want: 0x5, have: 0x3e0, distance: 0xa, oneway: true},
+	12:  {want: 0xd, have: 0x138, distance: 0xa, oneway: true},
+	13:  {want: 0x16, have: 0x365, distance: 0xa, oneway: true},
+	14:  {want: 0x21, have: 0x138, distance: 0xa, oneway: true},
+	15:  {want: 0x56, have: 0x13d, distance: 0xa, oneway: true},
+	16:  {want: 0x58, have: 0x3e0, distance: 0xa, oneway: true},
+	17:  {want: 0x71, have: 0x3e0, distance: 0xa, oneway: true},
+	18:  {want: 0x75, have: 0x138, distance: 0xa, oneway: true},
+	19:  {want: 0x82, have: 0x1bc, distance: 0xa, oneway: true},
+	20:  {want: 0xa5, have: 0x138, distance: 0xa, oneway: true},
+	21:  {want: 0xb2, have: 0x15d, distance: 0xa, oneway: true},
+	22:  {want: 0xdd, have: 0x152, distance: 0xa, oneway: true},
+	23:  {want: 0xe5, have: 0x138, distance: 0xa, oneway: true},
+	24:  {want: 0xe9, have: 0x3a, distance: 0xa, oneway: true},
+	25:  {want: 0xef, have: 0x15d, distance: 0xa, oneway: true},
+	26:  {want: 0xf8, have: 0x15d, distance: 0xa, oneway: true},
+	27:  {want: 0xff, have: 0x138, distance: 0xa, oneway: true},
+	28:  {want: 0x12f, have: 0x138, distance: 0xa, oneway: true},
+	29:  {want: 0x13b, have: 0x138, distance: 0xa, oneway: true},
+	30:  {want: 0x13f, have: 0x150, distance: 0xa, oneway: true},
+	31:  {want: 0x144, have: 0x13d, distance: 0xa, oneway: true},
+	32:  {want: 0x157, have: 0x100, distance: 0xa, oneway: true},
+	33:  {want: 0x16c, have: 0x365, distance: 0xa, oneway: true},
+	34:  {want: 0x16d, have: 0x138, distance: 0xa, oneway: true},
+	35:  {want: 0x16e, have: 0x138, distance: 0xa, oneway: true},
+	36:  {want: 0x17c, have: 0x138, distance: 0xa, oneway: true},
+	37:  {want: 0x18e, have: 0x13d, distance: 0xa, oneway: true},
+	38:  {want: 0x192, have: 0x13d, distance: 0xa, oneway: true},
+	39:  {want: 0x1a2, have: 0x1bc, distance: 0xa, oneway: true},
+	40:  {want: 0x1b2, have: 0x138, distance: 0xa, oneway: true},
+	41:  {want: 0x1b6, have: 0x138, distance: 0xa, oneway: true},
+	42:  {want: 0x1d2, have: 0x15d, distance: 0xa, oneway: true},
+	43:  {want: 0x1d5, have: 0x3e0, distance: 0xa, oneway: true},
+	44:  {want: 0x1d7, have: 0x138, distance: 0xa, oneway: true},
+	45:  {want: 0x1e5, have: 0x138, distance: 0xa, oneway: true},
+	46:  {want: 0x1f6, have: 0x138, distance: 0xa, oneway: true},
+	47:  {want: 0x20c, have: 0x1df, distance: 0xa, oneway: true},
+	48:  {want: 0x20e, have: 0x138, distance: 0xa, oneway: true},
+	49:  {want: 0x22b, have: 0x15d, distance: 0xa, oneway: true},
+	50:  {want: 0x240, have: 0x3e0, distance: 0xa, oneway: true},
+	51:  {want: 0x248, have: 0x138, distance: 0xa, oneway: true},
+	52:  {want: 0x24f, have: 0x138, distance: 0xa, oneway: true},
+	53:  {want: 0x263, have: 0x138, distance: 0xa, oneway: true},
+	54:  {want: 0x272, have: 0x488, distance: 0xa, oneway: true},
+	55:  {want: 0x288, have: 0x3e0, distance: 0xa, oneway: true},
+	56:  {want: 0x28c, have: 0x1f7, distance: 0xa, oneway: true},
+	57:  {want: 0x2a1, have: 0x138, distance: 0xa, oneway: true},
+	58:  {want: 0x2b3, have: 0x15d, distance: 0xa, oneway: true},
+	59:  {want: 0x2b6, have: 0x138, distance: 0xa, oneway: true},
+	60:  {want: 0x2bc, have: 0x138, distance: 0xa, oneway: true},
+	61:  {want: 0x2c1, have: 0x15d, distance: 0xa, oneway: true},
+	62:  {want: 0x2eb, have: 0x138, distance: 0xa, oneway: true},
+	63:  {want: 0x2ef, have: 0x15d, distance: 0xa, oneway: true},
+	64:  {want: 0x2f8, have: 0x138, distance: 0xa, oneway: true},
+	65:  {want: 0x2fd, have: 0x7e, distance: 0xa, oneway: true},
+	66:  {want: 0x302, have: 0x138, distance: 0xa, oneway: true},
+	67:  {want: 0x309, have: 0x3e0, distance: 0xa, oneway: true},
+	68:  {want: 0x319, have: 0x1bc, distance: 0xa, oneway: true},
+	69:  {want: 0x31d, have: 0x1df, distance: 0xa, oneway: true},
+	70:  {want: 0x31e, have: 0x138, distance: 0xa, oneway: true},
+	71:  {want: 0x32f, have: 0x138, distance: 0xa, oneway: true},
+	72:  {want: 0x34f, have: 0x138, distance: 0xa, oneway: true},
+	73:  {want: 0x368, have: 0x345, distance: 0xa, oneway: false},
+	74:  {want: 0x368, have: 0x36d, distance: 0xa, oneway: true},
+	75:  {want: 0x378, have: 0x138, distance: 0xa, oneway: true},
+	76:  {want: 0x385, have: 0x138, distance: 0xa, oneway: true},
+	77:  {want: 0x387, have: 0x138, distance: 0xa, oneway: true},
+	78:  {want: 0x389, have: 0x15d, distance: 0xa, oneway: true},
+	79:  {want: 0x38e, have: 0x138, distance: 0xa, oneway: true},
+	80:  {want: 0x393, have: 0x138, distance: 0xa, oneway: true},
+	81:  {want: 0x39b, have: 0x138, distance: 0xa, oneway: true},
+	82:  {want: 0x3a3, have: 0x138, distance: 0xa, oneway: true},
+	83:  {want: 0x3bc, have: 0x138, distance: 0xa, oneway: true},
+	84:  {want: 0x3c2, have: 0x13d, distance: 0xa, oneway: true},
+	85:  {want: 0x3d2, have: 0x10c, distance: 0xa, oneway: true},
+	86:  {want: 0x3d7, have: 0x138, distance: 0xa, oneway: true},
+	87:  {want: 0x3e3, have: 0x15d, distance: 0xa, oneway: true},
+	88:  {want: 0x3e7, have: 0x1bc, distance: 0xa, oneway: true},
+	89:  {want: 0x3f8, have: 0x138, distance: 0xa, oneway: true},
+	90:  {want: 0x40a, have: 0x138, distance: 0xa, oneway: true},
+	91:  {want: 0x421, have: 0x138, distance: 0xa, oneway: true},
+	92:  {want: 0x427, have: 0x138, distance: 0xa, oneway: true},
+	93:  {want: 0x42f, have: 0x138, distance: 0xa, oneway: true},
+	94:  {want: 0x439, have: 0x138, distance: 0xa, oneway: true},
+	95:  {want: 0x43c, have: 0x1df, distance: 0xa, oneway: true},
+	96:  {want: 0x443, have: 0x138, distance: 0xa, oneway: true},
+	97:  {want: 0x44e, have: 0x138, distance: 0xa, oneway: true},
+	98:  {want: 0x45f, have: 0x138, distance: 0xa, oneway: true},
+	99:  {want: 0x465, have: 0x3e0, distance: 0xa, oneway: true},
+	100: {want: 0x46d, have: 0x138, distance: 0xa, oneway: true},
+	101: {want: 0x474, have: 0x3e0, distance: 0xa, oneway: true},
+	102: {want: 0x3880, have: 0x138, distance: 0xa, oneway: true},
+	103: {want: 0x47e, have: 0x138, distance: 0xa, oneway: true},
+	104: {want: 0x480, have: 0x138, distance: 0xa, oneway: true},
+	105: {want: 0x492, have: 0x3e0, distance: 0xa, oneway: true},
+	106: {want: 0x49b, have: 0x138, distance: 0xa, oneway: true},
+	107: {want: 0x4aa, have: 0x527, distance: 0xa, oneway: true},
+	108: {want: 0x4b2, have: 0x138, distance: 0xa, oneway: true},
+	109: {want: 0x4ba, have: 0x3e0, distance: 0xa, oneway: true},
+	110: {want: 0x4e3, have: 0x15d, distance: 0xa, oneway: true},
+	111: {want: 0x4f0, have: 0x138, distance: 0xa, oneway: true},
+	112: {want: 0x510, have: 0x138, distance: 0xa, oneway: true},
+	113: {want: 0x516, have: 0x138, distance: 0xa, oneway: true},
+	114: {want: 0x52c, have: 0x138, distance: 0xa, oneway: true},
 }
 
 // matchScript holds pairs of scriptIDs where readers of one script
 // can typically also read the other. Each is associated with a confidence.
-// Size: 24 bytes, 4 elements
-var matchScript = [4]scriptIntelligibility{
-	0: {lang: 0x428, want: 0x52, have: 0x1e, conf: 0x2},
-	1: {lang: 0x428, want: 0x1e, have: 0x52, conf: 0x2},
-	2: {lang: 0x0, want: 0x34, have: 0x35, conf: 0x1},
-	3: {lang: 0x0, want: 0x35, have: 0x34, conf: 0x1},
+// Size: 208 bytes, 26 elements
+var matchScript = [26]scriptIntelligibility{
+	0:  {wantLang: 0x430, haveLang: 0x430, wantScript: 0x52, haveScript: 0x1e, distance: 0x5},
+	1:  {wantLang: 0x430, haveLang: 0x430, wantScript: 0x1e, haveScript: 0x52, distance: 0x5},
+	2:  {wantLang: 0x58, haveLang: 0x3e0, wantScript: 0x52, haveScript: 0x1e, distance: 0xa},
+	3:  {wantLang: 0xa5, haveLang: 0x138, wantScript: 0xe, haveScript: 0x52, distance: 0xa},
+	4:  {wantLang: 0x1d5, haveLang: 0x3e0, wantScript: 0x8, haveScript: 0x1e, distance: 0xa},
+	5:  {wantLang: 0x20e, haveLang: 0x138, wantScript: 0x29, haveScript: 0x52, distance: 0xa},
+	6:  {wantLang: 0x248, haveLang: 0x138, wantScript: 0x46, haveScript: 0x52, distance: 0xa},
+	7:  {wantLang: 0x24f, haveLang: 0x138, wantScript: 0x4a, haveScript: 0x52, distance: 0xa},
+	8:  {wantLang: 0x2b6, haveLang: 0x138, wantScript: 0x4f, haveScript: 0x52, distance: 0xa},
+	9:  {wantLang: 0x302, haveLang: 0x138, wantScript: 0x64, haveScript: 0x52, distance: 0xa},
+	10: {wantLang: 0x32f, haveLang: 0x138, wantScript: 0x6b, haveScript: 0x52, distance: 0xa},
+	11: {wantLang: 0x34f, haveLang: 0x138, wantScript: 0x20, haveScript: 0x52, distance: 0xa},
+	12: {wantLang: 0x393, haveLang: 0x138, wantScript: 0x75, haveScript: 0x52, distance: 0xa},
+	13: {wantLang: 0x39b, haveLang: 0x138, wantScript: 0x2f, haveScript: 0x52, distance: 0xa},
+	14: {wantLang: 0x3bc, haveLang: 0x138, wantScript: 0x5, haveScript: 0x52, distance: 0xa},
+	15: {wantLang: 0x3f8, haveLang: 0x138, wantScript: 0x5, haveScript: 0x52, distance: 0xa},
+	16: {wantLang: 0x40a, haveLang: 0x138, wantScript: 0xc1, haveScript: 0x52, distance: 0xa},
+	17: {wantLang: 0x44e, haveLang: 0x138, wantScript: 0xcd, haveScript: 0x52, distance: 0xa},
+	18: {wantLang: 0x45f, haveLang: 0x138, wantScript: 0xd0, haveScript: 0x52, distance: 0xa},
+	19: {wantLang: 0x46d, haveLang: 0x138, wantScript: 0x27, haveScript: 0x52, distance: 0xa},
+	20: {wantLang: 0x474, haveLang: 0x3e0, wantScript: 0x52, haveScript: 0x1e, distance: 0xa},
+	21: {wantLang: 0x4b2, haveLang: 0x138, wantScript: 0x5, haveScript: 0x52, distance: 0xa},
+	22: {wantLang: 0x4ba, haveLang: 0x3e0, wantScript: 0x52, haveScript: 0x1e, distance: 0xa},
+	23: {wantLang: 0x510, haveLang: 0x138, wantScript: 0x37, haveScript: 0x52, distance: 0xa},
+	24: {wantLang: 0x527, haveLang: 0x527, wantScript: 0x34, haveScript: 0x35, distance: 0xf},
+	25: {wantLang: 0x527, haveLang: 0x527, wantScript: 0x35, haveScript: 0x34, distance: 0x13},
+}
+
+// Size: 90 bytes, 15 elements
+var matchRegion = [15]regionIntelligibility{
+	0:  {lang: 0x3a, script: 0x0, group: 0x4, distance: 0x4},
+	1:  {lang: 0x3a, script: 0x0, group: 0x84, distance: 0x4},
+	2:  {lang: 0x138, script: 0x0, group: 0x1, distance: 0x4},
+	3:  {lang: 0x138, script: 0x0, group: 0x81, distance: 0x4},
+	4:  {lang: 0x13d, script: 0x0, group: 0x3, distance: 0x4},
+	5:  {lang: 0x13d, script: 0x0, group: 0x83, distance: 0x4},
+	6:  {lang: 0x3be, script: 0x0, group: 0x3, distance: 0x4},
+	7:  {lang: 0x3be, script: 0x0, group: 0x83, distance: 0x4},
+	8:  {lang: 0x527, script: 0x35, group: 0x2, distance: 0x4},
+	9:  {lang: 0x527, script: 0x35, group: 0x82, distance: 0x4},
+	10: {lang: 0x3a, script: 0x0, group: 0x80, distance: 0x5},
+	11: {lang: 0x138, script: 0x0, group: 0x80, distance: 0x5},
+	12: {lang: 0x13d, script: 0x0, group: 0x80, distance: 0x5},
+	13: {lang: 0x3be, script: 0x0, group: 0x80, distance: 0x5},
+	14: {lang: 0x527, script: 0x35, group: 0x80, distance: 0x5},
 }
 
 // Size: 128 bytes, 32 elements
@@ -3535,13 +3642,13 @@ type parentRel struct {
 	fromRegion []uint16
 }
 
-// Size: 412 bytes, 5 elements
+// Size: 414 bytes, 5 elements
 var parents = [5]parentRel{
-	0: {lang: 0x134, script: 0x0, maxScript: 0x52, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x24, 0x25, 0x2e, 0x33, 0x35, 0x3c, 0x41, 0x45, 0x47, 0x48, 0x49, 0x4f, 0x51, 0x5b, 0x5c, 0x60, 0x63, 0x6c, 0x72, 0x73, 0x74, 0x7a, 0x7b, 0x7e, 0x7f, 0x80, 0x82, 0x8b, 0x8c, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9e, 0x9f, 0xa3, 0xa6, 0xa8, 0xac, 0xb0, 0xb3, 0xb4, 0xbe, 0xc5, 0xc9, 0xca, 0xcb, 0xcd, 0xcf, 0xd1, 0xd4, 0xd5, 0xdc, 0xde, 0xdf, 0xe5, 0xe6, 0xe7, 0xea, 0xef, 0x106, 0x108, 0x109, 0x10a, 0x10c, 0x10d, 0x111, 0x116, 0x11a, 0x11c, 0x11e, 0x124, 0x128, 0x12b, 0x12c, 0x12e, 0x130, 0x138, 0x13b, 0x13e, 0x141, 0x160, 0x161, 0x163}},
-	1: {lang: 0x134, script: 0x0, maxScript: 0x52, toRegion: 0x1a, fromRegion: []uint16{0x2d, 0x4d, 0x5f, 0x62, 0x71, 0xd8, 0x10b, 0x10e}},
-	2: {lang: 0x139, script: 0x0, maxScript: 0x52, toRegion: 0x1e, fromRegion: []uint16{0x2b, 0x3e, 0x40, 0x50, 0x53, 0x55, 0x58, 0x64, 0x68, 0x88, 0x8e, 0xce, 0xd7, 0xe1, 0xe3, 0xeb, 0xf0, 0x119, 0x134, 0x135, 0x13a}},
-	3: {lang: 0x3b7, script: 0x0, maxScript: 0x52, toRegion: 0xed, fromRegion: []uint16{0x29, 0x4d, 0x59, 0x85, 0x8a, 0xb6, 0xc5, 0xd0, 0x117, 0x125}},
-	4: {lang: 0x51f, script: 0x35, maxScript: 0x35, toRegion: 0x8c, fromRegion: []uint16{0xc5}},
+	0: {lang: 0x138, script: 0x0, maxScript: 0x52, toRegion: 0x1, fromRegion: []uint16{0x1a, 0x24, 0x25, 0x2e, 0x33, 0x35, 0x3c, 0x41, 0x45, 0x47, 0x48, 0x49, 0x4f, 0x51, 0x5b, 0x5c, 0x60, 0x63, 0x6c, 0x72, 0x73, 0x74, 0x7a, 0x7b, 0x7e, 0x7f, 0x80, 0x82, 0x8b, 0x8c, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9e, 0x9f, 0xa3, 0xa6, 0xa8, 0xac, 0xb0, 0xb3, 0xb4, 0xbe, 0xc5, 0xc9, 0xca, 0xcb, 0xcd, 0xcf, 0xd1, 0xd4, 0xd5, 0xdc, 0xde, 0xdf, 0xe5, 0xe6, 0xe7, 0xea, 0xef, 0x106, 0x108, 0x109, 0x10a, 0x10c, 0x10d, 0x111, 0x116, 0x11a, 0x11c, 0x11e, 0x124, 0x128, 0x12b, 0x12c, 0x12e, 0x130, 0x138, 0x13b, 0x13e, 0x141, 0x160, 0x161, 0x163}},
+	1: {lang: 0x138, script: 0x0, maxScript: 0x52, toRegion: 0x1a, fromRegion: []uint16{0x2d, 0x4d, 0x5f, 0x62, 0x71, 0xd8, 0x10b, 0x10e}},
+	2: {lang: 0x13d, script: 0x0, maxScript: 0x52, toRegion: 0x1e, fromRegion: []uint16{0x2b, 0x3e, 0x40, 0x47, 0x50, 0x53, 0x55, 0x58, 0x64, 0x68, 0x88, 0x8e, 0xce, 0xd7, 0xe1, 0xe3, 0xeb, 0xf0, 0x119, 0x134, 0x135, 0x13a}},
+	3: {lang: 0x3be, script: 0x0, maxScript: 0x52, toRegion: 0xed, fromRegion: []uint16{0x29, 0x4d, 0x59, 0x85, 0x8a, 0xb6, 0xc5, 0xd0, 0x117, 0x125}},
+	4: {lang: 0x527, script: 0x35, maxScript: 0x35, toRegion: 0x8c, fromRegion: []uint16{0xc5}},
 }
 
-// Total table size 25825 bytes (25KiB); checksum: 4E97CC5E
+// Total table size 26496 bytes (25KiB); checksum: 6E24B15A
diff --git a/vendor/golang.org/x/text/unicode/norm/maketables.go b/vendor/golang.org/x/text/unicode/norm/maketables.go
deleted file mode 100644
index 8d418160c..000000000
--- a/vendor/golang.org/x/text/unicode/norm/maketables.go
+++ /dev/null
@@ -1,976 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-// Normalization table generator.
-// Data read from the web.
-// See forminfo.go for a description of the trie values associated with each rune.
-
-package main
-
-import (
-	"bytes"
-	"flag"
-	"fmt"
-	"io"
-	"log"
-	"sort"
-	"strconv"
-	"strings"
-
-	"golang.org/x/text/internal/gen"
-	"golang.org/x/text/internal/triegen"
-	"golang.org/x/text/internal/ucd"
-)
-
-func main() {
-	gen.Init()
-	loadUnicodeData()
-	compactCCC()
-	loadCompositionExclusions()
-	completeCharFields(FCanonical)
-	completeCharFields(FCompatibility)
-	computeNonStarterCounts()
-	verifyComputed()
-	printChars()
-	testDerived()
-	printTestdata()
-	makeTables()
-}
-
-var (
-	tablelist = flag.String("tables",
-		"all",
-		"comma-separated list of which tables to generate; "+
-			"can be 'decomp', 'recomp', 'info' and 'all'")
-	test = flag.Bool("test",
-		false,
-		"test existing tables against DerivedNormalizationProps and generate test data for regression testing")
-	verbose = flag.Bool("verbose",
-		false,
-		"write data to stdout as it is parsed")
-)
-
-const MaxChar = 0x10FFFF // anything above this shouldn't exist
-
-// Quick Check properties of runes allow us to quickly
-// determine whether a rune may occur in a normal form.
-// For a given normal form, a rune may be guaranteed to occur
-// verbatim (QC=Yes), may or may not combine with another
-// rune (QC=Maybe), or may not occur (QC=No).
-type QCResult int
-
-const (
-	QCUnknown QCResult = iota
-	QCYes
-	QCNo
-	QCMaybe
-)
-
-func (r QCResult) String() string {
-	switch r {
-	case QCYes:
-		return "Yes"
-	case QCNo:
-		return "No"
-	case QCMaybe:
-		return "Maybe"
-	}
-	return "***UNKNOWN***"
-}
-
-const (
-	FCanonical     = iota // NFC or NFD
-	FCompatibility        // NFKC or NFKD
-	FNumberOfFormTypes
-)
-
-const (
-	MComposed   = iota // NFC or NFKC
-	MDecomposed        // NFD or NFKD
-	MNumberOfModes
-)
-
-// This contains only the properties we're interested in.
-type Char struct {
-	name          string
-	codePoint     rune  // if zero, this index is not a valid code point.
-	ccc           uint8 // canonical combining class
-	origCCC       uint8
-	excludeInComp bool // from CompositionExclusions.txt
-	compatDecomp  bool // it has a compatibility expansion
-
-	nTrailingNonStarters uint8
-	nLeadingNonStarters  uint8 // must be equal to trailing if non-zero
-
-	forms [FNumberOfFormTypes]FormInfo // For FCanonical and FCompatibility
-
-	state State
-}
-
-var chars = make([]Char, MaxChar+1)
-var cccMap = make(map[uint8]uint8)
-
-func (c Char) String() string {
-	buf := new(bytes.Buffer)
-
-	fmt.Fprintf(buf, "%U [%s]:\n", c.codePoint, c.name)
-	fmt.Fprintf(buf, "  ccc: %v\n", c.ccc)
-	fmt.Fprintf(buf, "  excludeInComp: %v\n", c.excludeInComp)
-	fmt.Fprintf(buf, "  compatDecomp: %v\n", c.compatDecomp)
-	fmt.Fprintf(buf, "  state: %v\n", c.state)
-	fmt.Fprintf(buf, "  NFC:\n")
-	fmt.Fprint(buf, c.forms[FCanonical])
-	fmt.Fprintf(buf, "  NFKC:\n")
-	fmt.Fprint(buf, c.forms[FCompatibility])
-
-	return buf.String()
-}
-
-// In UnicodeData.txt, some ranges are marked like this:
-//	3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
-//	4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
-// parseCharacter keeps a state variable indicating the weirdness.
-type State int
-
-const (
-	SNormal State = iota // known to be zero for the type
-	SFirst
-	SLast
-	SMissing
-)
-
-var lastChar = rune('\u0000')
-
-func (c Char) isValid() bool {
-	return c.codePoint != 0 && c.state != SMissing
-}
-
-type FormInfo struct {
-	quickCheck [MNumberOfModes]QCResult // index: MComposed or MDecomposed
-	verified   [MNumberOfModes]bool     // index: MComposed or MDecomposed
-
-	combinesForward  bool // May combine with rune on the right
-	combinesBackward bool // May combine with rune on the left
-	isOneWay         bool // Never appears in result
-	inDecomp         bool // Some decompositions result in this char.
-	decomp           Decomposition
-	expandedDecomp   Decomposition
-}
-
-func (f FormInfo) String() string {
-	buf := bytes.NewBuffer(make([]byte, 0))
-
-	fmt.Fprintf(buf, "    quickCheck[C]: %v\n", f.quickCheck[MComposed])
-	fmt.Fprintf(buf, "    quickCheck[D]: %v\n", f.quickCheck[MDecomposed])
-	fmt.Fprintf(buf, "    cmbForward: %v\n", f.combinesForward)
-	fmt.Fprintf(buf, "    cmbBackward: %v\n", f.combinesBackward)
-	fmt.Fprintf(buf, "    isOneWay: %v\n", f.isOneWay)
-	fmt.Fprintf(buf, "    inDecomp: %v\n", f.inDecomp)
-	fmt.Fprintf(buf, "    decomposition: %X\n", f.decomp)
-	fmt.Fprintf(buf, "    expandedDecomp: %X\n", f.expandedDecomp)
-
-	return buf.String()
-}
-
-type Decomposition []rune
-
-func parseDecomposition(s string, skipfirst bool) (a []rune, err error) {
-	decomp := strings.Split(s, " ")
-	if len(decomp) > 0 && skipfirst {
-		decomp = decomp[1:]
-	}
-	for _, d := range decomp {
-		point, err := strconv.ParseUint(d, 16, 64)
-		if err != nil {
-			return a, err
-		}
-		a = append(a, rune(point))
-	}
-	return a, nil
-}
-
-func loadUnicodeData() {
-	f := gen.OpenUCDFile("UnicodeData.txt")
-	defer f.Close()
-	p := ucd.New(f)
-	for p.Next() {
-		r := p.Rune(ucd.CodePoint)
-		char := &chars[r]
-
-		char.ccc = uint8(p.Uint(ucd.CanonicalCombiningClass))
-		decmap := p.String(ucd.DecompMapping)
-
-		exp, err := parseDecomposition(decmap, false)
-		isCompat := false
-		if err != nil {
-			if len(decmap) > 0 {
-				exp, err = parseDecomposition(decmap, true)
-				if err != nil {
-					log.Fatalf(`%U: bad decomp |%v|: "%s"`, r, decmap, err)
-				}
-				isCompat = true
-			}
-		}
-
-		char.name = p.String(ucd.Name)
-		char.codePoint = r
-		char.forms[FCompatibility].decomp = exp
-		if !isCompat {
-			char.forms[FCanonical].decomp = exp
-		} else {
-			char.compatDecomp = true
-		}
-		if len(decmap) > 0 {
-			char.forms[FCompatibility].decomp = exp
-		}
-	}
-	if err := p.Err(); err != nil {
-		log.Fatal(err)
-	}
-}
-
-// compactCCC converts the sparse set of CCC values to a continguous one,
-// reducing the number of bits needed from 8 to 6.
-func compactCCC() {
-	m := make(map[uint8]uint8)
-	for i := range chars {
-		c := &chars[i]
-		m[c.ccc] = 0
-	}
-	cccs := []int{}
-	for v, _ := range m {
-		cccs = append(cccs, int(v))
-	}
-	sort.Ints(cccs)
-	for i, c := range cccs {
-		cccMap[uint8(i)] = uint8(c)
-		m[uint8(c)] = uint8(i)
-	}
-	for i := range chars {
-		c := &chars[i]
-		c.origCCC = c.ccc
-		c.ccc = m[c.ccc]
-	}
-	if len(m) >= 1<<6 {
-		log.Fatalf("too many difference CCC values: %d >= 64", len(m))
-	}
-}
-
-// CompositionExclusions.txt has form:
-// 0958    # ...
-// See http://unicode.org/reports/tr44/ for full explanation
-func loadCompositionExclusions() {
-	f := gen.OpenUCDFile("CompositionExclusions.txt")
-	defer f.Close()
-	p := ucd.New(f)
-	for p.Next() {
-		c := &chars[p.Rune(0)]
-		if c.excludeInComp {
-			log.Fatalf("%U: Duplicate entry in exclusions.", c.codePoint)
-		}
-		c.excludeInComp = true
-	}
-	if e := p.Err(); e != nil {
-		log.Fatal(e)
-	}
-}
-
-// hasCompatDecomp returns true if any of the recursive
-// decompositions contains a compatibility expansion.
-// In this case, the character may not occur in NFK*.
-func hasCompatDecomp(r rune) bool {
-	c := &chars[r]
-	if c.compatDecomp {
-		return true
-	}
-	for _, d := range c.forms[FCompatibility].decomp {
-		if hasCompatDecomp(d) {
-			return true
-		}
-	}
-	return false
-}
-
-// Hangul related constants.
-const (
-	HangulBase = 0xAC00
-	HangulEnd  = 0xD7A4 // hangulBase + Jamo combinations (19 * 21 * 28)
-
-	JamoLBase = 0x1100
-	JamoLEnd  = 0x1113
-	JamoVBase = 0x1161
-	JamoVEnd  = 0x1176
-	JamoTBase = 0x11A8
-	JamoTEnd  = 0x11C3
-
-	JamoLVTCount = 19 * 21 * 28
-	JamoTCount   = 28
-)
-
-func isHangul(r rune) bool {
-	return HangulBase <= r && r < HangulEnd
-}
-
-func isHangulWithoutJamoT(r rune) bool {
-	if !isHangul(r) {
-		return false
-	}
-	r -= HangulBase
-	return r < JamoLVTCount && r%JamoTCount == 0
-}
-
-func ccc(r rune) uint8 {
-	return chars[r].ccc
-}
-
-// Insert a rune in a buffer, ordered by Canonical Combining Class.
-func insertOrdered(b Decomposition, r rune) Decomposition {
-	n := len(b)
-	b = append(b, 0)
-	cc := ccc(r)
-	if cc > 0 {
-		// Use bubble sort.
-		for ; n > 0; n-- {
-			if ccc(b[n-1]) <= cc {
-				break
-			}
-			b[n] = b[n-1]
-		}
-	}
-	b[n] = r
-	return b
-}
-
-// Recursively decompose.
-func decomposeRecursive(form int, r rune, d Decomposition) Decomposition {
-	dcomp := chars[r].forms[form].decomp
-	if len(dcomp) == 0 {
-		return insertOrdered(d, r)
-	}
-	for _, c := range dcomp {
-		d = decomposeRecursive(form, c, d)
-	}
-	return d
-}
-
-func completeCharFields(form int) {
-	// Phase 0: pre-expand decomposition.
-	for i := range chars {
-		f := &chars[i].forms[form]
-		if len(f.decomp) == 0 {
-			continue
-		}
-		exp := make(Decomposition, 0)
-		for _, c := range f.decomp {
-			exp = decomposeRecursive(form, c, exp)
-		}
-		f.expandedDecomp = exp
-	}
-
-	// Phase 1: composition exclusion, mark decomposition.
-	for i := range chars {
-		c := &chars[i]
-		f := &c.forms[form]
-
-		// Marks script-specific exclusions and version restricted.
-		f.isOneWay = c.excludeInComp
-
-		// Singletons
-		f.isOneWay = f.isOneWay || len(f.decomp) == 1
-
-		// Non-starter decompositions
-		if len(f.decomp) > 1 {
-			chk := c.ccc != 0 || chars[f.decomp[0]].ccc != 0
-			f.isOneWay = f.isOneWay || chk
-		}
-
-		// Runes that decompose into more than two runes.
-		f.isOneWay = f.isOneWay || len(f.decomp) > 2
-
-		if form == FCompatibility {
-			f.isOneWay = f.isOneWay || hasCompatDecomp(c.codePoint)
-		}
-
-		for _, r := range f.decomp {
-			chars[r].forms[form].inDecomp = true
-		}
-	}
-
-	// Phase 2: forward and backward combining.
-	for i := range chars {
-		c := &chars[i]
-		f := &c.forms[form]
-
-		if !f.isOneWay && len(f.decomp) == 2 {
-			f0 := &chars[f.decomp[0]].forms[form]
-			f1 := &chars[f.decomp[1]].forms[form]
-			if !f0.isOneWay {
-				f0.combinesForward = true
-			}
-			if !f1.isOneWay {
-				f1.combinesBackward = true
-			}
-		}
-		if isHangulWithoutJamoT(rune(i)) {
-			f.combinesForward = true
-		}
-	}
-
-	// Phase 3: quick check values.
-	for i := range chars {
-		c := &chars[i]
-		f := &c.forms[form]
-
-		switch {
-		case len(f.decomp) > 0:
-			f.quickCheck[MDecomposed] = QCNo
-		case isHangul(rune(i)):
-			f.quickCheck[MDecomposed] = QCNo
-		default:
-			f.quickCheck[MDecomposed] = QCYes
-		}
-		switch {
-		case f.isOneWay:
-			f.quickCheck[MComposed] = QCNo
-		case (i & 0xffff00) == JamoLBase:
-			f.quickCheck[MComposed] = QCYes
-			if JamoLBase <= i && i < JamoLEnd {
-				f.combinesForward = true
-			}
-			if JamoVBase <= i && i < JamoVEnd {
-				f.quickCheck[MComposed] = QCMaybe
-				f.combinesBackward = true
-				f.combinesForward = true
-			}
-			if JamoTBase <= i && i < JamoTEnd {
-				f.quickCheck[MComposed] = QCMaybe
-				f.combinesBackward = true
-			}
-		case !f.combinesBackward:
-			f.quickCheck[MComposed] = QCYes
-		default:
-			f.quickCheck[MComposed] = QCMaybe
-		}
-	}
-}
-
-func computeNonStarterCounts() {
-	// Phase 4: leading and trailing non-starter count
-	for i := range chars {
-		c := &chars[i]
-
-		runes := []rune{rune(i)}
-		// We always use FCompatibility so that the CGJ insertion points do not
-		// change for repeated normalizations with different forms.
-		if exp := c.forms[FCompatibility].expandedDecomp; len(exp) > 0 {
-			runes = exp
-		}
-		// We consider runes that combine backwards to be non-starters for the
-		// purpose of Stream-Safe Text Processing.
-		for _, r := range runes {
-			if cr := &chars[r]; cr.ccc == 0 && !cr.forms[FCompatibility].combinesBackward {
-				break
-			}
-			c.nLeadingNonStarters++
-		}
-		for i := len(runes) - 1; i >= 0; i-- {
-			if cr := &chars[runes[i]]; cr.ccc == 0 && !cr.forms[FCompatibility].combinesBackward {
-				break
-			}
-			c.nTrailingNonStarters++
-		}
-		if c.nTrailingNonStarters > 3 {
-			log.Fatalf("%U: Decomposition with more than 3 (%d) trailing modifiers (%U)", i, c.nTrailingNonStarters, runes)
-		}
-
-		if isHangul(rune(i)) {
-			c.nTrailingNonStarters = 2
-			if isHangulWithoutJamoT(rune(i)) {
-				c.nTrailingNonStarters = 1
-			}
-		}
-
-		if l, t := c.nLeadingNonStarters, c.nTrailingNonStarters; l > 0 && l != t {
-			log.Fatalf("%U: number of leading and trailing non-starters should be equal (%d vs %d)", i, l, t)
-		}
-		if t := c.nTrailingNonStarters; t > 3 {
-			log.Fatalf("%U: number of trailing non-starters is %d > 3", t)
-		}
-	}
-}
-
-func printBytes(w io.Writer, b []byte, name string) {
-	fmt.Fprintf(w, "// %s: %d bytes\n", name, len(b))
-	fmt.Fprintf(w, "var %s = [...]byte {", name)
-	for i, c := range b {
-		switch {
-		case i%64 == 0:
-			fmt.Fprintf(w, "\n// Bytes %x - %x\n", i, i+63)
-		case i%8 == 0:
-			fmt.Fprintf(w, "\n")
-		}
-		fmt.Fprintf(w, "0x%.2X, ", c)
-	}
-	fmt.Fprint(w, "\n}\n\n")
-}
-
-// See forminfo.go for format.
-func makeEntry(f *FormInfo, c *Char) uint16 {
-	e := uint16(0)
-	if r := c.codePoint; HangulBase <= r && r < HangulEnd {
-		e |= 0x40
-	}
-	if f.combinesForward {
-		e |= 0x20
-	}
-	if f.quickCheck[MDecomposed] == QCNo {
-		e |= 0x4
-	}
-	switch f.quickCheck[MComposed] {
-	case QCYes:
-	case QCNo:
-		e |= 0x10
-	case QCMaybe:
-		e |= 0x18
-	default:
-		log.Fatalf("Illegal quickcheck value %v.", f.quickCheck[MComposed])
-	}
-	e |= uint16(c.nTrailingNonStarters)
-	return e
-}
-
-// decompSet keeps track of unique decompositions, grouped by whether
-// the decomposition is followed by a trailing and/or leading CCC.
-type decompSet [7]map[string]bool
-
-const (
-	normalDecomp = iota
-	firstMulti
-	firstCCC
-	endMulti
-	firstLeadingCCC
-	firstCCCZeroExcept
-	firstStarterWithNLead
-	lastDecomp
-)
-
-var cname = []string{"firstMulti", "firstCCC", "endMulti", "firstLeadingCCC", "firstCCCZeroExcept", "firstStarterWithNLead", "lastDecomp"}
-
-func makeDecompSet() decompSet {
-	m := decompSet{}
-	for i := range m {
-		m[i] = make(map[string]bool)
-	}
-	return m
-}
-func (m *decompSet) insert(key int, s string) {
-	m[key][s] = true
-}
-
-func printCharInfoTables(w io.Writer) int {
-	mkstr := func(r rune, f *FormInfo) (int, string) {
-		d := f.expandedDecomp
-		s := string([]rune(d))
-		if max := 1 << 6; len(s) >= max {
-			const msg = "%U: too many bytes in decomposition: %d >= %d"
-			log.Fatalf(msg, r, len(s), max)
-		}
-		head := uint8(len(s))
-		if f.quickCheck[MComposed] != QCYes {
-			head |= 0x40
-		}
-		if f.combinesForward {
-			head |= 0x80
-		}
-		s = string([]byte{head}) + s
-
-		lccc := ccc(d[0])
-		tccc := ccc(d[len(d)-1])
-		cc := ccc(r)
-		if cc != 0 && lccc == 0 && tccc == 0 {
-			log.Fatalf("%U: trailing and leading ccc are 0 for non-zero ccc %d", r, cc)
-		}
-		if tccc < lccc && lccc != 0 {
-			const msg = "%U: lccc (%d) must be <= tcc (%d)"
-			log.Fatalf(msg, r, lccc, tccc)
-		}
-		index := normalDecomp
-		nTrail := chars[r].nTrailingNonStarters
-		nLead := chars[r].nLeadingNonStarters
-		if tccc > 0 || lccc > 0 || nTrail > 0 {
-			tccc <<= 2
-			tccc |= nTrail
-			s += string([]byte{tccc})
-			index = endMulti
-			for _, r := range d[1:] {
-				if ccc(r) == 0 {
-					index = firstCCC
-				}
-			}
-			if lccc > 0 || nLead > 0 {
-				s += string([]byte{lccc})
-				if index == firstCCC {
-					log.Fatalf("%U: multi-segment decomposition not supported for decompositions with leading CCC != 0", r)
-				}
-				index = firstLeadingCCC
-			}
-			if cc != lccc {
-				if cc != 0 {
-					log.Fatalf("%U: for lccc != ccc, expected ccc to be 0; was %d", r, cc)
-				}
-				index = firstCCCZeroExcept
-			}
-		} else if len(d) > 1 {
-			index = firstMulti
-		}
-		return index, s
-	}
-
-	decompSet := makeDecompSet()
-	const nLeadStr = "\x00\x01" // 0-byte length and tccc with nTrail.
-	decompSet.insert(firstStarterWithNLead, nLeadStr)
-
-	// Store the uniqued decompositions in a byte buffer,
-	// preceded by their byte length.
-	for _, c := range chars {
-		for _, f := range c.forms {
-			if len(f.expandedDecomp) == 0 {
-				continue
-			}
-			if f.combinesBackward {
-				log.Fatalf("%U: combinesBackward and decompose", c.codePoint)
-			}
-			index, s := mkstr(c.codePoint, &f)
-			decompSet.insert(index, s)
-		}
-	}
-
-	decompositions := bytes.NewBuffer(make([]byte, 0, 10000))
-	size := 0
-	positionMap := make(map[string]uint16)
-	decompositions.WriteString("\000")
-	fmt.Fprintln(w, "const (")
-	for i, m := range decompSet {
-		sa := []string{}
-		for s := range m {
-			sa = append(sa, s)
-		}
-		sort.Strings(sa)
-		for _, s := range sa {
-			p := decompositions.Len()
-			decompositions.WriteString(s)
-			positionMap[s] = uint16(p)
-		}
-		if cname[i] != "" {
-			fmt.Fprintf(w, "%s = 0x%X\n", cname[i], decompositions.Len())
-		}
-	}
-	fmt.Fprintln(w, "maxDecomp = 0x8000")
-	fmt.Fprintln(w, ")")
-	b := decompositions.Bytes()
-	printBytes(w, b, "decomps")
-	size += len(b)
-
-	varnames := []string{"nfc", "nfkc"}
-	for i := 0; i < FNumberOfFormTypes; i++ {
-		trie := triegen.NewTrie(varnames[i])
-
-		for r, c := range chars {
-			f := c.forms[i]
-			d := f.expandedDecomp
-			if len(d) != 0 {
-				_, key := mkstr(c.codePoint, &f)
-				trie.Insert(rune(r), uint64(positionMap[key]))
-				if c.ccc != ccc(d[0]) {
-					// We assume the lead ccc of a decomposition !=0 in this case.
-					if ccc(d[0]) == 0 {
-						log.Fatalf("Expected leading CCC to be non-zero; ccc is %d", c.ccc)
-					}
-				}
-			} else if c.nLeadingNonStarters > 0 && len(f.expandedDecomp) == 0 && c.ccc == 0 && !f.combinesBackward {
-				// Handle cases where it can't be detected that the nLead should be equal
-				// to nTrail.
-				trie.Insert(c.codePoint, uint64(positionMap[nLeadStr]))
-			} else if v := makeEntry(&f, &c)<<8 | uint16(c.ccc); v != 0 {
-				trie.Insert(c.codePoint, uint64(0x8000|v))
-			}
-		}
-		sz, err := trie.Gen(w, triegen.Compact(&normCompacter{name: varnames[i]}))
-		if err != nil {
-			log.Fatal(err)
-		}
-		size += sz
-	}
-	return size
-}
-
-func contains(sa []string, s string) bool {
-	for _, a := range sa {
-		if a == s {
-			return true
-		}
-	}
-	return false
-}
-
-func makeTables() {
-	w := &bytes.Buffer{}
-
-	size := 0
-	if *tablelist == "" {
-		return
-	}
-	list := strings.Split(*tablelist, ",")
-	if *tablelist == "all" {
-		list = []string{"recomp", "info"}
-	}
-
-	// Compute maximum decomposition size.
-	max := 0
-	for _, c := range chars {
-		if n := len(string(c.forms[FCompatibility].expandedDecomp)); n > max {
-			max = n
-		}
-	}
-
-	fmt.Fprintln(w, "const (")
-	fmt.Fprintln(w, "\t// Version is the Unicode edition from which the tables are derived.")
-	fmt.Fprintf(w, "\tVersion = %q\n", gen.UnicodeVersion())
-	fmt.Fprintln(w)
-	fmt.Fprintln(w, "\t// MaxTransformChunkSize indicates the maximum number of bytes that Transform")
-	fmt.Fprintln(w, "\t// may need to write atomically for any Form. Making a destination buffer at")
-	fmt.Fprintln(w, "\t// least this size ensures that Transform can always make progress and that")
-	fmt.Fprintln(w, "\t// the user does not need to grow the buffer on an ErrShortDst.")
-	fmt.Fprintf(w, "\tMaxTransformChunkSize = %d+maxNonStarters*4\n", len(string(0x034F))+max)
-	fmt.Fprintln(w, ")\n")
-
-	// Print the CCC remap table.
-	size += len(cccMap)
-	fmt.Fprintf(w, "var ccc = [%d]uint8{", len(cccMap))
-	for i := 0; i < len(cccMap); i++ {
-		if i%8 == 0 {
-			fmt.Fprintln(w)
-		}
-		fmt.Fprintf(w, "%3d, ", cccMap[uint8(i)])
-	}
-	fmt.Fprintln(w, "\n}\n")
-
-	if contains(list, "info") {
-		size += printCharInfoTables(w)
-	}
-
-	if contains(list, "recomp") {
-		// Note that we use 32 bit keys, instead of 64 bit.
-		// This clips the bits of three entries, but we know
-		// this won't cause a collision. The compiler will catch
-		// any changes made to UnicodeData.txt that introduces
-		// a collision.
-		// Note that the recomposition map for NFC and NFKC
-		// are identical.
-
-		// Recomposition map
-		nrentries := 0
-		for _, c := range chars {
-			f := c.forms[FCanonical]
-			if !f.isOneWay && len(f.decomp) > 0 {
-				nrentries++
-			}
-		}
-		sz := nrentries * 8
-		size += sz
-		fmt.Fprintf(w, "// recompMap: %d bytes (entries only)\n", sz)
-		fmt.Fprintln(w, "var recompMap = map[uint32]rune{")
-		for i, c := range chars {
-			f := c.forms[FCanonical]
-			d := f.decomp
-			if !f.isOneWay && len(d) > 0 {
-				key := uint32(uint16(d[0]))<<16 + uint32(uint16(d[1]))
-				fmt.Fprintf(w, "0x%.8X: 0x%.4X,\n", key, i)
-			}
-		}
-		fmt.Fprintf(w, "}\n\n")
-	}
-
-	fmt.Fprintf(w, "// Total size of tables: %dKB (%d bytes)\n", (size+512)/1024, size)
-	gen.WriteGoFile("tables.go", "norm", w.Bytes())
-}
-
-func printChars() {
-	if *verbose {
-		for _, c := range chars {
-			if !c.isValid() || c.state == SMissing {
-				continue
-			}
-			fmt.Println(c)
-		}
-	}
-}
-
-// verifyComputed does various consistency tests.
-func verifyComputed() {
-	for i, c := range chars {
-		for _, f := range c.forms {
-			isNo := (f.quickCheck[MDecomposed] == QCNo)
-			if (len(f.decomp) > 0) != isNo && !isHangul(rune(i)) {
-				log.Fatalf("%U: NF*D QC must be No if rune decomposes", i)
-			}
-
-			isMaybe := f.quickCheck[MComposed] == QCMaybe
-			if f.combinesBackward != isMaybe {
-				log.Fatalf("%U: NF*C QC must be Maybe if combinesBackward", i)
-			}
-			if len(f.decomp) > 0 && f.combinesForward && isMaybe {
-				log.Fatalf("%U: NF*C QC must be Yes or No if combinesForward and decomposes", i)
-			}
-
-			if len(f.expandedDecomp) != 0 {
-				continue
-			}
-			if a, b := c.nLeadingNonStarters > 0, (c.ccc > 0 || f.combinesBackward); a != b {
-				// We accept these runes to be treated differently (it only affects
-				// segment breaking in iteration, most likely on improper use), but
-				// reconsider if more characters are added.
-				// U+FF9E HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;;;;
-				// U+FF9F HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;;;;
-				// U+3133 HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
-				// U+318E HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
-				// U+FFA3 HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
-				// U+FFDC HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
-				if i != 0xFF9E && i != 0xFF9F && !(0x3133 <= i && i <= 0x318E) && !(0xFFA3 <= i && i <= 0xFFDC) {
-					log.Fatalf("%U: nLead was %v; want %v", i, a, b)
-				}
-			}
-		}
-		nfc := c.forms[FCanonical]
-		nfkc := c.forms[FCompatibility]
-		if nfc.combinesBackward != nfkc.combinesBackward {
-			log.Fatalf("%U: Cannot combine combinesBackward\n", c.codePoint)
-		}
-	}
-}
-
-// Use values in DerivedNormalizationProps.txt to compare against the
-// values we computed.
-// DerivedNormalizationProps.txt has form:
-// 00C0..00C5    ; NFD_QC; N # ...
-// 0374          ; NFD_QC; N # ...
-// See http://unicode.org/reports/tr44/ for full explanation
-func testDerived() {
-	f := gen.OpenUCDFile("DerivedNormalizationProps.txt")
-	defer f.Close()
-	p := ucd.New(f)
-	for p.Next() {
-		r := p.Rune(0)
-		c := &chars[r]
-
-		var ftype, mode int
-		qt := p.String(1)
-		switch qt {
-		case "NFC_QC":
-			ftype, mode = FCanonical, MComposed
-		case "NFD_QC":
-			ftype, mode = FCanonical, MDecomposed
-		case "NFKC_QC":
-			ftype, mode = FCompatibility, MComposed
-		case "NFKD_QC":
-			ftype, mode = FCompatibility, MDecomposed
-		default:
-			continue
-		}
-		var qr QCResult
-		switch p.String(2) {
-		case "Y":
-			qr = QCYes
-		case "N":
-			qr = QCNo
-		case "M":
-			qr = QCMaybe
-		default:
-			log.Fatalf(`Unexpected quick check value "%s"`, p.String(2))
-		}
-		if got := c.forms[ftype].quickCheck[mode]; got != qr {
-			log.Printf("%U: FAILED %s (was %v need %v)\n", r, qt, got, qr)
-		}
-		c.forms[ftype].verified[mode] = true
-	}
-	if err := p.Err(); err != nil {
-		log.Fatal(err)
-	}
-	// Any unspecified value must be QCYes. Verify this.
-	for i, c := range chars {
-		for j, fd := range c.forms {
-			for k, qr := range fd.quickCheck {
-				if !fd.verified[k] && qr != QCYes {
-					m := "%U: FAIL F:%d M:%d (was %v need Yes) %s\n"
-					log.Printf(m, i, j, k, qr, c.name)
-				}
-			}
-		}
-	}
-}
-
-var testHeader = `const (
-	Yes = iota
-	No
-	Maybe
-)
-
-type formData struct {
-	qc              uint8
-	combinesForward bool
-	decomposition   string
-}
-
-type runeData struct {
-	r      rune
-	ccc    uint8
-	nLead  uint8
-	nTrail uint8
-	f      [2]formData // 0: canonical; 1: compatibility
-}
-
-func f(qc uint8, cf bool, dec string) [2]formData {
-	return [2]formData{{qc, cf, dec}, {qc, cf, dec}}
-}
-
-func g(qc, qck uint8, cf, cfk bool, d, dk string) [2]formData {
-	return [2]formData{{qc, cf, d}, {qck, cfk, dk}}
-}
-
-var testData = []runeData{
-`
-
-func printTestdata() {
-	type lastInfo struct {
-		ccc    uint8
-		nLead  uint8
-		nTrail uint8
-		f      string
-	}
-
-	last := lastInfo{}
-	w := &bytes.Buffer{}
-	fmt.Fprintf(w, testHeader)
-	for r, c := range chars {
-		f := c.forms[FCanonical]
-		qc, cf, d := f.quickCheck[MComposed], f.combinesForward, string(f.expandedDecomp)
-		f = c.forms[FCompatibility]
-		qck, cfk, dk := f.quickCheck[MComposed], f.combinesForward, string(f.expandedDecomp)
-		s := ""
-		if d == dk && qc == qck && cf == cfk {
-			s = fmt.Sprintf("f(%s, %v, %q)", qc, cf, d)
-		} else {
-			s = fmt.Sprintf("g(%s, %s, %v, %v, %q, %q)", qc, qck, cf, cfk, d, dk)
-		}
-		current := lastInfo{c.ccc, c.nLeadingNonStarters, c.nTrailingNonStarters, s}
-		if last != current {
-			fmt.Fprintf(w, "\t{0x%x, %d, %d, %d, %s},\n", r, c.origCCC, c.nLeadingNonStarters, c.nTrailingNonStarters, s)
-			last = current
-		}
-	}
-	fmt.Fprintln(w, "}")
-	gen.WriteGoFile("data_test.go", "norm", w.Bytes())
-}
diff --git a/vendor/golang.org/x/text/unicode/norm/triegen.go b/vendor/golang.org/x/text/unicode/norm/triegen.go
deleted file mode 100644
index 45d711900..000000000
--- a/vendor/golang.org/x/text/unicode/norm/triegen.go
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright 2011 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build ignore
-
-// Trie table generator.
-// Used by make*tables tools to generate a go file with trie data structures
-// for mapping UTF-8 to a 16-bit value. All but the last byte in a UTF-8 byte
-// sequence are used to lookup offsets in the index table to be used for the
-// next byte. The last byte is used to index into a table with 16-bit values.
-
-package main
-
-import (
-	"fmt"
-	"io"
-)
-
-const maxSparseEntries = 16
-
-type normCompacter struct {
-	sparseBlocks [][]uint64
-	sparseOffset []uint16
-	sparseCount  int
-	name         string
-}
-
-func mostFrequentStride(a []uint64) int {
-	counts := make(map[int]int)
-	var v int
-	for _, x := range a {
-		if stride := int(x) - v; v != 0 && stride >= 0 {
-			counts[stride]++
-		}
-		v = int(x)
-	}
-	var maxs, maxc int
-	for stride, cnt := range counts {
-		if cnt > maxc || (cnt == maxc && stride < maxs) {
-			maxs, maxc = stride, cnt
-		}
-	}
-	return maxs
-}
-
-func countSparseEntries(a []uint64) int {
-	stride := mostFrequentStride(a)
-	var v, count int
-	for _, tv := range a {
-		if int(tv)-v != stride {
-			if tv != 0 {
-				count++
-			}
-		}
-		v = int(tv)
-	}
-	return count
-}
-
-func (c *normCompacter) Size(v []uint64) (sz int, ok bool) {
-	if n := countSparseEntries(v); n <= maxSparseEntries {
-		return (n+1)*4 + 2, true
-	}
-	return 0, false
-}
-
-func (c *normCompacter) Store(v []uint64) uint32 {
-	h := uint32(len(c.sparseOffset))
-	c.sparseBlocks = append(c.sparseBlocks, v)
-	c.sparseOffset = append(c.sparseOffset, uint16(c.sparseCount))
-	c.sparseCount += countSparseEntries(v) + 1
-	return h
-}
-
-func (c *normCompacter) Handler() string {
-	return c.name + "Sparse.lookup"
-}
-
-func (c *normCompacter) Print(w io.Writer) (retErr error) {
-	p := func(f string, x ...interface{}) {
-		if _, err := fmt.Fprintf(w, f, x...); retErr == nil && err != nil {
-			retErr = err
-		}
-	}
-
-	ls := len(c.sparseBlocks)
-	p("// %sSparseOffset: %d entries, %d bytes\n", c.name, ls, ls*2)
-	p("var %sSparseOffset = %#v\n\n", c.name, c.sparseOffset)
-
-	ns := c.sparseCount
-	p("// %sSparseValues: %d entries, %d bytes\n", c.name, ns, ns*4)
-	p("var %sSparseValues = [%d]valueRange {", c.name, ns)
-	for i, b := range c.sparseBlocks {
-		p("\n// Block %#x, offset %#x", i, c.sparseOffset[i])
-		var v int
-		stride := mostFrequentStride(b)
-		n := countSparseEntries(b)
-		p("\n{value:%#04x,lo:%#02x},", stride, uint8(n))
-		for i, nv := range b {
-			if int(nv)-v != stride {
-				if v != 0 {
-					p(",hi:%#02x},", 0x80+i-1)
-				}
-				if nv != 0 {
-					p("\n{value:%#04x,lo:%#02x", nv, 0x80+i)
-				}
-			}
-			v = int(nv)
-		}
-		if v != 0 {
-			p(",hi:%#02x},", 0x80+len(b)-1)
-		}
-	}
-	p("\n}\n\n")
-	return
-}
diff --git a/vendor/vendor.json b/vendor/vendor.json
index 162963b77..c0d4a5023 100644
--- a/vendor/vendor.json
+++ b/vendor/vendor.json
@@ -1498,95 +1498,95 @@
 		{
 			"checksumSHA1": "Mr4ur60bgQJnQFfJY0dGtwWwMPE=",
 			"path": "golang.org/x/text/encoding",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
-			"checksumSHA1": "gJG/5S8KrCA1QGkIkpa5a/wnmy4=",
+			"checksumSHA1": "DSdlK4MKI/a3U8Zaee2XKBe01Fo=",
 			"path": "golang.org/x/text/encoding/charmap",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
-			"checksumSHA1": "mI8YM2LehMxYDcauq5loMZr1pP8=",
+			"checksumSHA1": "z7tgTCQT62mHxtNMi/AXui/FAfQ=",
 			"path": "golang.org/x/text/encoding/htmlindex",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
 			"checksumSHA1": "zeHyHebIZl1tGuwGllIhjfci+wI=",
 			"path": "golang.org/x/text/encoding/internal",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
-			"checksumSHA1": "TF4hoIqHVEAvOq67rfnSLSkcZ1Y=",
+			"checksumSHA1": "7kYqxy64WhMjFIFZgN7tJ3lbKxM=",
 			"path": "golang.org/x/text/encoding/internal/identifier",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
-			"checksumSHA1": "HeZV82ktrmgyAaYLtNFS0qYgspI=",
+			"checksumSHA1": "2YqVpmvjWGEBATyUphTP1MS34JE=",
 			"path": "golang.org/x/text/encoding/japanese",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
-			"checksumSHA1": "8y87WJz3OkDWtPCIXxJcYpo+OY8=",
+			"checksumSHA1": "+ErWCAdaMwO4PLtrk9D/Hh+7oQM=",
 			"path": "golang.org/x/text/encoding/korean",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
-			"checksumSHA1": "WYfmebIyX5Zae8NUfu9PsQjQff0=",
+			"checksumSHA1": "mTuZi5urYwgDIO8+Gfql2pv8Vwg=",
 			"path": "golang.org/x/text/encoding/simplifiedchinese",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
-			"checksumSHA1": "KKqYmi6fxt3r3uo4lExss2yTMbs=",
+			"checksumSHA1": "D+VI4j0Wjzr8SeupWdOB5KBdFOw=",
 			"path": "golang.org/x/text/encoding/traditionalchinese",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
 			"checksumSHA1": "G9LfJI9gySazd+MyyC6QbTHx4to=",
 			"path": "golang.org/x/text/encoding/unicode",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
 			"checksumSHA1": "hyNCcTwMQnV6/MK8uUW9E5H0J0M=",
 			"path": "golang.org/x/text/internal/tag",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
 			"checksumSHA1": "Qk7dljcrEK1BJkAEZguxAbG9dSo=",
 			"path": "golang.org/x/text/internal/utf8internal",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
-			"checksumSHA1": "bsNFI/kfmF0p43jLKiMYRqw9Dfs=",
+			"checksumSHA1": "SnP28TAvq7k08OmkHClZDYFEWww=",
 			"path": "golang.org/x/text/language",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
 			"checksumSHA1": "IV4MN7KGBSocu/5NR3le3sxup4Y=",
 			"path": "golang.org/x/text/runes",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
 			"checksumSHA1": "ziMb9+ANGRJSSIuxYdRbA+cDRBQ=",
 			"path": "golang.org/x/text/transform",
-			"revision": "a8b38433e35b65ba247bb267317037dee1b70cea",
-			"revisionTime": "2016-10-19T13:35:53Z"
+			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
+			"revisionTime": "2017-06-27T21:03:49Z"
 		},
 		{
-			"checksumSHA1": "Anof4bt0AU+Sa3R8Rq0KBnlpbaQ=",
+			"checksumSHA1": "kKylzIrLEnH8NKyeVAL0dq5gjVQ=",
 			"path": "golang.org/x/text/unicode/norm",
 			"revision": "2bf8f2a19ec09c670e931282edfe6567f6be21c9",
 			"revisionTime": "2017-06-27T21:03:49Z"