diff --git a/go.mod b/go.mod index d4890c52..7d97aad1 100644 --- a/go.mod +++ b/go.mod @@ -22,11 +22,11 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v0.0.0-20170210233622-6b67b3fab74d - golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa // indirect - golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 + golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect + golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 - golang.org/x/text v0.3.5 // indirect + golang.org/x/text v0.3.7 // indirect ) go 1.11 diff --git a/go.sum b/go.sum index 0b73d573..5a1fe3b3 100644 --- a/go.sum +++ b/go.sum @@ -68,17 +68,16 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa h1:idItI2DDfCokpg0N51B2VtiLdJ4vAuXC9fnCb2gACo4= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -86,14 +85,15 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20200221224223-e1da425f72fd/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go index 593f6530..904b57e0 100644 --- a/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go +++ b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go @@ -32,7 +32,7 @@ import ( // can get a derived key for e.g. AES-256 (which needs a 32-byte key) by // doing: // -// dk := pbkdf2.Key([]byte("some password"), salt, 4096, 32, sha1.New) +// dk := pbkdf2.Key([]byte("some password"), salt, 4096, 32, sha1.New) // // Remember to get a good random salt. At least 8 bytes is recommended by the // RFC. diff --git a/vendor/golang.org/x/net/http/httpguts/httplex.go b/vendor/golang.org/x/net/http/httpguts/httplex.go index e7de24ee..c79aa73f 100644 --- a/vendor/golang.org/x/net/http/httpguts/httplex.go +++ b/vendor/golang.org/x/net/http/httpguts/httplex.go @@ -137,11 +137,13 @@ func trimOWS(x string) string { // contains token amongst its comma-separated tokens, ASCII // case-insensitively. func headerValueContainsToken(v string, token string) bool { - v = trimOWS(v) - if comma := strings.IndexByte(v, ','); comma != -1 { - return tokenEqual(trimOWS(v[:comma]), token) || headerValueContainsToken(v[comma+1:], token) + for comma := strings.IndexByte(v, ','); comma != -1; comma = strings.IndexByte(v, ',') { + if tokenEqual(trimOWS(v[:comma]), token) { + return true + } + v = v[comma+1:] } - return tokenEqual(v, token) + return tokenEqual(trimOWS(v), token) } // lowerASCII returns the ASCII lowercase version of b. diff --git a/vendor/golang.org/x/net/http/httpproxy/proxy.go b/vendor/golang.org/x/net/http/httpproxy/proxy.go index 1415b077..d2c8c87e 100644 --- a/vendor/golang.org/x/net/http/httpproxy/proxy.go +++ b/vendor/golang.org/x/net/http/httpproxy/proxy.go @@ -113,8 +113,8 @@ func getEnvAny(names ...string) string { // environment, or a proxy should not be used for the given request, as // defined by NO_PROXY. // -// As a special case, if req.URL.Host is "localhost" (with or without a -// port number), then a nil URL and nil error will be returned. +// As a special case, if req.URL.Host is "localhost" or a loopback address +// (with or without a port number), then a nil URL and nil error will be returned. func (cfg *Config) ProxyFunc() func(reqURL *url.URL) (*url.URL, error) { // Preprocess the Config settings for more efficient evaluation. cfg1 := &config{ diff --git a/vendor/golang.org/x/net/http2/Dockerfile b/vendor/golang.org/x/net/http2/Dockerfile index 53fc5257..85122459 100644 --- a/vendor/golang.org/x/net/http2/Dockerfile +++ b/vendor/golang.org/x/net/http2/Dockerfile @@ -38,7 +38,7 @@ RUN make RUN make install WORKDIR /root -RUN wget http://curl.haxx.se/download/curl-7.45.0.tar.gz +RUN wget https://curl.se/download/curl-7.45.0.tar.gz RUN tar -zxvf curl-7.45.0.tar.gz WORKDIR /root/curl-7.45.0 RUN ./configure --with-ssl --with-nghttp2=/usr/local diff --git a/vendor/golang.org/x/net/http2/README b/vendor/golang.org/x/net/http2/README deleted file mode 100644 index 360d5aa3..00000000 --- a/vendor/golang.org/x/net/http2/README +++ /dev/null @@ -1,20 +0,0 @@ -This is a work-in-progress HTTP/2 implementation for Go. - -It will eventually live in the Go standard library and won't require -any changes to your code to use. It will just be automatic. - -Status: - -* The server support is pretty good. A few things are missing - but are being worked on. -* The client work has just started but shares a lot of code - is coming along much quicker. - -Docs are at https://godoc.org/golang.org/x/net/http2 - -Demo test server at https://http2.golang.org/ - -Help & bug reports welcome! - -Contributing: https://golang.org/doc/contribute.html -Bugs: https://golang.org/issue/new?title=x/net/http2:+ diff --git a/vendor/golang.org/x/net/http2/ascii.go b/vendor/golang.org/x/net/http2/ascii.go new file mode 100644 index 00000000..17caa205 --- /dev/null +++ b/vendor/golang.org/x/net/http2/ascii.go @@ -0,0 +1,53 @@ +// Copyright 2021 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. + +package http2 + +import "strings" + +// The HTTP protocols are defined in terms of ASCII, not Unicode. This file +// contains helper functions which may use Unicode-aware functions which would +// otherwise be unsafe and could introduce vulnerabilities if used improperly. + +// asciiEqualFold is strings.EqualFold, ASCII only. It reports whether s and t +// are equal, ASCII-case-insensitively. +func asciiEqualFold(s, t string) bool { + if len(s) != len(t) { + return false + } + for i := 0; i < len(s); i++ { + if lower(s[i]) != lower(t[i]) { + return false + } + } + return true +} + +// lower returns the ASCII lowercase version of b. +func lower(b byte) byte { + if 'A' <= b && b <= 'Z' { + return b + ('a' - 'A') + } + return b +} + +// isASCIIPrint returns whether s is ASCII and printable according to +// https://tools.ietf.org/html/rfc20#section-4.2. +func isASCIIPrint(s string) bool { + for i := 0; i < len(s); i++ { + if s[i] < ' ' || s[i] > '~' { + return false + } + } + return true +} + +// asciiToLower returns the lowercase version of s if s is ASCII and printable, +// and whether or not it was. +func asciiToLower(s string) (lower string, ok bool) { + if !isASCIIPrint(s) { + return "", false + } + return strings.ToLower(s), true +} diff --git a/vendor/golang.org/x/net/http2/client_conn_pool.go b/vendor/golang.org/x/net/http2/client_conn_pool.go index 3a67636f..c936843e 100644 --- a/vendor/golang.org/x/net/http2/client_conn_pool.go +++ b/vendor/golang.org/x/net/http2/client_conn_pool.go @@ -7,13 +7,21 @@ package http2 import ( + "context" "crypto/tls" + "errors" "net/http" "sync" ) // ClientConnPool manages a pool of HTTP/2 client connections. type ClientConnPool interface { + // GetClientConn returns a specific HTTP/2 connection (usually + // a TLS-TCP connection) to an HTTP/2 server. On success, the + // returned ClientConn accounts for the upcoming RoundTrip + // call, so the caller should not omit it. If the caller needs + // to, ClientConn.RoundTrip can be called with a bogus + // new(http.Request) to release the stream reservation. GetClientConn(req *http.Request, addr string) (*ClientConn, error) MarkDead(*ClientConn) } @@ -40,7 +48,7 @@ type clientConnPool struct { conns map[string][]*ClientConn // key is host:port dialing map[string]*dialCall // currently in-flight dials keys map[*ClientConn][]string - addConnCalls map[string]*addConnCall // in-flight addConnIfNeede calls + addConnCalls map[string]*addConnCall // in-flight addConnIfNeeded calls } func (p *clientConnPool) GetClientConn(req *http.Request, addr string) (*ClientConn, error) { @@ -52,87 +60,85 @@ const ( noDialOnMiss = false ) -// shouldTraceGetConn reports whether getClientConn should call any -// ClientTrace.GetConn hook associated with the http.Request. -// -// This complexity is needed to avoid double calls of the GetConn hook -// during the back-and-forth between net/http and x/net/http2 (when the -// net/http.Transport is upgraded to also speak http2), as well as support -// the case where x/net/http2 is being used directly. -func (p *clientConnPool) shouldTraceGetConn(st clientConnIdleState) bool { - // If our Transport wasn't made via ConfigureTransport, always - // trace the GetConn hook if provided, because that means the - // http2 package is being used directly and it's the one - // dialing, as opposed to net/http. - if _, ok := p.t.ConnPool.(noDialClientConnPool); !ok { - return true - } - // Otherwise, only use the GetConn hook if this connection has - // been used previously for other requests. For fresh - // connections, the net/http package does the dialing. - return !st.freshConn -} - func (p *clientConnPool) getClientConn(req *http.Request, addr string, dialOnMiss bool) (*ClientConn, error) { + // TODO(dneil): Dial a new connection when t.DisableKeepAlives is set? if isConnectionCloseRequest(req) && dialOnMiss { // It gets its own connection. traceGetConn(req, addr) const singleUse = true - cc, err := p.t.dialClientConn(addr, singleUse) + cc, err := p.t.dialClientConn(req.Context(), addr, singleUse) if err != nil { return nil, err } return cc, nil } - p.mu.Lock() - for _, cc := range p.conns[addr] { - if st := cc.idleState(); st.canTakeNewRequest { - if p.shouldTraceGetConn(st) { - traceGetConn(req, addr) + for { + p.mu.Lock() + for _, cc := range p.conns[addr] { + if cc.ReserveNewRequest() { + // When a connection is presented to us by the net/http package, + // the GetConn hook has already been called. + // Don't call it a second time here. + if !cc.getConnCalled { + traceGetConn(req, addr) + } + cc.getConnCalled = false + p.mu.Unlock() + return cc, nil } + } + if !dialOnMiss { p.mu.Unlock() + return nil, ErrNoCachedConn + } + traceGetConn(req, addr) + call := p.getStartDialLocked(req.Context(), addr) + p.mu.Unlock() + <-call.done + if shouldRetryDial(call, req) { + continue + } + cc, err := call.res, call.err + if err != nil { + return nil, err + } + if cc.ReserveNewRequest() { return cc, nil } } - if !dialOnMiss { - p.mu.Unlock() - return nil, ErrNoCachedConn - } - traceGetConn(req, addr) - call := p.getStartDialLocked(addr) - p.mu.Unlock() - <-call.done - return call.res, call.err } // dialCall is an in-flight Transport dial call to a host. type dialCall struct { - _ incomparable - p *clientConnPool + _ incomparable + p *clientConnPool + // the context associated with the request + // that created this dialCall + ctx context.Context done chan struct{} // closed when done res *ClientConn // valid after done is closed err error // valid after done is closed } // requires p.mu is held. -func (p *clientConnPool) getStartDialLocked(addr string) *dialCall { +func (p *clientConnPool) getStartDialLocked(ctx context.Context, addr string) *dialCall { if call, ok := p.dialing[addr]; ok { // A dial is already in-flight. Don't start another. return call } - call := &dialCall{p: p, done: make(chan struct{})} + call := &dialCall{p: p, done: make(chan struct{}), ctx: ctx} if p.dialing == nil { p.dialing = make(map[string]*dialCall) } p.dialing[addr] = call - go call.dial(addr) + go call.dial(call.ctx, addr) return call } // run in its own goroutine. -func (c *dialCall) dial(addr string) { +func (c *dialCall) dial(ctx context.Context, addr string) { const singleUse = false // shared conn - c.res, c.err = c.p.t.dialClientConn(addr, singleUse) + c.res, c.err = c.p.t.dialClientConn(ctx, addr, singleUse) close(c.done) c.p.mu.Lock() @@ -195,6 +201,7 @@ func (c *addConnCall) run(t *Transport, key string, tc *tls.Conn) { if err != nil { c.err = err } else { + cc.getConnCalled = true // already called by the net/http package p.addConnLocked(key, cc) } delete(p.addConnCalls, key) @@ -276,3 +283,28 @@ type noDialClientConnPool struct{ *clientConnPool } func (p noDialClientConnPool) GetClientConn(req *http.Request, addr string) (*ClientConn, error) { return p.getClientConn(req, addr, noDialOnMiss) } + +// shouldRetryDial reports whether the current request should +// retry dialing after the call finished unsuccessfully, for example +// if the dial was canceled because of a context cancellation or +// deadline expiry. +func shouldRetryDial(call *dialCall, req *http.Request) bool { + if call.err == nil { + // No error, no need to retry + return false + } + if call.ctx == req.Context() { + // If the call has the same context as the request, the dial + // should not be retried, since any cancellation will have come + // from this request. + return false + } + if !errors.Is(call.err, context.Canceled) && !errors.Is(call.err, context.DeadlineExceeded) { + // If the call error is not because of a context cancellation or a deadline expiry, + // the dial should not be retried. + return false + } + // Only retry if the error is a context cancellation error or deadline expiry + // and the context associated with the call was canceled or expired. + return call.ctx.Err() != nil +} diff --git a/vendor/golang.org/x/net/http2/errors.go b/vendor/golang.org/x/net/http2/errors.go index 71f2c463..2663e5d2 100644 --- a/vendor/golang.org/x/net/http2/errors.go +++ b/vendor/golang.org/x/net/http2/errors.go @@ -53,6 +53,13 @@ func (e ErrCode) String() string { return fmt.Sprintf("unknown error code 0x%x", uint32(e)) } +func (e ErrCode) stringToken() string { + if s, ok := errCodeName[e]; ok { + return s + } + return fmt.Sprintf("ERR_UNKNOWN_%d", uint32(e)) +} + // ConnectionError is an error that results in the termination of the // entire connection. type ConnectionError ErrCode @@ -67,6 +74,11 @@ type StreamError struct { Cause error // optional additional detail } +// errFromPeer is a sentinel error value for StreamError.Cause to +// indicate that the StreamError was sent from the peer over the wire +// and wasn't locally generated in the Transport. +var errFromPeer = errors.New("received from peer") + func streamError(id uint32, code ErrCode) StreamError { return StreamError{StreamID: id, Code: code} } diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go index 514c126c..96a74790 100644 --- a/vendor/golang.org/x/net/http2/frame.go +++ b/vendor/golang.org/x/net/http2/frame.go @@ -122,7 +122,7 @@ var flagName = map[FrameType]map[Flags]string{ // a frameParser parses a frame given its FrameHeader and payload // bytes. The length of payload will always equal fh.Length (which // might be 0). -type frameParser func(fc *frameCache, fh FrameHeader, payload []byte) (Frame, error) +type frameParser func(fc *frameCache, fh FrameHeader, countError func(string), payload []byte) (Frame, error) var frameParsers = map[FrameType]frameParser{ FrameData: parseDataFrame, @@ -267,6 +267,11 @@ type Framer struct { lastFrame Frame errDetail error + // countError is a non-nil func that's called on a frame parse + // error with some unique error path token. It's initialized + // from Transport.CountError or Server.CountError. + countError func(errToken string) + // lastHeaderStream is non-zero if the last frame was an // unfinished HEADERS/CONTINUATION. lastHeaderStream uint32 @@ -426,6 +431,7 @@ func NewFramer(w io.Writer, r io.Reader) *Framer { fr := &Framer{ w: w, r: r, + countError: func(string) {}, logReads: logFrameReads, logWrites: logFrameWrites, debugReadLoggerf: log.Printf, @@ -500,7 +506,7 @@ func (fr *Framer) ReadFrame() (Frame, error) { if _, err := io.ReadFull(fr.r, payload); err != nil { return nil, err } - f, err := typeFrameParser(fh.Type)(fr.frameCache, fh, payload) + f, err := typeFrameParser(fh.Type)(fr.frameCache, fh, fr.countError, payload) if err != nil { if ce, ok := err.(connError); ok { return nil, fr.connError(ce.Code, ce.Reason) @@ -588,13 +594,14 @@ func (f *DataFrame) Data() []byte { return f.data } -func parseDataFrame(fc *frameCache, fh FrameHeader, payload []byte) (Frame, error) { +func parseDataFrame(fc *frameCache, fh FrameHeader, countError func(string), payload []byte) (Frame, error) { if fh.StreamID == 0 { // DATA frames MUST be associated with a stream. If a // DATA frame is received whose stream identifier // field is 0x0, the recipient MUST respond with a // connection error (Section 5.4.1) of type // PROTOCOL_ERROR. + countError("frame_data_stream_0") return nil, connError{ErrCodeProtocol, "DATA frame with stream ID 0"} } f := fc.getDataFrame() @@ -605,6 +612,7 @@ func parseDataFrame(fc *frameCache, fh FrameHeader, payload []byte) (Frame, erro var err error payload, padSize, err = readByte(payload) if err != nil { + countError("frame_data_pad_byte_short") return nil, err } } @@ -613,6 +621,7 @@ func parseDataFrame(fc *frameCache, fh FrameHeader, payload []byte) (Frame, erro // length of the frame payload, the recipient MUST // treat this as a connection error. // Filed: https://github.com/http2/http2-spec/issues/610 + countError("frame_data_pad_too_big") return nil, connError{ErrCodeProtocol, "pad size larger than data payload"} } f.data = payload[:len(payload)-int(padSize)] @@ -695,7 +704,7 @@ type SettingsFrame struct { p []byte } -func parseSettingsFrame(_ *frameCache, fh FrameHeader, p []byte) (Frame, error) { +func parseSettingsFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) { if fh.Flags.Has(FlagSettingsAck) && fh.Length > 0 { // When this (ACK 0x1) bit is set, the payload of the // SETTINGS frame MUST be empty. Receipt of a @@ -703,6 +712,7 @@ func parseSettingsFrame(_ *frameCache, fh FrameHeader, p []byte) (Frame, error) // field value other than 0 MUST be treated as a // connection error (Section 5.4.1) of type // FRAME_SIZE_ERROR. + countError("frame_settings_ack_with_length") return nil, ConnectionError(ErrCodeFrameSize) } if fh.StreamID != 0 { @@ -713,14 +723,17 @@ func parseSettingsFrame(_ *frameCache, fh FrameHeader, p []byte) (Frame, error) // field is anything other than 0x0, the endpoint MUST // respond with a connection error (Section 5.4.1) of // type PROTOCOL_ERROR. + countError("frame_settings_has_stream") return nil, ConnectionError(ErrCodeProtocol) } if len(p)%6 != 0 { + countError("frame_settings_mod_6") // Expecting even number of 6 byte settings. return nil, ConnectionError(ErrCodeFrameSize) } f := &SettingsFrame{FrameHeader: fh, p: p} if v, ok := f.Value(SettingInitialWindowSize); ok && v > (1<<31)-1 { + countError("frame_settings_window_size_too_big") // Values above the maximum flow control window size of 2^31 - 1 MUST // be treated as a connection error (Section 5.4.1) of type // FLOW_CONTROL_ERROR. @@ -832,11 +845,13 @@ type PingFrame struct { func (f *PingFrame) IsAck() bool { return f.Flags.Has(FlagPingAck) } -func parsePingFrame(_ *frameCache, fh FrameHeader, payload []byte) (Frame, error) { +func parsePingFrame(_ *frameCache, fh FrameHeader, countError func(string), payload []byte) (Frame, error) { if len(payload) != 8 { + countError("frame_ping_length") return nil, ConnectionError(ErrCodeFrameSize) } if fh.StreamID != 0 { + countError("frame_ping_has_stream") return nil, ConnectionError(ErrCodeProtocol) } f := &PingFrame{FrameHeader: fh} @@ -872,11 +887,13 @@ func (f *GoAwayFrame) DebugData() []byte { return f.debugData } -func parseGoAwayFrame(_ *frameCache, fh FrameHeader, p []byte) (Frame, error) { +func parseGoAwayFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) { if fh.StreamID != 0 { + countError("frame_goaway_has_stream") return nil, ConnectionError(ErrCodeProtocol) } if len(p) < 8 { + countError("frame_goaway_short") return nil, ConnectionError(ErrCodeFrameSize) } return &GoAwayFrame{ @@ -912,7 +929,7 @@ func (f *UnknownFrame) Payload() []byte { return f.p } -func parseUnknownFrame(_ *frameCache, fh FrameHeader, p []byte) (Frame, error) { +func parseUnknownFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) { return &UnknownFrame{fh, p}, nil } @@ -923,8 +940,9 @@ type WindowUpdateFrame struct { Increment uint32 // never read with high bit set } -func parseWindowUpdateFrame(_ *frameCache, fh FrameHeader, p []byte) (Frame, error) { +func parseWindowUpdateFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) { if len(p) != 4 { + countError("frame_windowupdate_bad_len") return nil, ConnectionError(ErrCodeFrameSize) } inc := binary.BigEndian.Uint32(p[:4]) & 0x7fffffff // mask off high reserved bit @@ -936,8 +954,10 @@ func parseWindowUpdateFrame(_ *frameCache, fh FrameHeader, p []byte) (Frame, err // control window MUST be treated as a connection // error (Section 5.4.1). if fh.StreamID == 0 { + countError("frame_windowupdate_zero_inc_conn") return nil, ConnectionError(ErrCodeProtocol) } + countError("frame_windowupdate_zero_inc_stream") return nil, streamError(fh.StreamID, ErrCodeProtocol) } return &WindowUpdateFrame{ @@ -988,7 +1008,7 @@ func (f *HeadersFrame) HasPriority() bool { return f.FrameHeader.Flags.Has(FlagHeadersPriority) } -func parseHeadersFrame(_ *frameCache, fh FrameHeader, p []byte) (_ Frame, err error) { +func parseHeadersFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (_ Frame, err error) { hf := &HeadersFrame{ FrameHeader: fh, } @@ -997,11 +1017,13 @@ func parseHeadersFrame(_ *frameCache, fh FrameHeader, p []byte) (_ Frame, err er // is received whose stream identifier field is 0x0, the recipient MUST // respond with a connection error (Section 5.4.1) of type // PROTOCOL_ERROR. + countError("frame_headers_zero_stream") return nil, connError{ErrCodeProtocol, "HEADERS frame with stream ID 0"} } var padLength uint8 if fh.Flags.Has(FlagHeadersPadded) { if p, padLength, err = readByte(p); err != nil { + countError("frame_headers_pad_short") return } } @@ -1009,16 +1031,19 @@ func parseHeadersFrame(_ *frameCache, fh FrameHeader, p []byte) (_ Frame, err er var v uint32 p, v, err = readUint32(p) if err != nil { + countError("frame_headers_prio_short") return nil, err } hf.Priority.StreamDep = v & 0x7fffffff hf.Priority.Exclusive = (v != hf.Priority.StreamDep) // high bit was set p, hf.Priority.Weight, err = readByte(p) if err != nil { + countError("frame_headers_prio_weight_short") return nil, err } } - if len(p)-int(padLength) <= 0 { + if len(p)-int(padLength) < 0 { + countError("frame_headers_pad_too_big") return nil, streamError(fh.StreamID, ErrCodeProtocol) } hf.headerFragBuf = p[:len(p)-int(padLength)] @@ -1125,11 +1150,13 @@ func (p PriorityParam) IsZero() bool { return p == PriorityParam{} } -func parsePriorityFrame(_ *frameCache, fh FrameHeader, payload []byte) (Frame, error) { +func parsePriorityFrame(_ *frameCache, fh FrameHeader, countError func(string), payload []byte) (Frame, error) { if fh.StreamID == 0 { + countError("frame_priority_zero_stream") return nil, connError{ErrCodeProtocol, "PRIORITY frame with stream ID 0"} } if len(payload) != 5 { + countError("frame_priority_bad_length") return nil, connError{ErrCodeFrameSize, fmt.Sprintf("PRIORITY frame payload size was %d; want 5", len(payload))} } v := binary.BigEndian.Uint32(payload[:4]) @@ -1172,11 +1199,13 @@ type RSTStreamFrame struct { ErrCode ErrCode } -func parseRSTStreamFrame(_ *frameCache, fh FrameHeader, p []byte) (Frame, error) { +func parseRSTStreamFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) { if len(p) != 4 { + countError("frame_rststream_bad_len") return nil, ConnectionError(ErrCodeFrameSize) } if fh.StreamID == 0 { + countError("frame_rststream_zero_stream") return nil, ConnectionError(ErrCodeProtocol) } return &RSTStreamFrame{fh, ErrCode(binary.BigEndian.Uint32(p[:4]))}, nil @@ -1202,8 +1231,9 @@ type ContinuationFrame struct { headerFragBuf []byte } -func parseContinuationFrame(_ *frameCache, fh FrameHeader, p []byte) (Frame, error) { +func parseContinuationFrame(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (Frame, error) { if fh.StreamID == 0 { + countError("frame_continuation_zero_stream") return nil, connError{ErrCodeProtocol, "CONTINUATION frame with stream ID 0"} } return &ContinuationFrame{fh, p}, nil @@ -1252,7 +1282,7 @@ func (f *PushPromiseFrame) HeadersEnded() bool { return f.FrameHeader.Flags.Has(FlagPushPromiseEndHeaders) } -func parsePushPromise(_ *frameCache, fh FrameHeader, p []byte) (_ Frame, err error) { +func parsePushPromise(_ *frameCache, fh FrameHeader, countError func(string), p []byte) (_ Frame, err error) { pp := &PushPromiseFrame{ FrameHeader: fh, } @@ -1263,6 +1293,7 @@ func parsePushPromise(_ *frameCache, fh FrameHeader, p []byte) (_ Frame, err err // with. If the stream identifier field specifies the value // 0x0, a recipient MUST respond with a connection error // (Section 5.4.1) of type PROTOCOL_ERROR. + countError("frame_pushpromise_zero_stream") return nil, ConnectionError(ErrCodeProtocol) } // The PUSH_PROMISE frame includes optional padding. @@ -1270,18 +1301,21 @@ func parsePushPromise(_ *frameCache, fh FrameHeader, p []byte) (_ Frame, err err var padLength uint8 if fh.Flags.Has(FlagPushPromisePadded) { if p, padLength, err = readByte(p); err != nil { + countError("frame_pushpromise_pad_short") return } } p, pp.PromiseID, err = readUint32(p) if err != nil { + countError("frame_pushpromise_promiseid_short") return } pp.PromiseID = pp.PromiseID & (1<<31 - 1) if int(padLength) > len(p) { // like the DATA frame, error out if padding is longer than the body. + countError("frame_pushpromise_pad_too_big") return nil, ConnectionError(ErrCodeProtocol) } pp.headerFragBuf = p[:len(p)-int(padLength)] diff --git a/vendor/golang.org/x/net/http2/go115.go b/vendor/golang.org/x/net/http2/go115.go new file mode 100644 index 00000000..908af1ab --- /dev/null +++ b/vendor/golang.org/x/net/http2/go115.go @@ -0,0 +1,27 @@ +// Copyright 2021 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. + +//go:build go1.15 +// +build go1.15 + +package http2 + +import ( + "context" + "crypto/tls" +) + +// dialTLSWithContext uses tls.Dialer, added in Go 1.15, to open a TLS +// connection. +func (t *Transport) dialTLSWithContext(ctx context.Context, network, addr string, cfg *tls.Config) (*tls.Conn, error) { + dialer := &tls.Dialer{ + Config: cfg, + } + cn, err := dialer.DialContext(ctx, network, addr) + if err != nil { + return nil, err + } + tlsCn := cn.(*tls.Conn) // DialContext comment promises this will always succeed + return tlsCn, nil +} diff --git a/vendor/golang.org/x/net/http2/headermap.go b/vendor/golang.org/x/net/http2/headermap.go index c3ff3fa1..9e12941d 100644 --- a/vendor/golang.org/x/net/http2/headermap.go +++ b/vendor/golang.org/x/net/http2/headermap.go @@ -6,7 +6,6 @@ package http2 import ( "net/http" - "strings" "sync" ) @@ -79,10 +78,10 @@ func buildCommonHeaderMaps() { } } -func lowerHeader(v string) string { +func lowerHeader(v string) (lower string, ascii bool) { buildCommonHeaderMapsOnce() if s, ok := commonLowerHeader[v]; ok { - return s + return s, true } - return strings.ToLower(v) + return asciiToLower(v) } diff --git a/vendor/golang.org/x/net/http2/hpack/huffman.go b/vendor/golang.org/x/net/http2/hpack/huffman.go index a1ab2f05..fe0b84cc 100644 --- a/vendor/golang.org/x/net/http2/hpack/huffman.go +++ b/vendor/golang.org/x/net/http2/hpack/huffman.go @@ -140,25 +140,29 @@ func buildRootHuffmanNode() { panic("unexpected size") } lazyRootHuffmanNode = newInternalNode() - for i, code := range huffmanCodes { - addDecoderNode(byte(i), code, huffmanCodeLen[i]) - } -} + // allocate a leaf node for each of the 256 symbols + leaves := new([256]node) -func addDecoderNode(sym byte, code uint32, codeLen uint8) { - cur := lazyRootHuffmanNode - for codeLen > 8 { - codeLen -= 8 - i := uint8(code >> codeLen) - if cur.children[i] == nil { - cur.children[i] = newInternalNode() + for sym, code := range huffmanCodes { + codeLen := huffmanCodeLen[sym] + + cur := lazyRootHuffmanNode + for codeLen > 8 { + codeLen -= 8 + i := uint8(code >> codeLen) + if cur.children[i] == nil { + cur.children[i] = newInternalNode() + } + cur = cur.children[i] + } + shift := 8 - codeLen + start, end := int(uint8(code< 0 { sc.sendWindowUpdate(nil, int(diff)) @@ -866,6 +865,15 @@ func (sc *serverConn) serve() { case res := <-sc.wroteFrameCh: sc.wroteFrame(res) case res := <-sc.readFrameCh: + // Process any written frames before reading new frames from the client since a + // written frame could have triggered a new stream to be started. + if sc.writingFrameAsync { + select { + case wroteRes := <-sc.wroteFrameCh: + sc.wroteFrame(wroteRes) + default: + } + } if !sc.processFrameFromReader(res) { return } @@ -1400,7 +1408,7 @@ func (sc *serverConn) processFrame(f Frame) error { // First frame received must be SETTINGS. if !sc.sawFirstSettings { if _, ok := f.(*SettingsFrame); !ok { - return ConnectionError(ErrCodeProtocol) + return sc.countError("first_settings", ConnectionError(ErrCodeProtocol)) } sc.sawFirstSettings = true } @@ -1425,7 +1433,7 @@ func (sc *serverConn) processFrame(f Frame) error { case *PushPromiseFrame: // A client cannot push. Thus, servers MUST treat the receipt of a PUSH_PROMISE // frame as a connection error (Section 5.4.1) of type PROTOCOL_ERROR. - return ConnectionError(ErrCodeProtocol) + return sc.countError("push_promise", ConnectionError(ErrCodeProtocol)) default: sc.vlogf("http2: server ignoring frame: %v", f.Header()) return nil @@ -1445,7 +1453,7 @@ func (sc *serverConn) processPing(f *PingFrame) error { // identifier field value other than 0x0, the recipient MUST // respond with a connection error (Section 5.4.1) of type // PROTOCOL_ERROR." - return ConnectionError(ErrCodeProtocol) + return sc.countError("ping_on_stream", ConnectionError(ErrCodeProtocol)) } if sc.inGoAway && sc.goAwayCode != ErrCodeNo { return nil @@ -1464,7 +1472,7 @@ func (sc *serverConn) processWindowUpdate(f *WindowUpdateFrame) error { // or PRIORITY on a stream in this state MUST be // treated as a connection error (Section 5.4.1) of // type PROTOCOL_ERROR." - return ConnectionError(ErrCodeProtocol) + return sc.countError("stream_idle", ConnectionError(ErrCodeProtocol)) } if st == nil { // "WINDOW_UPDATE can be sent by a peer that has sent a @@ -1475,7 +1483,7 @@ func (sc *serverConn) processWindowUpdate(f *WindowUpdateFrame) error { return nil } if !st.flow.add(int32(f.Increment)) { - return streamError(f.StreamID, ErrCodeFlowControl) + return sc.countError("bad_flow", streamError(f.StreamID, ErrCodeFlowControl)) } default: // connection-level flow control if !sc.flow.add(int32(f.Increment)) { @@ -1496,7 +1504,7 @@ func (sc *serverConn) processResetStream(f *RSTStreamFrame) error { // identifying an idle stream is received, the // recipient MUST treat this as a connection error // (Section 5.4.1) of type PROTOCOL_ERROR. - return ConnectionError(ErrCodeProtocol) + return sc.countError("reset_idle_stream", ConnectionError(ErrCodeProtocol)) } if st != nil { st.cancelCtx() @@ -1548,7 +1556,7 @@ func (sc *serverConn) processSettings(f *SettingsFrame) error { // Why is the peer ACKing settings we never sent? // The spec doesn't mention this case, but // hang up on them anyway. - return ConnectionError(ErrCodeProtocol) + return sc.countError("ack_mystery", ConnectionError(ErrCodeProtocol)) } return nil } @@ -1556,7 +1564,7 @@ func (sc *serverConn) processSettings(f *SettingsFrame) error { // This isn't actually in the spec, but hang up on // suspiciously large settings frames or those with // duplicate entries. - return ConnectionError(ErrCodeProtocol) + return sc.countError("settings_big_or_dups", ConnectionError(ErrCodeProtocol)) } if err := f.ForeachSetting(sc.processSetting); err != nil { return err @@ -1623,7 +1631,7 @@ func (sc *serverConn) processSettingInitialWindowSize(val uint32) error { // control window to exceed the maximum size as a // connection error (Section 5.4.1) of type // FLOW_CONTROL_ERROR." - return ConnectionError(ErrCodeFlowControl) + return sc.countError("setting_win_size", ConnectionError(ErrCodeFlowControl)) } } return nil @@ -1656,7 +1664,7 @@ func (sc *serverConn) processData(f *DataFrame) error { // or PRIORITY on a stream in this state MUST be // treated as a connection error (Section 5.4.1) of // type PROTOCOL_ERROR." - return ConnectionError(ErrCodeProtocol) + return sc.countError("data_on_idle", ConnectionError(ErrCodeProtocol)) } // "If a DATA frame is received whose stream is not in "open" @@ -1673,7 +1681,7 @@ func (sc *serverConn) processData(f *DataFrame) error { // and return any flow control bytes since we're not going // to consume them. if sc.inflow.available() < int32(f.Length) { - return streamError(id, ErrCodeFlowControl) + return sc.countError("data_flow", streamError(id, ErrCodeFlowControl)) } // Deduct the flow control from inflow, since we're // going to immediately add it back in @@ -1686,7 +1694,7 @@ func (sc *serverConn) processData(f *DataFrame) error { // Already have a stream error in flight. Don't send another. return nil } - return streamError(id, ErrCodeStreamClosed) + return sc.countError("closed", streamError(id, ErrCodeStreamClosed)) } if st.body == nil { panic("internal error: should have a body in this state") @@ -1698,12 +1706,12 @@ func (sc *serverConn) processData(f *DataFrame) error { // RFC 7540, sec 8.1.2.6: A request or response is also malformed if the // value of a content-length header field does not equal the sum of the // DATA frame payload lengths that form the body. - return streamError(id, ErrCodeProtocol) + return sc.countError("send_too_much", streamError(id, ErrCodeProtocol)) } if f.Length > 0 { // Check whether the client has flow control quota. if st.inflow.available() < int32(f.Length) { - return streamError(id, ErrCodeFlowControl) + return sc.countError("flow_on_data_length", streamError(id, ErrCodeFlowControl)) } st.inflow.take(int32(f.Length)) @@ -1711,7 +1719,7 @@ func (sc *serverConn) processData(f *DataFrame) error { wrote, err := st.body.Write(data) if err != nil { sc.sendWindowUpdate(nil, int(f.Length)-wrote) - return streamError(id, ErrCodeStreamClosed) + return sc.countError("body_write_err", streamError(id, ErrCodeStreamClosed)) } if wrote != len(data) { panic("internal error: bad Writer") @@ -1797,7 +1805,7 @@ func (sc *serverConn) processHeaders(f *MetaHeadersFrame) error { // stream identifier MUST respond with a connection error // (Section 5.4.1) of type PROTOCOL_ERROR. if id%2 != 1 { - return ConnectionError(ErrCodeProtocol) + return sc.countError("headers_even", ConnectionError(ErrCodeProtocol)) } // A HEADERS frame can be used to create a new stream or // send a trailer for an open one. If we already have a stream @@ -1814,7 +1822,7 @@ func (sc *serverConn) processHeaders(f *MetaHeadersFrame) error { // this state, it MUST respond with a stream error (Section 5.4.2) of // type STREAM_CLOSED. if st.state == stateHalfClosedRemote { - return streamError(id, ErrCodeStreamClosed) + return sc.countError("headers_half_closed", streamError(id, ErrCodeStreamClosed)) } return st.processTrailerHeaders(f) } @@ -1825,7 +1833,7 @@ func (sc *serverConn) processHeaders(f *MetaHeadersFrame) error { // receives an unexpected stream identifier MUST respond with // a connection error (Section 5.4.1) of type PROTOCOL_ERROR. if id <= sc.maxClientStreamID { - return ConnectionError(ErrCodeProtocol) + return sc.countError("stream_went_down", ConnectionError(ErrCodeProtocol)) } sc.maxClientStreamID = id @@ -1842,14 +1850,14 @@ func (sc *serverConn) processHeaders(f *MetaHeadersFrame) error { if sc.curClientStreams+1 > sc.advMaxStreams { if sc.unackedSettings == 0 { // They should know better. - return streamError(id, ErrCodeProtocol) + return sc.countError("over_max_streams", streamError(id, ErrCodeProtocol)) } // Assume it's a network race, where they just haven't // received our last SETTINGS update. But actually // this can't happen yet, because we don't yet provide // a way for users to adjust server parameters at // runtime. - return streamError(id, ErrCodeRefusedStream) + return sc.countError("over_max_streams_race", streamError(id, ErrCodeRefusedStream)) } initialState := stateOpen @@ -1859,7 +1867,7 @@ func (sc *serverConn) processHeaders(f *MetaHeadersFrame) error { st := sc.newStream(id, 0, initialState) if f.HasPriority() { - if err := checkPriority(f.StreamID, f.Priority); err != nil { + if err := sc.checkPriority(f.StreamID, f.Priority); err != nil { return err } sc.writeSched.AdjustStream(st.id, f.Priority) @@ -1903,15 +1911,15 @@ func (st *stream) processTrailerHeaders(f *MetaHeadersFrame) error { sc := st.sc sc.serveG.check() if st.gotTrailerHeader { - return ConnectionError(ErrCodeProtocol) + return sc.countError("dup_trailers", ConnectionError(ErrCodeProtocol)) } st.gotTrailerHeader = true if !f.StreamEnded() { - return streamError(st.id, ErrCodeProtocol) + return sc.countError("trailers_not_ended", streamError(st.id, ErrCodeProtocol)) } if len(f.PseudoFields()) > 0 { - return streamError(st.id, ErrCodeProtocol) + return sc.countError("trailers_pseudo", streamError(st.id, ErrCodeProtocol)) } if st.trailer != nil { for _, hf := range f.RegularFields() { @@ -1920,7 +1928,7 @@ func (st *stream) processTrailerHeaders(f *MetaHeadersFrame) error { // TODO: send more details to the peer somehow. But http2 has // no way to send debug data at a stream level. Discuss with // HTTP folk. - return streamError(st.id, ErrCodeProtocol) + return sc.countError("trailers_bogus", streamError(st.id, ErrCodeProtocol)) } st.trailer[key] = append(st.trailer[key], hf.Value) } @@ -1929,13 +1937,13 @@ func (st *stream) processTrailerHeaders(f *MetaHeadersFrame) error { return nil } -func checkPriority(streamID uint32, p PriorityParam) error { +func (sc *serverConn) checkPriority(streamID uint32, p PriorityParam) error { if streamID == p.StreamDep { // Section 5.3.1: "A stream cannot depend on itself. An endpoint MUST treat // this as a stream error (Section 5.4.2) of type PROTOCOL_ERROR." // Section 5.3.3 says that a stream can depend on one of its dependencies, // so it's only self-dependencies that are forbidden. - return streamError(streamID, ErrCodeProtocol) + return sc.countError("priority", streamError(streamID, ErrCodeProtocol)) } return nil } @@ -1944,7 +1952,7 @@ func (sc *serverConn) processPriority(f *PriorityFrame) error { if sc.inGoAway { return nil } - if err := checkPriority(f.StreamID, f.PriorityParam); err != nil { + if err := sc.checkPriority(f.StreamID, f.PriorityParam); err != nil { return err } sc.writeSched.AdjustStream(f.StreamID, f.PriorityParam) @@ -2001,7 +2009,7 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res isConnect := rp.method == "CONNECT" if isConnect { if rp.path != "" || rp.scheme != "" || rp.authority == "" { - return nil, nil, streamError(f.StreamID, ErrCodeProtocol) + return nil, nil, sc.countError("bad_connect", streamError(f.StreamID, ErrCodeProtocol)) } } else if rp.method == "" || rp.path == "" || (rp.scheme != "https" && rp.scheme != "http") { // See 8.1.2.6 Malformed Requests and Responses: @@ -2014,13 +2022,13 @@ func (sc *serverConn) newWriterAndRequest(st *stream, f *MetaHeadersFrame) (*res // "All HTTP/2 requests MUST include exactly one valid // value for the :method, :scheme, and :path // pseudo-header fields" - return nil, nil, streamError(f.StreamID, ErrCodeProtocol) + return nil, nil, sc.countError("bad_path_method", streamError(f.StreamID, ErrCodeProtocol)) } bodyOpen := !f.StreamEnded() if rp.method == "HEAD" && bodyOpen { // HEAD requests can't have bodies - return nil, nil, streamError(f.StreamID, ErrCodeProtocol) + return nil, nil, sc.countError("head_body", streamError(f.StreamID, ErrCodeProtocol)) } rp.header = make(http.Header) @@ -2103,7 +2111,7 @@ func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*r var err error url_, err = url.ParseRequestURI(rp.path) if err != nil { - return nil, nil, streamError(st.id, ErrCodeProtocol) + return nil, nil, sc.countError("bad_path", streamError(st.id, ErrCodeProtocol)) } requestURI = rp.path } @@ -2789,8 +2797,12 @@ func (w *responseWriter) Push(target string, opts *http.PushOptions) error { // but PUSH_PROMISE requests cannot have a body. // http://tools.ietf.org/html/rfc7540#section-8.2 // Also disallow Host, since the promised URL must be absolute. - switch strings.ToLower(k) { - case "content-length", "content-encoding", "trailer", "te", "expect", "host": + if asciiEqualFold(k, "content-length") || + asciiEqualFold(k, "content-encoding") || + asciiEqualFold(k, "trailer") || + asciiEqualFold(k, "te") || + asciiEqualFold(k, "expect") || + asciiEqualFold(k, "host") { return fmt.Errorf("promised request headers cannot include %q", k) } } @@ -2982,3 +2994,31 @@ func h1ServerKeepAlivesDisabled(hs *http.Server) bool { } return false } + +func (sc *serverConn) countError(name string, err error) error { + if sc == nil || sc.srv == nil { + return err + } + f := sc.srv.CountError + if f == nil { + return err + } + var typ string + var code ErrCode + switch e := err.(type) { + case ConnectionError: + typ = "conn" + code = ErrCode(e) + case StreamError: + typ = "stream" + code = ErrCode(e.Code) + default: + return err + } + codeStr := errCodeName[code] + if codeStr == "" { + codeStr = strconv.Itoa(int(code)) + } + f(fmt.Sprintf("%s_%s_%s", typ, codeStr, name)) + return err +} diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go index 7688d72c..b5e2ac64 100644 --- a/vendor/golang.org/x/net/http2/transport.go +++ b/vendor/golang.org/x/net/http2/transport.go @@ -24,6 +24,7 @@ import ( "net/http" "net/http/httptrace" "net/textproto" + "os" "sort" "strconv" "strings" @@ -51,6 +52,15 @@ const ( transportDefaultStreamMinRefresh = 4 << 10 defaultUserAgent = "Go-http-client/2.0" + + // initialMaxConcurrentStreams is a connections maxConcurrentStreams until + // it's received servers initial SETTINGS frame, which corresponds with the + // spec's minimum recommended value. + initialMaxConcurrentStreams = 100 + + // defaultMaxConcurrentStreams is a connections default maxConcurrentStreams + // if the server doesn't include one in its initial SETTINGS frame. + defaultMaxConcurrentStreams = 1000 ) // Transport is an HTTP/2 Transport. @@ -121,6 +131,17 @@ type Transport struct { // Defaults to 15s. PingTimeout time.Duration + // WriteByteTimeout is the timeout after which the connection will be + // closed no data can be written to it. The timeout begins when data is + // available to write, and is extended whenever any bytes are written. + WriteByteTimeout time.Duration + + // CountError, if non-nil, is called on HTTP/2 transport errors. + // It's intended to increment a metric for monitoring, such + // as an expvar or Prometheus metric. + // The errType consists of only ASCII word characters. + CountError func(errType string) + // t1, if non-nil, is the standard library Transport using // this transport. Its settings are used (but not its // RoundTrip method, etc). @@ -227,11 +248,12 @@ func (t *Transport) initConnPool() { // ClientConn is the state of a single HTTP/2 client connection to an // HTTP/2 server. type ClientConn struct { - t *Transport - tconn net.Conn // usually *tls.Conn, except specialized impls - tlsState *tls.ConnectionState // nil only for specialized impls - reused uint32 // whether conn is being reused; atomic - singleUse bool // whether being used for a single http.Request + t *Transport + tconn net.Conn // usually *tls.Conn, except specialized impls + tlsState *tls.ConnectionState // nil only for specialized impls + reused uint32 // whether conn is being reused; atomic + singleUse bool // whether being used for a single http.Request + getConnCalled bool // used by clientConnPool // readLoop goroutine fields: readerDone chan struct{} // closed on error @@ -244,87 +266,94 @@ type ClientConn struct { cond *sync.Cond // hold mu; broadcast on flow/closed changes flow flow // our conn-level flow control quota (cs.flow is per stream) inflow flow // peer's conn-level flow control + doNotReuse bool // whether conn is marked to not be reused for any future requests closing bool closed bool + seenSettings bool // true if we've seen a settings frame, false otherwise wantSettingsAck bool // we sent a SETTINGS frame and haven't heard back goAway *GoAwayFrame // if non-nil, the GoAwayFrame we received goAwayDebug string // goAway frame's debug data, retained as a string streams map[uint32]*clientStream // client-initiated + streamsReserved int // incr by ReserveNewRequest; decr on RoundTrip nextStreamID uint32 pendingRequests int // requests blocked and waiting to be sent because len(streams) == maxConcurrentStreams pings map[[8]byte]chan struct{} // in flight ping data to notification channel - bw *bufio.Writer br *bufio.Reader - fr *Framer lastActive time.Time lastIdle time.Time // time last idle - // Settings from peer: (also guarded by mu) + // Settings from peer: (also guarded by wmu) maxFrameSize uint32 maxConcurrentStreams uint32 peerMaxHeaderListSize uint64 initialWindowSize uint32 - hbuf bytes.Buffer // HPACK encoder writes into this - henc *hpack.Encoder - freeBuf [][]byte + // reqHeaderMu is a 1-element semaphore channel controlling access to sending new requests. + // Write to reqHeaderMu to lock it, read from it to unlock. + // Lock reqmu BEFORE mu or wmu. + reqHeaderMu chan struct{} - wmu sync.Mutex // held while writing; acquire AFTER mu if holding both - werr error // first write error that has occurred + // wmu is held while writing. + // Acquire BEFORE mu when holding both, to avoid blocking mu on network writes. + // Only acquire both at the same time when changing peer settings. + wmu sync.Mutex + bw *bufio.Writer + fr *Framer + werr error // first write error that has occurred + hbuf bytes.Buffer // HPACK encoder writes into this + henc *hpack.Encoder } // clientStream is the state for a single HTTP/2 stream. One of these // is created for each Transport.RoundTrip call. type clientStream struct { - cc *ClientConn - req *http.Request + cc *ClientConn + + // Fields of Request that we may access even after the response body is closed. + ctx context.Context + reqCancel <-chan struct{} + trace *httptrace.ClientTrace // or nil ID uint32 - resc chan resAndError bufPipe pipe // buffered pipe with the flow-controlled response payload - startedWrite bool // started request body write; guarded by cc.mu requestedGzip bool - on100 func() // optional code to run if get a 100 continue response + isHead bool + + abortOnce sync.Once + abort chan struct{} // closed to signal stream should end immediately + abortErr error // set if abort is closed + + peerClosed chan struct{} // closed when the peer sends an END_STREAM flag + donec chan struct{} // closed after the stream is in the closed state + on100 chan struct{} // buffered; written to if a 100 is received + + respHeaderRecv chan struct{} // closed when headers are received + res *http.Response // set if respHeaderRecv is closed flow flow // guarded by cc.mu inflow flow // guarded by cc.mu bytesRemain int64 // -1 means unknown; owned by transportResponseBody.Read readErr error // sticky read error; owned by transportResponseBody.Read - stopReqBody error // if non-nil, stop writing req body; guarded by cc.mu - didReset bool // whether we sent a RST_STREAM to the server; guarded by cc.mu - peerReset chan struct{} // closed on peer reset - resetErr error // populated before peerReset is closed + reqBody io.ReadCloser + reqBodyContentLength int64 // -1 means unknown + reqBodyClosed bool // body has been closed; guarded by cc.mu - done chan struct{} // closed when stream remove from cc.streams map; close calls guarded by cc.mu + // owned by writeRequest: + sentEndStream bool // sent an END_STREAM flag to the peer + sentHeaders bool // owned by clientConnReadLoop: firstByte bool // got the first response byte pastHeaders bool // got first MetaHeadersFrame (actual headers) pastTrailers bool // got optional second MetaHeadersFrame (trailers) num1xx uint8 // number of 1xx responses seen + readClosed bool // peer sent an END_STREAM flag + readAborted bool // read loop reset the stream trailer http.Header // accumulated trailers resTrailer *http.Header // client's Response.Trailer } -// awaitRequestCancel waits for the user to cancel a request or for the done -// channel to be signaled. A non-nil error is returned only if the request was -// canceled. -func awaitRequestCancel(req *http.Request, done <-chan struct{}) error { - ctx := req.Context() - if req.Cancel == nil && ctx.Done() == nil { - return nil - } - select { - case <-req.Cancel: - return errRequestCanceled - case <-ctx.Done(): - return ctx.Err() - case <-done: - return nil - } -} - var got1xxFuncForTests func(int, textproto.MIMEHeader) error // get1xxTraceFunc returns the value of request's httptrace.ClientTrace.Got1xxResponse func, @@ -336,73 +365,65 @@ func (cs *clientStream) get1xxTraceFunc() func(int, textproto.MIMEHeader) error return traceGot1xxResponseFunc(cs.trace) } -// awaitRequestCancel waits for the user to cancel a request, its context to -// expire, or for the request to be done (any way it might be removed from the -// cc.streams map: peer reset, successful completion, TCP connection breakage, -// etc). If the request is canceled, then cs will be canceled and closed. -func (cs *clientStream) awaitRequestCancel(req *http.Request) { - if err := awaitRequestCancel(req, cs.done); err != nil { - cs.cancelStream() - cs.bufPipe.CloseWithError(err) +func (cs *clientStream) abortStream(err error) { + cs.cc.mu.Lock() + defer cs.cc.mu.Unlock() + cs.abortStreamLocked(err) +} + +func (cs *clientStream) abortStreamLocked(err error) { + cs.abortOnce.Do(func() { + cs.abortErr = err + close(cs.abort) + }) + if cs.reqBody != nil && !cs.reqBodyClosed { + cs.reqBody.Close() + cs.reqBodyClosed = true + } + // TODO(dneil): Clean up tests where cs.cc.cond is nil. + if cs.cc.cond != nil { + // Wake up writeRequestBody if it is waiting on flow control. + cs.cc.cond.Broadcast() } } -func (cs *clientStream) cancelStream() { - cc := cs.cc - cc.mu.Lock() - didReset := cs.didReset - cs.didReset = true - cc.mu.Unlock() - - if !didReset { - cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) - cc.forgetStreamID(cs.ID) - } -} - -// checkResetOrDone reports any error sent in a RST_STREAM frame by the -// server, or errStreamClosed if the stream is complete. -func (cs *clientStream) checkResetOrDone() error { - select { - case <-cs.peerReset: - return cs.resetErr - case <-cs.done: - return errStreamClosed - default: - return nil - } -} - -func (cs *clientStream) getStartedWrite() bool { +func (cs *clientStream) abortRequestBodyWrite() { cc := cs.cc cc.mu.Lock() defer cc.mu.Unlock() - return cs.startedWrite -} - -func (cs *clientStream) abortRequestBodyWrite(err error) { - if err == nil { - panic("nil error") + if cs.reqBody != nil && !cs.reqBodyClosed { + cs.reqBody.Close() + cs.reqBodyClosed = true + cc.cond.Broadcast() } - cc := cs.cc - cc.mu.Lock() - cs.stopReqBody = err - cc.cond.Broadcast() - cc.mu.Unlock() } type stickyErrWriter struct { - w io.Writer - err *error + conn net.Conn + timeout time.Duration + err *error } func (sew stickyErrWriter) Write(p []byte) (n int, err error) { if *sew.err != nil { return 0, *sew.err } - n, err = sew.w.Write(p) - *sew.err = err - return + for { + if sew.timeout != 0 { + sew.conn.SetWriteDeadline(time.Now().Add(sew.timeout)) + } + nn, err := sew.conn.Write(p[n:]) + n += nn + if n < len(p) && nn > 0 && errors.Is(err, os.ErrDeadlineExceeded) { + // Keep extending the deadline so long as we're making progress. + continue + } + if sew.timeout != 0 { + sew.conn.SetWriteDeadline(time.Time{}) + } + *sew.err = err + return n, err + } } // noCachedConnError is the concrete type of ErrNoCachedConn, which @@ -475,9 +496,9 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res } reused := !atomic.CompareAndSwapUint32(&cc.reused, 0, 1) traceGotConn(req, cc, reused) - res, gotErrAfterReqBodyWrite, err := cc.roundTrip(req) + res, err := cc.RoundTrip(req) if err != nil && retry <= 6 { - if req, err = shouldRetryRequest(req, err, gotErrAfterReqBodyWrite); err == nil { + if req, err = shouldRetryRequest(req, err); err == nil { // After the first retry, do exponential backoff with 10% jitter. if retry == 0 { continue @@ -488,7 +509,7 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res case <-time.After(time.Second * time.Duration(backoff)): continue case <-req.Context().Done(): - return nil, req.Context().Err() + err = req.Context().Err() } } } @@ -519,7 +540,7 @@ var ( // response headers. It is always called with a non-nil error. // It returns either a request to retry (either the same request, or a // modified clone), or an error if the request can't be replayed. -func shouldRetryRequest(req *http.Request, err error, afterBodyWrite bool) (*http.Request, error) { +func shouldRetryRequest(req *http.Request, err error) (*http.Request, error) { if !canRetryError(err) { return nil, err } @@ -532,7 +553,6 @@ func shouldRetryRequest(req *http.Request, err error, afterBodyWrite bool) (*htt // If the request body can be reset back to its original // state via the optional req.GetBody, do that. if req.GetBody != nil { - // TODO: consider a req.Body.Close here? or audit that all caller paths do? body, err := req.GetBody() if err != nil { return nil, err @@ -544,10 +564,8 @@ func shouldRetryRequest(req *http.Request, err error, afterBodyWrite bool) (*htt // The Request.Body can't reset back to the beginning, but we // don't seem to have started to read from it yet, so reuse - // the request directly. The "afterBodyWrite" means the - // bodyWrite process has started, which becomes true before - // the first Read. - if !afterBodyWrite { + // the request directly. + if err == errClientConnUnusable { return req, nil } @@ -559,17 +577,21 @@ func canRetryError(err error) bool { return true } if se, ok := err.(StreamError); ok { + if se.Code == ErrCodeProtocol && se.Cause == errFromPeer { + // See golang/go#47635, golang/go#42777 + return true + } return se.Code == ErrCodeRefusedStream } return false } -func (t *Transport) dialClientConn(addr string, singleUse bool) (*ClientConn, error) { +func (t *Transport) dialClientConn(ctx context.Context, addr string, singleUse bool) (*ClientConn, error) { host, _, err := net.SplitHostPort(addr) if err != nil { return nil, err } - tconn, err := t.dialTLS()("tcp", addr, t.newTLSConfig(host)) + tconn, err := t.dialTLS(ctx)("tcp", addr, t.newTLSConfig(host)) if err != nil { return nil, err } @@ -590,34 +612,24 @@ func (t *Transport) newTLSConfig(host string) *tls.Config { return cfg } -func (t *Transport) dialTLS() func(string, string, *tls.Config) (net.Conn, error) { +func (t *Transport) dialTLS(ctx context.Context) func(string, string, *tls.Config) (net.Conn, error) { if t.DialTLS != nil { return t.DialTLS } - return t.dialTLSDefault -} - -func (t *Transport) dialTLSDefault(network, addr string, cfg *tls.Config) (net.Conn, error) { - cn, err := tls.Dial(network, addr, cfg) - if err != nil { - return nil, err - } - if err := cn.Handshake(); err != nil { - return nil, err - } - if !cfg.InsecureSkipVerify { - if err := cn.VerifyHostname(cfg.ServerName); err != nil { + return func(network, addr string, cfg *tls.Config) (net.Conn, error) { + tlsCn, err := t.dialTLSWithContext(ctx, network, addr, cfg) + if err != nil { return nil, err } + state := tlsCn.ConnectionState() + if p := state.NegotiatedProtocol; p != NextProtoTLS { + return nil, fmt.Errorf("http2: unexpected ALPN protocol %q; want %q", p, NextProtoTLS) + } + if !state.NegotiatedProtocolIsMutual { + return nil, errors.New("http2: could not negotiate protocol mutually") + } + return tlsCn, nil } - state := cn.ConnectionState() - if p := state.NegotiatedProtocol; p != NextProtoTLS { - return nil, fmt.Errorf("http2: unexpected ALPN protocol %q; want %q", p, NextProtoTLS) - } - if !state.NegotiatedProtocolIsMutual { - return nil, errors.New("http2: could not negotiate protocol mutually") - } - return cn, nil } // disableKeepAlives reports whether connections should be closed as @@ -643,14 +655,15 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro tconn: c, readerDone: make(chan struct{}), nextStreamID: 1, - maxFrameSize: 16 << 10, // spec default - initialWindowSize: 65535, // spec default - maxConcurrentStreams: 1000, // "infinite", per spec. 1000 seems good enough. - peerMaxHeaderListSize: 0xffffffffffffffff, // "infinite", per spec. Use 2^64-1 instead. + maxFrameSize: 16 << 10, // spec default + initialWindowSize: 65535, // spec default + maxConcurrentStreams: initialMaxConcurrentStreams, // "infinite", per spec. Use a smaller value until we have received server settings. + peerMaxHeaderListSize: 0xffffffffffffffff, // "infinite", per spec. Use 2^64-1 instead. streams: make(map[uint32]*clientStream), singleUse: singleUse, wantSettingsAck: true, pings: make(map[[8]byte]chan struct{}), + reqHeaderMu: make(chan struct{}, 1), } if d := t.idleConnTimeout(); d != 0 { cc.idleTimeout = d @@ -665,9 +678,16 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro // TODO: adjust this writer size to account for frame size + // MTU + crypto/tls record padding. - cc.bw = bufio.NewWriter(stickyErrWriter{c, &cc.werr}) + cc.bw = bufio.NewWriter(stickyErrWriter{ + conn: c, + timeout: t.WriteByteTimeout, + err: &cc.werr, + }) cc.br = bufio.NewReader(c) cc.fr = NewFramer(cc.bw, cc.br) + if t.CountError != nil { + cc.fr.countError = t.CountError + } cc.fr.ReadMetaHeaders = hpack.NewDecoder(initialHeaderTableSize, nil) cc.fr.MaxHeaderListSize = t.maxHeaderListSize() @@ -720,6 +740,13 @@ func (cc *ClientConn) healthCheck() { } } +// SetDoNotReuse marks cc as not reusable for future HTTP requests. +func (cc *ClientConn) SetDoNotReuse() { + cc.mu.Lock() + defer cc.mu.Unlock() + cc.doNotReuse = true +} + func (cc *ClientConn) setGoAway(f *GoAwayFrame) { cc.mu.Lock() defer cc.mu.Unlock() @@ -737,27 +764,94 @@ func (cc *ClientConn) setGoAway(f *GoAwayFrame) { last := f.LastStreamID for streamID, cs := range cc.streams { if streamID > last { - select { - case cs.resc <- resAndError{err: errClientConnGotGoAway}: - default: - } + cs.abortStreamLocked(errClientConnGotGoAway) } } } // CanTakeNewRequest reports whether the connection can take a new request, // meaning it has not been closed or received or sent a GOAWAY. +// +// If the caller is going to immediately make a new request on this +// connection, use ReserveNewRequest instead. func (cc *ClientConn) CanTakeNewRequest() bool { cc.mu.Lock() defer cc.mu.Unlock() return cc.canTakeNewRequestLocked() } +// ReserveNewRequest is like CanTakeNewRequest but also reserves a +// concurrent stream in cc. The reservation is decremented on the +// next call to RoundTrip. +func (cc *ClientConn) ReserveNewRequest() bool { + cc.mu.Lock() + defer cc.mu.Unlock() + if st := cc.idleStateLocked(); !st.canTakeNewRequest { + return false + } + cc.streamsReserved++ + return true +} + +// ClientConnState describes the state of a ClientConn. +type ClientConnState struct { + // Closed is whether the connection is closed. + Closed bool + + // Closing is whether the connection is in the process of + // closing. It may be closing due to shutdown, being a + // single-use connection, being marked as DoNotReuse, or + // having received a GOAWAY frame. + Closing bool + + // StreamsActive is how many streams are active. + StreamsActive int + + // StreamsReserved is how many streams have been reserved via + // ClientConn.ReserveNewRequest. + StreamsReserved int + + // StreamsPending is how many requests have been sent in excess + // of the peer's advertised MaxConcurrentStreams setting and + // are waiting for other streams to complete. + StreamsPending int + + // MaxConcurrentStreams is how many concurrent streams the + // peer advertised as acceptable. Zero means no SETTINGS + // frame has been received yet. + MaxConcurrentStreams uint32 + + // LastIdle, if non-zero, is when the connection last + // transitioned to idle state. + LastIdle time.Time +} + +// State returns a snapshot of cc's state. +func (cc *ClientConn) State() ClientConnState { + cc.wmu.Lock() + maxConcurrent := cc.maxConcurrentStreams + if !cc.seenSettings { + maxConcurrent = 0 + } + cc.wmu.Unlock() + + cc.mu.Lock() + defer cc.mu.Unlock() + return ClientConnState{ + Closed: cc.closed, + Closing: cc.closing || cc.singleUse || cc.doNotReuse || cc.goAway != nil, + StreamsActive: len(cc.streams), + StreamsReserved: cc.streamsReserved, + StreamsPending: cc.pendingRequests, + LastIdle: cc.lastIdle, + MaxConcurrentStreams: maxConcurrent, + } +} + // clientConnIdleState describes the suitability of a client // connection to initiate a new RoundTrip request. type clientConnIdleState struct { canTakeNewRequest bool - freshConn bool // whether it's unused by any previous request } func (cc *ClientConn) idleState() clientConnIdleState { @@ -778,13 +872,13 @@ func (cc *ClientConn) idleStateLocked() (st clientConnIdleState) { // writing it. maxConcurrentOkay = true } else { - maxConcurrentOkay = int64(len(cc.streams)+1) < int64(cc.maxConcurrentStreams) + maxConcurrentOkay = int64(len(cc.streams)+cc.streamsReserved+1) <= int64(cc.maxConcurrentStreams) } st.canTakeNewRequest = cc.goAway == nil && !cc.closed && !cc.closing && maxConcurrentOkay && + !cc.doNotReuse && int64(cc.nextStreamID)+2*int64(cc.pendingRequests) < math.MaxInt32 && !cc.tooIdleLocked() - st.freshConn = cc.nextStreamID == 1 && st.canTakeNewRequest return } @@ -815,7 +909,7 @@ func (cc *ClientConn) onIdleTimeout() { func (cc *ClientConn) closeIfIdle() { cc.mu.Lock() - if len(cc.streams) > 0 { + if len(cc.streams) > 0 || cc.streamsReserved > 0 { cc.mu.Unlock() return } @@ -830,9 +924,15 @@ func (cc *ClientConn) closeIfIdle() { cc.tconn.Close() } +func (cc *ClientConn) isDoNotReuseAndIdle() bool { + cc.mu.Lock() + defer cc.mu.Unlock() + return cc.doNotReuse && len(cc.streams) == 0 +} + var shutdownEnterWaitStateHook = func() {} -// Shutdown gracefully close the client connection, waiting for running streams to complete. +// Shutdown gracefully closes the client connection, waiting for running streams to complete. func (cc *ClientConn) Shutdown(ctx context.Context) error { if err := cc.sendGoAway(); err != nil { return err @@ -871,15 +971,18 @@ func (cc *ClientConn) Shutdown(ctx context.Context) error { func (cc *ClientConn) sendGoAway() error { cc.mu.Lock() - defer cc.mu.Unlock() - cc.wmu.Lock() - defer cc.wmu.Unlock() - if cc.closing { + closing := cc.closing + cc.closing = true + maxStreamID := cc.nextStreamID + cc.mu.Unlock() + if closing { // GOAWAY sent already return nil } + + cc.wmu.Lock() + defer cc.wmu.Unlock() // Send a graceful shutdown frame to server - maxStreamID := cc.nextStreamID if err := cc.fr.WriteGoAway(maxStreamID, ErrCodeNo, nil); err != nil { return err } @@ -887,7 +990,6 @@ func (cc *ClientConn) sendGoAway() error { return err } // Prevent new requests - cc.closing = true return nil } @@ -895,17 +997,12 @@ func (cc *ClientConn) sendGoAway() error { // err is sent to streams. func (cc *ClientConn) closeForError(err error) error { cc.mu.Lock() + cc.closed = true + for _, cs := range cc.streams { + cs.abortStreamLocked(err) + } defer cc.cond.Broadcast() defer cc.mu.Unlock() - for id, cs := range cc.streams { - select { - case cs.resc <- resAndError{err: err}: - default: - } - cs.bufPipe.CloseWithError(err) - delete(cc.streams, id) - } - cc.closed = true return cc.tconn.Close() } @@ -920,49 +1017,12 @@ func (cc *ClientConn) Close() error { // closes the client connection immediately. In-flight requests are interrupted. func (cc *ClientConn) closeForLostPing() error { err := errors.New("http2: client connection lost") + if f := cc.t.CountError; f != nil { + f("conn_close_lost_ping") + } return cc.closeForError(err) } -const maxAllocFrameSize = 512 << 10 - -// frameBuffer returns a scratch buffer suitable for writing DATA frames. -// They're capped at the min of the peer's max frame size or 512KB -// (kinda arbitrarily), but definitely capped so we don't allocate 4GB -// bufers. -func (cc *ClientConn) frameScratchBuffer() []byte { - cc.mu.Lock() - size := cc.maxFrameSize - if size > maxAllocFrameSize { - size = maxAllocFrameSize - } - for i, buf := range cc.freeBuf { - if len(buf) >= int(size) { - cc.freeBuf[i] = nil - cc.mu.Unlock() - return buf[:size] - } - } - cc.mu.Unlock() - return make([]byte, size) -} - -func (cc *ClientConn) putFrameScratchBuffer(buf []byte) { - cc.mu.Lock() - defer cc.mu.Unlock() - const maxBufs = 4 // arbitrary; 4 concurrent requests per conn? investigate. - if len(cc.freeBuf) < maxBufs { - cc.freeBuf = append(cc.freeBuf, buf) - return - } - for i, old := range cc.freeBuf { - if old == nil { - cc.freeBuf[i] = buf - return - } - } - // forget about it. -} - // errRequestCanceled is a copy of net/http's errRequestCanceled because it's not // exported. At least they'll be DeepEqual for h1-vs-h2 comparisons tests. var errRequestCanceled = errors.New("net/http: request canceled") @@ -1005,7 +1065,7 @@ func checkConnHeaders(req *http.Request) error { if vv := req.Header["Transfer-Encoding"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != "" && vv[0] != "chunked") { return fmt.Errorf("http2: invalid Transfer-Encoding request header: %q", vv) } - if vv := req.Header["Connection"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != "" && !strings.EqualFold(vv[0], "close") && !strings.EqualFold(vv[0], "keep-alive")) { + if vv := req.Header["Connection"]; len(vv) > 0 && (len(vv) > 1 || vv[0] != "" && !asciiEqualFold(vv[0], "close") && !asciiEqualFold(vv[0], "keep-alive")) { return fmt.Errorf("http2: invalid Connection request header: %q", vv) } return nil @@ -1024,41 +1084,145 @@ func actualContentLength(req *http.Request) int64 { return -1 } -func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { - resp, _, err := cc.roundTrip(req) - return resp, err +func (cc *ClientConn) decrStreamReservations() { + cc.mu.Lock() + defer cc.mu.Unlock() + cc.decrStreamReservationsLocked() } -func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAfterReqBodyWrite bool, err error) { - if err := checkConnHeaders(req); err != nil { - return nil, false, err +func (cc *ClientConn) decrStreamReservationsLocked() { + if cc.streamsReserved > 0 { + cc.streamsReserved-- } +} + +func (cc *ClientConn) RoundTrip(req *http.Request) (*http.Response, error) { + ctx := req.Context() + cs := &clientStream{ + cc: cc, + ctx: ctx, + reqCancel: req.Cancel, + isHead: req.Method == "HEAD", + reqBody: req.Body, + reqBodyContentLength: actualContentLength(req), + trace: httptrace.ContextClientTrace(ctx), + peerClosed: make(chan struct{}), + abort: make(chan struct{}), + respHeaderRecv: make(chan struct{}), + donec: make(chan struct{}), + } + go cs.doRequest(req) + + waitDone := func() error { + select { + case <-cs.donec: + return nil + case <-ctx.Done(): + return ctx.Err() + case <-cs.reqCancel: + return errRequestCanceled + } + } + + for { + select { + case <-cs.respHeaderRecv: + res := cs.res + if res.StatusCode > 299 { + // On error or status code 3xx, 4xx, 5xx, etc abort any + // ongoing write, assuming that the server doesn't care + // about our request body. If the server replied with 1xx or + // 2xx, however, then assume the server DOES potentially + // want our body (e.g. full-duplex streaming: + // golang.org/issue/13444). If it turns out the server + // doesn't, they'll RST_STREAM us soon enough. This is a + // heuristic to avoid adding knobs to Transport. Hopefully + // we can keep it. + cs.abortRequestBodyWrite() + } + res.Request = req + res.TLS = cc.tlsState + if res.Body == noBody && actualContentLength(req) == 0 { + // If there isn't a request or response body still being + // written, then wait for the stream to be closed before + // RoundTrip returns. + if err := waitDone(); err != nil { + return nil, err + } + } + return res, nil + case <-cs.abort: + waitDone() + return nil, cs.abortErr + case <-ctx.Done(): + err := ctx.Err() + cs.abortStream(err) + return nil, err + case <-cs.reqCancel: + cs.abortStream(errRequestCanceled) + return nil, errRequestCanceled + } + } +} + +// doRequest runs for the duration of the request lifetime. +// +// It sends the request and performs post-request cleanup (closing Request.Body, etc.). +func (cs *clientStream) doRequest(req *http.Request) { + err := cs.writeRequest(req) + cs.cleanupWriteRequest(err) +} + +// writeRequest sends a request. +// +// It returns nil after the request is written, the response read, +// and the request stream is half-closed by the peer. +// +// It returns non-nil if the request ends otherwise. +// If the returned error is StreamError, the error Code may be used in resetting the stream. +func (cs *clientStream) writeRequest(req *http.Request) (err error) { + cc := cs.cc + ctx := cs.ctx + + if err := checkConnHeaders(req); err != nil { + return err + } + + // Acquire the new-request lock by writing to reqHeaderMu. + // This lock guards the critical section covering allocating a new stream ID + // (requires mu) and creating the stream (requires wmu). + if cc.reqHeaderMu == nil { + panic("RoundTrip on uninitialized ClientConn") // for tests + } + select { + case cc.reqHeaderMu <- struct{}{}: + case <-cs.reqCancel: + return errRequestCanceled + case <-ctx.Done(): + return ctx.Err() + } + + cc.mu.Lock() if cc.idleTimer != nil { cc.idleTimer.Stop() } - - trailers, err := commaSeparatedTrailers(req) - if err != nil { - return nil, false, err - } - hasTrailers := trailers != "" - - cc.mu.Lock() - if err := cc.awaitOpenSlotForRequest(req); err != nil { + cc.decrStreamReservationsLocked() + if err := cc.awaitOpenSlotForStreamLocked(cs); err != nil { cc.mu.Unlock() - return nil, false, err + <-cc.reqHeaderMu + return err } - - body := req.Body - contentLen := actualContentLength(req) - hasBody := contentLen != 0 + cc.addStreamLocked(cs) // assigns stream ID + if isConnectionCloseRequest(req) { + cc.doNotReuse = true + } + cc.mu.Unlock() // TODO(bradfitz): this is a copy of the logic in net/http. Unify somewhere? - var requestedGzip bool if !cc.t.disableCompression() && req.Header.Get("Accept-Encoding") == "" && req.Header.Get("Range") == "" && - req.Method != "HEAD" { + !cs.isHead { // Request gzip only, not deflate. Deflate is ambiguous and // not as universally supported anyway. // See: https://zlib.net/zlib_faq.html#faq39 @@ -1071,195 +1235,223 @@ func (cc *ClientConn) roundTrip(req *http.Request) (res *http.Response, gotErrAf // We don't request gzip if the request is for a range, since // auto-decoding a portion of a gzipped document will just fail // anyway. See https://golang.org/issue/8923 - requestedGzip = true + cs.requestedGzip = true } - // we send: HEADERS{1}, CONTINUATION{0,} + DATA{0,} (DATA is - // sent by writeRequestBody below, along with any Trailers, - // again in form HEADERS{1}, CONTINUATION{0,}) - hdrs, err := cc.encodeHeaders(req, requestedGzip, trailers, contentLen) + continueTimeout := cc.t.expectContinueTimeout() + if continueTimeout != 0 && + !httpguts.HeaderValuesContainsToken( + req.Header["Expect"], + "100-continue") { + continueTimeout = 0 + cs.on100 = make(chan struct{}, 1) + } + + // Past this point (where we send request headers), it is possible for + // RoundTrip to return successfully. Since the RoundTrip contract permits + // the caller to "mutate or reuse" the Request after closing the Response's Body, + // we must take care when referencing the Request from here on. + err = cs.encodeAndWriteHeaders(req) + <-cc.reqHeaderMu if err != nil { - cc.mu.Unlock() - return nil, false, err + return err } - cs := cc.newStream() - cs.req = req - cs.trace = httptrace.ContextClientTrace(req.Context()) - cs.requestedGzip = requestedGzip - bodyWriter := cc.t.getBodyWriterState(cs, body) - cs.on100 = bodyWriter.on100 - - defer func() { - cc.wmu.Lock() - werr := cc.werr - cc.wmu.Unlock() - if werr != nil { - cc.Close() + hasBody := cs.reqBodyContentLength != 0 + if !hasBody { + cs.sentEndStream = true + } else { + if continueTimeout != 0 { + traceWait100Continue(cs.trace) + timer := time.NewTimer(continueTimeout) + select { + case <-timer.C: + err = nil + case <-cs.on100: + err = nil + case <-cs.abort: + err = cs.abortErr + case <-ctx.Done(): + err = ctx.Err() + case <-cs.reqCancel: + err = errRequestCanceled + } + timer.Stop() + if err != nil { + traceWroteRequest(cs.trace, err) + return err + } } - }() - cc.wmu.Lock() - endStream := !hasBody && !hasTrailers - werr := cc.writeHeaders(cs.ID, endStream, int(cc.maxFrameSize), hdrs) - cc.wmu.Unlock() - traceWroteHeaders(cs.trace) - cc.mu.Unlock() - - if werr != nil { - if hasBody { - req.Body.Close() // per RoundTripper contract - bodyWriter.cancel() + if err = cs.writeRequestBody(req); err != nil { + if err != errStopReqBodyWrite { + traceWroteRequest(cs.trace, err) + return err + } + } else { + cs.sentEndStream = true } - cc.forgetStreamID(cs.ID) - // Don't bother sending a RST_STREAM (our write already failed; - // no need to keep writing) - traceWroteRequest(cs.trace, werr) - return nil, false, werr } + traceWroteRequest(cs.trace, err) + var respHeaderTimer <-chan time.Time - if hasBody { - bodyWriter.scheduleBodyWrite() - } else { - traceWroteRequest(cs.trace, nil) - if d := cc.responseHeaderTimeout(); d != 0 { - timer := time.NewTimer(d) - defer timer.Stop() - respHeaderTimer = timer.C - } + var respHeaderRecv chan struct{} + if d := cc.responseHeaderTimeout(); d != 0 { + timer := time.NewTimer(d) + defer timer.Stop() + respHeaderTimer = timer.C + respHeaderRecv = cs.respHeaderRecv } - - readLoopResCh := cs.resc - bodyWritten := false - ctx := req.Context() - - handleReadLoopResponse := func(re resAndError) (*http.Response, bool, error) { - res := re.res - if re.err != nil || res.StatusCode > 299 { - // On error or status code 3xx, 4xx, 5xx, etc abort any - // ongoing write, assuming that the server doesn't care - // about our request body. If the server replied with 1xx or - // 2xx, however, then assume the server DOES potentially - // want our body (e.g. full-duplex streaming: - // golang.org/issue/13444). If it turns out the server - // doesn't, they'll RST_STREAM us soon enough. This is a - // heuristic to avoid adding knobs to Transport. Hopefully - // we can keep it. - bodyWriter.cancel() - cs.abortRequestBodyWrite(errStopReqBodyWrite) - if hasBody && !bodyWritten { - <-bodyWriter.resc - } - } - if re.err != nil { - cc.forgetStreamID(cs.ID) - return nil, cs.getStartedWrite(), re.err - } - res.Request = req - res.TLS = cc.tlsState - return res, false, nil - } - + // Wait until the peer half-closes its end of the stream, + // or until the request is aborted (via context, error, or otherwise), + // whichever comes first. for { select { - case re := <-readLoopResCh: - return handleReadLoopResponse(re) + case <-cs.peerClosed: + return nil case <-respHeaderTimer: - if !hasBody || bodyWritten { - cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) - } else { - bodyWriter.cancel() - cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) - <-bodyWriter.resc - } - cc.forgetStreamID(cs.ID) - return nil, cs.getStartedWrite(), errTimeout + return errTimeout + case <-respHeaderRecv: + respHeaderTimer = nil // keep waiting for END_STREAM + case <-cs.abort: + return cs.abortErr case <-ctx.Done(): - if !hasBody || bodyWritten { - cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) - } else { - bodyWriter.cancel() - cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) - <-bodyWriter.resc - } - cc.forgetStreamID(cs.ID) - return nil, cs.getStartedWrite(), ctx.Err() - case <-req.Cancel: - if !hasBody || bodyWritten { - cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) - } else { - bodyWriter.cancel() - cs.abortRequestBodyWrite(errStopReqBodyWriteAndCancel) - <-bodyWriter.resc - } - cc.forgetStreamID(cs.ID) - return nil, cs.getStartedWrite(), errRequestCanceled - case <-cs.peerReset: - // processResetStream already removed the - // stream from the streams map; no need for - // forgetStreamID. - return nil, cs.getStartedWrite(), cs.resetErr - case err := <-bodyWriter.resc: - bodyWritten = true - // Prefer the read loop's response, if available. Issue 16102. - select { - case re := <-readLoopResCh: - return handleReadLoopResponse(re) - default: - } - if err != nil { - cc.forgetStreamID(cs.ID) - return nil, cs.getStartedWrite(), err - } - if d := cc.responseHeaderTimeout(); d != 0 { - timer := time.NewTimer(d) - defer timer.Stop() - respHeaderTimer = timer.C - } + return ctx.Err() + case <-cs.reqCancel: + return errRequestCanceled } } } -// awaitOpenSlotForRequest waits until len(streams) < maxConcurrentStreams. +func (cs *clientStream) encodeAndWriteHeaders(req *http.Request) error { + cc := cs.cc + ctx := cs.ctx + + cc.wmu.Lock() + defer cc.wmu.Unlock() + + // If the request was canceled while waiting for cc.mu, just quit. + select { + case <-cs.abort: + return cs.abortErr + case <-ctx.Done(): + return ctx.Err() + case <-cs.reqCancel: + return errRequestCanceled + default: + } + + // Encode headers. + // + // we send: HEADERS{1}, CONTINUATION{0,} + DATA{0,} (DATA is + // sent by writeRequestBody below, along with any Trailers, + // again in form HEADERS{1}, CONTINUATION{0,}) + trailers, err := commaSeparatedTrailers(req) + if err != nil { + return err + } + hasTrailers := trailers != "" + contentLen := actualContentLength(req) + hasBody := contentLen != 0 + hdrs, err := cc.encodeHeaders(req, cs.requestedGzip, trailers, contentLen) + if err != nil { + return err + } + + // Write the request. + endStream := !hasBody && !hasTrailers + cs.sentHeaders = true + err = cc.writeHeaders(cs.ID, endStream, int(cc.maxFrameSize), hdrs) + traceWroteHeaders(cs.trace) + return err +} + +// cleanupWriteRequest performs post-request tasks. +// +// If err (the result of writeRequest) is non-nil and the stream is not closed, +// cleanupWriteRequest will send a reset to the peer. +func (cs *clientStream) cleanupWriteRequest(err error) { + cc := cs.cc + + if cs.ID == 0 { + // We were canceled before creating the stream, so return our reservation. + cc.decrStreamReservations() + } + + // TODO: write h12Compare test showing whether + // Request.Body is closed by the Transport, + // and in multiple cases: server replies <=299 and >299 + // while still writing request body + cc.mu.Lock() + bodyClosed := cs.reqBodyClosed + cs.reqBodyClosed = true + cc.mu.Unlock() + if !bodyClosed && cs.reqBody != nil { + cs.reqBody.Close() + } + + if err != nil && cs.sentEndStream { + // If the connection is closed immediately after the response is read, + // we may be aborted before finishing up here. If the stream was closed + // cleanly on both sides, there is no error. + select { + case <-cs.peerClosed: + err = nil + default: + } + } + if err != nil { + cs.abortStream(err) // possibly redundant, but harmless + if cs.sentHeaders { + if se, ok := err.(StreamError); ok { + if se.Cause != errFromPeer { + cc.writeStreamReset(cs.ID, se.Code, err) + } + } else { + cc.writeStreamReset(cs.ID, ErrCodeCancel, err) + } + } + cs.bufPipe.CloseWithError(err) // no-op if already closed + } else { + if cs.sentHeaders && !cs.sentEndStream { + cc.writeStreamReset(cs.ID, ErrCodeNo, nil) + } + cs.bufPipe.CloseWithError(errRequestCanceled) + } + if cs.ID != 0 { + cc.forgetStreamID(cs.ID) + } + + cc.wmu.Lock() + werr := cc.werr + cc.wmu.Unlock() + if werr != nil { + cc.Close() + } + + close(cs.donec) +} + +// awaitOpenSlotForStream waits until len(streams) < maxConcurrentStreams. // Must hold cc.mu. -func (cc *ClientConn) awaitOpenSlotForRequest(req *http.Request) error { - var waitingForConn chan struct{} - var waitingForConnErr error // guarded by cc.mu +func (cc *ClientConn) awaitOpenSlotForStreamLocked(cs *clientStream) error { for { cc.lastActive = time.Now() if cc.closed || !cc.canTakeNewRequestLocked() { - if waitingForConn != nil { - close(waitingForConn) - } return errClientConnUnusable } cc.lastIdle = time.Time{} - if int64(len(cc.streams))+1 <= int64(cc.maxConcurrentStreams) { - if waitingForConn != nil { - close(waitingForConn) - } + if int64(len(cc.streams)) < int64(cc.maxConcurrentStreams) { return nil } - // Unfortunately, we cannot wait on a condition variable and channel at - // the same time, so instead, we spin up a goroutine to check if the - // request is canceled while we wait for a slot to open in the connection. - if waitingForConn == nil { - waitingForConn = make(chan struct{}) - go func() { - if err := awaitRequestCancel(req, waitingForConn); err != nil { - cc.mu.Lock() - waitingForConnErr = err - cc.cond.Broadcast() - cc.mu.Unlock() - } - }() - } cc.pendingRequests++ cc.cond.Wait() cc.pendingRequests-- - if waitingForConnErr != nil { - return waitingForConnErr + select { + case <-cs.abort: + return cs.abortErr + default: } } } @@ -1286,10 +1478,6 @@ func (cc *ClientConn) writeHeaders(streamID uint32, endStream bool, maxFrameSize cc.fr.WriteContinuation(streamID, endHeaders, chunk) } } - // TODO(bradfitz): this Flush could potentially block (as - // could the WriteHeaders call(s) above), which means they - // wouldn't respond to Request.Cancel being readable. That's - // rare, but this should probably be in a goroutine. cc.bw.Flush() return cc.werr } @@ -1305,32 +1493,59 @@ var ( errReqBodyTooLong = errors.New("http2: request body larger than specified content length") ) -func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) (err error) { +// frameScratchBufferLen returns the length of a buffer to use for +// outgoing request bodies to read/write to/from. +// +// It returns max(1, min(peer's advertised max frame size, +// Request.ContentLength+1, 512KB)). +func (cs *clientStream) frameScratchBufferLen(maxFrameSize int) int { + const max = 512 << 10 + n := int64(maxFrameSize) + if n > max { + n = max + } + if cl := cs.reqBodyContentLength; cl != -1 && cl+1 < n { + // Add an extra byte past the declared content-length to + // give the caller's Request.Body io.Reader a chance to + // give us more bytes than they declared, so we can catch it + // early. + n = cl + 1 + } + if n < 1 { + return 1 + } + return int(n) // doesn't truncate; max is 512K +} + +var bufPool sync.Pool // of *[]byte + +func (cs *clientStream) writeRequestBody(req *http.Request) (err error) { cc := cs.cc + body := cs.reqBody sentEnd := false // whether we sent the final DATA frame w/ END_STREAM - buf := cc.frameScratchBuffer() - defer cc.putFrameScratchBuffer(buf) - defer func() { - traceWroteRequest(cs.trace, err) - // TODO: write h12Compare test showing whether - // Request.Body is closed by the Transport, - // and in multiple cases: server replies <=299 and >299 - // while still writing request body - cerr := bodyCloser.Close() - if err == nil { - err = cerr - } - }() - - req := cs.req hasTrailers := req.Trailer != nil - remainLen := actualContentLength(req) + remainLen := cs.reqBodyContentLength hasContentLen := remainLen != -1 + cc.mu.Lock() + maxFrameSize := int(cc.maxFrameSize) + cc.mu.Unlock() + + // Scratch buffer for reading into & writing from. + scratchLen := cs.frameScratchBufferLen(maxFrameSize) + var buf []byte + if bp, ok := bufPool.Get().(*[]byte); ok && len(*bp) >= scratchLen { + defer bufPool.Put(bp) + buf = *bp + } else { + buf = make([]byte, scratchLen) + defer bufPool.Put(&buf) + } + var sawEOF bool for !sawEOF { - n, err := body.Read(buf[:len(buf)-1]) + n, err := body.Read(buf[:len(buf)]) if hasContentLen { remainLen -= int64(n) if remainLen == 0 && err == nil { @@ -1341,35 +1556,36 @@ func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) ( // to send the END_STREAM bit early, double-check that we're actually // at EOF. Subsequent reads should return (0, EOF) at this point. // If either value is different, we return an error in one of two ways below. + var scratch [1]byte var n1 int - n1, err = body.Read(buf[n:]) + n1, err = body.Read(scratch[:]) remainLen -= int64(n1) } if remainLen < 0 { err = errReqBodyTooLong - cc.writeStreamReset(cs.ID, ErrCodeCancel, err) return err } } - if err == io.EOF { - sawEOF = true - err = nil - } else if err != nil { - cc.writeStreamReset(cs.ID, ErrCodeCancel, err) - return err + if err != nil { + cc.mu.Lock() + bodyClosed := cs.reqBodyClosed + cc.mu.Unlock() + switch { + case bodyClosed: + return errStopReqBodyWrite + case err == io.EOF: + sawEOF = true + err = nil + default: + return err + } } remain := buf[:n] for len(remain) > 0 && err == nil { var allowed int32 allowed, err = cs.awaitFlowControl(len(remain)) - switch { - case err == errStopReqBodyWrite: - return err - case err == errStopReqBodyWriteAndCancel: - cc.writeStreamReset(cs.ID, ErrCodeCancel, nil) - return err - case err != nil: + if err != nil { return err } cc.wmu.Lock() @@ -1400,24 +1616,26 @@ func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) ( return nil } - var trls []byte - if hasTrailers { - cc.mu.Lock() - trls, err = cc.encodeTrailers(req) - cc.mu.Unlock() - if err != nil { - cc.writeStreamReset(cs.ID, ErrCodeInternal, err) - cc.forgetStreamID(cs.ID) - return err - } - } - + // Since the RoundTrip contract permits the caller to "mutate or reuse" + // a request after the Response's Body is closed, verify that this hasn't + // happened before accessing the trailers. cc.mu.Lock() - maxFrameSize := int(cc.maxFrameSize) + trailer := req.Trailer + err = cs.abortErr cc.mu.Unlock() + if err != nil { + return err + } cc.wmu.Lock() defer cc.wmu.Unlock() + var trls []byte + if len(trailer) > 0 { + trls, err = cc.encodeTrailers(trailer) + if err != nil { + return err + } + } // Two ways to send END_STREAM: either with trailers, or // with an empty DATA frame. @@ -1438,17 +1656,24 @@ func (cs *clientStream) writeRequestBody(body io.Reader, bodyCloser io.Closer) ( // if the stream is dead. func (cs *clientStream) awaitFlowControl(maxBytes int) (taken int32, err error) { cc := cs.cc + ctx := cs.ctx cc.mu.Lock() defer cc.mu.Unlock() for { if cc.closed { return 0, errClientConnClosed } - if cs.stopReqBody != nil { - return 0, cs.stopReqBody + if cs.reqBodyClosed { + return 0, errStopReqBodyWrite } - if err := cs.checkResetOrDone(); err != nil { - return 0, err + select { + case <-cs.abort: + return 0, cs.abortErr + case <-ctx.Done(): + return 0, ctx.Err() + case <-cs.reqCancel: + return 0, errRequestCanceled + default: } if a := cs.flow.available(); a > 0 { take := a @@ -1466,9 +1691,14 @@ func (cs *clientStream) awaitFlowControl(maxBytes int) (taken int32, err error) } } -// requires cc.mu be held. +var errNilRequestURL = errors.New("http2: Request.URI is nil") + +// requires cc.wmu be held. func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trailers string, contentLength int64) ([]byte, error) { cc.hbuf.Reset() + if req.URL == nil { + return nil, errNilRequestURL + } host := req.Host if host == "" { @@ -1531,19 +1761,21 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail var didUA bool for k, vv := range req.Header { - if strings.EqualFold(k, "host") || strings.EqualFold(k, "content-length") { + if asciiEqualFold(k, "host") || asciiEqualFold(k, "content-length") { // Host is :authority, already sent. // Content-Length is automatic, set below. continue - } else if strings.EqualFold(k, "connection") || strings.EqualFold(k, "proxy-connection") || - strings.EqualFold(k, "transfer-encoding") || strings.EqualFold(k, "upgrade") || - strings.EqualFold(k, "keep-alive") { + } else if asciiEqualFold(k, "connection") || + asciiEqualFold(k, "proxy-connection") || + asciiEqualFold(k, "transfer-encoding") || + asciiEqualFold(k, "upgrade") || + asciiEqualFold(k, "keep-alive") { // Per 8.1.2.2 Connection-Specific Header // Fields, don't send connection-specific // fields. We have already checked if any // are error-worthy so just ignore the rest. continue - } else if strings.EqualFold(k, "user-agent") { + } else if asciiEqualFold(k, "user-agent") { // Match Go's http1 behavior: at most one // User-Agent. If set to nil or empty string, // then omit it. Otherwise if not mentioned, @@ -1556,7 +1788,7 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail if vv[0] == "" { continue } - } else if strings.EqualFold(k, "cookie") { + } else if asciiEqualFold(k, "cookie") { // Per 8.1.2.5 To allow for better compression efficiency, the // Cookie header field MAY be split into separate header fields, // each with one or more cookie-pairs. @@ -1615,7 +1847,12 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail // Header list size is ok. Write the headers. enumerateHeaders(func(name, value string) { - name = strings.ToLower(name) + name, ascii := asciiToLower(name) + if !ascii { + // Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header + // field names have to be ASCII characters (just as in HTTP/1.x). + return + } cc.writeHeader(name, value) if traceHeaders { traceWroteHeaderField(trace, name, value) @@ -1647,12 +1884,12 @@ func shouldSendReqContentLength(method string, contentLength int64) bool { } } -// requires cc.mu be held. -func (cc *ClientConn) encodeTrailers(req *http.Request) ([]byte, error) { +// requires cc.wmu be held. +func (cc *ClientConn) encodeTrailers(trailer http.Header) ([]byte, error) { cc.hbuf.Reset() hlSize := uint64(0) - for k, vv := range req.Trailer { + for k, vv := range trailer { for _, v := range vv { hf := hpack.HeaderField{Name: k, Value: v} hlSize += uint64(hf.Size()) @@ -1662,10 +1899,15 @@ func (cc *ClientConn) encodeTrailers(req *http.Request) ([]byte, error) { return nil, errRequestHeaderListSize } - for k, vv := range req.Trailer { + for k, vv := range trailer { + lowKey, ascii := asciiToLower(k) + if !ascii { + // Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header + // field names have to be ASCII characters (just as in HTTP/1.x). + continue + } // Transfer-Encoding, etc.. have already been filtered at the // start of RoundTrip - lowKey := strings.ToLower(k) for _, v := range vv { cc.writeHeader(lowKey, v) } @@ -1687,51 +1929,51 @@ type resAndError struct { } // requires cc.mu be held. -func (cc *ClientConn) newStream() *clientStream { - cs := &clientStream{ - cc: cc, - ID: cc.nextStreamID, - resc: make(chan resAndError, 1), - peerReset: make(chan struct{}), - done: make(chan struct{}), - } +func (cc *ClientConn) addStreamLocked(cs *clientStream) { cs.flow.add(int32(cc.initialWindowSize)) cs.flow.setConnFlow(&cc.flow) cs.inflow.add(transportDefaultStreamFlow) cs.inflow.setConnFlow(&cc.inflow) + cs.ID = cc.nextStreamID cc.nextStreamID += 2 cc.streams[cs.ID] = cs - return cs + if cs.ID == 0 { + panic("assigned stream ID 0") + } } func (cc *ClientConn) forgetStreamID(id uint32) { - cc.streamByID(id, true) -} - -func (cc *ClientConn) streamByID(id uint32, andRemove bool) *clientStream { cc.mu.Lock() - defer cc.mu.Unlock() - cs := cc.streams[id] - if andRemove && cs != nil && !cc.closed { - cc.lastActive = time.Now() - delete(cc.streams, id) - if len(cc.streams) == 0 && cc.idleTimer != nil { - cc.idleTimer.Reset(cc.idleTimeout) - cc.lastIdle = time.Now() - } - close(cs.done) - // Wake up checkResetOrDone via clientStream.awaitFlowControl and - // wake up RoundTrip if there is a pending request. - cc.cond.Broadcast() + slen := len(cc.streams) + delete(cc.streams, id) + if len(cc.streams) != slen-1 { + panic("forgetting unknown stream id") } - return cs + cc.lastActive = time.Now() + if len(cc.streams) == 0 && cc.idleTimer != nil { + cc.idleTimer.Reset(cc.idleTimeout) + cc.lastIdle = time.Now() + } + // Wake up writeRequestBody via clientStream.awaitFlowControl and + // wake up RoundTrip if there is a pending request. + cc.cond.Broadcast() + + closeOnIdle := cc.singleUse || cc.doNotReuse || cc.t.disableKeepAlives() + if closeOnIdle && cc.streamsReserved == 0 && len(cc.streams) == 0 { + if VerboseLogs { + cc.vlogf("http2: Transport closing idle conn %p (forSingleUse=%v, maxStream=%v)", cc, cc.singleUse, cc.nextStreamID-2) + } + cc.closed = true + defer cc.tconn.Close() + } + + cc.mu.Unlock() } // clientConnReadLoop is the state owned by the clientConn's frame-reading readLoop. type clientConnReadLoop struct { - _ incomparable - cc *ClientConn - closeWhenIdle bool + _ incomparable + cc *ClientConn } // readLoop runs in its own goroutine and reads and dispatches frames. @@ -1791,23 +2033,49 @@ func (rl *clientConnReadLoop) cleanup() { } else if err == io.EOF { err = io.ErrUnexpectedEOF } - for _, cs := range cc.streams { - cs.bufPipe.CloseWithError(err) // no-op if already closed - select { - case cs.resc <- resAndError{err: err}: - default: - } - close(cs.done) - } cc.closed = true + for _, cs := range cc.streams { + select { + case <-cs.peerClosed: + // The server closed the stream before closing the conn, + // so no need to interrupt it. + default: + cs.abortStreamLocked(err) + } + } cc.cond.Broadcast() cc.mu.Unlock() } +// countReadFrameError calls Transport.CountError with a string +// representing err. +func (cc *ClientConn) countReadFrameError(err error) { + f := cc.t.CountError + if f == nil || err == nil { + return + } + if ce, ok := err.(ConnectionError); ok { + errCode := ErrCode(ce) + f(fmt.Sprintf("read_frame_conn_error_%s", errCode.stringToken())) + return + } + if errors.Is(err, io.EOF) { + f("read_frame_eof") + return + } + if errors.Is(err, io.ErrUnexpectedEOF) { + f("read_frame_unexpected_eof") + return + } + if errors.Is(err, ErrFrameTooLarge) { + f("read_frame_too_large") + return + } + f("read_frame_other") +} + func (rl *clientConnReadLoop) run() error { cc := rl.cc - rl.closeWhenIdle = cc.t.disableKeepAlives() || cc.singleUse - gotReply := false // ever saw a HEADERS reply gotSettings := false readIdleTimeout := cc.t.ReadIdleTimeout var t *time.Timer @@ -1824,9 +2092,7 @@ func (rl *clientConnReadLoop) run() error { cc.vlogf("http2: Transport readFrame error on conn %p: (%T) %v", cc, err, err) } if se, ok := err.(StreamError); ok { - if cs := cc.streamByID(se.StreamID, false); cs != nil { - cs.cc.writeStreamReset(cs.ID, se.Code, err) - cs.cc.forgetStreamID(cs.ID) + if cs := rl.streamByID(se.StreamID); cs != nil { if se.Cause == nil { se.Cause = cc.fr.errDetail } @@ -1834,6 +2100,7 @@ func (rl *clientConnReadLoop) run() error { } continue } else if err != nil { + cc.countReadFrameError(err) return err } if VerboseLogs { @@ -1846,22 +2113,16 @@ func (rl *clientConnReadLoop) run() error { } gotSettings = true } - maybeIdle := false // whether frame might transition us to idle switch f := f.(type) { case *MetaHeadersFrame: err = rl.processHeaders(f) - maybeIdle = true - gotReply = true case *DataFrame: err = rl.processData(f) - maybeIdle = true case *GoAwayFrame: err = rl.processGoAway(f) - maybeIdle = true case *RSTStreamFrame: err = rl.processResetStream(f) - maybeIdle = true case *SettingsFrame: err = rl.processSettings(f) case *PushPromiseFrame: @@ -1879,38 +2140,24 @@ func (rl *clientConnReadLoop) run() error { } return err } - if rl.closeWhenIdle && gotReply && maybeIdle { - cc.closeIfIdle() - } } } func (rl *clientConnReadLoop) processHeaders(f *MetaHeadersFrame) error { - cc := rl.cc - cs := cc.streamByID(f.StreamID, false) + cs := rl.streamByID(f.StreamID) if cs == nil { // We'd get here if we canceled a request while the // server had its response still in flight. So if this // was just something we canceled, ignore it. return nil } - if f.StreamEnded() { - // Issue 20521: If the stream has ended, streamByID() causes - // clientStream.done to be closed, which causes the request's bodyWriter - // to be closed with an errStreamClosed, which may be received by - // clientConn.RoundTrip before the result of processing these headers. - // Deferring stream closure allows the header processing to occur first. - // clientConn.RoundTrip may still receive the bodyWriter error first, but - // the fix for issue 16102 prioritises any response. - // - // Issue 22413: If there is no request body, we should close the - // stream before writing to cs.resc so that the stream is closed - // immediately once RoundTrip returns. - if cs.req.Body != nil { - defer cc.forgetStreamID(f.StreamID) - } else { - cc.forgetStreamID(f.StreamID) - } + if cs.readClosed { + rl.endStreamError(cs, StreamError{ + StreamID: f.StreamID, + Code: ErrCodeProtocol, + Cause: errors.New("protocol error: headers after END_STREAM"), + }) + return nil } if !cs.firstByte { if cs.trace != nil { @@ -1934,9 +2181,11 @@ func (rl *clientConnReadLoop) processHeaders(f *MetaHeadersFrame) error { return err } // Any other error type is a stream error. - cs.cc.writeStreamReset(f.StreamID, ErrCodeProtocol, err) - cc.forgetStreamID(cs.ID) - cs.resc <- resAndError{err: err} + rl.endStreamError(cs, StreamError{ + StreamID: f.StreamID, + Code: ErrCodeProtocol, + Cause: err, + }) return nil // return nil from process* funcs to keep conn alive } if res == nil { @@ -1944,7 +2193,11 @@ func (rl *clientConnReadLoop) processHeaders(f *MetaHeadersFrame) error { return nil } cs.resTrailer = &res.Trailer - cs.resc <- resAndError{res: res} + cs.res = res + close(cs.respHeaderRecv) + if f.StreamEnded() { + rl.endStream(cs) + } return nil } @@ -2006,6 +2259,9 @@ func (rl *clientConnReadLoop) handleResponse(cs *clientStream, f *MetaHeadersFra } if statusCode >= 100 && statusCode <= 199 { + if f.StreamEnded() { + return nil, errors.New("1xx informational response with END_STREAM flag") + } cs.num1xx++ const max1xxResponses = 5 // arbitrary bound on number of informational responses, same as net/http if cs.num1xx > max1xxResponses { @@ -2018,42 +2274,49 @@ func (rl *clientConnReadLoop) handleResponse(cs *clientStream, f *MetaHeadersFra } if statusCode == 100 { traceGot100Continue(cs.trace) - if cs.on100 != nil { - cs.on100() // forces any write delay timer to fire + select { + case cs.on100 <- struct{}{}: + default: } } cs.pastHeaders = false // do it all again return nil, nil } - streamEnded := f.StreamEnded() - isHead := cs.req.Method == "HEAD" - if !streamEnded || isHead { - res.ContentLength = -1 - if clens := res.Header["Content-Length"]; len(clens) == 1 { - if cl, err := strconv.ParseUint(clens[0], 10, 63); err == nil { - res.ContentLength = int64(cl) - } else { - // TODO: care? unlike http/1, it won't mess up our framing, so it's - // more safe smuggling-wise to ignore. - } - } else if len(clens) > 1 { + res.ContentLength = -1 + if clens := res.Header["Content-Length"]; len(clens) == 1 { + if cl, err := strconv.ParseUint(clens[0], 10, 63); err == nil { + res.ContentLength = int64(cl) + } else { // TODO: care? unlike http/1, it won't mess up our framing, so it's // more safe smuggling-wise to ignore. } + } else if len(clens) > 1 { + // TODO: care? unlike http/1, it won't mess up our framing, so it's + // more safe smuggling-wise to ignore. + } else if f.StreamEnded() && !cs.isHead { + res.ContentLength = 0 } - if streamEnded || isHead { + if cs.isHead { res.Body = noBody return res, nil } - cs.bufPipe = pipe{b: &dataBuffer{expected: res.ContentLength}} + if f.StreamEnded() { + if res.ContentLength > 0 { + res.Body = missingBody{} + } else { + res.Body = noBody + } + return res, nil + } + + cs.bufPipe.setBuffer(&dataBuffer{expected: res.ContentLength}) cs.bytesRemain = res.ContentLength res.Body = transportResponseBody{cs} - go cs.awaitRequestCancel(cs.req) - if cs.requestedGzip && res.Header.Get("Content-Encoding") == "gzip" { + if cs.requestedGzip && asciiEqualFold(res.Header.Get("Content-Encoding"), "gzip") { res.Header.Del("Content-Encoding") res.Header.Del("Content-Length") res.ContentLength = -1 @@ -2092,8 +2355,7 @@ func (rl *clientConnReadLoop) processTrailers(cs *clientStream, f *MetaHeadersFr } // transportResponseBody is the concrete type of Transport.RoundTrip's -// Response.Body. It is an io.ReadCloser. On Read, it reads from cs.body. -// On Close it sends RST_STREAM if EOF wasn't already seen. +// Response.Body. It is an io.ReadCloser. type transportResponseBody struct { cs *clientStream } @@ -2111,7 +2373,7 @@ func (b transportResponseBody) Read(p []byte) (n int, err error) { n = int(cs.bytesRemain) if err == nil { err = errors.New("net/http: server replied with more than declared Content-Length; truncated") - cc.writeStreamReset(cs.ID, ErrCodeProtocol, err) + cs.abortStream(err) } cs.readErr = err return int(cs.bytesRemain), err @@ -2129,8 +2391,6 @@ func (b transportResponseBody) Read(p []byte) (n int, err error) { } cc.mu.Lock() - defer cc.mu.Unlock() - var connAdd, streamAdd int32 // Check the conn-level first, before the stream-level. if v := cc.inflow.available(); v < transportDefaultConnFlow/2 { @@ -2147,6 +2407,8 @@ func (b transportResponseBody) Read(p []byte) (n int, err error) { cs.inflow.add(streamAdd) } } + cc.mu.Unlock() + if connAdd != 0 || streamAdd != 0 { cc.wmu.Lock() defer cc.wmu.Unlock() @@ -2167,34 +2429,45 @@ func (b transportResponseBody) Close() error { cs := b.cs cc := cs.cc - serverSentStreamEnd := cs.bufPipe.Err() == io.EOF unread := cs.bufPipe.Len() - - if unread > 0 || !serverSentStreamEnd { + if unread > 0 { cc.mu.Lock() - cc.wmu.Lock() - if !serverSentStreamEnd { - cc.fr.WriteRSTStream(cs.ID, ErrCodeCancel) - cs.didReset = true - } // Return connection-level flow control. if unread > 0 { cc.inflow.add(int32(unread)) + } + cc.mu.Unlock() + + // TODO(dneil): Acquiring this mutex can block indefinitely. + // Move flow control return to a goroutine? + cc.wmu.Lock() + // Return connection-level flow control. + if unread > 0 { cc.fr.WriteWindowUpdate(0, uint32(unread)) } cc.bw.Flush() cc.wmu.Unlock() - cc.mu.Unlock() } cs.bufPipe.BreakWithError(errClosedResponseBody) - cc.forgetStreamID(cs.ID) + cs.abortStream(errClosedResponseBody) + + select { + case <-cs.donec: + case <-cs.ctx.Done(): + // See golang/go#49366: The net/http package can cancel the + // request context after the response body is fully read. + // Don't treat this as an error. + return nil + case <-cs.reqCancel: + return errRequestCanceled + } return nil } func (rl *clientConnReadLoop) processData(f *DataFrame) error { cc := rl.cc - cs := cc.streamByID(f.StreamID, f.StreamEnded()) + cs := rl.streamByID(f.StreamID) data := f.Data() if cs == nil { cc.mu.Lock() @@ -2223,6 +2496,14 @@ func (rl *clientConnReadLoop) processData(f *DataFrame) error { } return nil } + if cs.readClosed { + cc.logf("protocol error: received DATA after END_STREAM") + rl.endStreamError(cs, StreamError{ + StreamID: f.StreamID, + Code: ErrCodeProtocol, + }) + return nil + } if !cs.firstByte { cc.logf("protocol error: received DATA before a HEADERS frame") rl.endStreamError(cs, StreamError{ @@ -2232,7 +2513,7 @@ func (rl *clientConnReadLoop) processData(f *DataFrame) error { return nil } if f.Length > 0 { - if cs.req.Method == "HEAD" && len(data) > 0 { + if cs.isHead && len(data) > 0 { cc.logf("protocol error: received DATA on a HEAD request") rl.endStreamError(cs, StreamError{ StreamID: f.StreamID, @@ -2254,30 +2535,39 @@ func (rl *clientConnReadLoop) processData(f *DataFrame) error { if pad := int(f.Length) - len(data); pad > 0 { refund += pad } - // Return len(data) now if the stream is already closed, - // since data will never be read. - didReset := cs.didReset - if didReset { - refund += len(data) + + didReset := false + var err error + if len(data) > 0 { + if _, err = cs.bufPipe.Write(data); err != nil { + // Return len(data) now if the stream is already closed, + // since data will never be read. + didReset = true + refund += len(data) + } } + if refund > 0 { cc.inflow.add(int32(refund)) + if !didReset { + cs.inflow.add(int32(refund)) + } + } + cc.mu.Unlock() + + if refund > 0 { cc.wmu.Lock() cc.fr.WriteWindowUpdate(0, uint32(refund)) if !didReset { - cs.inflow.add(int32(refund)) cc.fr.WriteWindowUpdate(cs.ID, uint32(refund)) } cc.bw.Flush() cc.wmu.Unlock() } - cc.mu.Unlock() - if len(data) > 0 && !didReset { - if _, err := cs.bufPipe.Write(data); err != nil { - rl.endStreamError(cs, err) - return err - } + if err != nil { + rl.endStreamError(cs, err) + return nil } } @@ -2290,24 +2580,32 @@ func (rl *clientConnReadLoop) processData(f *DataFrame) error { func (rl *clientConnReadLoop) endStream(cs *clientStream) { // TODO: check that any declared content-length matches, like // server.go's (*stream).endStream method. - rl.endStreamError(cs, nil) + if !cs.readClosed { + cs.readClosed = true + // Close cs.bufPipe and cs.peerClosed with cc.mu held to avoid a + // race condition: The caller can read io.EOF from Response.Body + // and close the body before we close cs.peerClosed, causing + // cleanupWriteRequest to send a RST_STREAM. + rl.cc.mu.Lock() + defer rl.cc.mu.Unlock() + cs.bufPipe.closeWithErrorAndCode(io.EOF, cs.copyTrailers) + close(cs.peerClosed) + } } func (rl *clientConnReadLoop) endStreamError(cs *clientStream, err error) { - var code func() - if err == nil { - err = io.EOF - code = cs.copyTrailers - } - if isConnectionCloseRequest(cs.req) { - rl.closeWhenIdle = true - } - cs.bufPipe.closeWithErrorAndCode(err, code) + cs.readAborted = true + cs.abortStream(err) +} - select { - case cs.resc <- resAndError{err: err}: - default: +func (rl *clientConnReadLoop) streamByID(id uint32) *clientStream { + rl.cc.mu.Lock() + defer rl.cc.mu.Unlock() + cs := rl.cc.streams[id] + if cs != nil && !cs.readAborted { + return cs } + return nil } func (cs *clientStream) copyTrailers() { @@ -2326,12 +2624,33 @@ func (rl *clientConnReadLoop) processGoAway(f *GoAwayFrame) error { if f.ErrCode != 0 { // TODO: deal with GOAWAY more. particularly the error code cc.vlogf("transport got GOAWAY with error code = %v", f.ErrCode) + if fn := cc.t.CountError; fn != nil { + fn("recv_goaway_" + f.ErrCode.stringToken()) + } + } cc.setGoAway(f) return nil } func (rl *clientConnReadLoop) processSettings(f *SettingsFrame) error { + cc := rl.cc + // Locking both mu and wmu here allows frame encoding to read settings with only wmu held. + // Acquiring wmu when f.IsAck() is unnecessary, but convenient and mostly harmless. + cc.wmu.Lock() + defer cc.wmu.Unlock() + + if err := rl.processSettingsNoWrite(f); err != nil { + return err + } + if !f.IsAck() { + cc.fr.WriteSettingsAck() + cc.bw.Flush() + } + return nil +} + +func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error { cc := rl.cc cc.mu.Lock() defer cc.mu.Unlock() @@ -2344,12 +2663,14 @@ func (rl *clientConnReadLoop) processSettings(f *SettingsFrame) error { return ConnectionError(ErrCodeProtocol) } + var seenMaxConcurrentStreams bool err := f.ForeachSetting(func(s Setting) error { switch s.ID { case SettingMaxFrameSize: cc.maxFrameSize = s.Val case SettingMaxConcurrentStreams: cc.maxConcurrentStreams = s.Val + seenMaxConcurrentStreams = true case SettingMaxHeaderListSize: cc.peerMaxHeaderListSize = uint64(s.Val) case SettingInitialWindowSize: @@ -2381,17 +2702,23 @@ func (rl *clientConnReadLoop) processSettings(f *SettingsFrame) error { return err } - cc.wmu.Lock() - defer cc.wmu.Unlock() + if !cc.seenSettings { + if !seenMaxConcurrentStreams { + // This was the servers initial SETTINGS frame and it + // didn't contain a MAX_CONCURRENT_STREAMS field so + // increase the number of concurrent streams this + // connection can establish to our default. + cc.maxConcurrentStreams = defaultMaxConcurrentStreams + } + cc.seenSettings = true + } - cc.fr.WriteSettingsAck() - cc.bw.Flush() - return cc.werr + return nil } func (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error { cc := rl.cc - cs := cc.streamByID(f.StreamID, false) + cs := rl.streamByID(f.StreamID) if f.StreamID != 0 && cs == nil { return nil } @@ -2411,24 +2738,22 @@ func (rl *clientConnReadLoop) processWindowUpdate(f *WindowUpdateFrame) error { } func (rl *clientConnReadLoop) processResetStream(f *RSTStreamFrame) error { - cs := rl.cc.streamByID(f.StreamID, true) + cs := rl.streamByID(f.StreamID) if cs == nil { - // TODO: return error if server tries to RST_STEAM an idle stream + // TODO: return error if server tries to RST_STREAM an idle stream return nil } - select { - case <-cs.peerReset: - // Already reset. - // This is the only goroutine - // which closes this, so there - // isn't a race. - default: - err := streamError(cs.ID, f.ErrCode) - cs.resetErr = err - close(cs.peerReset) - cs.bufPipe.CloseWithError(err) - cs.cc.cond.Broadcast() // wake up checkResetOrDone via clientStream.awaitFlowControl + serr := streamError(cs.ID, f.ErrCode) + serr.Cause = errFromPeer + if f.ErrCode == ErrCodeProtocol { + rl.cc.SetDoNotReuse() } + if fn := cs.cc.t.CountError; fn != nil { + fn("recv_rststream_" + f.ErrCode.stringToken()) + } + cs.abortStream(serr) + + cs.bufPipe.CloseWithError(serr) return nil } @@ -2450,19 +2775,24 @@ func (cc *ClientConn) Ping(ctx context.Context) error { } cc.mu.Unlock() } - cc.wmu.Lock() - if err := cc.fr.WritePing(false, p); err != nil { - cc.wmu.Unlock() - return err - } - if err := cc.bw.Flush(); err != nil { - cc.wmu.Unlock() - return err - } - cc.wmu.Unlock() + errc := make(chan error, 1) + go func() { + cc.wmu.Lock() + defer cc.wmu.Unlock() + if err := cc.fr.WritePing(false, p); err != nil { + errc <- err + return + } + if err := cc.bw.Flush(); err != nil { + errc <- err + return + } + }() select { case <-c: return nil + case err := <-errc: + return err case <-ctx.Done(): return ctx.Err() case <-cc.readerDone: @@ -2539,6 +2869,11 @@ func (t *Transport) logf(format string, args ...interface{}) { var noBody io.ReadCloser = ioutil.NopCloser(bytes.NewReader(nil)) +type missingBody struct{} + +func (missingBody) Close() error { return nil } +func (missingBody) Read([]byte) (int, error) { return 0, io.ErrUnexpectedEOF } + func strSliceContains(ss []string, s string) bool { for _, v := range ss { if v == s { @@ -2584,87 +2919,6 @@ type errorReader struct{ err error } func (r errorReader) Read(p []byte) (int, error) { return 0, r.err } -// bodyWriterState encapsulates various state around the Transport's writing -// of the request body, particularly regarding doing delayed writes of the body -// when the request contains "Expect: 100-continue". -type bodyWriterState struct { - cs *clientStream - timer *time.Timer // if non-nil, we're doing a delayed write - fnonce *sync.Once // to call fn with - fn func() // the code to run in the goroutine, writing the body - resc chan error // result of fn's execution - delay time.Duration // how long we should delay a delayed write for -} - -func (t *Transport) getBodyWriterState(cs *clientStream, body io.Reader) (s bodyWriterState) { - s.cs = cs - if body == nil { - return - } - resc := make(chan error, 1) - s.resc = resc - s.fn = func() { - cs.cc.mu.Lock() - cs.startedWrite = true - cs.cc.mu.Unlock() - resc <- cs.writeRequestBody(body, cs.req.Body) - } - s.delay = t.expectContinueTimeout() - if s.delay == 0 || - !httpguts.HeaderValuesContainsToken( - cs.req.Header["Expect"], - "100-continue") { - return - } - s.fnonce = new(sync.Once) - - // Arm the timer with a very large duration, which we'll - // intentionally lower later. It has to be large now because - // we need a handle to it before writing the headers, but the - // s.delay value is defined to not start until after the - // request headers were written. - const hugeDuration = 365 * 24 * time.Hour - s.timer = time.AfterFunc(hugeDuration, func() { - s.fnonce.Do(s.fn) - }) - return -} - -func (s bodyWriterState) cancel() { - if s.timer != nil { - if s.timer.Stop() { - s.resc <- nil - } - } -} - -func (s bodyWriterState) on100() { - if s.timer == nil { - // If we didn't do a delayed write, ignore the server's - // bogus 100 continue response. - return - } - s.timer.Stop() - go func() { s.fnonce.Do(s.fn) }() -} - -// scheduleBodyWrite starts writing the body, either immediately (in -// the common case) or after the delay timeout. It should not be -// called until after the headers have been written. -func (s bodyWriterState) scheduleBodyWrite() { - if s.timer == nil { - // We're not doing a delayed write (see - // getBodyWriterState), so just start the writing - // goroutine immediately. - go s.fn() - return - } - traceWait100Continue(s.cs.trace) - if s.timer.Stop() { - s.timer.Reset(s.delay) - } -} - // isConnectionCloseRequest reports whether req should use its own // connection for a single request and then close the connection. func isConnectionCloseRequest(req *http.Request) bool { diff --git a/vendor/golang.org/x/net/http2/write.go b/vendor/golang.org/x/net/http2/write.go index 3849bc26..33f61398 100644 --- a/vendor/golang.org/x/net/http2/write.go +++ b/vendor/golang.org/x/net/http2/write.go @@ -341,7 +341,12 @@ func encodeHeaders(enc *hpack.Encoder, h http.Header, keys []string) { } for _, k := range keys { vv := h[k] - k = lowerHeader(k) + k, ascii := lowerHeader(k) + if !ascii { + // Skip writing invalid headers. Per RFC 7540, Section 8.1.2, header + // field names have to be ASCII characters (just as in HTTP/1.x). + continue + } if !validWireHeaderFieldName(k) { // Skip it as backup paranoia. Per // golang.org/issue/14048, these should diff --git a/vendor/golang.org/x/net/idna/go118.go b/vendor/golang.org/x/net/idna/go118.go new file mode 100644 index 00000000..c5c4338d --- /dev/null +++ b/vendor/golang.org/x/net/idna/go118.go @@ -0,0 +1,14 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// Copyright 2021 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. + +//go:build go1.18 +// +build go1.18 + +package idna + +// Transitional processing is disabled by default in Go 1.18. +// https://golang.org/issue/47510 +const transitionalLookup = false diff --git a/vendor/golang.org/x/net/idna/idna10.0.0.go b/vendor/golang.org/x/net/idna/idna10.0.0.go index 7e69ee1b..64ccf85f 100644 --- a/vendor/golang.org/x/net/idna/idna10.0.0.go +++ b/vendor/golang.org/x/net/idna/idna10.0.0.go @@ -59,23 +59,22 @@ type Option func(*options) // Transitional sets a Profile to use the Transitional mapping as defined in UTS // #46. This will cause, for example, "ß" to be mapped to "ss". Using the // transitional mapping provides a compromise between IDNA2003 and IDNA2008 -// compatibility. It is used by most browsers when resolving domain names. This +// compatibility. It is used by some browsers when resolving domain names. This // option is only meaningful if combined with MapForLookup. func Transitional(transitional bool) Option { - return func(o *options) { o.transitional = true } + return func(o *options) { o.transitional = transitional } } // VerifyDNSLength sets whether a Profile should fail if any of the IDN parts // are longer than allowed by the RFC. +// +// This option corresponds to the VerifyDnsLength flag in UTS #46. func VerifyDNSLength(verify bool) Option { return func(o *options) { o.verifyDNSLength = verify } } // RemoveLeadingDots removes leading label separators. Leading runes that map to // dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well. -// -// This is the behavior suggested by the UTS #46 and is adopted by some -// browsers. func RemoveLeadingDots(remove bool) Option { return func(o *options) { o.removeLeadingDots = remove } } @@ -83,6 +82,8 @@ func RemoveLeadingDots(remove bool) Option { // ValidateLabels sets whether to check the mandatory label validation criteria // as defined in Section 5.4 of RFC 5891. This includes testing for correct use // of hyphens ('-'), normalization, validity of runes, and the context rules. +// In particular, ValidateLabels also sets the CheckHyphens and CheckJoiners flags +// in UTS #46. func ValidateLabels(enable bool) Option { return func(o *options) { // Don't override existing mappings, but set one that at least checks @@ -91,25 +92,48 @@ func ValidateLabels(enable bool) Option { o.mapping = normalize } o.trie = trie - o.validateLabels = enable - o.fromPuny = validateFromPunycode + o.checkJoiners = enable + o.checkHyphens = enable + if enable { + o.fromPuny = validateFromPunycode + } else { + o.fromPuny = nil + } + } +} + +// CheckHyphens sets whether to check for correct use of hyphens ('-') in +// labels. Most web browsers do not have this option set, since labels such as +// "r3---sn-apo3qvuoxuxbt-j5pe" are in common use. +// +// This option corresponds to the CheckHyphens flag in UTS #46. +func CheckHyphens(enable bool) Option { + return func(o *options) { o.checkHyphens = enable } +} + +// CheckJoiners sets whether to check the ContextJ rules as defined in Appendix +// A of RFC 5892, concerning the use of joiner runes. +// +// This option corresponds to the CheckJoiners flag in UTS #46. +func CheckJoiners(enable bool) Option { + return func(o *options) { + o.trie = trie + o.checkJoiners = enable } } // StrictDomainName limits the set of permissible ASCII characters to those // allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the -// hyphen). This is set by default for MapForLookup and ValidateForRegistration. +// hyphen). This is set by default for MapForLookup and ValidateForRegistration, +// but is only useful if ValidateLabels is set. // // This option is useful, for instance, for browsers that allow characters // outside this range, for example a '_' (U+005F LOW LINE). See -// http://www.rfc-editor.org/std/std3.txt for more details This option -// corresponds to the UseSTD3ASCIIRules option in UTS #46. +// http://www.rfc-editor.org/std/std3.txt for more details. +// +// This option corresponds to the UseSTD3ASCIIRules flag in UTS #46. func StrictDomainName(use bool) Option { - return func(o *options) { - o.trie = trie - o.useSTD3Rules = use - o.fromPuny = validateFromPunycode - } + return func(o *options) { o.useSTD3Rules = use } } // NOTE: the following options pull in tables. The tables should not be linked @@ -117,6 +141,8 @@ func StrictDomainName(use bool) Option { // BidiRule enables the Bidi rule as defined in RFC 5893. Any application // that relies on proper validation of labels should include this rule. +// +// This option corresponds to the CheckBidi flag in UTS #46. func BidiRule() Option { return func(o *options) { o.bidirule = bidirule.ValidString } } @@ -152,7 +178,8 @@ func MapForLookup() Option { type options struct { transitional bool useSTD3Rules bool - validateLabels bool + checkHyphens bool + checkJoiners bool verifyDNSLength bool removeLeadingDots bool @@ -225,8 +252,11 @@ func (p *Profile) String() string { if p.useSTD3Rules { s += ":UseSTD3Rules" } - if p.validateLabels { - s += ":ValidateLabels" + if p.checkHyphens { + s += ":CheckHyphens" + } + if p.checkJoiners { + s += ":CheckJoiners" } if p.verifyDNSLength { s += ":VerifyDNSLength" @@ -254,26 +284,29 @@ var ( punycode = &Profile{} lookup = &Profile{options{ - transitional: true, - useSTD3Rules: true, - validateLabels: true, - trie: trie, - fromPuny: validateFromPunycode, - mapping: validateAndMap, - bidirule: bidirule.ValidString, + transitional: transitionalLookup, + useSTD3Rules: true, + checkHyphens: true, + checkJoiners: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, }} display = &Profile{options{ - useSTD3Rules: true, - validateLabels: true, - trie: trie, - fromPuny: validateFromPunycode, - mapping: validateAndMap, - bidirule: bidirule.ValidString, + useSTD3Rules: true, + checkHyphens: true, + checkJoiners: true, + trie: trie, + fromPuny: validateFromPunycode, + mapping: validateAndMap, + bidirule: bidirule.ValidString, }} registration = &Profile{options{ useSTD3Rules: true, - validateLabels: true, verifyDNSLength: true, + checkHyphens: true, + checkJoiners: true, trie: trie, fromPuny: validateFromPunycode, mapping: validateRegistration, @@ -340,7 +373,7 @@ func (p *Profile) process(s string, toASCII bool) (string, error) { } isBidi = isBidi || bidirule.DirectionString(u) != bidi.LeftToRight labels.set(u) - if err == nil && p.validateLabels { + if err == nil && p.fromPuny != nil { err = p.fromPuny(p, u) } if err == nil { @@ -681,16 +714,18 @@ func (p *Profile) validateLabel(s string) (err error) { } return nil } - if !p.validateLabels { + if p.checkHyphens { + if len(s) > 4 && s[2] == '-' && s[3] == '-' { + return &labelError{s, "V2"} + } + if s[0] == '-' || s[len(s)-1] == '-' { + return &labelError{s, "V3"} + } + } + if !p.checkJoiners { return nil } - trie := p.trie // p.validateLabels is only set if trie is set. - if len(s) > 4 && s[2] == '-' && s[3] == '-' { - return &labelError{s, "V2"} - } - if s[0] == '-' || s[len(s)-1] == '-' { - return &labelError{s, "V3"} - } + trie := p.trie // p.checkJoiners is only set if trie is set. // TODO: merge the use of this in the trie. v, sz := trie.lookupString(s) x := info(v) diff --git a/vendor/golang.org/x/net/idna/idna9.0.0.go b/vendor/golang.org/x/net/idna/idna9.0.0.go index 7c745637..aae6aac8 100644 --- a/vendor/golang.org/x/net/idna/idna9.0.0.go +++ b/vendor/golang.org/x/net/idna/idna9.0.0.go @@ -58,23 +58,22 @@ type Option func(*options) // Transitional sets a Profile to use the Transitional mapping as defined in UTS // #46. This will cause, for example, "ß" to be mapped to "ss". Using the // transitional mapping provides a compromise between IDNA2003 and IDNA2008 -// compatibility. It is used by most browsers when resolving domain names. This +// compatibility. It is used by some browsers when resolving domain names. This // option is only meaningful if combined with MapForLookup. func Transitional(transitional bool) Option { - return func(o *options) { o.transitional = true } + return func(o *options) { o.transitional = transitional } } // VerifyDNSLength sets whether a Profile should fail if any of the IDN parts // are longer than allowed by the RFC. +// +// This option corresponds to the VerifyDnsLength flag in UTS #46. func VerifyDNSLength(verify bool) Option { return func(o *options) { o.verifyDNSLength = verify } } // RemoveLeadingDots removes leading label separators. Leading runes that map to // dots, such as U+3002 IDEOGRAPHIC FULL STOP, are removed as well. -// -// This is the behavior suggested by the UTS #46 and is adopted by some -// browsers. func RemoveLeadingDots(remove bool) Option { return func(o *options) { o.removeLeadingDots = remove } } @@ -82,6 +81,8 @@ func RemoveLeadingDots(remove bool) Option { // ValidateLabels sets whether to check the mandatory label validation criteria // as defined in Section 5.4 of RFC 5891. This includes testing for correct use // of hyphens ('-'), normalization, validity of runes, and the context rules. +// In particular, ValidateLabels also sets the CheckHyphens and CheckJoiners flags +// in UTS #46. func ValidateLabels(enable bool) Option { return func(o *options) { // Don't override existing mappings, but set one that at least checks @@ -90,25 +91,48 @@ func ValidateLabels(enable bool) Option { o.mapping = normalize } o.trie = trie - o.validateLabels = enable - o.fromPuny = validateFromPunycode + o.checkJoiners = enable + o.checkHyphens = enable + if enable { + o.fromPuny = validateFromPunycode + } else { + o.fromPuny = nil + } + } +} + +// CheckHyphens sets whether to check for correct use of hyphens ('-') in +// labels. Most web browsers do not have this option set, since labels such as +// "r3---sn-apo3qvuoxuxbt-j5pe" are in common use. +// +// This option corresponds to the CheckHyphens flag in UTS #46. +func CheckHyphens(enable bool) Option { + return func(o *options) { o.checkHyphens = enable } +} + +// CheckJoiners sets whether to check the ContextJ rules as defined in Appendix +// A of RFC 5892, concerning the use of joiner runes. +// +// This option corresponds to the CheckJoiners flag in UTS #46. +func CheckJoiners(enable bool) Option { + return func(o *options) { + o.trie = trie + o.checkJoiners = enable } } // StrictDomainName limits the set of permissable ASCII characters to those // allowed in domain names as defined in RFC 1034 (A-Z, a-z, 0-9 and the -// hyphen). This is set by default for MapForLookup and ValidateForRegistration. +// hyphen). This is set by default for MapForLookup and ValidateForRegistration, +// but is only useful if ValidateLabels is set. // // This option is useful, for instance, for browsers that allow characters // outside this range, for example a '_' (U+005F LOW LINE). See -// http://www.rfc-editor.org/std/std3.txt for more details This option -// corresponds to the UseSTD3ASCIIRules option in UTS #46. +// http://www.rfc-editor.org/std/std3.txt for more details. +// +// This option corresponds to the UseSTD3ASCIIRules flag in UTS #46. func StrictDomainName(use bool) Option { - return func(o *options) { - o.trie = trie - o.useSTD3Rules = use - o.fromPuny = validateFromPunycode - } + return func(o *options) { o.useSTD3Rules = use } } // NOTE: the following options pull in tables. The tables should not be linked @@ -116,6 +140,8 @@ func StrictDomainName(use bool) Option { // BidiRule enables the Bidi rule as defined in RFC 5893. Any application // that relies on proper validation of labels should include this rule. +// +// This option corresponds to the CheckBidi flag in UTS #46. func BidiRule() Option { return func(o *options) { o.bidirule = bidirule.ValidString } } @@ -152,7 +178,8 @@ func MapForLookup() Option { type options struct { transitional bool useSTD3Rules bool - validateLabels bool + checkHyphens bool + checkJoiners bool verifyDNSLength bool removeLeadingDots bool @@ -225,8 +252,11 @@ func (p *Profile) String() string { if p.useSTD3Rules { s += ":UseSTD3Rules" } - if p.validateLabels { - s += ":ValidateLabels" + if p.checkHyphens { + s += ":CheckHyphens" + } + if p.checkJoiners { + s += ":CheckJoiners" } if p.verifyDNSLength { s += ":VerifyDNSLength" @@ -255,9 +285,10 @@ var ( punycode = &Profile{} lookup = &Profile{options{ transitional: true, - useSTD3Rules: true, - validateLabels: true, removeLeadingDots: true, + useSTD3Rules: true, + checkHyphens: true, + checkJoiners: true, trie: trie, fromPuny: validateFromPunycode, mapping: validateAndMap, @@ -265,8 +296,9 @@ var ( }} display = &Profile{options{ useSTD3Rules: true, - validateLabels: true, removeLeadingDots: true, + checkHyphens: true, + checkJoiners: true, trie: trie, fromPuny: validateFromPunycode, mapping: validateAndMap, @@ -274,8 +306,9 @@ var ( }} registration = &Profile{options{ useSTD3Rules: true, - validateLabels: true, verifyDNSLength: true, + checkHyphens: true, + checkJoiners: true, trie: trie, fromPuny: validateFromPunycode, mapping: validateRegistration, @@ -339,7 +372,7 @@ func (p *Profile) process(s string, toASCII bool) (string, error) { continue } labels.set(u) - if err == nil && p.validateLabels { + if err == nil && p.fromPuny != nil { err = p.fromPuny(p, u) } if err == nil { @@ -629,16 +662,18 @@ func (p *Profile) validateLabel(s string) error { if p.bidirule != nil && !p.bidirule(s) { return &labelError{s, "B"} } - if !p.validateLabels { + if p.checkHyphens { + if len(s) > 4 && s[2] == '-' && s[3] == '-' { + return &labelError{s, "V2"} + } + if s[0] == '-' || s[len(s)-1] == '-' { + return &labelError{s, "V3"} + } + } + if !p.checkJoiners { return nil } - trie := p.trie // p.validateLabels is only set if trie is set. - if len(s) > 4 && s[2] == '-' && s[3] == '-' { - return &labelError{s, "V2"} - } - if s[0] == '-' || s[len(s)-1] == '-' { - return &labelError{s, "V3"} - } + trie := p.trie // p.checkJoiners is only set if trie is set. // TODO: merge the use of this in the trie. v, sz := trie.lookupString(s) x := info(v) diff --git a/vendor/golang.org/x/net/idna/pre_go118.go b/vendor/golang.org/x/net/idna/pre_go118.go new file mode 100644 index 00000000..3aaccab1 --- /dev/null +++ b/vendor/golang.org/x/net/idna/pre_go118.go @@ -0,0 +1,12 @@ +// Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. + +// Copyright 2021 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. + +//go:build !go1.18 +// +build !go1.18 + +package idna + +const transitionalLookup = true diff --git a/vendor/golang.org/x/net/idna/punycode.go b/vendor/golang.org/x/net/idna/punycode.go index 02c7d59a..e8e3ac11 100644 --- a/vendor/golang.org/x/net/idna/punycode.go +++ b/vendor/golang.org/x/net/idna/punycode.go @@ -49,6 +49,7 @@ func decode(encoded string) (string, error) { } } i, n, bias := int32(0), initialN, initialBias + overflow := false for pos < len(encoded) { oldI, w := i, int32(1) for k := base; ; k += base { @@ -60,29 +61,32 @@ func decode(encoded string) (string, error) { return "", punyError(encoded) } pos++ - i += digit * w - if i < 0 { + i, overflow = madd(i, digit, w) + if overflow { return "", punyError(encoded) } t := k - bias - if t < tmin { + if k <= bias { t = tmin - } else if t > tmax { + } else if k >= bias+tmax { t = tmax } if digit < t { break } - w *= base - t - if w >= math.MaxInt32/base { + w, overflow = madd(0, w, base-t) + if overflow { return "", punyError(encoded) } } + if len(output) >= 1024 { + return "", punyError(encoded) + } x := int32(len(output) + 1) bias = adapt(i-oldI, x, oldI == 0) n += i / x i %= x - if n > utf8.MaxRune || len(output) >= 1024 { + if n < 0 || n > utf8.MaxRune { return "", punyError(encoded) } output = append(output, 0) @@ -115,6 +119,7 @@ func encode(prefix, s string) (string, error) { if b > 0 { output = append(output, '-') } + overflow := false for remaining != 0 { m := int32(0x7fffffff) for _, r := range s { @@ -122,8 +127,8 @@ func encode(prefix, s string) (string, error) { m = r } } - delta += (m - n) * (h + 1) - if delta < 0 { + delta, overflow = madd(delta, m-n, h+1) + if overflow { return "", punyError(s) } n = m @@ -141,9 +146,9 @@ func encode(prefix, s string) (string, error) { q := delta for k := base; ; k += base { t := k - bias - if t < tmin { + if k <= bias { t = tmin - } else if t > tmax { + } else if k >= bias+tmax { t = tmax } if q < t { @@ -164,6 +169,15 @@ func encode(prefix, s string) (string, error) { return string(output), nil } +// madd computes a + (b * c), detecting overflow. +func madd(a, b, c int32) (next int32, overflow bool) { + p := int64(b) * int64(c) + if p > math.MaxInt32-int64(a) { + return 0, true + } + return a + int32(p), false +} + func decodeDigit(x byte) (digit int32, ok bool) { switch { case '0' <= x && x <= '9': diff --git a/vendor/golang.org/x/net/publicsuffix/table.go b/vendor/golang.org/x/net/publicsuffix/table.go index 31a034c5..51f40b8e 100644 --- a/vendor/golang.org/x/net/publicsuffix/table.go +++ b/vendor/golang.org/x/net/publicsuffix/table.go @@ -2,7 +2,7 @@ package publicsuffix -const version = "publicsuffix.org's public_suffix_list.dat, git revision f9f612a3386dd9a1e4a1892722e3418549520b49 (2020-11-30T21:55:23Z)" +const version = "publicsuffix.org's public_suffix_list.dat, git revision 792f13d38c795cf910de96de4baac48f1fee3162 (2021-08-23T07:37:32Z)" const ( nodesBitsChildren = 10 @@ -23,499 +23,510 @@ const ( ) // numTLD is the number of top level domains. -const numTLD = 1513 +const numTLD = 1508 // Text is the combined text of all labels. -const text = "9guacuiababia-goracleaningroks-theatree12hpalermomahachijolstere" + - "trosnubalsfjordd-dnshome-webserverdal-o-g-i-n4tatsunobihirosakik" + - "amijimatsuuragrocerybnikeisenbahnaturhistorisches3-ap-south-1bip" + - "almasfjordenikonanporovnocpalmspringsakerbirdartcenterprisecloud" + - "accesscambridgeiseiyoichippubetsubetsugarussiabirkenesoddtangeno" + - "varahkkeravjuegoshikilatironrenderbirthplacevje-og-hornnes3-webs" + - "ite-us-west-1bjarkoyukuhashimojin-the-bandain-vpncateringebuildi" + - "ngladegreextraspace-to-rentalstomakomaibarabjerkreimbamblebesbyg" + - "landroverhalla-speziaustevollaziobiramswatch-and-clockereviewsai" + - "toshimattelekommunikationatuurwetenschappengine164-baltimore-og-" + - "romsdalp1bjugnieznord-odalwaysdatabaseballangenkainanaejrietisal" + - "atinabenonicatholicaxiaskimitsubatamibugattiffanyaaarborteaches-" + - "yogasawara-rugbydgoszczecinemaceratabuseating-organicbcieszynino" + - "hekinannestadiyurihonjournalistjohninomiyakonojorpelandnpanamats" + - "uzakincheonirasakindianapolis-a-bloggerblackfridayusuharabloombe" + - "rgbauernishiazaindianmarketinglassassinationalheritagebloxcms3-w" + - "ebsite-us-west-2bluedagestangemologicallyngenishigoddabmoattachm" + - "ents5yusuisservehttpanasonichernivtsiciliabmsakyotanabellunord-f" + - "rontierbmwedeployuulmemsettlersalangenishiharabnrwegroweibologna" + - "gareyamakeupowiatmallorcafederation-webhopencraftrainingleezebom" + - "loabathsbchernovtsyncloudrangedalondrinamsskoganeindielddanuorri" + - "ndigenaklodzkodairabondigitaloceanographicsxboxenishiizunazukind" + - "owapblogsiteleafamilycompany-2bonnishikataketomisatomobellevuelo" + - "sangelesjabbottjeldsundray-dnstracebookinghosted-by-previderboom" + - "lair-traffic-controlleyuzawaboschaefflerdalorenskoglitcheltenham" + - "-radio-opensocialottebostikariyameiwamarugame-hostedpictetjmaxxx" + - "finitybostonakijinsekikogentappsalon-1botanicalgardenishikatsura" + - "git-reposaltdalottokonamegatakayamassa-carrara-massacarraramassa" + - "businessebykleclerchirurgiens-dentistes-en-francebotanicgardenis" + - "hikawazukamishihoronobeauxartsandcraftsaludrayddnsfreebox-osasco" + - "li-picenordlandraydnsupdaterbotanychiryukyuragifuchungbukharauma" + - "lborkarlsoybouncemerckmsdnipropetrovskjervoyageorgeorgiabounty-f" + - "ullensakerrypropertiesalvadordalibabalena-devicesalzburgliwicebo" + - "utiquebechitachinakagawatchandclockarmoybozen-sudtirolouvrehabme" + - "rbozen-suedtirolowiczest-le-patronishimerabplaceducatorahimeshim" + - "amateraholtalenishinomiyashironohtawaramotoineppueblockbusternii" + - "minamiawajikindustriabrandywinevalleybrasiliabrindisibenikimobet" + - "suitaipeigersundrivefsnillfjordrobaknoluoktachikawafflecellcube-" + - "serverbristoloseyouriparachutinglobalashovhachinohedmarkarpaczel" + - "adzlgloboavistanbulsan-sudtirolpusercontentjomeloyalistoragebrit" + - "ishcolumbialowiezaganishinoomotegomniweatherchannelubindalublind" + - "esnesamegawabroadcastlebtimnetzparaglidinglogoweirbroadwaybroke-" + - "itvedestrandrudupontariobranconakaniikawatanagurabrokerbronnoysu" + - "ndurbanamexhibitionishinoshimatsushigebrothermesaverdeatnulvikar" + - "uizawabrowsersafetymarketsamnangerbrumunddalucaniabrunelastxjava" + - "ld-aostarnbergloppenzaolbia-tempio-olbiatempioolbialystokkembuch" + - "ikumagayagawakayamagentositecnologiabrusselsampalacebruxellesams" + - "clubartowellbeingzonebryansklepparisor-fronishiokoppegardurhambu" + - "rglugsjcbnpparibaselburgmbhartipsselfiparliamentjxn--0trq7p7nnis" + - "hitosashimizunaminamibosogndaluccargodaddyn-o-saurlandesamsungmi" + - "nakamichiharabrynewhollandynathomebuiltwithdarkarumaifarmsteadyn" + - "dns-at-homedepotenzamamidsundyndns-at-workisboringmodellingmxn--" + - "11b4c3dyndns-blogdnsandnessjoenishiwakindustriesteamfamberkeleyb" + - "uskerudyndns-freeboxoslocus-4buzentsujiiebuzzwesteuropenairbusan" + - "tiquest-a-la-maisondre-landroidyndns-homednsandoybwestfalenissan" + - "diegomurabzhitomirumalatvuopmicrolightingretakamoriokakudamatsue" + - "bzzcompute-1computerhistoryofscience-fictioncomsecaaskoyabearalv" + - "ahkijobservableusercontentoyotsukaidocondoshichinohealth-careref" + - "ormitakeharaconferenceconstructionconsuladoesntexisteingeekashiw" + - "araconsultanthropologyconsultingrongausdalcontactoyouracontagema" + - "tsubaracontemporaryarteducationalchikugodogadollsapporocontracto" + - "rskenconventureshinodeartheworkpccwhoswhokksundyndns1cookingchan" + - "nelsdvrdnsdojoburgrossetouchihayaakasakawaharacoolcooperativano-" + - "frankivskolefrakkestadynnsardegnaroycopenhagencyclopedichonanbul" + - "san-suedtirolukowestus2coproductionsardiniacorporationcorsicanon" + - "oichinomiyakecorvettemp-dnsarlcosenzakopanelastycoffeedbackplane" + - "applinzinzais-a-candidatecosidnsfor-better-thanawatchesarpsborgr" + - "oundhandlingroznynysaintlouis-a-anarchistoireggio-emilia-romagna" + - "katombetsumitakagiizecostumedicinagatorodoycouchpotatofriesarufu" + - "tsunomiyawakasaikaitabashikaoizumizakis-a-caterercoukashiwazakiy" + - "okawaracouncilcouponsasayamayfirstockholmestrandynservebbsasebof" + - "ageologycozoracqcxn--12co0c3b4evalleaostavangercranbrookuwanalyt" + - "icsaskatchewancrdynuniversitycreditcardynv6creditunioncremonashg" + - "abadaddjaguarqhachiojiyaizuwakamatsubushikusakadogawacrewiencric" + - "ketrzyncrimeast-kazakhstanangercrotonexus-3crownipartsassaris-a-" + - "celticsfancrsvps-hostrolekagoshimalopolskanlandynvpnpluscountrye" + - "stateofdelawareclaimsaudacruisesauheradyroyrvikingrpartycryptono" + - "michigangwoncuisinellajollamericanexpressexyculturalcentertainme" + - "ntoystre-slidrettozawacuneocupcakecuritibaghdadcurvalled-aostave" + - "rncymrunjargacyonabarumetacentrumeteorappasadenarashinocyouthruh" + - "erecifedexeterferrarivneferrerotikakamigaharafetsundfguidell-ogl" + - "iastraderfhskydivinguitarsavonarusawafhvalerfidontexistmein-iser" + - "vebeerfieldfigueresinstagingujoinvilleirvikasserversaillesaxofil" + - "ateliafilegear-audnedalnfilegear-debianfilegear-gbizfilegear-ief" + - "ilegear-jpmorganfilegear-sg-1filminamifuranofinalfinancefinearts" + - "choenbrunnfinlandfinnoyfirebaseappassagenschokokekschokoladenfir" + - "enetrani-andria-barletta-trani-andriafirenzefirestonefirmdalegni" + - "capetownnews-stagingulenfishingoldpoint2thisamitsukefitjarvodkaf" + - "jordvagsoygardenflfanquanpachigasakievennodesabaerobaticketschol" + - "arshipschoolsztynsettsurgeonshalloffameldalfitnessettlementrania" + - "ndriabarlettatraniandriafjalerflesbergunmansionschulezajskasukab" + - "edzin-berlindasdaburflickragerogerschulserverflightschwarzgwangj" + - "uifminamiiserniaflirfloginlinefloraflorencefloridatsunanjoetsuwa" + - "nouchikujogaszkolancashirecipescaravantaarpassenger-associationf" + - "loripaderbornfloristanohatajiris-a-chefashionflorokunohealthcare" + - "erschweizflowersciencecentersciencehistoryfltranoyflynnhosting-c" + - "lusterfndfnwkasumigaurayasudafoodnetworkdalfor-ourfor-somedizinh" + - "istorischescientistordalfor-theaterforexrothachirogatakanabeauty" + - "sfjordforgotdnscjohnsonforli-cesena-forlicesenaforlikescandyn53f" + - "orsalegolffanscrapper-siteforsandasuoloftranslatefortalfortextil" + - "eikangerfortmissoulancasterfortworthadanorth-kazakhstanfosnescra" + - "ppinguovdageaidnunusualpersonfotaruis-a-conservativegarsheis-a-c" + - "padualstackasuyanaizuerichardlillesandefjordfoxafozfrancaisehara" + - "franziskanerimaringatlantakahamalvikaszubyfredrikstadtvscrysecur" + - "itytacticservehumourfreeddnsgeekgalaxyfreedesktopocznordreisa-ho" + - "ckeynutazurestaticappspotagerfreemasonryfreesitefreetlserveircho" + - "shibuyahabackyardsangomutashinainfinitintelligencefreiburgushika" + - "mifuranorfolkebibleitungsenfreseniusculturecreationfribourgwiddl" + - "eksvikatowicefriuli-v-giuliafriuli-ve-giuliafriuli-vegiuliafriul" + - "i-venezia-giuliafriuli-veneziagiuliafriuli-vgiuliafriuliv-giulia" + - "friulive-giuliafriulivegiuliafriulivenezia-giuliafriuliveneziagi" + - "uliafriulivgiuliafrlfroganserveminecraftransportefrognfrolandfro" + - "m-akrehamnfrom-alfrom-arfrom-azurewebsiteshikagamiishibukawalbrz" + - "ycharternopilawalesundfrom-capitalonewjerseyfrom-cogxn--1ctwolom" + - "inamatargitlaborfrom-ctransurlfrom-dchoyodobashichikashukujitawa" + - "ravennagasakinderoyfrom-dedyn-berlincolnfrom-flanderservemp3from" + - "-gaulardalfrom-hichisochildrensgardenfrom-iafrom-idfrom-ilfrom-i" + - "n-brbar1from-kservep2patriafrom-kyowariasahikawafrom-lanciafrom-" + - "mamurogawafrom-mdfrom-meeresistancefrom-mifunefrom-mnfrom-modale" + - "nfrom-mservepicservequakefrom-mtnfrom-nctulangevagrigentomologye" + - "onggiehtavuoatnabudapest-a-la-masion-rancherkasydneyfrom-ndfrom-" + - "nefrom-nh-serveblogspotrapaniizafrom-njservesarcasmatartanddesig" + - "nfrom-nminamiizukaminoyamaxunispacefrom-nvalledaostaobaomoriguch" + - "iharag-cloud-charitychyattorneyagawakepnogatagajobojis-a-cubicle" + - "-slavellinodeobjectservicesevastopolefrom-nyminamimakis-a-democr" + - "atravelchannelfrom-ohdattorelayfrom-oketogurafrom-orfrom-padovak" + - "sdalfrom-pratohmandalfrom-ris-a-designerfrom-schmidtre-gauldalfr" + - "om-sdfrom-tnfrom-txn--1lqs03nfrom-utsiracusagamiharafrom-val-dao" + - "stavalleyfrom-vtravelersinsurancefrom-wafrom-wiardwebredirectmee" + - "trdfrom-wvallee-aosteroyfrom-wyfrosinonefrostalowa-wolawafroyait" + - "akaharunzenfstcgroupaviancarrierfujiiderafujikawaguchikonefujimi" + - "nokamoenairguardiannakadomarinebraskaunicommbankatsushikabeelden" + - "geluidvallee-d-aosteigenfujinomiyadattowebcampinashikiminohostfo" + - "ldnavyfujiokayamangonohejis-a-doctorayfujisatoshonairlinedre-eik" + - "erfujisawafujishiroishidakabiratoridefenseljordfujitsurugashiman" + - "gyshlakasamatsudoomdnsiskinkyotobetsumidatlantichristiansburgrim" + - "stadyndns-mailutskashibatakatorinternationalfirearmsanjotlon-2fu" + - "jixeroxfordefinimakanegasakinkobierzycefujiyoshidavvenjargap-nor" + - "theast-3fukayabeatsevenassisicilyfukuchiyamadavvesiidappnodebala" + - "ncertificationfukudomigawafukuis-a-financialadvisor-aurdalfukumi" + - "tsubishigakirovogradoyfukuokazakiryuohkurafukuroishikarikaturind" + - "alfukusakisarazure-mobileirfjordfukuyamagatakahashimamakishiwada" + - "zaifudaigojomedio-campidano-mediocampidanomediofunabashiriuchina" + - "dafunagatakahatakaishimoichinosekigaharafunahashikamiamakusatsum" + - "asendaisennangooglecodespotrendhostingfundaciofunkfeuerfuoiskuju" + - "kuriyamaniwakuratefuosskoczowiiheyakumoduminamiminowafurnituregg" + - "io-calabriafurubirafurudonostiaafurukawairportland-4-salernobori" + - "betsucksharis-a-geekatsuyamarumorimachidafusodegaurafussaikisofu" + - "kushimannore-og-uvdalfutabayamaguchinomihachimanagementrentin-su" + - "d-tirolfutboldlygoingnowhere-for-morenakasatsunairtelebitbridges" + - "toneendoftheinternethnologyfuttsurugimperiafuturecmsharpfizerfut" + - "urehostingfuturemailingfvgfyresdalhangglidinghangoutsystemscloud" + - "hannanmokuizumodenakayamanxn--1lqs71dhannortonhanyuzenhapmirclou" + - "dplatform0harstadharvestcelebrationhasamaoris-a-hunterhasaminami" + - "-alpshimokawahashbanghasudahasura-appgfoggiahasvikautokeinotogaw" + - "ahatoyamazakitahiroshimapartmentshimokitayamahatsukaichikaiseihe" + - "ijis-a-knightpointtohobby-sitehattfjelldalhayashimamotobungotaka" + - "dancehazuminobusells-for-ustkanmakiwakunigamiharutwentehelsinkit" + - "akamiizumisanofidelitysvardonnakamuratajimidorittogliattis-a-lan" + - "dscaperugiahembygdsforbundhemneshimonitayanagitappharmacienshimo" + - "nosekikawahemsedalhepforgeherokussldheroyhgtvalleeaosteinkjerusa" + - "lembroideryhidorahigashiagatsumagoianiahigashichichibunkyonanaos" + - "himageandsoundandvisionthewifiatrentin-sued-tirolhigashihiroshim" + - "anehigashiizumozakitakatakaokaluganskygearappharmacyshimosuwalki" + - "s-a-lawyerhigashikagawahigashikagurasoedahigashikawakitaaikitaky" + - "ushuaiahigashikurumegurownproviderhigashimatsushimarburghigashim" + - "atsuyamakitaakitadaitoigawahigashimurayamamotorcycleshimotsukehi" + - "gashinarusells-itrentin-suedtirolhigashinehigashiomitamamurausuk" + - "itamihamadahigashiosakasayamanakakogawahigashishirakawamatakaraz" + - "ukamakurazakitamotosumy-gatewayhigashisumiyoshikawaminamiaikitan" + - "akagusukumodernhigashitsunosegawahigashiurawa-mazowszexnetrentin" + - "o-a-adigehigashiyamatokoriyamanashiibahccavuotnagaragusadocktera" + - "mo-siemenscaledogawarabikomaezakirunoipirangalsacentralus-2higas" + - "hiyodogawahigashiyoshinogaris-a-liberalhiraizumisatohnoshoooshik" + - "amaishimofusartshimotsumahirakatashinagawahiranairtrafficplexus-" + - "1hirarahiratsukaeruhirayakagehistorichouseshinichinanhitachiomiy" + - "agildeskaliszhitachiotagoppdalhitraeumtgeradeloittenrissagaerocl" + - "ubmedecincinnationwidealstahaugesunderseaportsinfolionetworkange" + - "rhjartdalhjelmelandholeckochikushinonsenergyholidayhomegoodshinj" + - "ournalismailillehammerfeste-iphdfcbankazoologyhomeiphiladelphiaa" + - "readmyblogsytehomelinkyard-cloudnshinjukumanowruzhgorodeohomelin" + - "uxn--1qqw23ahomeofficehomesecuritymacaparecidahomesecuritypchris" + - "tmaseratiresannanisshingucciprianidyndns-office-on-the-weberhome" + - "senseeringhomeunixn--2m4a15ehondahongotembaixadahonjyoitakasagot" + - "pantheonsitehornindalhorsellsyourhomeftphilatelyhortendofinterne" + - "t-dnshinkamigototalhospitalhoteleshinshinotsurgeryhotmailhoyange" + - "rhoylandetroitskypehumanitieshinshirohurdalhurumajis-a-libertari" + - "anhyllestadhyogoris-a-linux-usershintokushimahyugawarahyundaiwaf" + - "uneis-very-badajozis-a-nursembokukitchenis-very-evillageis-very-" + - "goodyearis-very-niceis-very-sweetpepperis-with-thebandovre-eiker" + - "isleofmanaustdaljenv-arubabizjeonnamerikawauejetztrentino-stirol" + - "jevnakershusdecorativeartshiranukamitondabayashiogamagoriziajewe" + - "lryjewishartgalleryjfkddiamondshiraois-a-painterhostsolutionshin" + - "tomikasaharajgorajlljls-sto1jls-sto2jls-sto3jmphonefosshiraokami" + - "tsuejnjaworznotairestaurantrentino-s-tiroljoyentrentino-sud-tiro" + - "ljoyokaichibajddarchitecturealtorlandjpnjprshiratakahagithubuser" + - "contentrentino-sudtiroljurkosaigawakosakaerodromegallupinbarclay" + - "cards3-sa-east-1koseis-a-photographerokuapphilipsynology-disksta" + - "tionkosherbrookegawakoshimizumakiyosemitekoshunantankhakassiakos" + - "ugekotohiradomainsureggioemiliaromagnamsosnowiechurchaseljedugit" + - "-pagespeedmobilizeroticahcesuoloansanokashiharakotourakouhokutam" + - "akiyosunndalkounosupplieshitaramakouyamashikekouzushimashikizuno" + - "kunimilitarykozagawakozakis-a-playershifteditchyouriphoenixn--2s" + - "crj9chromedicaltanissettaishinomakindlecznagasukekozowildlifesty" + - "lekpnkppspdnshizukuishimogosenkrasnikahokutokashikis-a-republica" + - "ncerresearchaeologicaliforniakrasnodarkredstonekristiansandcatsh" + - "izuokamogawakristiansundkrodsheradkrokstadelvaldaostarostwodzisl" + - "awilliamhillkryminamioguni5kumatorinowtvaporcloudkumejimasoykume" + - "nantokigawakunisakis-a-rockstarachowicekunitachiarailwaykunitomi" + - "gusukumamotoyamashikokuchuokunneppubtlshoppingkunstsammlungkunst" + - "unddesignkuokgrouphxn--32vp30haebaruericssongdalenviknakatsugawa" + - "kuregruhostingkurgankurobelaudibleasingleshopwarendalenugkurogim" + - "imatakatsukis-a-socialistdlibestadkuroisoftwarezzokuromatsunais-" + - "a-soxfankurotakikawasakis-a-studentalkushirogawakustanais-a-teac" + - "herkassyno-dshinyoshitomiokamisunagawakusupplynxn--3bst00minamis" + - "anrikubetsupportrentino-sued-tirolkutchanelveruminamitanekutnoku" + - "zumakis-a-techietis-a-llamarnardalkvafjordkvalsundkvamlidlugolek" + - "adenagahamaroyerkvanangenkvinesdalkvinnheradkviteseidatingkvitso" + - "ykwpspectruminamiuonumassivegridkzmisconfusedmishimasudamissilel" + - "uxembourgmisugitokorozawamitourismilevangermitoyoakemiuramiyazur" + - "econtainerdpolicemiyotamanomjondalenmlbfanmontrealestatefarmequi" + - "pmentrentino-suedtirolmonza-brianzapposhoujis-an-actresshioyande" + - "xcloudmonza-e-della-brianzaptokuyamatsumaebashimodatemonzabrianz" + - "aramonzaebrianzamonzaedellabrianzamoonscaleforcemordoviamoriyama" + - "tsumotofukemoriyoshiminamiashigaramormonstermoroyamatsunomortgag" + - "emoscowinbarclays3-us-east-2moseushistorymosjoenmoskeneshowamoss" + - "howtimelhusgardenmosvikharkovanylvenicemoteginowaniigatakamatsuk" + - "awamoviemovimientokyotangotsukisosakitagawamozilla-iotrentinoa-a" + - "digemtranbymuginozawaonsenmuikamiokameokameyamatotakadamukoebenh" + - "avnmulhouseoullensvanguardmunakatanemuncienciamuosattemupiemonte" + - "murmanskhersonmurotorcraftrentinoaadigemusashimurayamatsusakahog" + - "inankokubunjis-an-anarchistoricalsocietymusashinoharamuseetrenti" + - "noalto-adigemuseumverenigingmusicarrdmutsuzawamy-vigorgemy-wangg" + - "ouvicircustomer-ocimdbananarepublic66myactivedirectorymyasustor-" + - "elvdalmycdn77-sslattuminamiyamashirokawanabelembetsukubankharkiv" + - "alleedaostemycloudswitcheshwindmillmydattolocalhistorymyddnsking" + - "mydissentrentinoaltoadigemydobisshikis-an-artistgorymydroboehrin" + - "gerikemydsienarutolgamyeffectrentinos-tirolmyfastblogermyfirewal" + - "lonieruchomoscienceandindustrynmyforuminanomyfritzmyftpaccessigd" + - "almyhome-servermyjinomykolaivareservegame-servermymailermymediap" + - "cistrondheimmobilieniyodogawamyokohamamatsudamypepilotsilkhmelni" + - "tskiyamarylandmypetsimple-urlmyphotoshibalatinombresciamypicture" + - "sirdalmypsxn--3ds443gmysecuritycamerakermyshopblockslupskhmelnyt" + - "skyivaomythic-beastslzmytis-a-bookkeeperspectakashimaritimoldelt" + - "aiwanairforcebetsuikidsmynasushiobarackmazerbaijan-mayen-rootari" + - "beiraogashimadachicagoboatsmolapymntrentinostirolmytuleaprendema" + - "sakihokumakogenebakkeshibechambagriculturennebudejjuedischesapea" + - "kebayernrtrentinosud-tirolmyvncitadeliverydyndns-remotewdyndns-s" + - "erverisignmywireitrentinosudtirolpklabudhabikinokawabarthadselec" + - "trentin-sudtirolplantsnoasakakinokiaplatformshangrilanxessokanag" + - "awaplatter-appimientakinoueplatterpinkhplaystation-cloudplazaplc" + - "itichocolatelevisionissayokkaichiropractichitosetogakushimotogan" + - "ewportkmaxxn--12c1fe0bradescotlandyndns-iparmatta-varjjatksatxn-" + - "-12cfi8ixb8lucerneplumbingoplurinacionalpodhaleviracloudletsoknd" + - "alpodlasiellaktyubinskiptveterinaireadthedocscappgafannefrankfur" + - "trentinosued-tirolpodzonepohlpoivronpokerpokrovskmpspbar2politic" + - "artoonartdecologiapolitiendapolkowicepoltavalle-aostathellewismi" + - "llerpomorzeszowindowskrakowinnersolarssonponpesaro-urbino-pesaro" + - "urbinopesaromasvuotnaritakoelnponypordenonepornporsangerporsangu" + - "geporsgrunnanyokoshibahikariwanumatakkofuefukihaboromskogpoznanp" + - "raxis-a-bruinsfanprdpreservationpresidioprgmrprimetelemarknx-ser" + - "versicherungprincipeprivatizehealthinsuranceprofesionalprogressi" + - "venneslaskerrylogisticsolognepromombetsurfastvps-serveronakanoto" + - "ddenpropertyprotectionprotonetrentinosuedtirolprudentialpruszkow" + - "iosolundbeckomaganeprvcyberlevagangaviikanonjis-an-engineeringpr" + - "zeworskogpulawypupioneerpvhagakhanamigawapvtrentinsud-tirolpwciv" + - "ilaviationpzqldqotoyohashimotoolsomaqponiatowadaqslingqualifioap" + - "pippugliaquickconnectrentinsudtirolquicksytestingquipelementsomn" + - "arviikamisatokaizukamikitayamatsuris-an-entertainerqvcivilisatio" + - "nsveiosvelvikomforbarcelonagawalmartattoolforgebinagisoccertmgra" + - "zimuthatogayachimataiji234lima-cityeatselinogradultateshinanomac" + - "himkentateyamaetnaamesjevuemielno-ipifony-1svizzerasvn-reposor-v" + - "arangerswidnicasadelamonedapliernewmexicodyn-vpndnsorfoldswidnik" + - "kokonoeswiebodzin-butterswiftcoverswinoujscienceandhistoryswissm" + - "arterthanyousynology-dsorocabalestrandabergamoareketunkommunalfo" + - "rbundturystykaniepcetuscanytushuissier-justicetuvalle-daostatics" + - "oundcastronomy-routertuxfamilytwmailvestre-slidreplantationvestr" + - "e-totennishiawakuravestvagoyvevelstadvibo-valentiavibovalentiavi" + - "deovillasouthwest1-uslivinghistoryvinnicaseihicampobassociatest-" + - "iservecounterstrikevinnytsiavipsinaappittsburghofficialvirginiav" + - "irtual-userveexchangevirtualcloudvirtualservervirtualuserveftpiw" + - "atevirtueeldomein-vigorlicevirtuelvisakegawaviterboknowsitallviv" + - "olkenkundenvixn--3hcrj9clanbibaidarmeniavlaanderenvladikavkazimi" + - "erz-dolnyvladimirvlogintoyonezawavminiservervologdanskommunevolv" + - "olkswagentsowavolyngdalvoorloperauniterois-gonevossevangenvotevo" + - "tingvotoyonowiwatsukiyonoshiroomgwloclawekomorotsukagawawmcloudw" + - "mflabspeedpartnersoownextdirectrevisohughesorreisahayakawakamiic" + - "hikawamisatottoris-bytomaritimekeepingworldworse-thandawowitdkom" + - "onow-dnshisognewpdevcloudwpenginepoweredwritesthisblogwroclawith" + - "googleapiszwtcircleverappsphinxn--3e0b707ewtfauskedsmokorsetagay" + - "aseralingenoamishirasatogokasells-for-lessavannahgawuozuwzmiuwaj" + - "imaxn--45q11clic20001wwwfarsundyndns-webhareidsbergentingripexn-" + - "-4gbriminingxn--4it168dxn--4it797kongsbergxn--4pvxs4allxn--54b7f" + - "ta0cclicketcloudcontrolapplicationcloud66xn--55qw42gxn--55qx5dxn" + - "--5js045dxn--5rtp49clinichofunatoriginstitutemasekasaokamiminers" + - "andvikcoromantovalle-d-aostatic-accessanfranciscofreakunemuroran" + - "gecloudyclusterxn--5rtq34kongsvingerxn--5su34j936bgsgxn--5tzm5gx" + - "n--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn--7t0a264cliniquen" + - "oharaxn--80adxhkspjelkavikomatsushimarylhurstjordalshalsenxn--80" + - "ao21axn--80aqecdr1axn--80asehdbarefootballooningjerdrumckinseyol" + - "asitebinordre-landiscoveryggeebizenakanojohanamakinoharaustinnau" + - "mburggfarmerseineastasiamuneues3-ap-southeast-2ix4432-balsan-sue" + - "dtirolkuszczytnord-aurdalipayboltatarantours3-ap-northeast-2xn--" + - "80aswgxn--80augustowithyoutuberspacekitagatargetmyiphosteurxn--8" + - "ltr62koninjambylxn--8pvr4uxn--8y0a063axn--90a3academiamicable-mo" + - "democraciaxn--90aeroportalabamagasakishimabaraogakibichuoxn--90a" + - "ishobarakawagoexn--90azhytomyravendbargainstantcloudfunctionsncf" + - "dishakotanavigationavoirmcpehimejibigawaustraliamusementdllpages" + - "3-ca-central-1xn--9dbhblg6dietritonxn--9dbq2axn--9et52uxn--9krt0" + - "0axn--andy-iraxn--aroport-byaotsurreyxn--asky-iraxn--aurskog-hla" + - "nd-jnbarreauctionfabricagliaricoharuhrxn--avery-yuasakuhokkaidop" + - "aaskvollxn--b-5gaxn--b4w605ferdxn--balsan-sdtirol-nsbspreadbetti" + - "ngxn--bck1b9a5dre4clintonoshoesantabarbaraxn--bdddj-mrabdxn--bea" + - "ralvhki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7ax" + - "n--bidr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyasakaiminatoyoo" + - "kaneyamazoexn--bjddar-ptarnobrzegyptianxn--blt-elabourxn--bmlo-g" + - "raingerxn--bod-2natalxn--bozen-sdtirol-2obanazawaxn--brnny-wuaca" + - "demy-firewall-gatewayxn--brnnysund-m8accident-investigation-apti" + - "bleadpagesquare7xn--brum-voagatroandinosaurepaircraftingvollomba" + - "rdiademonmouthagebostadxn--btsfjord-9zaxn--bulsan-sdtirol-nsbarr" + - "el-of-knowledgeappleborkaracoldwarszawaustrheimatunduhrennesoyok" + - "osukanraukraanghkeymachineustargardds3-eu-central-1xn--c1avgxn--" + - "c2br7gxn--c3s14minnesotaketakazakis-a-therapistoiaxn--cck2b3barr" + - "ell-of-knowledgehirnufcfanavuotnapleskns3-us-gov-west-1xn--cckwc" + - "xetdxn--cesena-forl-mcbremangerxn--cesenaforl-i8axn--cg4bkis-int" + - "o-animeinforumzxn--ciqpnxn--clchc0ea0b2g2a9gcdxn--comunicaes-v6a" + - "2oxn--correios-e-telecomunicaes-ghc29axn--czr694barsycenterprise" + - "sakikuchikuseikarugamvik-serverrankoshigayachiyodaejeonbukcoalph" + - "a-myqnapcloud-fr1xn--czrs0trogstadxn--czru2dxn--czrw28barsyonlin" + - "ewhampshirealtydalvdalaskanittedallasalleangaviikaascolipicenodu" + - "members3-us-west-1xn--d1acj3bashkiriauthordalandgcapebretonamicr" + - "osoftbank12xn--d1alfaromeoxn--d1atromsakatamayufuelblagrarchaeol" + - "ogyeongbuk0xn--d5qv7z876clothingdustdataitogitsuldalvivanovoldax" + - "n--davvenjrga-y4axn--djrs72d6uyxn--djty4konskowolayangrouphotogr" + - "aphysioxn--dnna-grajewolterskluwerxn--drbak-wuaxn--dyry-iraxn--e" + - "1a4cn-northwest-1xn--eckvdtc9dxn--efvn9spydebergxn--efvy88haibar" + - "akitahatakanezawaxn--ehqz56nxn--elqq16hair-surveillancexn--eveni" + - "-0qa01gaxn--f6qx53axn--fct429konsulatrobeepilepsykkylvenetodayxn" + - "--fhbeiarnxn--finny-yuaxn--fiq228c5hsrlxn--fiq64basicservercelli" + - "guriautomotiveconomiasakuchinotsuchiurakawakuyabukikonaikawachin" + - "aganoharamcoachampionshiphoptobamadridnbloggerevistaples3-eu-wes" + - "t-1xn--fiqs8srvarggatrentinsuedtirolxn--fiqz9storegontrailroadxn" + - "--fjord-lraxn--fjq720axn--fl-ziaxn--flor-jraxn--flw351exn--forl-" + - "cesena-fcbsstorfjordxn--forlcesena-c8axn--fpcrj9c3dxn--frde-gran" + - "drapidstorjcloud-ver-jpchungnamdalseidfjordyndns-picsannohelplfi" + - "nancialuxuryxn--frna-woaraisaijosoyrorostpetersburgxn--frya-hrax" + - "n--fzc2c9e2cngriwataraidyndns-wikiraxn--fzys8d69uvgmailxn--g2xx4" + - "8cnpyatigorskodjeepsondriodejaneirockartuzyxn--gckr3f0fbsbxn--1c" + - "k2e1bar0emmafann-arboretumbriamallamaceiobbcg12038xn--gecrj9cnsa" + - "ntacruzsewhalingroks-thisayamanobeokalmykiaxn--ggaviika-8ya47hak" + - "atanorthwesternmutualxn--gildeskl-g0axn--givuotna-8yasugitpagefr" + - "ontappixolinoxn--gjvik-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050i" + - "s-into-carshirahamatonbetsurnadalxn--gmqw5axn--h-2failxn--h1aegh" + - "akodatexn--h2breg3evenestreams1xn--h2brj9c8cntoyotaparsantafedje" + - "ffersonxn--h3cuzk1discountysnestudioxn--hbmer-xqaxn--hcesuolo-7y" + - "a35basilicataniautoscanadaeguambulancechirealmpmnaval-d-aosta-va" + - "lleyokoteastcoastaldefenceastus2xn--hery-iraxn--hgebostad-g3axn-" + - "-hkkinen-5waxn--hmmrfeasta-s4accident-prevention-k3studynamische" + - "s-dnsopotrentinsued-tirolxn--hnefoss-q1axn--hobl-iraxn--holtlen-" + - "hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn--hylandet-54axn--i1" + - "b6b1a6a2exn--imr513nxn--indery-fyasuokannamihoboleslawiecolognew" + - "spaperxn--io0a7is-into-cartoonshirakokaminokawanishiaizubangexn-" + - "-j1aefbx-ostrowiechoseiroumuenchenissedaluroyxn--j1amhakonexn--j" + - "6w193gxn--jlq480n2rgxn--jlq61u9w7basketballfinanzgorzeleccollect" + - "ionayorovigovtaxihuanfshostyhostingjerstadotsuruokakegawaveroyke" + - "ngerdalces3-eu-west-2xn--jlster-byatominamidaitomanchesterxn--jr" + - "peland-54axn--jvr189mintereisenxn--k7yn95exn--karmy-yuaxn--kbrq7" + - "oxn--kcrx77d1x4axn--kfjord-iuaxn--klbu-woaxn--klt787dxn--kltp7dx" + - "n--kltx9axn--klty5xn--3oq18vl8pn36axn--koluokta-7ya57hakubahcavu" + - "otnagaivuotnagaokakyotambabyenglandxn--kprw13dxn--kpry57dxn--kpu" + - "t3is-into-gamessinazawaxn--krager-gyatsukanoyaltakasugais-leetre" + - "ntino-aadigexn--kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn--" + - "krjohka-hwab49jdevcloudjiffylkesbiblackbaudcdn-edgestackhero-net" + - "workinggroupaashorokanaiexn--ksnes-uuaxn--kvfjord-nxaxn--kvitsy-" + - "fyatsushiroxn--kvnangen-k0axn--l-1fairwindstuff-4-salexn--l1acce" + - "ntureklamborghinikolaeventstufftoread-booksnesor-odalxn--laheadj" + - "u-7yawaraxn--langevg-jxaxn--lcvr32dxn--ldingen-q1axn--leagaviika" + - "-52batochiokinoshimaintenanceobninskaragandavocatanzarowbq-aursk" + - "og-holandingdyniajudaicadaquest-mon-blogueurovision-riopretobish" + - "imagazinekobayashikshacknetnedalaheadjudygarlanddnslivelanddnss3" + - "-ap-southeast-1xn--lesund-huaxn--lgbbat1ad8jdfastlylbanzaiclouda" + - "ppscbgivingjemnes3-fips-us-gov-west-1xn--lgrd-poacctromsojamison" + - "xn--lhppi-xqaxn--linds-pramericanartrusteexn--lns-qlaquilanstutt" + - "gartrentoyonakagyokutoyakolobrzegersundxn--loabt-0qaxn--lrdal-sr" + - "axn--lrenskog-54axn--lt-liacolonialwilliamsburgrondarxn--lten-gr" + - "anexn--lury-iraxn--m3ch0j3axn--mely-iraxn--merker-kuaxn--mgb2dde" + - "susakis-certifiedunetlifyis-a-musicianxn--mgb9awbfbxostrowwlkpmg" + - "ruexn--mgba3a3ejtrvaroyxn--mgba3a4f16axn--mgba3a4fra1-dexn--mgba" + - "7c0bbn0axn--mgbaakc7dvfedorainfracloudfrontdoorxn--mgbaam7a8haku" + - "is-a-greenxn--mgbab2bdxn--mgbah1a3hjkrdxn--mgbai9a5eva00batsfjor" + - "diskussionsbereichattanooganordeste-idcasertairanzanhktcmemergen" + - "cyahikobeardubaiduckdns3-us-west-2xn--mgbai9azgqp6jejuniperxn--m" + - "gbayh7gpaleoxn--mgbbh1a71exn--mgbc0a9azcgxn--mgbca7dzdoxn--mgber" + - "p4a5d4a87gxn--mgberp4a5d4arxn--mgbgu82axn--mgbi4ecexposedxn--mgb" + - "pl2fhappouxn--mgbqly7c0a67fbcoloradoplateaudiopsysantamariakexn-" + - "-mgbqly7cvafr-1xn--mgbt3dhdxn--mgbtf8flatangerxn--mgbtx2bauhausp" + - "osts-and-telecommunicationswedeniwaizumiotsukumiyamazonawsmpplan" + - "etariumemorialillyombolzano-altoadigeometre-experts-comptables3-" + - "website-ap-northeast-1xn--mgbx4cd0abbvieeexn--mix082fedorapeople" + - "gallodingenxn--mix891fedoraprojectozsdeportevadsobetsulikes-pied" + - "monticellocalzonexn--mjndalen-64axn--mk0axin-dslgbtrycloudflarep" + - "bodynamic-dnsortlandxn--mk1bu44columbusheyxn--mkru45is-lostre-to" + - "teneis-a-nascarfanxn--mlatvuopmi-s4axn--mli-tlarvikonyvelolipopu" + - "sinteractivegashisuifuettertdasnetzxn--mlselv-iuaxn--moreke-juax" + - "n--mori-qsakuragawaxn--mosjen-eyawatahamaxn--mot-tlavagiskexn--m" + - "re-og-romsdal-qqbuseranishiaritakurashikis-not-certifiedxn--msy-" + - "ula0hakusanagochijiwadellogliastradingxn--mtta-vrjjat-k7aflaksta" + - "daokagakicks-assnasaarlandxn--muost-0qaxn--mxtq1misakis-an-accou" + - "ntantshiojirishirifujiedaxn--ngbc5azdxn--ngbe9e0axn--ngbrxn--3px" + - "u8komvuxn--30rr7yxn--nit225kooris-a-personaltrainerxn--nmesjevue" + - "mie-tcbalsan-sudtirollagdenesnaaseinet-freaksusonoxn--nnx388axn-" + - "-nodessakurais-savedxn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn" + - "--ntsq17gxn--nttery-byaeservehalflifeinsurancexn--nvuotna-hwaxn-" + - "-nyqy26axn--o1achernihivgubsuzakananiikappuboliviajessheimpertri" + - "xcdn77-secureggiocalabriaxn--o3cw4haldenxn--o3cyx2axn--od0algxn-" + - "-od0aq3beneventoeidskoguchikuzenvironmentalconservationionjukudo" + - "yamaizuruovat-band-campaniavoues3-eu-west-3utilities-1kappchizip" + - "6116-b-datacentermezgorabogadobeaemcloud-dealerimo-i-rana4u2-loc" + - "alhostrodawarabruzzoologicalvinklein-addrammenuorochestereport3l" + - "3p0rtashkentatamotors3-ap-northeast-1337xn--ogbpf8flekkefjordxn-" + - "-oppegrd-ixaxn--ostery-fyaxn--osyro-wuaxn--otu796dxn--p1acfeiraq" + - "uarelleaseeklogesaveincloudxn--p1ais-slickazteleportlligatrentin" + - "o-alto-adigexn--pgbs0dhlxn--porsgu-sta26fermochizukirkenesaves-t" + - "he-whalessandria-trani-barletta-andriatranibarlettaandriaxn--pss" + - "u33lxn--pssy2uxn--q9jyb4communewyorkshirebungoonordkappartintuit" + - "oyotomiyazakinuyamashinatsukigatakasakitauraxn--qcka1pmcdirxn--q" + - "qqt11misasaguris-an-actorxn--qxa6axn--qxamsterdamnserverbaniaxn-" + - "-rady-iraxn--rdal-poaxn--rde-ulavangenxn--rdy-0nabaris-uberleetr" + - "entino-altoadigexn--rennesy-v1axn--rhkkervju-01aferraraxn--rholt" + - "-mragowoodsidevelopmentrysiljanxn--rhqv96gxn--rht27zxn--rht3dxn-" + - "-rht61exn--risa-5nativeamericanantiquesuzukanazawaxn--risr-iraxn" + - "--rland-uuaxn--rlingen-mxaxn--rmskog-byaxn--rny31halsaitamatsuku" + - "ris-a-gurusrcfastly-terrariuminamiechizenxn--rovu88bentleyomitan" + - "observerxn--rros-granvindafjordxn--rskog-uuaxn--rst-0naturalhist" + - "orymuseumcenterxn--rsta-franamizuholdingsmall-webhostingxn--rvc1" + - "e0am3exn--ryken-vuaxn--ryrvik-byaxn--s-1faithammarfeastafricarbo" + - "nia-iglesias-carboniaiglesiascarboniaxn--s9brj9community-prochow" + - "icexn--sandnessjen-ogbeppublishproxyzjampagexlimanowarudaxarnetf" + - "lixilovecollegefantasyleaguernseyokozeatonsbergivestbytemarkanza" + - "kiwielunnerhcloudiscourses3-external-1xn--sandy-yuaxn--sdtirol-n" + - "2axn--seral-lraxn--ses554gxn--sgne-graphoxn--42c2d9axn--skierv-u" + - "tazasuzukis-foundationxn--skjervy-v1axn--skjk-soaxn--sknit-yqaxn" + - "--sknland-fxaxn--slat-5naturalsciencesnaturellesvalbardunloppaci" + - "ficivilizationxn--slt-elabcn-north-1xn--smla-hraxn--smna-gratang" + - "entlentapisa-geekopervikfh-muensterxn--snase-nraxn--sndre-land-0" + - "cbeskidyn-ip24xn--snes-poaxn--snsa-roaxn--sr-aurdal-l8axn--sr-fr" + - "on-q1axn--sr-odal-q1axn--sr-varanger-ggbestbuyshouses3-website-a" + - "p-southeast-1xn--srfold-byaxn--srreisa-q1axn--srum-gratis-a-bull" + - "s-fanxn--stfold-9xaxn--stjrdal-s1axn--stjrdalshalsen-sqbetainabo" + - "xfusejnyanagawaltervistaikikugawashingtondclk3xn--stre-toten-zcb" + - "hzcasinorddalimitedisrechtranaharimalselvendrellimoliseminempres" + - "ashibetsukuibmdivtasvuodnakaiwamizawaweddingjesdalivornoceanogra" + - "phiquemrxn--t60b56axn--tckwebspacexn--tiq49xqyjelasticbeanstalka" + - "zunotteroyxn--tjme-hraxn--tn0agrinetbankoryokamikawanehonbetsuru" + - "taharaxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trentin-sd-tiro" + - "l-rzbieidsvollombardynaliasnesoddenmarkhangelskjakdnepropetrovsk" + - "iervaapsteiermarkarasjohkamikoaniihamatamakawajimarriottcp4xn--t" + - "rentin-sdtirol-7vbrplsbxn--45br5cylxn--trentino-sd-tirol-c3biela" + - "washtenawdev-myqnapcloudcontrolledekagaminogifts3-website-ap-sou" + - "theast-2xn--trentino-sdtirol-szbiellaakesvuemielecceu-1xn--trent" + - "inosd-tirol-rzbieszczadygeyachts3-website-eu-west-1xn--trentinos" + - "dtirol-7vbievathletajimabaridagawakkanaibetsubamericanfamilydscl" + - "ouderacingjovikarasjokarasuyamarshallstatebankarateu-2xn--trenti" + - "nsd-tirol-6vbifukagawassamukawatarikuzentakatainaioirasebastopol" + - "ogyeongnamegawafaicloudineat-urlomzaporizhzheguriitatebayashijon" + - "awateu-3xn--trentinsdtirol-nsbigv-infolldalondonetskaratsuginami" + - "katagamilanoticias3-website-sa-east-1xn--trgstad-r1axn--trna-woa" + - "xn--troms-zuaxn--tysvr-vraxn--uc0atvestfoldxn--uc0ay4axn--uist22" + - "hamurakamigoris-a-hard-workershawaiijimarcheapigeelvinckaufenxn-" + - "-uisz3gxn--unjrga-rtarumizusawaxn--unup4yxn--uuwu58axn--vads-jra" + - "xn--valle-aoste-ebbtunesorumincomcastresindevicenzaporizhzhiaxn-" + - "-valle-d-aoste-ehbodoes-it1-eurxn--valleaoste-e7axn--valledaoste" + - "-ebbvacationsvcivilwarmiastagets-itmparochernigovernmentoyosatoy" + - "okawaxn--vard-jraxn--vegrshei-c0axn--vermgensberater-ctbihorolog" + - "yonagoyaxn--vermgensberatung-pwblogoipizzaxn--vestvgy-ixa6oxn--v" + - "g-yiabkhaziaxn--vgan-qoaxn--vgsy-qoa0jelenia-goraxn--vgu402comob" + - "araxn--vhquvestnesouthcarolinarvikomakiyosatokamachintaifun-dnsa" + - "liashishikuis-a-patsfanxn--vler-qoaxn--vre-eiker-k8axn--vrggt-xq" + - "adxn--vry-yla5gxn--vuq861bikedaemoneyonagunicloudivttasvuotnakam" + - "agayahooguyoriikarelianceu-4xn--w4r85el8fhu5dnraxn--w4rs40lxn--w" + - "cvs22dxn--wgbh1comparemarkerryhotelsantoandreamhostersanukinvest" + - "mentsaobernardownloadyndns-workshopitsitexasaogoncasacamdvrcampi" + - "nagrandebuilderschlesischesaotomelbournexn--wgbl6axn--xhq521bilb" + - "aokinawashirosatochigiessensiositechnologyoshiokanumazuryukiiyam" + - "anouchikuhokuryugasakitashiobaraxn--xkc2al3hye2axn--xkc2dl3a5ee0" + - "handsonyoursidelmenhorstalbanshellaspeziaxn--y9a3aquariumisawaxn" + - "--yer-znaturbruksgymnxn--yfro4i67oxn--ygarden-p1axn--ygbi2ammxn-" + - "-45brj9cldmailuzernxn--ystre-slidre-ujbillustrationredumbrellahp" + - "piacenzachpomorskienhlfanhs3-website-us-east-1xn--zbx025dxn--zf0" + - "ao64axn--zf0avxlxn--zfr164biocelotenkawaxnbayxz" +const text = "9guacuiababia-goracleaningroks-theatree164-balsfjordd-dnshome-we" + + "bserverdal-o-g-i-n4t3l3p0rtashkentatamotorsitestinggfarmerseinea" + + "stasiaetnaamesjevuemielnoboribetsucks3-ap-northeast-2ix4432-bals" + + "an-suedtirolkuszczytnoopencraftrainingdyniabruzzoologicalabamaga" + + "sakishimabaraogashimadachicagoboats3-ap-northeast-1kappchizip611" + + "6-b-datacentermezproxyzgorabogadobeaemcloud-fr1337birdartcenterp" + + "risecloudaccesscambridgeiseiroumuencheninohekinannestaditchyouri" + + "parachutingleezebirkenesoddtangenovaranzanquannefrankfurtcmember" + + "s3-website-ap-southeast-2birthplacebitbucketrzyninomiyakonojorpe" + + "landivtasvuodnakamagayahooguyurihonjournalistjohnirasakin-vpncas" + + "inord-odalombardynalias3-website-eu-west-1bjarkoyusuharabjerkrei" + + "mbamblebesbyenvironmentalconservationionjukudoyamaintenancebizen" + + "akanojohanamakinoharaustinnaumburgjerdrumcpeatonsbergjerstadotsu" + + "ruokakamigaharamswatch-and-clockerevistarnbergivestbytemark12bju" + + "gnieznord-frontierblackfridayusuisservehttpbin-butterbloombergba" + + "uernishiazaincheonishigovtcp4bloxcms3-website-sa-east-1bluebitem" + + "p-dnswedenishiharabmoattachments3-website-us-east-1bms3-website-" + + "us-west-1bmwedeployuufcfanishiizunazukindianapolis-a-bloggerbnrw" + + "egroweibolognagareyamakeuparaglidinglitcheltenham-radio-opensoci" + + "alomzaporizhzhegurindianmarketingliwicebomloabathsbcateringebuil" + + "dingloboavistanbulsan-sudtirolondonetskaratsuginamikatagamilanos" + + "hiroomglogoweirbondigitaloceanographicsxboxfordellogliastradingl" + + "oppenzaolbia-tempio-olbiatempioolbialystokkeliwebhostinglugsjcbn" + + "pparibashkiriabonnishikatakazakindielddanuorrindigenaklodzkodair" + + "abookinghostedpictetgoryuzawabookonlinewjerseyboomlajollamerican" + + "expressexyboschaefflerdalondrinamsskoganeindowapblogsiteleafamil" + + "ycompany-2bostik-serverrankoshigayachts3-website-us-west-2boston" + + "akijinsekikogentappsselfiparisor-fronishikatsuragit-reposts-and-" + + "telecommunicationsakyotanabellevuelosangelesjabbottjeldsundivtta" + + "svuotnakamurataiwanairforcechireadthedocscbgmbhartipschlesisches" + + "alangenishikawazukamisatohoboleslawieconomiastalowa-wolawabotani" + + "calgardeno-stagingminakamichiharabotanicgardenishimerabotanycath" + + "olicaxiaskimitsubatamibudejjuegoshikievennodesabaerobaticketsalo" + + "n-1bouncemerckmsdnipropetrovskjervoyageometre-experts-comptables" + + "altdalorenskogmodellingmxenishinomiyashironoddabounty-fullensake" + + "rrypropertiesaludiyboutiquebecommerce-shopitsitempurlotteboutire" + + "serve-onlinewmexicodyn-o-saurlandesalvadordalibabalena-devicesal" + + "zburgretakamatsukawabozen-sudtirolottokonamegatakatsukindustriab" + + "ozen-suedtirolouvrehabmerbplaceducatorprojectjmaxxxeroxfinitybra" + + "ndywinevalleybrasiliabresciabrindisibenikikugawashtenawdevcdnacc" + + "essobetsuitaijindustriesteamfamberkeleybristoloseyouriparliament" + + "jomelhusgardenishinoomotegohtawaramotoineppubtlsamegawabritishco" + + "lumbialowiezaganishinoshimatsunowruzhgorodeomniweatherchannelpus" + + "ercontentjxjampalacebroadcastlebtimnetzjavaldaostathelleluxembou" + + "rgrimstadrangedalublindesnesamnangerbroadwaybroke-itvedestrandra" + + "y-dnstracebrokerbronnoysundrayddns5ybrothermesaverdealerbrowsers" + + "afetymarketsampaleomurabrumunddalucaniabrunelastxn--0trq7p7nnish" + + "iokoppegardraydnsupdaterbrusselsamsclubartowellbeingzonebruxelle" + + "samsungripebryanskodjedugit-pagespeedmobilizeroticagliaricoharuh" + + "rbrynewportkmaxxn--11b4c3drivegarsheiheijinfinitinsureggioemilia" + + "romagnamsosnowiechernivtsiciliabuskerudrobaknoluoktachikawafflec" + + "elluciancrmadviseharag-cloud-charitychyattorneyagawakayamagazine" + + "kobayashikaoirmitakeharagusartsandnessjoenishitosashimizunaminam" + + "ibosognebuzentsujiiebuzzlgriwataraidrrbwesteuropenairbusantiques" + + "t-a-la-maisondre-landroidrudupontariobranconavstackareliancebzhi" + + "tomirbzzwestfalenishiwakintelligencecoloradoplateaudiopsysanokar" + + "umaifarsundyndns-homednsantabarbaracolumbusheycommunecommunity-p" + + "rochowicecomobaracomparemarkerryhotelsantacruzsantafedjeffersonc" + + "omsecaaskoyabearalvahkihokumakogenebakkeshibechambagriculturenne" + + "bugattiffanyaarborteaches-yogasawaracingrpartinternationalfirear" + + "msantamariakecondoshichinohealth-carereformemergencyahikobeardub" + + "aiduckdnsncfdyndns-ipartsantoandreamhostersanukintuitoyosatoyoka" + + "waconferenceconstructionconsuladoesntexisteingeekasaokamikitayam" + + "atsurinuyamashinatsukigatakasagotpantheonsiteconsultanthropology" + + "consultingruenoharacontactoyotapartycontagematsubaracontemporary" + + "arteducationalchikugodogadollsaobernardocontractorskenconventure" + + "shinodearthruherecifedexetercookingchannelsdvrdnsdojoburguidefen" + + "seljordyndns-mailcoolcooperativano-frankivskygearappasadenarashi" + + "nocopenhagencyclopedichofunatoriginstantcloudfrontdoorcoproducti" + + "onsaogoncarriercorporationcorsicahcesuoloansaotomeiwamashikokuch" + + "uocorvettenrissadonnagatorogersvp4cosenzakopanelblagrarchaeology" + + "eongbuk0cosidnsfor-better-thanawatchesapporocostumedicaltanisset" + + "taishinomakindlefrakkestadyndns-office-on-the-webercouchpotatofr" + + "iesardegnaroycoukashibatakasugainvestmentsardiniacouncilcouponsa" + + "rlcozoracqcxn--12cfi8ixb8lcranbrookuwanalyticsarpsborguitarsaruf" + + "utsunomiyawakasaikaitabashijonawatecrdyndns-picsasayamatta-varjj" + + "atoyotomiyazakinzais-a-candidatecreditcardyndns-remotewdyndns-se" + + "rverisigncreditunioncremonashgabadaddjaguarqhachinohedmarkashiha" + + "racrewhalingujoinvilleirvikashiwaracricketoyotsukaidocrimeast-ka" + + "zakhstanangercrotonecrownipassagensasebofagemologicallynxn--12co" + + "0c3b4evalled-aostamayufuettertdasnetzcrsaskatchewancruisesassari" + + "s-a-caterercuisinellancashirecipescaracalvinklein-berlindaskvoll" + + "pagesaudaculturalcentertainmentoyouracuneocupcakecuritibaghdadul" + + "toystre-slidrettozawacurvalledaostaobaomoriguchiharahkkeravjuedi" + + "schesapeakebayernuorochestercymruovatmallorcafederationcilla-spe" + + "ziacyonabarumemorialcyouthachiojiyaizuwakamatsubushikusakadogawa" + + "ferrarivneferrerotikagoshimalopolskanlandyndns-workshoparenakani" + + "ikawatanagurafetsundyndns1fgushikamifuranordreisa-hockeynutsirac" + + "usaintlouis-a-anarchistoireggio-emilia-romagnakatombetsumitakagi" + + "izefhvalerfidoomdnsiskinkyotobetsulikes-piedmonticellocalzonefie" + + "ldynnsauheradyndns-webhareidsbergentingulenfigueresinstagingwidd" + + "leitungsenfilateliafilegear-audnedalnfilegear-dealstahaugesunder" + + "seaportsinfolionetworkangerfilegear-gbizfilegear-iefilegear-jpmo" + + "rganfilegear-sg-1filminamiechizenfinalfinancefineartschulefinlan" + + "dynservebbsavannahgafinnoyfirebaseappatriafirenetrani-andria-bar" + + "letta-trani-andriafirenzefirestonefirewebhopocznordre-landynulme" + + "msettlersaveincloudyndns-wikirafirmdalegnicapebretonamicrolighti" + + "ngxn--1ctwolominamatargithubusercontentraniandriabarlettatranian" + + "driafishingokasellfylkesbiblackbaudcdn-edgestackhero-networkingg" + + "roupowiathletajimageandsoundandvision-riopretochigiessensiositel" + + "evision-webpaashorokanaiefitjarvodkagaminogatagajobojis-a-chefas" + + "tly-terrariumetacentrumeteorappassenger-associationfitnessettlem" + + "entranoyfjalerflekkefjordynv6flesbergflickragerokunohealthcareer" + + "schulserverflirfloginlinefloraflorencefloridatsunanjoetsuwanouch" + + "ikujogaszkolancasterfloripaderbornfloristanohatajimidsundynvpnpl" + + "us-4floromskogflowerschwarzgwangjuifminamifuranowtvallee-aostero" + + "yfltranslateflynnhosting-clusterfndyroyrvikingunmaniwakuratefnwk" + + "asukabedzin-addrammenuniversityfoodnetworkdalfor-ourfor-somedio-" + + "campidano-mediocampidanomediofor-theaterforexrothachirogatakamor" + + "iokakudamatsueforgotdnschweizforli-cesena-forlicesenaforlikescan" + + "dyn53forsalegoldpoint2thisamitsukeforsandasuoloftransportefortal" + + "fortextileikangerfortmissoulanciafortworthadanore-og-uvdalfosnes" + + "ciencecentersciencehistoryfotransurlfoxafozfranamizuhobby-sitefr" + + "ancaiserniafranziskanerimaringatlantajiris-a-conservativegascien" + + "tistordalfredrikstadtvscjohnsonfreeddnsfreebox-oscrapper-sitefre" + + "edesktoppdalfreemasonryfreemyiphosteurovisionfreesitefreetlscrap" + + "pingfreiburgfreseniusculturecreationfribourgfriuli-v-giuliafriul" + + "i-ve-giuliafriuli-vegiuliafriuli-venezia-giuliafriuli-veneziagiu" + + "liafriuli-vgiuliafriuliv-giuliafriulive-giuliafriulivegiuliafriu" + + "livenezia-giuliafriuliveneziagiuliafriulivgiuliafrlfroganscrysec" + + "uritytacticservehumourfrognfrolandfrom-akrehamnfrom-alfrom-arfro" + + "m-azimuthatogayabukijobservableusercontentrapaniizafrom-capetown" + + "news-stagingfrom-coffeedbackplaneappaviancargodaddyn-vpndnservei" + + "rchonanbulsan-suedtirolucernefrom-ctravelchannelfrom-dchoseikaru" + + "gamvikarlsoyfrom-deatnunjargafrom-flanderserveminecraftravelersi" + + "nsurancefrom-gaulardalfrom-hichisodegaurafrom-iafrom-idfrom-ilfr" + + "om-in-brbar1from-kservemp3from-kyowariasahikawafrom-langevagrige" + + "ntomologyeonggiehtavuoatnabudapest-a-la-masion-rancherkasydneyfr" + + "om-malselvendrelluciancrmadvancefrom-mdfrom-medizinhistorischese" + + "rvep2pfizerfrom-mifunefrom-mnfrom-modalenfrom-mservepicservequak" + + "efrom-mtnfrom-nctulanservesarcasmatartanddesignfrom-ndfrom-nefro" + + "m-nhktrdfrom-njservicesevastopolefrom-nminamiiseoullensvanguardf" + + "rom-nvallee-d-aosteigenfrom-nynysagaeroclubmedecincinnativeameri" + + "canantiquest-mon-blogueurodirumaceratabuseating-organichoshibuya" + + "habackyardsandvikcoromantovalle-daostavangerfrom-ohdattorelayfro" + + "m-oketogolffansevenassisicilyfrom-orfrom-padoval-daostavalleyfro" + + "m-pratogurafrom-ris-a-cpadualstackasumigaurayasudafrom-schoenbru" + + "nnfrom-sdscloudfrom-tnfrom-txn--1lqs03nfrom-utazurestaticappspac" + + "eusercontentrendhostingfrom-vald-aostarostwodzislawhoswholdingsm" + + "all-webredirectmeeresistancefrom-vtrentin-sud-tirolfrom-wafrom-w" + + "iardwebspacefrom-wvalleeaosteinkjerusalembroideryfrom-wyfrosinon" + + "efrostaplesewienfroyaitakahamalvikasuyanaizuerichardlillesandefj" + + "ordfruskydivingfstcgroupgfoggiafujiiderafujikawaguchikonefujimin" + + "okamoenairguardiannakadomarinebraskaunicommbankaszubyfujinomiyad" + + "attowebcampinashikiminohostfoldnavyfujiokayamamurogawafujisatosh" + + "onairlinedre-eikerfujisawafujishiroishidakabiratoridebianfujitsu" + + "rugashimandalfujiyoshidavvenjargap-northeast-3fukayabeatsharis-a" + + "-cubicle-slavellinodeobjectsharpharmacienshawaiijimarburgfukuchi" + + "yamadavvesiidappnodebalancertificationfukudomigawafukuis-a-democ" + + "ratrentin-sudtirolfukumitsubishigakirovogradoyfukuokazakiryuohku" + + "rafukuroishikarikaturindalfukusakisarazure-mobileirfjordfukuyama" + + "gatakaharussiafunabashiriuchinadazaifudaigojomedicinaharimalbork" + + "atowicefunagatakahashimamakishiwadafunahashikamiamakusatsumasend" + + "aisennangonohejis-a-designerfundaciofunkfeuerfuoiskujukuriyamang" + + "ooglecodespotrentin-sued-tirolfuosskoczowiiheyakumodernfurniture" + + "ggio-calabriafurubirafurudonostiaafurukawairportland-4-salernodu" + + "minamiizukaminokawanishiaizubangefusoftwarezzoologyfussagamihara" + + "futabayamaguchinomihachimanagementrentin-suedtirolfutboldlygoing" + + "nowhere-for-morenakasatsunairtelebitbridgestoneen-rootaruis-a-do" + + "ctorfuttsurugimperiafuturecmshellaspeziafuturehostingfuturemaili" + + "ngfvghangglidinghangoutsystemscloudsitehannanmokuizumodenakayama" + + "nnorth-kazakhstanhannorthflankautokeinotairestaurantrentino-a-ad" + + "igehanyuzenhapmircloudletshimojis-a-hard-workershimokawahappounz" + + "enharstadharvestcelebrationhasamansionshimokitayamattelekommunik" + + "ationhasaminami-alpshimonitayanagitappharmacyshimonosekikawahash" + + "banghasudahasura-apphdfcbankazohasvikazteleportlligatrentino-aad" + + "igehatoyamazakitahiroshimanxn--1lqs71dhatsukaichikaiseiyoichippu" + + "betsubetsugarusrcfastlylbanzaicloudappspotagerhattfjelldalhayash" + + "imamotobungotakadagestangeorgeorgiahazuminobusells-for-lesshimos" + + "uwalkis-a-hunterhelsinkitakamiizumisanofidelitysvardontexistmein" + + "-iservebeero-stagehembygdsforbundhemneshimotsukehemsedalhepforge" + + "blockshimotsumayfirstockholmestrandherokusslattuminamimakis-a-kn" + + "ightpointtohnoshoooshikamaishimodateheroyhgtvalleedaostehidorahi" + + "gashiagatsumagoianiahigashichichibunkyonanaoshimakanegasakilatir" + + "onthewifiatlassian-dev-myqnapcloudcontrolledogawarabikomaezakiru" + + "nogiftshinichinanhigashihiroshimanehigashiizumozakitakatakanezaw" + + "ahigashikagawahigashikagurasoedahigashikawakitaaikitakyushuaiahi" + + "gashikurumeetrentino-alto-adigehigashimatsushimaoris-a-landscape" + + "rugiahigashimatsuyamakitaakitadaitoigawahigashimurayamamotorcycl" + + "eshinjournalismailillehammerfeste-iphiladelphiaareadmyblogsytehi" + + "gashinarusells-for-ustkanmakitchenhigashinehigashiomitamamurausu" + + "kitamihamadahigashiosakasayamanakakogawahigashishirakawamatakaok" + + "almykiahigashisumiyoshikawaminamiaikitamotosumy-gatewayhigashits" + + "unorthwesternmutualhigashiurawa-mazowszexnetrentino-altoadigehig" + + "ashiyamatokoriyamanashifteditorxn--1qqw23ahigashiyodogawahigashi" + + "yoshinogaris-a-lawyerhiraizumisatohmapartmentshinjukumamotoyamas" + + "hikehirakatashinagawahiranairtrafficplexus-1hirarahiratsukaerutw" + + "entehirayakagehistorichouseshinkamigototalhitachiomiyagildeskali" + + "szhitachiotagophilatelyhitraeumtgeradegreehjartdalhjelmelandhole" + + "ckochikushinonsenergyholidayhomegoodshinshinotsurgeonshalloffame" + + "lbournehomeiphilipsynology-diskstationhomelinkyard-cloudjiffyres" + + "dalhomelinuxn--2m4a15ehomeofficehomesecuritymacaparecidahomesecu" + + "ritypchoyodobashichikashukujitawaravpagexlukowestus2homesenseeri" + + "nghomesklepphoenixn--2scrj9christiansburgrondarhomeunixn--30rr7y" + + "hondahongotembaixadahonjyoitakarazukaluganskazunoticeablevangerh" + + "ornindalhorsells-itrentino-s-tirolhortendofinternet-dnshinshiroh" + + "ospitalhoteleshintokushimahotelwithflightshintomikasaharahotmail" + + "hoyangerhoylandetroitskddiamondshinyoshitomiokamishihoronobeauxa" + + "rtsandcraftshiojirishirifujiedahumanitieshioyandexcloudhurdalhur" + + "umajis-a-liberalhyllestadhyogoris-a-libertarianhyugawarahyundaiw" + + "afuneis-uberleetrentino-sudtirolis-very-badajozis-a-painteractiv" + + "estfoldis-very-evillageis-very-goodyearis-very-niceis-very-sweet" + + "pepperis-with-thebandownloadisleofmanaustdaljenv-arubajddarchite" + + "cturealtorlandjeonnamerikawauejetztrentino-sued-tiroljevnakershu" + + "sdecorativeartshopwarendalenugjewelryjewishartgalleryjfkharkovao" + + "jgorajlljls-sto1jls-sto2jls-sto3jmphxn--32vp30hadselburgjnjaworz" + + "nosegawajoyentrentino-suedtiroljoyokaichibalashovhaebaruericsson" + + "gdalenviknakatsugawajpnjprshoujis-a-personaltrainerjurkoshimizum" + + "akiyosatokaizukamikoaniihamatamakawajimaritimoldell-ogliastrader" + + "koshunantankhmelnitskiyamarugame-hostyhostingkosugekotohiradomai" + + "nstitutekotourakouhokutamakiyosemitekounosupabasembokukiyosunnda" + + "lkouyamarylhurstjordalshalsenkouzushimasfjordenkozagawakozakizun" + + "okunimilitarykozowildlifestylekpnkppspdnshowtimeldalkrasnikahoku" + + "tokamachintaifun-dnsaliashwilliamhillkrasnodarkredstonekrelliank" + + "ristiansandcatsienarutolgakristiansundkrodsheradkrokstadelvalle-" + + "aostatic-accessigdalkryminamioguni5kumanotogawakumatorinotteroyk" + + "umejimashikis-a-republicancerresearchaeologicaliforniakumenantok" + + "igawakunisakis-a-rockstarachowicekunitachiarailwaykunitomigusuku" + + "leuvenetokashikis-a-socialistdlibestadkunneppuboliviajessheimper" + + "trixcdn77-secureggiocalabriakunstsammlungkunstunddesignkuokgroup" + + "ilotsilkhmelnytskyivaporcloudkuregruhostingkurgankurobeepilepsyk" + + "kylvenicekurogimimatakatoris-a-soxfankuroisogndalkuromatsunais-a" + + "-studentalkurotakikawasakis-a-teacherkassyno-dshiraois-a-linux-u" + + "sershirahamatonbetsurgerykushirogawakustanais-a-techietis-a-llam" + + "archeapigeelvinckfh-muensterkusuppliesimple-urlkutchanelverumina" + + "misanrikubetsupplykutnovecoregontrailroadkuzumakis-a-therapistoi" + + "akvafjordkvalsundkvamlidlugolekafjordvagsoygardendoftheinterneth" + + "nologykvanangenkvinesdalkvinnheradkviteseidatingkvitsoykwpspectr" + + "uminamitanekzmisakis-an-accountantshiraokamitondabayashiogamagor" + + "iziamisasaguris-an-actormisawamisconfusedmishimassivegridmissile" + + "wismillermisugitokorozawamitourismilezajskhplaystation-cloudyclu" + + "stermitoyoakemiuramiyazurecontainerdpolicemiyotamanomjondalenmlb" + + "fanmontrealestatefarmequipmentrentinoa-adigemonza-brianzapposird" + + "almonza-e-della-brianzaptokuyamasudamonzabrianzaramonzaebrianzam" + + "onzaedellabrianzamoonscaleforcemordoviamoriyamatsumaebashikshack" + + "netrentinoaadigemoriyoshiminamiashigaramormonstermoroyamatsumoto" + + "fukemortgagemoscowinbarclaycards3-external-1moseushistorymosjoen" + + "moskeneslupsklabudhabikinokawabarthagakhanamigawamosslzmosvikmps" + + "pbar2moteginowaniigatakahatakaishimogosenmoviemovimientokyotango" + + "uvichungnamdalseidfjordynathomebuiltwithdarkarmoymozilla-iotrent" + + "inoalto-adigemtranbymuginozawaonsenmuikaminoyamaxunispacemukoebe" + + "nhavnmulhouservegame-servermunakatanemuncienciamuosattemupimient" + + "aketomisatomobelementoraymurmansknx-serversicherungmurotorcraftr" + + "entinoaltoadigemusashinoharamuseetrentinos-tirolmuseumvereniging" + + "musicarbonia-iglesias-carboniaiglesiascarboniamutsuzawamy-vigorg" + + "emy-wanggoupilemyactivedirectorymyasustor-elvdalmycdmycloudnsmol" + + "arvikomaganemydattolocalhistorymyddnsgeekgalaxymydissentrentinos" + + "tirolmydobisshikis-an-actresshiratakahagithubpreviewsaikisofukus" + + "himangyshlakasamatsudopaashishikuis-a-musicianmydroboehringerike" + + "mydsmushcdn77-sslingmyeffectrentinosud-tirolmyfastblogermyfirewa" + + "llonieruchomoscienceandindustrynmyforuminamiuonumasoymyfritzmyft" + + "paccessnoasakakinokiamyhome-servermyjinomykolaivarggatrentinosud" + + "tirolmymailermymediapchurchaseljeepsondriodejaneirodoymyokohamam" + + "atsudamypepinbarclays3-fips-us-gov-west-1mypetsokndalmyphotoshib" + + "alatinombrendlyngeniwaizumiotsukumiyamazonawsglobalacceleratorah" + + "imeshimabaridagawakuyachimataikikonaikawachinaganoharamcoachampi" + + "onshiphoptobamadridnbloggerimo-siemenscaledekaasdaburmypictureso" + + "larssonmypsxn--3ds443gmysecuritycamerakermyshopblocksolognemysho" + + "pifymyspreadshoppingmythic-beastsolundbeckomakiyokawaramytis-a-b" + + "ookkeeperspectakasakitashiobaramytuleap-partnersomamyvncircustom" + + "er-ocimdbananarepublic66mywireitrentinosued-tirolplatterpioneerp" + + "lazaplcube-serverplumbingoplurinacionalpodhalepodlasiellaktyubin" + + "skiptveterinairealmpmnpodzonepohlpoivronpokerpokrovskommunalforb" + + "undpoliticarrdpolitiendapolkowicepoltavalle-d-aostaticsopotrenti" + + "nosuedtirolpomorzeszowindmillponpesaro-urbino-pesarourbinopesaro" + + "masvuotnaritakoelnponypordenonepornporsangerporsangugeporsgrunna" + + "nyokoshibahikariwanumatakinouepoznanpraxis-a-bruinsfanprdpresidi" + + "oprgmrprimetelemarkommuneprincipeprivatizehealthinsuranceprofesi" + + "onalprogressivestnesor-odalpromombetsupportrentinsud-tirolproper" + + "typrotectionprotonetrentinsudtirolprudentialpruszkowindowskrakow" + + "innersor-varangerprvcyberlevagangaviikanonjis-an-artistgstageprz" + + "eworskogpugliapulawypupippueblockbusterniiminamiawajikis-an-anar" + + "chistoricalsocietypvhagebostadpvtrentinsued-tirolpwcistrondheimm" + + "obilienissayokkaichiropractichernovtsyncloudurbanamexhibitioniss" + + "andiegomutashinainterhostsolutionsandoypythonanywherepaircraftin" + + "gvollolipopittsburghofficialpzqldqotoyohashimotoolsorfoldqponiat" + + "owadaqslgbtrentinsuedtirolqualifioappiwatequickconnectrentoyonak" + + "agyokutoyakolobrzegersundquicksytesorocabalestrandabergamoarekey" + + "machineustargardquipelementsorreisahayakawakamiichikawamisatotto" + + "ris-an-engineeringqvcitadeliverydyndns-at-homedepotenzamamidorit" + + "togitsumidatlantichirurgiens-dentistes-en-franceswidnikkokonoesw" + + "iebodzin-dsldswiftcoverswinoujscienceandhistoryswissmarterthanyo" + + "usynology-dsouthwest1-uslivinghistorytushuissier-justicetuvallea" + + "ostaverntuxfamilytwmailvevelstadvibo-valentiavibovalentiavideovi" + + "llasphinxn--3e0b707evinnicasacamdvrcampinagrandebuilderschmidtre" + + "-gauldalvinnytsiavipsinaappixolinovirginiavirtual-userveexchange" + + "virtualcloudvirtualservervirtualuserveftpizzavirtueeldomein-vigo" + + "rlicevirtuelvisakegawaviterboknowsitallvivolkenkundenvixn--3hcrj" + + "9civilisationisshingucciprianidyndns-at-workisboringrongausdalut" + + "skarpaczeladzvlaanderenvladikavkazimierz-dolnyvladimirvlogintoyo" + + "nezawavminanovologdanskongsvingervolvolkswagentspjelkavikomorots" + + "ukagawavolyngdalvoorlopervossevangenvotevotingvotoyonovps-hostro" + + "wiecivilizationiyodogawawithyoutuberspacekitagatargetmyipkomforb" + + "arcelonagawalbrzycharternopilawalesundgcanonoichinomiyakehimejib" + + "igawaustraliamuneues3-ap-south-1wiwatsukiyonortonwixsitewloclawe" + + "konskowolayangroupiemontewmcloudwmflabsrhtrevisojamisonwnextdire" + + "ctromsakatakkofuefukihabororosowawoodsideloittevaksdalworse-than" + + "dawowiospydebergwpdevcloudwpenginepoweredwphostedmailwpmucdnplan" + + "tsomnarviikamiokameokamakurazakitaurawpmudeveloperauniterois-cer" + + "tifiedunetlifyis-a-nascarfanwritesthisblogwroclawitdkoninjambylw" + + "tcirclerkstagets-itromsokamogawawtfastvps-serveronakanotoddenwuo" + + "zuwzmiuwajimaxn--45brj9civilwarmiasakuchinotsuchiurakawatchandcl" + + "ockaruizawaxn--45q11clanbibaidarmeniaxn--4gbriminingxn--4it168dx" + + "n--4it797konyvelohmusashimurayamarylandxn--4pvxs4allxn--54b7fta0" + + "ccldmailuxuryxn--55qw42gxn--55qx5dxn--5js045dxn--5rtp49cleverapp" + + "stmnxn--5rtq34kooris-a-photographerokuapphotographysioxn--5su34j" + + "936bgsgxn--5tzm5gxn--6btw5axn--6frz82gxn--6orx2rxn--6qq986b3xlxn" + + "--7t0a264clic20001wwwfarmsteadyndns-blogdnsanfranciscofreakunemu" + + "rorangecloudplatform0xn--80aaa0cvacationsrlxn--80adxhksrvaroyxn-" + + "-80ao21axn--80aqecdr1axn--80asehdbarefootballooningjovikaraganda" + + "ustrheimatunduhrennesoyokosukanramusementdllclstagehirnrtatarant" + + "ours3-ap-southeast-1xn--80aswgxn--80augustowithgoogleapiszxn--8l" + + "tr62kopervikhersonxn--8pvr4uxn--8y0a063axn--90a1aflakstadaokagak" + + "icks-assnasaarlandxn--90a3academiamicable-modemoneyxn--90aeropor" + + "talaheadjudaicadaquestorebaselectritonxn--90aishobarakawagoexn--" + + "90amcdirxn--90azhytomyravendbargainstancempresashibetsukuibmdisc" + + "ourses3-sa-east-1xn--9dbhblg6dietrusteexn--9dbq2axn--9et52uxn--9" + + "krt00axn--andy-iraxn--aroport-byaotsurnadalxn--asky-iraxn--aursk" + + "og-hland-jnbarreauctionfabricafjs3-us-east-2xn--avery-yuasakuhok" + + "ksundxn--b-5gaxn--b4w605ferdxn--balsan-sdtirol-nsbstorfjordxn--b" + + "ck1b9a5dre4clicketcloudcontrolappgafanxn--bdddj-mrabdxn--bearalv" + + "hki-y4axn--berlevg-jxaxn--bhcavuotna-s4axn--bhccavuotna-k7axn--b" + + "idr-5nachikatsuuraxn--bievt-0qa2xn--bjarky-fyasakaiminatoyookana" + + "zawaxn--bjddar-ptarnobrzegyptianxn--blt-elabourxn--bmlo-grainger" + + "xn--bod-2natalxn--bozen-sdtirol-2obanazawaxn--brnny-wuacademy-fi" + + "rewall-gatewayxn--brnnysund-m8accident-investigation-aptibleadpa" + + "gesquare7xn--brum-voagatrvestre-slidreportrogstadxn--btsfjord-9z" + + "axn--bulsan-sdtirol-nsbarrel-of-knowledgeappleborkarasjohkameyam" + + "atotakadauthgear-stagingjesdalimanowarudaukraanghkembuchikumagay" + + "agawakepnoipirangalsaceobiragrocerybnikeisenbahnatuurwetenschapp" + + "engineastcoastaldefenceastus2xn--c1avgxn--c2br7gxn--c3s14mincomc" + + "astresindevicenzaporizhzhiaxn--cck2b3barrell-of-knowledgecompute" + + "rhistoryofscience-fictionredumbrellaakesvuemieleccemrxn--cckwcxe" + + "tdxn--cesena-forl-mcbremangerxn--cesenaforl-i8axn--cg4bkis-found" + + "ationxn--ciqpnxn--clchc0ea0b2g2a9gcdxn--comunicaes-v6a2oxn--corr" + + "eios-e-telecomunicaes-ghc29axn--czr694barsycenterprisesakikuchik" + + "useihicampobassociatest-iservecounterstrikeu-1xn--czrs0try-snowp" + + "lowiczest-le-patronxn--czru2dxn--czrw28barsyonlinewhampshirealty" + + "dalpha-myqnapcloud66xn--d1acj3basicservercelliguriauthgearappspa" + + "cehosted-by-previderhclouddnslivefsnillfjorddnss3-ca-central-1xn" + + "--d1alfaromeoxn--d1atrycloudflareplantationxn--d5qv7z876clickris" + + "inglesangoxn--davvenjrga-y4axn--djrs72d6uyxn--djty4koryokamikawa" + + "nehonbetsurutaharaxn--dnna-grajewolterskluwerxn--drbak-wuaxn--dy" + + "ry-iraxn--e1a4clinichitachinakagawassamukawatarikuzentakatairave" + + "nnagasakimobetsuldaluccaravantaarparmatsuuraxn--eckvdtc9dxn--efv" + + "n9storjcloud-ver-jpchristmasakinderoyxn--efvy88haibarakitahataka" + + "nabeautysfjordxn--ehqz56nxn--elqq16hair-surveillancexn--eveni-0q" + + "a01gaxn--f6qx53axn--fct429kosaigawaxn--fhbeiarnxn--finny-yuaxn--" + + "fiq228c5hstpetersburgxn--fiq64basilicataniauthordalandds3-eu-cen" + + "tral-1xn--fiqs8streamscompute-1xn--fiqz9studioxn--fjord-lraxn--f" + + "jq720axn--fl-ziaxn--flor-jraxn--flw351exn--forl-cesena-fcbsstudy" + + "namisches-dnsortlandxn--forlcesena-c8axn--fpcrj9c3dxn--frde-gran" + + "drapidstuff-4-salexn--frna-woaraisaijosoyrovigotsukisosakitagawa" + + "xn--frya-hraxn--fzc2c9e2cliniquedapliernewyorkshirebungoonordest" + + "e-idchitosetoeigersundurhamburgroks-thisayamanobeokakegawaxn--fz" + + "ys8d69uvgmailxn--g2xx48clintonoshoesanjotelulubindaluzernxn--gck" + + "r3f0fauskedsmokorsetagayaseralingenoamishirasatogliattis-a-celti" + + "csfanxn--gecrj9clothingdustdatadetectksatxn--12c1fe0bradescotlan" + + "dyndns-freeboxosascoli-picenordkapparochernigovernmentlon-2xn--g" + + "gaviika-8ya47hakatanorfolkebibleksvikatsushikabeebyteapplinzis-a" + + "-financialadvisor-aurdalxn--gildeskl-g0axn--givuotna-8yasugitlab" + + "orxn--gjvik-wuaxn--gk3at1exn--gls-elacaixaxn--gmq050is-gonexn--g" + + "mqw5axn--gnstigbestellen-zvbrplsbxn--3oq18vl8pn36axn--gnstiglief" + + "ern-wobihirosakikamijimatsusakahoginankokubunjis-into-animegurow" + + "nproviderxn--h-2failxn--h1aeghakodatexn--h1ahnxn--h1alizxn--h2br" + + "eg3evenestufftoread-booksnesoruminamiyamashirokawanabelaudibleas" + + "ingxn--h2brj9c8cn-northwest-1xn--h3cuzk1discountysnestuttgartroa" + + "ndinosaurepbodynamic-dnsoundcastronomy-routerxn--hbmer-xqaxn--hc" + + "esuolo-7ya35basketballfinanzgorzeleccogladedyn-berlincolnavigati" + + "onavoizumizakiitatebayashiibahccavuotnagaraholtalenglandiscovery" + + "ggeeu-2xn--hery-iraxn--hgebostad-g3axn--hkkinen-5waxn--hmmrfeast" + + "a-s4accident-prevention-k3surreyxn--hnefoss-q1axn--hobl-iraxn--h" + + "oltlen-hxaxn--hpmir-xqaxn--hxt814exn--hyanger-q1axn--hylandet-54" + + "axn--i1b6b1a6a2exn--imr513nxn--indery-fyasuokannamiharuxn--io0a7" + + "is-into-carshisohugheshisuifuelluciancrmrecruitrentino-stirolxn-" + + "-j1adplatformshangrilaquilanxessooxn--j1aefbsbxn--1ck2e1bar0emma" + + "fann-arboretumbriamallamaceiobbcg12038xn--j1ael8batochiokinoshim" + + "aizurugbyglandroverhallahppiacenzachpomorskienavuotnapleskns3-us" + + "-gov-west-1xn--j1amhakonexn--j6w193gxn--jlq480n2rgxn--jlq61u9w7b" + + "atsfjordishakotanayorovnobserverxn--jlster-byatominamidaitomanch" + + "esterxn--jrpeland-54axn--jvr189miniserverxn--k7yn95exn--karmy-yu" + + "axn--kbrq7oxn--kcrx77d1x4axn--kfjord-iuaxn--klbu-woaxn--klt787dx" + + "n--kltp7dxn--kltx9axn--klty5xn--3pxu8konsulatrobeeldengeluidvare" + + "servdxn--koluokta-7ya57hakubahcavuotnagaivuotnagaokakyotambabydg" + + "oszczecinemagnetnedalipaywhirlxn--kprw13dxn--kpry57dxn--kput3is-" + + "into-cartoonshitaramaxn--krager-gyatsukanoyaltakashimarnardalxn-" + + "-kranghke-b0axn--krdsherad-m8axn--krehamn-dxaxn--krjohka-hwab49j" + + "devcloudfunctionshizukuishimofusaitoshimatsuzakis-a-patsfanxn--k" + + "snes-uuaxn--kvfjord-nxaxn--kvitsy-fyatsushiroxn--kvnangen-k0axn-" + + "-l-1fairwindsusakis-an-entertainerxn--l1accentureklamborghinikol" + + "aeventsusonoxn--laheadju-7yawaraxn--langevg-jxaxn--lcvr32dxn--ld" + + "ingen-q1axn--leagaviika-52bauhauspostman-echocolatemasekd1xn--le" + + "sund-huaxn--lgbbat1ad8jdfaststacksaves-the-whalessandria-trani-b" + + "arletta-andriatranibarlettaandriaxn--lgrd-poacctrysiljanxn--lhpp" + + "i-xqaxn--linds-pramericanartunespeedpartnerxn--lns-qlavagiskexn-" + + "-loabt-0qaxn--lrdal-sraxn--lrenskog-54axn--lt-liacngrossetouchih" + + "ayaakasakawaharaxn--lten-granexn--lury-iraxn--m3ch0j3axn--mely-i" + + "raxn--merker-kuaxn--mgb2ddesuzakanagawaxn--mgb9awbfbx-oslocuscou" + + "ntryestateofdelawareclaimsavonarusawaxn--mgba3a3ejtunkongsbergxn" + + "--mgba3a4f16axn--mgba3a4fra1-deltaitogakushimotoganexn--mgba7c0b" + + "bn0axn--mgbaakc7dvfbxostrowwlkpmguovdageaidnulvikashiwazakiwielu" + + "nnerxn--mgbaam7a8hakuis-a-geekatsuyamarshallstatebankaufentigerx" + + "n--mgbab2bdxn--mgbah1a3hjkrdxn--mgbai9a5eva00bellunord-aurdalvda" + + "laskanittedallasalleangaviikadenagahamaroyerxn--mgbai9azgqp6jeju" + + "niperxn--mgbayh7gpalermomahachijolsterxn--mgbbh1a71exn--mgbc0a9a" + + "zcgxn--mgbca7dzdoxn--mgbcpq6gpa1axn--mgberp4a5d4a87gxn--mgberp4a" + + "5d4arxn--mgbgu82axn--mgbi4ecexposedxn--mgbpl2fhskypexn--mgbqly7c" + + "0a67fbcnpyatigorskolecznagasukexn--mgbqly7cvafr-1xn--mgbt3dhdxn-" + + "-mgbtf8flapymnturystykaneyamazoexn--mgbtx2beneventodayombolzano-" + + "altoadigeologyomitanoceanographiqueu-3xn--mgbx4cd0abbvieeexn--mi" + + "x082fedorainfraclouderaxn--mix891fedorapeoplegallodingenxn--mjnd" + + "alen-64axn--mk0axin-the-bandais-into-gamessinazawaxn--mk1bu44cns" + + "annanxn--mkru45is-leetrentino-sud-tirolxn--mlatvuopmi-s4axn--mli" + + "-tlavangenxn--mlselv-iuaxn--moreke-juaxn--mori-qsakuragawaxn--mo" + + "sjen-eyawatahamaxn--mot-tlazioxn--mre-og-romsdal-qqbuseranishiar" + + "itakurashikis-lostre-toteneis-a-nursellsyourhomeftphonefosshirak" + + "okamiminershiranukamisunagawaxn--msy-ula0hakusanagochijiwadefini" + + "mamateramochizukinkobierzycexn--mtta-vrjjat-k7afedoraprojectozsd" + + "elmenhorstalbansaxoxn--muost-0qaxn--mxtq1minisitexn--ngbc5azdxn-" + + "-ngbe9e0axn--ngbrxn--41axn--nit225kosakaerodromegallupaascolipic" + + "eno-ipifony-1xn--nmesjevuemie-tcbalsan-sudtirollagdenesnaaseinet" + + "-freaksuzukananiikappudoxn--nnx388axn--nodessakurais-not-certifi" + + "edxn--nqv7fs00emaxn--nry-yla5gxn--ntso0iqx3axn--ntsq17gxn--ntter" + + "y-byaeservehalflifeinsurancexn--nvuotna-hwaxn--nyqy26axn--o1ache" + + "rnihivgubsuzukis-bytomaritimekeepingxn--o3cw4haldenxn--o3cyx2axn" + + "--od0algxn--od0aq3bentleyonagoyautomotivelandeportexasnesoddenma" + + "rkhangelskjakdnepropetrovskiervaapsteiermarkanzakiwakunigamihokk" + + "aidovre-eikerxn--ogbpf8flatangerxn--oppegrd-ixaxn--ostery-fyaxn-" + + "-osyro-wuaxn--otu796dxn--p1acfeiraquarelleaseeklogeschokokekscho" + + "koladenxn--p1ais-savedxn--pgbs0dhlx3xn--porsgu-sta26fermockasser" + + "versaillescholarshipschoolsztynsettsurfashionxn--pssu33lxn--pssy" + + "2uxn--q7ce6axn--q9jyb4cntmparsannohelplfinancialvivanovoldaxn--q" + + "cka1pmckinseyxn--qqqt11minnesotaketakayamassa-carrara-massacarra" + + "ramassabusinessebykleclerchromediatechnologyxn--qxa6axn--qxamste" + + "rdamnserverbaniaxn--rady-iraxn--rdal-poaxn--rde-ulaxn--rdy-0naba" + + "ris-slickhakassiaxn--rennesy-v1axn--rhkkervju-01aferraraxn--rhol" + + "t-mragowoltlab-democraciaxn--rhqv96gxn--rht27zxn--rht3dxn--rht61" + + "exn--risa-5naturalhistorymuseumcenterxn--risr-iraxn--rland-uuaxn" + + "--rlingen-mxaxn--rmskog-byaxn--rny31halsaitamatsukuris-a-greenxn" + + "--rovu88beppublishproxyonagunicloudiskussionsbereichattanooganor" + + "ddalimitedisrechtranakaiwamizawawsmpplanetariumcpreservationfsho" + + "strodawarautoscanadaeguambulancentralus-2xn--rros-granvindafjord" + + "xn--rskog-uuaxn--rst-0naturalsciencesnaturellesvalbardunloppacif" + + "icitichiryukyuragifuchungbukharaumalatvuopmicrosoftbankariyamein" + + "forumzxn--rsta-framercanvasvcivilaviationissedaluroyxn--rvc1e0am" + + "3exn--ryken-vuaxn--ryrvik-byaxn--s-1faithammarfeastafricapitalon" + + "ewspaperxn--s9brj9collectionxn--sandnessjen-ogbeskidyn-ip24lima-" + + "cityeatselinogradimo-i-rana4u2-localhostrolekaniepce12hpalmasera" + + "ti234xn--sandy-yuaxn--sdtirol-n2axn--seral-lraxn--ses554gxn--sgn" + + "e-graphoxn--42c2d9axn--skierv-utazasveioxn--skjervy-v1axn--skjk-" + + "soaxn--sknit-yqaxn--sknland-fxaxn--slat-5naturbruksgymnxn--slt-e" + + "labcieszynh-serveblogspotaribeiraogakibichuoxn--smla-hraxn--smna" + + "-gratangentlentapisa-geekoseis-a-playershiftcryptonomichigangwon" + + "xn--snase-nraxn--sndre-land-0cbestbuyshouses3-us-west-1xn--snes-" + + "poaxn--snsa-roaxn--sr-aurdal-l8axn--sr-fron-q1axn--sr-odal-q1axn" + + "--sr-varanger-ggbetainaboxfusejnyanagawalmartattoolforgerockartu" + + "zyoriikarasjokarasuyamarriottaxihuanhlfanhs3-us-west-2xn--srfold" + + "-byaxn--srreisa-q1axn--srum-gratis-a-bulls-fanxn--stfold-9xaxn--" + + "stjrdal-s1axn--stjrdalshalsen-sqbhzcasadelamonedanceu-4xn--stre-" + + "toten-zcbieidskoguchikuzenikonanporocelotenkawaveroykenflfanpach" + + "igasakids3-eu-west-1xn--t60b56axn--tckwebthingsvelvikomvuxn--3bs" + + "t00minamiminowaxn--tiq49xqyjelasticbeanstalkharkivanylvenneslask" + + "errylogisticshizuokamitsuexn--tjme-hraxn--tn0agrinetbankosherbro" + + "okegawaxn--tnsberg-q1axn--tor131oxn--trany-yuaxn--trentin-sd-tir" + + "ol-rzbielawaltervistainaioirasebastopologyeongnamegawafaicloudin" + + "eat-urlimoliseminevje-og-hornnes3-website-ap-northeast-1xn--tren" + + "tin-sdtirol-7vbiellair-traffic-controlleyoshiokanumazuryukiiyama" + + "nouchikuhokuryugasakitanakagusukumodumeloyalistoragextraspace-to" + + "-rentalstomakomaibaravocatanzarowbq-aurskog-holandingivingjemnes" + + "3-ap-southeast-2xn--trentino-sd-tirol-c3bieszczadygeyachiyodaeje" + + "onbukcoalwaysdatabaseballangenkainanaejrietisalatinabenonicbcn-n" + + "orth-1xn--trentino-sdtirol-szbievat-band-campaniavoues3-eu-west-" + + "2xn--trentinosd-tirol-rzbifukagawashingtondclk3xn--trentinosdtir" + + "ol-7vbigv-infolldalivornow-dns3-website-ap-southeast-1xn--trenti" + + "nsd-tirol-6vbihorologyukuhashimoichinosekigaharaxarnetflixilovec" + + "ollegefantasyleaguernseyokotebetsuikirkenes3-eu-west-3utilities-" + + "1xn--trentinsdtirol-nsbikedaemonmoutheworkpccweddinglassassinati" + + "onalheritagexn--trgstad-r1axn--trna-woaxn--troms-zuaxn--tysvr-vr" + + "axn--uc0atvestre-totennishiawakuraxn--uc0ay4axn--uist22hamurakam" + + "igoris-a-gurunusualpersonxn--uisz3gxn--unjrga-rtarumizusawaxn--u" + + "nup4yxn--uuwu58axn--vads-jraxn--valle-aoste-ebbtuscanyxn--valle-" + + "d-aoste-ehbodoes-itcouldbeworldxn--valleaoste-e7axn--valledaoste" + + "-ebbvadsoccertmgrazerbaijan-mayengerdalcesvizzeraxn--vard-jraxn-" + + "-vegrshei-c0axn--vermgensberater-ctbitsvn-reposouthcarolinarviko" + + "monoticiashowaxn--vermgensberatung-pwblogoiplatter-appinkomatsus" + + "himarumorimachidaxn--vestvgy-ixa6oxn--vg-yiabkhaziaxn--vgan-qoax" + + "n--vgsy-qoa0jelenia-goraxn--vgu402colognexus-3xn--vhquvestvagoyx" + + "n--vler-qoaxn--vre-eiker-k8axn--vrggt-xqadxn--vry-yla5gxn--vuq86" + + "1bilbaokinawashirosatobishimagentositecnologiazurewebsiteshikaga" + + "miishibukawakkanaibetsubamericanfamilydsmynasushiobarackmazeplay" + + "okozebinagisochildrensgardenaval-d-aosta-valleyolasitebinordland" + + "evelopmentatsunobninskaracoldwarszawaustevollillyboltateshinanom" + + "achimkentateyamajudygarlanddnskingitpagefrontappalmspringsakeret" + + "rosnubaltimore-og-romsdalp1xn--w4r85el8fhu5dnraxn--w4rs40lxn--wc" + + "vs22dxn--wgbh1colonialwilliamsburgroundhandlingroznyxn--wgbl6axn" + + "--xhq521billustrationrenderxn--xkc2al3hye2axn--xkc2dl3a5ee0hands" + + "onyxn--y9a3aquariumintereisenxn--yer-znaturhistorischeswidnicart" + + "oonartdecologiaxn--yfro4i67oxn--ygarden-p1axn--ygbi2ammxn--45br5" + + "cylxn--ystre-slidre-ujbiocpanamatsushigexn--zbx025dxn--zf0ao64ax" + + "n--zf0avxlxn--zfr164bipanasonicasertaipeidsvollombardiadembetsuk" + + "ubankaratexnbayxz" // nodes is the list of nodes. Each node is represented as a uint32, which // encodes the node's children, wildcard bit and node type (as an index into @@ -535,9233 +546,9337 @@ const text = "9guacuiababia-goracleaningroks-theatree12hpalermomahachijolstere" // [15 bits] text index // [ 6 bits] text length var nodes = [...]uint32{ - 0x20bc43, - 0x25d9c4, - 0x2f8cc6, - 0x217243, - 0x217246, - 0x38e886, - 0x3bb603, - 0x2392c4, - 0x3a15c7, - 0x2f8908, + 0x3346c3, + 0x358784, + 0x2ed746, + 0x21cb43, + 0x21cb46, + 0x399c86, + 0x3c3043, + 0x221ec4, + 0x205687, + 0x2ed388, 0x1a000c2, - 0x1f3cf47, - 0x376f09, - 0x397eca, - 0x397ecb, - 0x23a2c3, - 0x23cf05, - 0x22070c2, - 0x2f5304, - 0x2f8e43, - 0x30eb85, - 0x260ad42, - 0x360f03, - 0x2a58bc4, - 0x30f345, - 0x2e13602, - 0x21638e, - 0x25c3c3, - 0x3b3dc6, - 0x3202302, - 0x3096c7, - 0x23fa86, - 0x3606a82, - 0x28e183, - 0x235e06, - 0x2f4148, - 0x295bc6, - 0x3c7c04, - 0x3a00ac2, - 0x34b449, - 0x220787, - 0x32e5c6, - 0x36ba09, - 0x3ce888, - 0x210944, - 0x2acb06, - 0x2076c6, - 0x3e02002, - 0x38cc46, - 0x24d68f, - 0x3cdb8e, - 0x22b1c4, - 0x234c85, - 0x330d45, - 0x3aaa09, - 0x247e89, - 0x236607, - 0x2584c6, - 0x267083, - 0x422d0c2, - 0x22d543, - 0x29b5ca, - 0x4609983, - 0x3403c5, - 0x30a8c2, - 0x3a4f89, - 0x4e03b42, - 0x207a04, - 0x354186, - 0x243885, - 0x36ebc4, - 0x5626e04, - 0x203b43, - 0x23c4c4, - 0x5a030c2, - 0x25b344, - 0x5f2d504, - 0x316d0a, + 0x1f44d87, + 0x385a09, + 0x2e460a, + 0x2e460b, + 0x238883, + 0x241b45, + 0x2204502, + 0x204504, + 0x2cdbc3, + 0x252f05, + 0x2602142, + 0x36c683, + 0x2a20c04, + 0x202145, + 0x2e03702, + 0x219e8e, + 0x267743, + 0x3bdcc6, + 0x3203f42, + 0x2ed8c7, + 0x244206, + 0x3603802, + 0x2979c3, + 0x235c86, + 0x21d4c8, + 0x29e686, + 0x3aa2c4, + 0x3a00b02, + 0x354109, + 0x224ac7, + 0x3804c6, + 0x3704c9, + 0x391a48, + 0x24fcc4, + 0x349446, + 0x3d4146, + 0x3e01902, + 0x2fe906, + 0x218e0f, + 0x3e960e, + 0x311c44, + 0x228685, + 0x339845, + 0x3b1ec9, + 0x24a949, + 0x236487, + 0x207a06, + 0x207943, + 0x4204302, + 0x216183, + 0x2b990a, + 0x4604d03, + 0x347a45, + 0x314102, + 0x3ac849, + 0x4e01d42, + 0x20ad44, + 0x2ffcc6, + 0x258405, + 0x37ce44, + 0x5721084, + 0x205d83, + 0x241004, + 0x5a016c2, + 0x300b84, + 0x5e02084, + 0x35030a, 0x6200882, - 0x3cd347, - 0x27b5c8, - 0x7a08502, - 0x336287, - 0x2d36c4, - 0x2d36c7, - 0x38aa45, - 0x38bf07, - 0x34a906, - 0x29ac84, - 0x3633c5, - 0x282507, - 0x920c142, - 0x38cdc3, - 0x960b4c2, - 0x3b5e03, - 0x9a08742, - 0x2691c5, + 0x2631c7, + 0x2339c8, + 0x7a0c502, + 0x33e407, + 0x237c44, + 0x36ddc7, + 0x237c45, + 0x387787, + 0x35ca86, + 0x2a1784, + 0x3b9245, + 0x27a907, + 0x9218682, + 0x2fea83, + 0x9620102, + 0x3dabc3, + 0x9a0f202, + 0x289b85, 0x9e00202, - 0x371604, - 0x387345, - 0x22b107, - 0x2e954e, - 0x206984, - 0x283b04, - 0x2079c3, - 0x30d489, - 0x2c4e4b, - 0x2e1248, - 0x32b788, - 0x3328c8, - 0x20a888, - 0xa36b84a, - 0x38be07, - 0x2f7086, - 0xa617282, - 0x35ca43, - 0x3d6443, - 0x3d8084, - 0x35ca83, - 0x3bb643, - 0x1738b82, - 0xaa04702, - 0x28a385, - 0x261e86, - 0x252084, - 0x3b0cc7, - 0x25b186, - 0x2d4704, - 0x3be9c7, - 0x204703, - 0xb2dc982, - 0xb728c42, - 0xba13982, - 0x230646, - 0xbe00282, - 0x26b385, - 0x33a0c3, - 0x3de644, - 0x2fd584, - 0x2fd585, - 0x3e9683, - 0xc253c43, - 0xc606342, - 0x20e9c5, - 0x20e9cb, - 0x223c8b, - 0x20e804, - 0x20ee49, - 0x210404, - 0xca10d82, - 0x211a83, - 0x2121c3, - 0xce02502, - 0x23020a, - 0xd20bd42, - 0x2f5585, - 0x2ece4a, - 0x246f44, - 0x213f43, - 0x2154c4, - 0x2178c3, - 0x2178c4, - 0x2178c7, - 0x218705, - 0x219546, - 0x21a186, - 0x2172c3, - 0x220f88, - 0x215b03, - 0xd604242, - 0x2fc548, - 0x295e4b, - 0x229c88, - 0x22ac46, - 0x22b987, - 0x22e908, - 0xee016c2, - 0xf2295c2, - 0x278408, - 0x20b947, - 0x206e85, - 0x3e2208, - 0xf61c008, - 0x26a0c3, - 0x235a44, - 0x38e902, - 0xfa36c42, - 0xfe07f42, - 0x10637242, - 0x237243, - 0x10a04182, - 0x312683, - 0x2135c4, - 0x210903, - 0x210904, - 0x3a264b, - 0x204183, - 0x2f27c6, - 0x284a84, - 0x2ccf8e, - 0x240ec5, - 0x257008, - 0x2716c7, - 0x2716ca, - 0x21b9c3, - 0x25d7c7, - 0x2c5005, - 0x239e44, - 0x25ef06, - 0x25ef07, - 0x3601c4, - 0x10f10344, - 0x3169c4, - 0x3169c6, - 0x25d4c4, - 0x3c2086, - 0x206c43, - 0x206c48, - 0x20b2c8, - 0x2b3843, - 0x2301c3, - 0x344544, - 0x357203, - 0x11604042, - 0x11aea202, - 0x217843, - 0x203c06, - 0x3796c3, - 0x2fd344, - 0x11efd0c2, - 0x343583, - 0x332f83, - 0x21cdc2, - 0x12200d42, - 0x2d7946, - 0x228b07, - 0x27b347, - 0x2c7cc5, - 0x386404, - 0x3d4a45, - 0x3dcc47, - 0x2b5ec9, - 0x2cb106, - 0x2c7bc6, - 0x1320c602, - 0x2b6688, - 0x321346, - 0x327b05, - 0x2f7787, - 0x2fafc4, - 0x2fafc5, - 0x1370e7c4, - 0x30e7c8, - 0x13a08d02, - 0x13e00482, - 0x24c3c6, + 0x37fe84, + 0x23cfc5, + 0x311b87, + 0x30420e, + 0x2ca444, + 0x28fac4, + 0x204243, + 0x324fc9, + 0x2ec50b, + 0x2fd348, + 0x335848, + 0x33b708, + 0x3d6448, + 0xa37030a, + 0x387687, + 0x2542c6, + 0xa61cb82, + 0x378743, + 0x3e0b43, + 0x3e2084, + 0x378783, + 0x397143, + 0x1740a82, + 0xaa02742, + 0x292d05, + 0x35a086, + 0x2aa1c4, + 0x3a9487, + 0x251c86, + 0x2da804, + 0x3c5787, + 0x202743, + 0xb6e7fc2, + 0xba1da82, + 0xbe16c02, + 0x21db46, + 0xc200282, + 0x3676c5, + 0x341fc3, + 0x3dc584, + 0x305544, + 0x305545, + 0x3f2583, + 0xc60bec3, + 0xca0aa82, + 0x20e485, + 0x20e48b, + 0x30f70b, + 0x211d44, + 0x20ed49, + 0x20fdc4, + 0xce10482, + 0x210cc3, + 0x211243, + 0xd211f02, + 0x216f8a, + 0xd602642, + 0x204785, + 0x2f8cca, + 0x24f984, + 0x2139c3, + 0x2153c4, + 0x218043, + 0x218044, + 0x218047, + 0x219285, + 0x21a286, + 0x21ae86, + 0x21cbc3, + 0x2234c8, + 0x215a03, + 0xda03ac2, + 0x365d08, + 0x29e90b, + 0x22c908, + 0x22d286, + 0x22d907, + 0x22f608, + 0xf201002, + 0xf629b02, + 0x27f688, + 0x23b007, + 0x213f05, + 0xfb1cc08, + 0xffb11c8, + 0x285f03, + 0x235504, + 0x399d02, + 0x10235982, + 0x1060b282, + 0x10e36f02, + 0x236f03, + 0x11203d82, + 0x315983, + 0x254ac4, + 0x203d83, + 0x24fc84, + 0x25198b, + 0x2063c3, + 0x301806, + 0x26c004, + 0x2d85ce, + 0x3259c5, + 0x279e08, + 0x3bddc7, + 0x3bddca, + 0x23c843, + 0x358587, + 0x2ec6c5, + 0x23c844, + 0x266e86, + 0x266e87, + 0x376204, + 0x1171c644, + 0x3f3784, + 0x251584, + 0x209f46, + 0x213cc3, + 0x213cc8, + 0x21ff08, + 0x2a55c3, + 0x216f43, + 0x34d4c4, + 0x35ee03, + 0x11e06282, + 0x12227e82, + 0x205206, + 0x349543, + 0x27b604, + 0x12611582, + 0x211583, + 0x23d283, + 0x21f9c2, + 0x12a045c2, + 0x2e0c86, + 0x22ad87, + 0x233747, + 0x2fc645, + 0x3b7c84, + 0x2e0085, + 0x2d5187, + 0x3594c9, + 0x3b1646, + 0x2fc546, + 0x13a12f82, + 0x320588, + 0x32c046, + 0x333c45, + 0x317507, + 0x3bb044, + 0x3bb045, + 0x3bf004, + 0x3bf008, + 0x13e02882, + 0x14200482, + 0x38e506, 0x200488, - 0x325105, - 0x3264c6, - 0x329dc8, - 0x34c608, - 0x14203ec5, - 0x16e2f004, - 0x2b0f87, - 0x1720fe82, - 0x1762e702, - 0x18a16542, - 0x354285, - 0x192904c5, - 0x241c06, - 0x3b6207, - 0x368e07, - 0x19616543, - 0x3d6787, - 0x283a08, - 0x273b4bc9, - 0x216547, - 0x3e03c7, - 0x238308, - 0x238b06, - 0x239946, - 0x23a58c, - 0x23b58a, - 0x23ba87, - 0x23cdcb, - 0x23dd47, - 0x23dd4e, - 0x2763eb84, - 0x23ec84, - 0x240d87, - 0x24be07, - 0x246386, - 0x246387, - 0x3b74c7, - 0x203643, - 0x27a13b02, - 0x248746, - 0x24874a, - 0x248acb, - 0x249f07, - 0x24aac5, - 0x24b283, - 0x24c646, - 0x24c647, - 0x2feac3, - 0x27e00102, - 0x24d30a, - 0x28378742, - 0x2863d842, - 0x28a47402, - 0x28e3fb82, - 0x24f085, - 0x24fdc4, - 0x29a0c542, - 0x25b3c5, - 0x231943, - 0x29d005, - 0x20a784, - 0x21e5c4, - 0x2d9d06, - 0x25cc06, - 0x20ebc3, - 0x3c1a44, - 0x341883, - 0x2aa03242, - 0x2b1504, - 0x3a1a46, - 0x2b1505, - 0x207106, - 0x2f7888, - 0x233d04, - 0x2b0ac8, - 0x2f3f05, - 0x27ce88, - 0x2d57c6, - 0x21c787, - 0x279ec4, - 0x2be79ec6, - 0x2c220a83, - 0x3a6543, - 0x2c05c8, - 0x334684, - 0x2c615587, - 0x280dc6, - 0x2e9b49, - 0x362488, - 0x32c448, - 0x333004, - 0x20d303, - 0x249182, - 0x2ce57f02, - 0x2d226cc2, - 0x20dd83, - 0x2d615fc2, - 0x2fea44, - 0x285786, - 0x23ca03, - 0x2c72c7, - 0x36ca43, - 0x3e1348, - 0x2253c5, - 0x267d03, - 0x3872c5, - 0x387404, - 0x3bad86, - 0x22a386, - 0x22b046, - 0x2580c4, - 0x23e103, - 0x2da15282, - 0x2de3d545, + 0x3402c5, + 0x357386, + 0x361608, + 0x3653c8, + 0x14605985, + 0x1722f8c4, + 0x2849c7, + 0x17607e42, + 0x17b6e3c2, + 0x18e0b642, + 0x2ffdc5, + 0x19a9a145, + 0x27a446, + 0x3dafc7, + 0x3e6887, + 0x19e1a043, + 0x34af07, + 0x28f9c8, + 0x27a38d49, + 0x21a047, + 0x239447, + 0x34be48, + 0x239fc6, + 0x23c346, + 0x23e30c, + 0x24000a, + 0x2404c7, + 0x241a0b, + 0x242707, + 0x24270e, + 0x27e43444, + 0x243544, + 0x245687, + 0x38df47, + 0x249e06, + 0x249e07, + 0x33bfc7, + 0x288583, + 0x28203682, + 0x24c806, + 0x24c80a, + 0x24d24b, + 0x24e8c7, + 0x24f505, + 0x250943, + 0x250cc6, + 0x250cc7, + 0x21d9c3, + 0x28600102, + 0x2512ca, + 0x28b347c2, + 0x28fa8a82, + 0x2924a282, + 0x2963cc82, + 0x254705, + 0x255504, + 0x2a203402, + 0x300c05, + 0x24d843, + 0x3cabc5, + 0x205104, + 0x22f4c4, + 0x2e3a86, + 0x267ac6, + 0x20e683, + 0x3d8a84, + 0x35cd43, + 0x2b2101c2, + 0x22dc84, + 0x22dc86, + 0x25bb85, + 0x2bc906, + 0x317608, + 0x215b84, + 0x3289c8, + 0x38f745, + 0x294ec8, + 0x2de106, + 0x318747, + 0x282a44, + 0x2c682a46, + 0x2ca24dc3, + 0x3ad7c3, + 0x2c5608, + 0x33c744, + 0x2ce15487, + 0x28b246, + 0x2f55c9, + 0x36ea08, + 0x371dc8, + 0x37b1c4, + 0x223403, + 0x2304c2, + 0x2d664842, + 0x2da30902, + 0x329e83, + 0x2de057c2, + 0x21d944, + 0x29ef86, + 0x241543, + 0x2d1ec7, + 0x20cec3, + 0x2ca508, + 0x231645, + 0x2724c3, + 0x23cf45, + 0x23d084, + 0x3bad46, + 0x2366c6, + 0x311ac6, + 0x2e2904, + 0x242ac3, + 0x2e217e02, + 0x2e642185, 0x200843, - 0x2e603e82, - 0x23a543, - 0x3ca805, - 0x2ea22bc3, - 0x2f23c589, - 0x2f600942, - 0x2fe05342, - 0x2973c5, - 0x21f406, - 0x2b2986, - 0x308cc8, - 0x308ccb, - 0x346d8b, - 0x35b445, - 0x2dcf09, - 0x1600b42, - 0x2d2908, - 0x20f144, - 0x30602bc2, - 0x33e203, - 0x30e4bfc6, - 0x31200fc2, - 0x20ae88, - 0x31613242, - 0x37aa4a, - 0x32239383, - 0x32b77546, - 0x318348, - 0x38db06, - 0x389c87, - 0x24d887, - 0x20724a, - 0x246fc4, - 0x360c84, - 0x376889, - 0x32fb3a05, - 0x2163c6, - 0x20bb43, - 0x263284, - 0x33232d44, - 0x32d187, - 0x3365e987, - 0x2edb44, - 0x250145, - 0x241cc8, - 0x250387, - 0x250607, - 0x33a18242, - 0x2a2704, - 0x29e388, - 0x251b04, - 0x254744, - 0x254b05, - 0x254c47, - 0x3468b8c9, - 0x2555c4, - 0x256b09, - 0x256d48, - 0x257604, - 0x257607, - 0x257d03, - 0x259ac7, - 0x34a01282, - 0x16c0502, - 0x25b506, - 0x25bb47, - 0x25c404, - 0x25e347, - 0x25f247, - 0x25fc83, - 0x34e5c082, - 0x239fc2, - 0x260743, - 0x260744, - 0x26074b, - 0x32b888, - 0x2891c4, - 0x2618c5, - 0x262fc7, - 0x2ee845, - 0x3b930a, - 0x266b03, - 0x3520eb02, - 0x21dc84, - 0x26b6c9, - 0x26f443, - 0x26f507, - 0x384989, - 0x211fc8, - 0x213bc3, - 0x286bc7, - 0x288f89, - 0x276a83, - 0x290984, - 0x291d49, - 0x2951c6, - 0x3825c3, - 0x204982, - 0x268803, - 0x2c0307, - 0x38f005, - 0x2c4c46, - 0x219a44, - 0x372285, - 0x289e43, - 0x21abc6, - 0x22e143, - 0x20c342, - 0x253c04, - 0x35634402, - 0x35a34403, - 0x35e04342, - 0x253283, - 0x21a604, - 0x323c87, - 0x21fb46, - 0x290942, - 0x3620e8c2, - 0x32c684, - 0x36a17a42, - 0x36e09ac2, - 0x3caac4, - 0x3caac5, - 0x3b6b85, - 0x37d146, - 0x37207042, - 0x207045, - 0x20f745, - 0x213dc3, - 0x2267c6, - 0x227105, - 0x2305c2, - 0x35ac85, - 0x2305c4, - 0x233c43, - 0x233e83, - 0x3760a302, - 0x2318c7, - 0x257784, - 0x257789, - 0x263184, - 0x290343, - 0x2bd008, - 0x37a90344, - 0x290346, - 0x2b05c3, - 0x262243, - 0x343b43, - 0x37f03e02, - 0x30ad42, - 0x38200642, - 0x33bfc8, - 0x2158c8, - 0x3bfcc6, - 0x385145, - 0x323e05, - 0x202347, - 0x386823c5, - 0x2038c2, - 0x38aa0a82, - 0x38e00042, - 0x2832c8, - 0x2b65c5, - 0x302f84, - 0x250d45, - 0x2514c7, - 0x3b0184, - 0x24d202, - 0x3923b502, - 0x350984, - 0x22fec7, - 0x297b47, - 0x38bec4, - 0x3d7403, - 0x2b3784, - 0x2b3788, - 0x239c86, - 0x25ed8a, - 0x358e44, - 0x29ddc8, - 0x24ffc4, - 0x22ba86, - 0x2a0a44, - 0x354586, - 0x257a49, - 0x221247, - 0x39d543, - 0x39605102, - 0x386d03, - 0x210f82, - 0x39a027c2, - 0x268f86, - 0x3b2848, - 0x2b2b07, - 0x2331c9, - 0x2b2cc9, - 0x2b5585, - 0x2b6f09, - 0x2b7705, - 0x2b8545, - 0x2b94c8, - 0x39e17a84, - 0x3a25fdc7, - 0x2b96c3, - 0x2b96c7, - 0x3e0786, - 0x2b9c87, - 0x2af945, - 0x2d0843, - 0x3a63b342, - 0x214184, - 0x3aa11402, - 0x3ae1ec82, - 0x31e946, - 0x27b545, - 0x2bbd87, - 0x3c32c3, - 0x20ccc4, - 0x21e103, - 0x2f6883, - 0x3b2042c2, - 0x3ba08e82, - 0x38e984, - 0x25c043, - 0x308985, - 0x3be05502, - 0x3c602102, - 0x222f86, - 0x2e9484, - 0x2f0284, - 0x2f028a, - 0x3ce005c2, - 0x20e103, - 0x23498a, - 0x26a7c8, - 0x3d2b1b84, - 0x2005c3, - 0x3d687643, - 0x326909, - 0x280609, - 0x2c73c6, - 0x3da43543, - 0x2887cd, - 0x3a8e86, - 0x3e0e8b, - 0x3de087c2, - 0x2ac948, - 0x42221082, - 0x42601e02, - 0x398285, - 0x42a02642, - 0x2b3187, - 0x202983, - 0x2272c8, - 0x42e06002, - 0x3a9984, - 0x22a003, - 0x3532c5, - 0x2491c6, - 0x22cf04, - 0x230183, - 0x44205b42, - 0x35b3c4, - 0x2beb45, - 0x2bff07, - 0x285203, - 0x2c1443, - 0x1619e82, - 0x2c1b03, - 0x2c2103, - 0x44600e02, - 0x239104, - 0x23e306, - 0x288d83, - 0x2c2a83, - 0x44a54202, - 0x254208, - 0x2c3a04, - 0x2052c6, - 0x387d07, - 0x3d4dc6, - 0x2c0544, - 0x52e025c2, - 0x3e064b, - 0x30624e, - 0x2201cf, - 0x3bc5c3, - 0x536687c2, - 0x161ee02, - 0x53a01f42, - 0x2f9843, - 0x20b603, - 0x2732c6, - 0x2cb846, - 0x2bc847, - 0x3b7004, - 0x53e1f542, - 0x542258c2, - 0x302645, - 0x32a647, - 0x2c6106, - 0x5463d782, - 0x382f04, - 0x2cc083, - 0x54a07bc2, - 0x54f73803, - 0x2cd984, - 0x2d2249, - 0x552da042, - 0x55611b82, - 0x2876c5, - 0x55ada802, - 0x56205542, - 0x35fb87, - 0x37718b, - 0x24d645, - 0x264489, - 0x275d46, - 0x56608004, - 0x208009, - 0x2f9cc7, - 0x349887, - 0x205543, - 0x2f1a46, - 0x351887, - 0x24c243, - 0x2a4106, - 0x56e1f002, - 0x57225e82, - 0x217443, - 0x3a5145, - 0x21c307, - 0x23f286, - 0x38ef85, - 0x263104, - 0x2aee85, - 0x390bc4, - 0x5760b402, - 0x2d8d84, - 0x2cbe44, - 0x39c84d, - 0x2cbe49, - 0x237848, - 0x262c84, - 0x38d345, - 0x3c2307, - 0x3c2bc4, - 0x273847, - 0x228f05, - 0x57ab4484, - 0x2c5b45, - 0x26e104, - 0x316546, - 0x3b6005, - 0x57e6b2c2, - 0x225e43, - 0x333e43, - 0x2c8784, - 0x2c8785, - 0x208c86, - 0x235585, - 0x263944, - 0x58392e03, - 0x587d1a86, - 0x219405, - 0x21b385, - 0x3b6104, - 0x2f93c3, - 0x358ecc, - 0x58ac0002, - 0x58e00e82, - 0x59209d42, - 0x21b283, - 0x21b284, - 0x59610442, - 0x308108, - 0x2c4d05, - 0x2dafc4, - 0x359186, - 0x59a205c2, - 0x59e109c2, - 0x5a200c42, - 0x2a3c05, - 0x354806, - 0x232c84, - 0x236346, - 0x213186, - 0x25aa03, - 0x5a694b4a, - 0x2853c5, - 0x29b583, - 0x20f546, - 0x5aa0f549, - 0x22c4c7, - 0x3c8c08, - 0x3ce749, - 0x2b6048, - 0x209146, - 0x207cc3, - 0x5af1de42, - 0x32bd88, - 0x5b256e02, - 0x5b601582, - 0x233243, - 0x2efe85, - 0x280f44, - 0x3e27c9, - 0x386e04, - 0x38d188, - 0x5be10fc3, - 0x5c3a2ac4, - 0x21f448, - 0x5c70df02, - 0x2cf1c2, - 0x330cc5, - 0x34af09, - 0x216443, - 0x31b884, - 0x36e504, - 0x20b683, - 0x28bf8a, - 0x5cb0f082, - 0x5ce13fc2, - 0x2dc903, - 0x3939c3, - 0x1609382, - 0x35c243, - 0x5d228882, - 0x5d600bc2, - 0x5da8d4c4, - 0x28d4c6, - 0x276e84, - 0x283103, - 0x28f583, - 0x5de00bc3, - 0x248e46, - 0x3de805, - 0x2e0947, - 0x2e0886, - 0x2e0e48, - 0x2e1046, - 0x2239c4, - 0x2a6a8b, - 0x2e30c3, - 0x2e30c5, - 0x2165c2, - 0x35fe82, - 0x5e24f102, - 0x5e603742, - 0x20a083, - 0x5ea77782, - 0x277783, - 0x2e4103, - 0x5f2093c2, - 0x5f6e8306, - 0x35e3c6, - 0x5fae8442, - 0x5fe12202, - 0x60233ec2, - 0x60ea9542, - 0x61345342, - 0x61602802, - 0x20b0c3, - 0x3da086, - 0x61a1b544, - 0x2b130a, - 0x3b1d46, - 0x285084, - 0x202703, - 0x62606c02, - 0x204cc2, - 0x26f843, - 0x62a296c3, - 0x3c5847, - 0x3b5f07, - 0x67e60847, - 0x341607, - 0x232403, - 0x23240a, - 0x257204, - 0x31e544, - 0x31e54a, - 0x24a905, - 0x6823a382, - 0x2583c3, - 0x68600602, - 0x257743, - 0x386cc3, - 0x68e00582, - 0x283984, - 0x202544, - 0x2032c5, - 0x3301c5, - 0x236e86, - 0x2fb4c6, - 0x6924ba82, - 0x69601cc2, - 0x2f97c5, - 0x35e0d2, - 0x298a06, - 0x291c43, - 0x2b4ac6, - 0x2cf8c5, - 0x1603442, - 0x71a056c2, - 0x341143, - 0x212bc3, - 0x29c403, - 0x71e01102, - 0x21e803, - 0x7222d4c2, - 0x201d03, - 0x3b1008, - 0x241c43, - 0x2b5406, - 0x3e3047, - 0x34dbc6, - 0x34dbcb, - 0x284fc7, - 0x33ee44, - 0x72a00c02, - 0x2c4b85, - 0x72e2f483, - 0x23b843, - 0x39fd45, - 0x348ec3, - 0x73748ec6, - 0x3e514a, - 0x2ade43, - 0x213a04, - 0x2003c6, - 0x327f06, - 0x73a0cb83, - 0x20cb87, - 0x326807, - 0x2a8485, - 0x239706, - 0x217303, - 0x76626a03, - 0x76a00a82, - 0x76ec8044, - 0x2114c9, - 0x22f7c5, - 0x361cc4, - 0x31e288, - 0x24ac45, - 0x7724ccc5, - 0x255849, - 0x32e683, - 0x23d7c4, - 0x77608402, - 0x21f783, - 0x77a96dc2, - 0x296dc6, - 0x169a902, - 0x77e15982, - 0x2a3b08, - 0x2b3743, - 0x2c5a87, - 0x2c1b85, - 0x2c5645, - 0x34de4b, - 0x2f17c6, - 0x34e046, - 0x277304, - 0x219d06, - 0x782f1e48, - 0x28e543, - 0x265043, - 0x265044, - 0x2fa884, - 0x309447, - 0x3da945, - 0x786f8842, - 0x78a059c2, - 0x792059c5, - 0x2ca784, - 0x2fa9cb, - 0x2fd488, - 0x24bd04, - 0x796376c2, - 0x79a06bc2, - 0x206bc3, - 0x2ff644, - 0x2ff905, - 0x300487, - 0x79f02ac4, - 0x38bfc4, - 0x7a2037c2, - 0x37e5c9, - 0x303fc5, - 0x24d905, - 0x304b45, - 0x7a61f6c3, - 0x240644, - 0x24064b, - 0x305b04, - 0x305dcb, - 0x306745, - 0x22030a, - 0x307108, - 0x30730a, - 0x307b83, - 0x307b8a, - 0x7ae1a782, - 0x7b24cec2, - 0x7b604683, - 0x7bad3b02, - 0x309ec3, - 0x7bef57c2, - 0x7c33a842, - 0x30a904, - 0x2210c6, - 0x236085, - 0x30ccc3, - 0x3ce106, - 0x219045, - 0x35a504, - 0x7c600902, - 0x2b4004, - 0x2dcb8a, - 0x2c3687, - 0x349246, - 0x25d607, - 0x248783, - 0x2cd9c8, - 0x3e7ccb, - 0x221e45, - 0x36e645, - 0x36e646, - 0x2f8384, - 0x3df448, - 0x205703, - 0x2075c4, - 0x2075c7, - 0x33ea86, - 0x3a2e06, - 0x2ccdca, - 0x256b84, - 0x2c244a, - 0x7ca08dc6, - 0x208dc7, - 0x261947, - 0x266584, - 0x266589, - 0x336705, - 0x2f9c43, - 0x22a543, - 0x7ce264c3, - 0x23a044, - 0x7d200682, - 0x3d8986, - 0x7d6d05c5, - 0x2b4d05, - 0x25b746, - 0x31d704, - 0x7da12742, - 0x24b2c4, - 0x7de04a02, - 0x20c2c5, - 0x336884, - 0x7f22ccc3, - 0x7f609742, - 0x209743, - 0x21e946, - 0x7fa01ec2, - 0x397488, - 0x22c344, - 0x22c346, - 0x394246, - 0x7fe63084, - 0x21a7c5, - 0x22ef08, - 0x231dc7, - 0x326fc7, - 0x326fcf, - 0x29e286, - 0x23cc03, - 0x241684, - 0x20f843, - 0x22bbc4, - 0x252e44, - 0x80207f02, - 0x3747c3, - 0x337cc3, - 0x80602b02, - 0x204143, - 0x37d083, - 0x21878a, - 0x27eb47, - 0x258ecc, - 0x80a59186, - 0x25abc6, - 0x25bcc7, - 0x80e38747, - 0x262389, - 0x812fc684, - 0x8160a0c2, - 0x81a01702, - 0x2cd186, - 0x20c984, - 0x39e1c6, - 0x267ec8, - 0x3a5204, - 0x2f8ec6, - 0x2b2945, - 0x81e7c4c8, - 0x24c743, - 0x28a485, - 0x35d1c3, - 0x24da03, - 0x24da04, - 0x21dc43, - 0x82254642, - 0x826014c2, - 0x2f9b09, - 0x296cc5, - 0x3d4744, - 0x3e5745, - 0x20f244, - 0x37b3c7, - 0x338685, - 0x82ed1984, - 0x2d1988, - 0x2dd986, - 0x2e1dc4, - 0x2e1fc8, - 0x83204ac2, - 0x2f0d84, - 0x20f904, - 0x2d38c7, - 0x83605fc4, - 0x2171c2, - 0x83a0b5c2, - 0x20b5c3, - 0x2875c4, - 0x2512c3, - 0x2ba385, - 0x83e35542, - 0x30ac45, - 0x279c42, - 0x311f85, - 0x2db805, - 0x842010c2, - 0x332f04, - 0x84602d82, - 0x30dd46, - 0x2192c6, - 0x34b048, - 0x2d49c8, - 0x31e8c4, - 0x301805, - 0x2c0d09, - 0x2d2a44, - 0x3e5104, - 0x21f203, - 0x207383, - 0x84a07385, - 0x26fac5, - 0x269544, - 0x337d4d, - 0x352902, - 0x352903, - 0x84e04102, - 0x85200ec2, - 0x396f45, - 0x354c47, - 0x22d144, - 0x3ce949, - 0x2dccc9, - 0x282303, - 0x282308, - 0x246809, - 0x227d47, - 0x85755b45, - 0x3615c6, - 0x362786, - 0x365cc5, - 0x2cbf45, - 0x85a01c42, - 0x2930c5, - 0x2c9448, - 0x2d6a06, - 0x85ed7247, - 0x306984, - 0x2b9ac7, - 0x3b9106, - 0x8624b302, - 0x208986, - 0x31160a, - 0x311e85, - 0x86615a82, - 0x86a14442, - 0x278b86, - 0x86e97d07, - 0x8720c4c2, - 0x20a803, - 0x2250c6, - 0x2d5884, - 0x27ac86, - 0x32fa86, - 0x3a32ca, - 0x32e805, - 0x30d8c6, - 0x36c343, - 0x36c344, - 0x87603bc2, - 0x321303, - 0x87a1b2c2, - 0x31fec3, - 0x87e34c04, - 0x2d8284, - 0x883e380a, - 0x209203, - 0x326ac7, - 0x315106, - 0x38fa84, - 0x236d42, - 0x2b0982, - 0x886007c2, - 0x232a43, - 0x261707, - 0x2007c7, - 0x292704, - 0x258d47, - 0x300586, - 0x20ba87, - 0x230744, - 0x2b61c5, - 0x221c45, - 0x88a0d782, - 0x219e46, - 0x230bc3, - 0x29d6c2, - 0x2fc146, - 0x88e12682, - 0x89213402, - 0x213405, - 0x8962bdc2, - 0x89a02a02, - 0x351e45, - 0x2e3405, - 0x30a705, - 0x8a268b83, - 0x285845, - 0x2f1887, - 0x2b9385, - 0x32e9c5, - 0x257104, - 0x361b46, - 0x24e044, - 0x8a6008c2, - 0x8b2510c5, - 0x3967c7, - 0x213c08, - 0x27d046, - 0x27d04d, - 0x2803c9, - 0x2803d2, - 0x37e8c5, - 0x383403, - 0x8b6091c2, - 0x32f684, - 0x3a8f03, - 0x3d64c5, - 0x3136c5, - 0x8ba2a042, - 0x267d43, - 0x8be32982, - 0x8c629742, - 0x8ca00082, - 0x2ead45, - 0x39d643, - 0x8ce04942, - 0x8d206502, - 0x283946, - 0x2484ca, - 0x201c83, - 0x2638c3, - 0x2f2d43, - 0x8ee04a42, - 0x9d666342, - 0x9de0e002, - 0x205002, - 0x3d8109, - 0x2d9444, - 0x2e5488, - 0x9e308542, - 0x9ea017c2, - 0x393285, - 0x23d208, - 0x2f8088, - 0x30500c, - 0x241403, - 0x9ee6dac2, - 0x9f208e42, - 0x39dbc6, - 0x315f85, - 0x2e8c43, - 0x24cb06, - 0x3160c6, - 0x251403, - 0x317703, - 0x317dc6, - 0x319884, - 0x2a2446, - 0x34cd04, - 0x319f44, - 0x31aa0a, - 0x9f603582, - 0x257e85, - 0x31bfca, - 0x31bf05, - 0x31ce84, - 0x31cf86, - 0x31d104, - 0x21fa46, - 0x9fa16ec2, - 0x216ec6, - 0x271385, - 0x30d747, - 0x3c1346, - 0x25bec4, - 0x2e8ec7, - 0x2089c5, - 0x242c07, - 0x228947, - 0x22894e, - 0x2849c6, - 0x2b6dc5, - 0x205f07, - 0x3c3947, - 0x212d85, - 0x229b84, - 0x3235c2, - 0x23d887, - 0x249e04, - 0x35a784, - 0x2cf04b, - 0x9fe246c3, - 0x301387, - 0x2246c4, - 0x301687, - 0x310883, - 0x34e54d, - 0x3ad188, - 0xa0233984, - 0x3e16c5, - 0x31f985, - 0x31fdc3, - 0xa0608f02, - 0x3212c3, - 0x321a83, + 0x2ee060c2, + 0x21c0c3, + 0x300a45, + 0x2f226783, + 0x2fa410c9, + 0x2fe00942, + 0x30612002, + 0x29fe85, + 0x221206, + 0x2bd3c6, + 0x3171c8, + 0x3171cb, + 0x34fb0b, + 0x2fc845, + 0x2e8549, + 0x1601082, + 0x2cee08, + 0x20f044, + 0x30e01b42, + 0x346043, + 0x316e82c6, + 0x31a02182, + 0x3d6a48, + 0x31e0a842, + 0x2738ca, + 0x32679783, + 0x32f86046, + 0x31de08, + 0x221b86, + 0x396707, + 0x219007, + 0x3d3cca, + 0x24fa04, + 0x36c404, + 0x385109, + 0x333bd905, + 0x219ec6, + 0x2115c3, + 0x2872c4, + 0x33601d04, + 0x201d07, + 0x33bae987, + 0x264f44, + 0x2424c5, + 0x27a508, + 0x256007, + 0x256287, + 0x33e1b5c2, + 0x2ae1c4, + 0x2a99c8, + 0x259284, + 0x25d444, + 0x25d845, + 0x25d987, + 0x34b68049, + 0x23be84, + 0x25f649, + 0x2607c8, + 0x262104, + 0x262107, + 0x264643, + 0x265cc7, + 0x34e00bc2, + 0x16ccd82, + 0x266946, + 0x2c48c7, + 0x2672c4, + 0x268887, + 0x269387, + 0x26a303, + 0x352698c2, + 0x215ac2, + 0x26b7c3, + 0x26b7c4, + 0x26b7cb, + 0x335948, 0x215ac4, - 0x289085, - 0x219fc7, - 0x36c3c6, - 0x390a43, - 0x233f0b, - 0x35be8b, - 0x2b504b, - 0x2cae8b, - 0x3991ca, - 0x2d6bcb, - 0x2f228b, - 0x32178c, - 0x31a34b, - 0x370491, - 0x398e4a, - 0x3b8a4b, - 0x3c95cc, - 0x3e6f4b, - 0x3230ca, - 0x323f4a, - 0x324dce, - 0x325a4b, - 0x325d0a, - 0x328911, - 0x328d4a, - 0x32924b, - 0x32978e, - 0x32a14c, - 0x32ae8b, - 0x32b14e, - 0x32b4cc, - 0x32ef0a, - 0x33068c, - 0xa0b3098a, - 0x331288, - 0x331e49, - 0x3348ca, - 0x334b4a, - 0x334dcb, - 0x33744e, - 0x338091, - 0x341cc9, - 0x341f0a, - 0x342c8b, - 0x343dcd, - 0x344c4a, - 0x345616, - 0x34698b, - 0x34844a, - 0x34888a, - 0x34a48b, - 0x34b2c9, - 0x34eec9, - 0x34f44d, - 0x34fc0b, - 0x3514cb, - 0x351f89, - 0x3525ce, - 0x3529ca, - 0x3550ca, - 0x35590a, - 0x3562cb, - 0x356b0b, - 0x35798d, - 0x359fcd, + 0x26ca05, + 0x26e147, + 0x2fa885, + 0x34deca, + 0x270903, + 0x35605b02, + 0x2727c4, + 0x274309, + 0x277c03, + 0x277cc7, + 0x244b49, + 0x20e288, + 0x203743, + 0x291e47, + 0x244603, + 0x299704, + 0x29adc9, + 0x29dc86, + 0x32b303, + 0x203f82, + 0x2ccb83, + 0x2ccb87, + 0x39ab45, + 0x3a3c06, + 0x2d1704, + 0x39b945, + 0x2927c3, + 0x21f0c6, + 0x2094c3, + 0x20ef42, + 0x25c904, + 0x35a03942, + 0x35f339c3, + 0x36206582, + 0x243b43, + 0x21b304, + 0x25a807, + 0x2a8606, + 0x201cc2, + 0x36601c82, + 0x372004, + 0x36e181c2, + 0x37203d02, + 0x2af084, + 0x2af085, + 0x20db45, + 0x3d4d06, + 0x37607282, + 0x370985, + 0x3dccc5, + 0x207283, + 0x2feb46, + 0x2140c5, + 0x21dac2, + 0x363205, + 0x21dac4, + 0x222343, + 0x222583, + 0x37a0e002, + 0x27ab07, + 0x26e304, + 0x26e309, + 0x2871c4, + 0x299fc3, + 0x2c97c8, + 0x37e99fc4, + 0x299fc6, + 0x2bc303, + 0x23f783, + 0x20f583, + 0x3830f1c2, + 0x317442, + 0x38600642, + 0x343e08, + 0x2157c8, + 0x3c9706, + 0x3b6e45, + 0x230185, + 0x349707, + 0x38a62fc5, + 0x216e82, + 0x38eaca82, + 0x39200042, + 0x28f288, + 0x3204c5, + 0x309c84, + 0x242e05, + 0x24ad47, + 0x3df244, + 0x25aec2, + 0x3963ff82, + 0x35a8c4, + 0x362607, + 0x2a0407, + 0x387744, + 0x3e1243, + 0x2a5504, + 0x2a5508, + 0x39a3c686, + 0x266d0a, + 0x3af884, + 0x2a9408, + 0x242344, + 0x22da06, + 0x2aca44, + 0x3000c6, + 0x26e5c9, + 0x2bba87, + 0x3a80c3, + 0x39e01742, + 0x2830c3, + 0x210682, + 0x3a209bc2, + 0x257c86, + 0x28adc8, + 0x2bd547, + 0x317a89, + 0x2bd709, + 0x2bf805, + 0x2c0d09, + 0x2c2005, + 0x2c3205, + 0x2c3fc8, + 0x3a616c44, + 0x3aa16c47, + 0x239803, + 0x2c41c7, + 0x239806, + 0x2c4e47, + 0x2bb585, + 0x2390c3, + 0x3ae30fc2, + 0x213c04, + 0x3b20e9c2, + 0x3b607142, + 0x376406, + 0x233945, + 0x2c7e07, + 0x33be43, + 0x3d6e44, + 0x213903, + 0x23ad43, + 0x3ba06502, + 0x3c202502, + 0x399d84, + 0x269883, + 0x30e905, + 0x3c613f82, + 0x3ce04182, + 0x3a0fc6, + 0x304144, + 0x310f44, + 0x310f4a, + 0x3d6005c2, + 0x20f2c3, + 0x22838a, + 0x231a48, + 0x3da5c204, + 0x2005c3, + 0x251a83, + 0x2d1fc9, + 0x27cfc9, + 0x231c06, + 0x3de0bc83, + 0x23bb4d, + 0x23dbc6, + 0x2497cb, + 0x3e20b882, + 0x349288, + 0x432235c2, + 0x43603202, + 0x2c6405, + 0x43a040c2, + 0x2b3307, + 0x209a83, + 0x214288, + 0x43e01ac2, + 0x32a7c4, + 0x22cc83, + 0x24d946, + 0x22b9c4, + 0x216f03, + 0x45202382, + 0x2fc7c4, + 0x2cb785, + 0x2cc787, + 0x290943, + 0x2cd143, + 0x1626b42, + 0x2cd803, + 0x2cde03, + 0x45600c02, + 0x279504, + 0x242cc6, + 0x363983, + 0x2ce203, + 0x45a5cf02, + 0x25cf08, + 0x2cf5c4, + 0x2206c6, + 0x393f87, + 0x391d06, + 0x2c5584, + 0x53e01782, + 0x2396cb, + 0x3cdfce, + 0x222f8f, + 0x2e0403, + 0x546dbe82, + 0x164f082, + 0x54a04082, + 0x2b6103, + 0x3cc144, + 0x220243, + 0x359746, + 0x248286, + 0x2b46c7, + 0x390e44, + 0x54e21342, + 0x55232ac2, + 0x309345, + 0x3e4e07, + 0x3cedc6, + 0x5567a6c2, + 0x390744, + 0x2d4783, + 0x55a0af02, + 0x55f82443, + 0x2d5b84, + 0x2dbdc9, + 0x562e3dc2, + 0x5661c4c2, + 0x259605, + 0x56ae42c2, + 0x57203e02, + 0x3698c7, + 0x385c8b, + 0x218dc5, + 0x2682c9, + 0x26f6c6, + 0x57609004, + 0x379289, + 0x377647, + 0x393347, + 0x237b43, + 0x2fe046, + 0x37ea87, + 0x21e803, + 0x2b93c6, + 0x57e16202, + 0x5820b602, + 0x21cd43, + 0x3aca05, + 0x3b14c7, + 0x248386, + 0x39aac5, + 0x26e284, + 0x2ba945, + 0x3141c4, + 0x58609a42, + 0x2e2544, + 0x2d4544, + 0x3a73cd, + 0x2d4549, + 0x260e88, + 0x259884, + 0x3ebb05, + 0x3b80c7, + 0x3d1184, + 0x370c87, + 0x22c4c5, + 0x58abea84, + 0x2be3c5, + 0x58e768c4, + 0x31a606, + 0x3dadc5, + 0x592032c2, + 0x336a83, + 0x251f83, + 0x2459c4, + 0x2459c5, + 0x20d706, + 0x38de05, + 0x26eb44, + 0x59713103, + 0x59a14746, + 0x223d05, + 0x225845, + 0x3daec4, + 0x304c03, + 0x3af90c, + 0x59ecc882, + 0x5a200b42, + 0x5a612a82, + 0x222043, + 0x222044, + 0x5aa0fe02, + 0x302888, + 0x22be04, + 0x3301c6, + 0x5ae24902, + 0x5b216902, + 0x5b603f02, + 0x2a4a45, + 0x300346, + 0x238044, + 0x2361c6, + 0x212506, + 0x26ac03, + 0x5ba9d60a, + 0x299f05, + 0x2b98c3, + 0x213606, + 0x5be13609, + 0x22e147, + 0x3c8548, + 0x391909, + 0x3bfe88, + 0x2a3c46, + 0x20a2c3, + 0x5c205942, + 0x3b0148, + 0x5c6593c2, + 0x5ca00ec2, + 0x2384c3, + 0x2fc3c5, + 0x2b1244, + 0x2bdf89, + 0x23ca84, + 0x255308, + 0x5d20b4c3, + 0x5d66b484, + 0x221248, + 0x5da15142, + 0x23d8c2, + 0x3397c5, + 0x3bba89, + 0x214e43, + 0x32eb84, + 0x3f0484, + 0x2202c3, + 0x29558a, + 0x5df9b302, + 0x5e213a42, + 0x2e7f43, + 0x39d383, + 0x161c182, + 0x377f43, + 0x5e62ab02, + 0x5ea01942, + 0x5ee30944, + 0x296ac6, + 0x281884, + 0x28f0c3, + 0x3da783, + 0x5f30c783, + 0x24d5c6, + 0x339b85, + 0x2eba87, + 0x2eb9c6, + 0x2ec108, + 0x2ec306, + 0x201944, + 0x2b2dcb, + 0x2eea43, + 0x2eea45, + 0x5f60ffc2, + 0x369bc2, + 0x5fa54782, + 0x5fe0d3c2, + 0x221383, + 0x60282182, + 0x282183, + 0x2f0343, + 0x60a067c2, + 0x60ef3c06, + 0x2f4005, + 0x2b7346, + 0x6127c082, + 0x61611282, + 0x61a225c2, + 0x61e736c2, + 0x622130c2, + 0x62602202, + 0x21c603, + 0x3a9686, + 0x62a25a04, + 0x3b52c6, + 0x2907c4, + 0x2ec4c3, + 0x63603642, + 0x201f42, + 0x238cc3, + 0x63a14883, + 0x3cec47, + 0x3dacc7, + 0x6965c3c7, + 0x316147, + 0x218943, + 0x69a7a004, + 0x327e04, + 0x327e0a, + 0x3e69c5, + 0x69e31a82, + 0x268843, + 0x6a200602, + 0x262243, + 0x283083, + 0x6aa00582, + 0x28f944, + 0x349904, + 0x3cb645, + 0x32bd85, + 0x311f06, + 0x311186, + 0x6ae18882, + 0x6b2025c2, + 0x2fb405, + 0x2b7052, + 0x326ac6, + 0x22a783, + 0x22a786, + 0x269b85, + 0x1616fc2, + 0x73611f42, + 0x336783, + 0x211f43, + 0x2ac1c3, + 0x73a17a02, + 0x21fe83, + 0x73e07982, + 0x230983, + 0x37b608, + 0x248803, + 0x248806, + 0x3e8187, + 0x3271c6, + 0x3271cb, + 0x290707, + 0x313084, + 0x74600e82, + 0x3a3b45, + 0x74a14843, + 0x247043, + 0x20b8c5, + 0x218843, + 0x75218846, + 0x2ac403, + 0x203584, + 0x2003c6, + 0x334046, + 0x7564acc3, + 0x285c07, + 0x244747, + 0x2b54c5, + 0x24eb06, + 0x21cc03, + 0x782cebc3, + 0x78607002, + 0x78a30704, + 0x3f3589, + 0x21b645, + 0x3af684, + 0x303a08, + 0x23d505, + 0x78e407c5, + 0x24f689, + 0x380583, + 0x3dca84, + 0x792035c2, + 0x221583, + 0x79681142, + 0x281146, + 0x168e5c2, + 0x79a15882, + 0x2a4948, + 0x2a54c3, + 0x2be307, + 0x39fc85, + 0x2fddc5, + 0x331a0b, + 0x2fddc6, + 0x331c06, + 0x24bb04, + 0x218386, + 0x79f00dc8, + 0x26c0c3, + 0x274003, + 0x274004, + 0x3e4d44, + 0x304e07, + 0x31ea05, + 0x7a324e02, + 0x7a608782, + 0x7ae08785, + 0x2e6ac4, + 0x2e6acb, + 0x305448, + 0x268f84, + 0x7b25cf42, + 0x7b609ec2, + 0x209ec3, + 0x306744, + 0x306a05, + 0x307387, + 0x7bb097c4, + 0x21bd84, + 0x7be05442, + 0x38a3c9, + 0x30a905, + 0x219085, + 0x30b185, + 0x7c205443, + 0x244e04, + 0x244e0b, + 0x30be44, + 0x30c10b, + 0x30c6c5, + 0x2230ca, + 0x30ce88, + 0x30d08a, + 0x30d883, + 0x30d88a, + 0x7ca1b482, + 0x7ce21e42, + 0x7d229a83, + 0x7d6cc442, + 0x310c43, + 0x7db129c2, + 0x7df42742, + 0x313e44, + 0x223606, + 0x235f05, + 0x317483, + 0x23b886, + 0x212c85, + 0x235804, + 0x7e200902, + 0x21d784, + 0x2e81ca, + 0x2cb0c7, + 0x351e86, + 0x2516c7, + 0x24c843, + 0x2d5bc8, + 0x34c64b, + 0x226445, + 0x3f05c5, + 0x3f05c6, + 0x304704, + 0x236d08, + 0x2221c3, + 0x28b8c4, + 0x3d4047, + 0x312cc6, + 0x346906, + 0x2d840a, + 0x25f6c4, + 0x2a1a8a, + 0x7e6f7b86, + 0x2f7b87, + 0x26ca87, + 0x28db44, + 0x28db49, + 0x230dc5, + 0x377483, + 0x236883, + 0x7ea06f83, + 0x234344, + 0x7ee00682, + 0x366906, + 0x7f2d9445, + 0x22a9c5, + 0x246646, + 0x215084, + 0x7f601a42, + 0x246744, + 0x7fe03b02, + 0x379105, + 0x230f44, + 0x8122ea03, + 0x81611f82, + 0x211f83, + 0x3bb206, + 0x81a02fc2, + 0x339288, + 0x22dfc4, + 0x22dfc6, + 0x39dc06, + 0x81e6e204, + 0x220f05, + 0x22f7c8, + 0x230007, + 0x286287, + 0x28628f, + 0x2a98c6, + 0x247943, + 0x249f84, + 0x234c03, + 0x22db44, + 0x3a23c4, + 0x8220b242, + 0x2625c3, + 0x33fc03, + 0x82606382, + 0x206383, + 0x21da03, + 0x21930a, + 0x31cdc7, + 0x3ae24c, + 0x3ae506, + 0x25dd06, + 0x269507, + 0x82a6ffc7, + 0x272589, + 0x82f65e44, + 0x836213c2, + 0x83a01042, + 0x2d87c6, + 0x285a04, + 0x2db286, + 0x277f48, + 0x3acac4, + 0x33a6c6, + 0x2bd385, + 0x842833c8, + 0x250dc3, + 0x287385, + 0x28d283, + 0x219183, + 0x219184, + 0x272983, + 0x846291c2, + 0x84a00e02, + 0x377349, + 0x2936c5, + 0x293a44, + 0x29f705, + 0x20f144, + 0x2eadc7, + 0x3637c5, + 0x85223984, + 0x302308, + 0x2cf686, + 0x2d4a04, + 0x2d4a08, + 0x85601a82, + 0x2dc104, + 0x31d504, + 0x354fc7, + 0x85a01a84, + 0x202342, + 0x85e14942, + 0x220203, + 0x259504, + 0x243a83, + 0x396bc5, + 0x8621e7c2, + 0x2f93c5, + 0x2827c2, + 0x319cc5, + 0x2e6805, + 0x8662c602, + 0x23d204, + 0x86a075c2, + 0x3e21c6, + 0x212f06, + 0x3bbbc8, + 0x29c8c8, + 0x376384, + 0x300f85, + 0x312649, + 0x2cef44, + 0x3effc4, + 0x27c243, + 0x289f03, + 0x86e89f05, + 0x26ed05, + 0x29a244, + 0x2a7382, + 0x334a03, + 0x87206342, + 0x87601b82, + 0x338d45, + 0x28d107, + 0x20d944, + 0x391b09, + 0x2e8309, + 0x28e403, + 0x28e408, + 0x2ab4c9, + 0x3d3b47, + 0x87b3a505, + 0x35d3c6, + 0x35da06, + 0x35eec5, + 0x2d4645, + 0x87e02802, + 0x202805, + 0x2e0788, + 0x2e1306, + 0x8830c907, + 0x3ae8c4, + 0x2df487, + 0x3a8246, + 0x88609202, + 0x20d406, + 0x31934a, + 0x319bc5, + 0x88a15982, + 0x88e37dc2, + 0x27fe06, + 0x892a05c7, + 0x89603382, + 0x221e83, + 0x3f38c6, + 0x2de1c4, + 0x253846, + 0x324bc6, + 0x20184a, + 0x336e05, + 0x3c7b06, + 0x3c8703, + 0x3c8704, + 0x89a05e02, + 0x32c003, + 0x89e22082, + 0x32bc83, + 0x8a228604, + 0x2dfc04, + 0x8a7b188a, + 0x219d83, + 0x387c47, + 0x3de4c6, + 0x328b44, + 0x2372c2, + 0x2184c2, + 0x8aa007c2, + 0x2ef983, + 0x26c847, + 0x2007c7, + 0x29b784, + 0x220d87, + 0x307486, + 0x23b147, + 0x21dc44, + 0x223f05, + 0x2031c5, + 0x8ae09b02, + 0x226b06, + 0x22b203, + 0x231282, + 0x231286, + 0x8b229b42, + 0x8b649902, + 0x254905, + 0x8ba021c2, + 0x8be019c2, + 0x398c45, + 0x2eed85, + 0x313b85, + 0x8c673143, + 0x2f2505, + 0x2fde87, + 0x2bb945, + 0x336fc5, + 0x279f04, + 0x240646, + 0x253004, + 0x8ca008c2, + 0x8d6d0e85, + 0x215e07, + 0x203788, + 0x27b8c6, + 0x27b8cd, + 0x27cd89, + 0x27cd92, + 0x33c805, + 0x3465c3, + 0x8da0ea02, + 0x3247c4, + 0x23dc43, + 0x38a6c5, + 0x31a945, + 0x8de2ccc2, + 0x272503, + 0x8e25c442, + 0x8ea2b942, + 0x8ee00082, + 0x3f4005, + 0x3a81c3, + 0x8f20dfc2, + 0x8f60ba42, + 0x28f906, + 0x26b54a, + 0x22a743, + 0x245943, + 0x2ed243, + 0x91203342, + 0x9fa096c2, + 0xa0203b42, + 0x207882, + 0x334809, + 0x2e31c4, + 0x283dc8, + 0xa0627e42, + 0xa0e01102, + 0x271dc5, + 0x241e48, + 0x24d048, + 0x2f29cc, + 0x246143, + 0xa1276282, + 0xa160b382, + 0x2dac86, + 0x31be45, + 0x2f4e83, + 0x26aa06, + 0x31bf86, + 0x251a43, + 0x31d443, + 0x31d886, + 0x31f304, + 0x2637c6, + 0x3afc04, + 0x31f9c4, + 0x32134a, + 0xa1a561c2, + 0x2647c5, + 0x32290a, + 0x322845, + 0x323904, + 0x323a06, + 0x323b84, + 0x221846, + 0xa1e02402, + 0x21c7c6, + 0x325785, + 0x3c7987, + 0x3d0286, + 0x269704, + 0x2f5107, + 0x20d445, + 0x2477c7, + 0x22abc7, + 0x22abce, + 0x290106, + 0x248b85, + 0x2080c7, + 0x3dcb47, + 0x212105, + 0x2152c4, + 0x333502, + 0x28ac87, + 0x28d304, + 0x260644, + 0x2d568b, + 0xa22270c3, + 0x30dcc7, + 0x2270c4, + 0x30dfc7, + 0x224303, + 0x35680d, + 0x328848, + 0xa2656bc4, + 0x256bc5, + 0x3e1685, + 0x329083, + 0xa2a2dec2, + 0x32bfc3, + 0x32c803, + 0x2159c4, + 0x226c85, + 0x226d87, + 0x3c8786, + 0x39b403, + 0x2313cb, + 0x377b8b, + 0x2b87cb, + 0x2c144b, + 0x2c1d8a, + 0x3cce4b, + 0x3012cb, + 0x31c20c, + 0x31fdcb, + 0x36a851, + 0x37e70a, + 0x3c120b, + 0x3f1dcc, + 0x32d34b, + 0x32e2ca, + 0x32e94a, + 0x32fd0e, + 0x33034b, + 0x33060a, + 0x331d91, + 0x3321ca, + 0x3326cb, + 0x332c0e, + 0x334acc, + 0x334f4b, + 0x33520e, + 0x33558c, + 0x33750a, + 0x33870c, + 0xa2f3948a, + 0x339cc8, + 0x33a989, + 0x33c9ca, + 0x33cc4a, + 0x33cecb, + 0x33f38e, + 0x33fed1, + 0x34a749, + 0x34a98a, + 0x34b6cb, + 0x34cd4d, + 0x34dbca, + 0x34e396, + 0x34f70b, + 0x350b8a, + 0x3514ca, + 0x35250b, + 0x353f89, + 0x357189, + 0x358b0d, + 0x35994b, + 0x35b40b, + 0x35b8c9, + 0x35bf0e, + 0x35c54a, + 0x35d18a, + 0x35d7ca, + 0x35decb, + 0x35e70b, + 0x35f98d, + 0x36130d, + 0x362e90, + 0x36334b, + 0x363e4c, + 0x36514b, + 0x3693cb, + 0x36ce0e, + 0x36e0cb, + 0x36e0cd, + 0x3745cb, + 0x37504f, + 0x37540b, + 0x375dca, + 0x377889, + 0x37a2c9, + 0xa337a64b, + 0x37a90e, + 0x37ac8e, + 0x37c54b, + 0x37d2cf, + 0x38078b, + 0x380a4b, + 0x380d0a, + 0x385889, + 0x38820f, + 0x38d40c, + 0x38d9cc, + 0x38e94e, + 0x38ef8f, + 0x38f34e, + 0x38fd10, + 0x39010f, + 0x39110e, + 0x391fcc, + 0x3922d1, + 0x392712, + 0x393b11, + 0x39414e, + 0x39498b, + 0x39498e, + 0x394d0f, + 0x3950ce, + 0x395450, + 0x395853, + 0x395d11, + 0x39614c, + 0x39644e, + 0x3968cc, + 0x396d13, + 0x3977d0, + 0x397c4c, + 0x397f4c, + 0x39880b, + 0x39998e, + 0x399e8b, + 0x39a5cb, + 0x39bc8c, + 0x3a280a, + 0x3a2c4c, + 0x3a2f4c, + 0x3a3249, + 0x3a560b, + 0x3a58c8, + 0x3a6089, + 0x3a608f, + 0x3a7acb, + 0xa37a890a, + 0x3ab34c, + 0x3ac28b, + 0xa3bac549, + 0x3ad1c8, + 0x3ad58b, + 0x3aee0a, + 0x3af08a, + 0x3af30b, + 0x3afecc, + 0x3b1b09, + 0x3b1d48, + 0x3b464b, + 0x3b6f8b, + 0x3bcd0e, + 0x3be20b, + 0x3c0b8b, + 0x3cc50b, + 0x3cc7c9, + 0x3cd3cd, + 0x3dfeca, + 0x3e3357, + 0x3e4398, + 0x3e6b89, + 0x3e7dcb, + 0x3ed6d4, + 0x3edbcb, + 0x3ee14a, + 0x3eed0a, + 0x3eef8b, + 0x3ef6d0, + 0x3efad1, + 0x3f00ca, + 0x3f13cd, + 0x3f1acd, + 0x3f328b, + 0x226c03, + 0xa3e05503, + 0x21a846, + 0x209545, + 0x2f0b07, + 0x2c6b06, + 0xa420b2c2, + 0x2c0209, + 0x23b684, + 0x2fcdc8, + 0x206ec3, + 0x324707, + 0xa4603482, + 0x2c7e43, + 0xa4a079c2, + 0x2e8dc6, + 0x2e9b84, + 0x230ac4, + 0x204e83, + 0xa52e4302, + 0xa562fd04, + 0x28da87, + 0xa5a371c2, + 0x21a043, + 0x358c3, + 0x226783, + 0x20f583, + 0x214e43, + 0x214883, + 0x24acc3, + 0x113508, + 0x208c43, + 0x2000c2, + 0x1c3448, + 0x20b642, + 0x20f583, + 0x214e43, + 0x214883, + 0x24acc3, + 0x219303, + 0x345796, + 0x373113, + 0x220c09, + 0x2848c8, + 0x3a39c9, + 0x322a86, 0x35a910, - 0x35adcb, - 0x35bacc, - 0x35cc8b, - 0x35f68b, - 0x3611ce, - 0x3617cb, - 0x3617cd, - 0x36740b, - 0x367e8f, - 0x36824b, - 0x36918a, - 0x369f49, - 0x36ab49, - 0xa0f6aecb, - 0x36b18e, - 0x36b50e, - 0x36e28b, - 0x36f04f, - 0x3718cb, - 0x371b8b, - 0x371e4a, - 0x376d89, - 0x37c74f, - 0x381d4c, - 0x38298c, - 0x3830ce, - 0x3835cf, - 0x38398e, - 0x383e10, - 0x38420f, - 0x384bce, - 0x38528c, - 0x385591, - 0x3859d2, - 0x387891, - 0x387ece, - 0x38830b, - 0x38830e, - 0x38868f, - 0x388a4e, - 0x388dd3, - 0x389291, - 0x3896cc, - 0x3899ce, - 0x389e4c, - 0x38a293, - 0x38af50, - 0x38b3cc, - 0x38b6cc, - 0x38bb8b, - 0x38e58e, - 0x38ea8b, - 0x38f2cb, - 0x39150c, - 0x3979ca, - 0x39864c, - 0x39894c, - 0x398c49, - 0x39ac8b, - 0x39af48, - 0x39b509, - 0x39b50f, - 0x39cf4b, - 0xa139e64a, - 0x3a3a0c, - 0x3a49cb, - 0x3a4c89, - 0x3a56c8, - 0x3a630b, - 0x3a810a, - 0x3a838b, - 0x3a9b0c, - 0x3aa649, - 0x3aa888, - 0x3ad7cb, - 0x3b0a4b, - 0x3b2e0e, - 0x3b494b, - 0x3b83cb, - 0x3c420b, - 0x3c44c9, - 0x3c488d, - 0x3d57ca, - 0x3d9857, - 0x3da218, - 0x3dc0c9, - 0x3de3cb, - 0x3df714, - 0x3dfc0b, - 0x3e018a, - 0x3e2a0a, - 0x3e2c8b, - 0x3e4810, - 0x3e4c11, - 0x3e5a4a, - 0x3e654d, - 0x3e6c4d, - 0x3e940b, - 0x219f43, - 0xa17b5883, - 0x3cc686, - 0x3df0c5, - 0x27a587, - 0x2ddec6, - 0x164bf82, - 0x2729c9, - 0x20c004, - 0x2f0788, - 0x226403, - 0x32f5c7, - 0x247f82, - 0x2bbdc3, - 0xa1a0e042, - 0x2dd846, - 0x2defc4, - 0x2c8404, - 0x3a0f43, - 0xa22da842, - 0xa262f444, - 0x2664c7, - 0xa2a35b02, - 0x216543, - 0x222bc3, - 0x343b43, - 0x216443, - 0x2296c3, - 0x20cb83, - 0x117bc8, - 0x20d903, - 0x2000c2, - 0x793c8, - 0x216542, - 0x343b43, - 0x216443, - 0x2296c3, - 0xd903, - 0x20cb83, - 0x202b03, - 0x33d956, - 0x365753, - 0x258bc9, - 0x2b0e88, - 0x2c4a09, - 0x31c146, - 0x3509d0, - 0x218053, - 0x33eb48, - 0x285c87, - 0x2929c7, - 0x2aebca, - 0x363749, - 0x333bc9, - 0x25dd0b, - 0x34a906, - 0x32b98a, - 0x22ac46, - 0x238c43, - 0x231805, - 0x206c48, - 0x28b04d, - 0x35434c, - 0x271047, - 0x309f4d, - 0x22f004, - 0x23a30a, - 0x23b0ca, - 0x23b58a, - 0x218347, - 0x2461c7, - 0x249d44, - 0x279ec6, - 0x34abc4, - 0x222bc8, - 0x386e49, - 0x209a46, - 0x308cc8, - 0x24dd4d, - 0x2dcf09, - 0x318348, - 0x24d887, - 0x21364a, - 0x25bb46, - 0x34bbc4, - 0x2298c7, - 0x3d8b8a, - 0x242f8e, - 0x2823c5, - 0x29788b, - 0x232789, - 0x280609, - 0x20d547, - 0x20d54a, - 0x2d3807, - 0x306389, - 0x37b048, - 0x37948b, - 0x2efe85, - 0x23770a, - 0x233c89, - 0x33324a, - 0x22654b, - 0x2297cb, - 0x25da95, - 0x2f0c45, - 0x24d905, - 0x24064a, - 0x26ba4a, - 0x390f47, - 0x23d343, - 0x2cd108, - 0x2e640a, - 0x22c346, - 0x261289, - 0x27c4c8, - 0x2e1dc4, - 0x2512c9, - 0x2d49c8, - 0x2d5707, - 0x2510c6, - 0x3967c7, - 0x399b07, - 0x248c45, - 0x37500c, - 0x3e16c5, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0xd903, - 0x20cb83, - 0x216542, - 0x216543, - 0x2296c3, - 0x20d903, - 0x20cb83, - 0x216543, - 0x2296c3, - 0xd903, - 0x241c43, - 0x20cb83, - 0x1d5b83, - 0x793c8, - 0x216543, - 0x222bc3, - 0x343b43, - 0x216443, - 0x2296c3, - 0xd903, - 0x20cb83, - 0x793c8, - 0x216542, - 0x216543, - 0x3a8607, - 0x17b1c4, - 0x2296c3, - 0xbbc4, - 0x20cb83, - 0x19045, - 0x216542, - 0x2104c2, - 0x31d0c2, - 0x206002, - 0x205c02, - 0x2160c2, - 0x9a6c6, - 0x5c549, - 0x182487, - 0x1550e, - 0x99049, - 0x482ccc3, - 0x95c87, - 0x152e06, - 0x1643, - 0x11e505, + 0x3d24d3, + 0x312d88, + 0x291087, + 0x29ba47, + 0x2ba68a, + 0x3b95c9, + 0x336809, + 0x265a0b, + 0x35ca86, + 0x335a4a, + 0x22d286, + 0x23a103, + 0x27aa45, + 0x213cc8, + 0x29464d, + 0x2ffe8c, + 0x325447, + 0x3bc70d, + 0x22f8c4, + 0x23e08a, + 0x23fb4a, + 0x24000a, + 0x2ae887, + 0x249c47, + 0x24e084, + 0x282a46, + 0x325944, + 0x226788, + 0x23cac9, + 0x3171c6, + 0x3171c8, + 0x25248d, + 0x2e8549, + 0x31de08, + 0x219007, + 0x254b4a, + 0x2c48c6, + 0x3766c4, + 0x212747, + 0x366b0a, + 0x3ee84e, + 0x262fc5, + 0x2a014b, + 0x2ef6c9, + 0x27cfc9, + 0x2098c7, + 0x2098ca, + 0x36df07, + 0x3ce109, + 0x233e08, + 0x20bc0b, + 0x2fc3c5, + 0x260d4a, + 0x222389, + 0x370e0a, + 0x20700b, + 0x21264b, + 0x265795, + 0x2dbfc5, + 0x219085, + 0x244e0a, + 0x27468a, + 0x36f207, + 0x2190c3, + 0x2d8748, + 0x2f2d4a, + 0x22dfc6, + 0x271ec9, + 0x2833c8, + 0x2d4a04, + 0x28e189, + 0x29c8c8, + 0x2de047, + 0x2d0e86, + 0x215e07, + 0x2cfb07, + 0x24d3c5, + 0x262e0c, + 0x256bc5, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x20b642, + 0x21a043, + 0x214883, + 0x208c43, + 0x24acc3, + 0x21a043, + 0x214883, + 0x248803, + 0x24acc3, + 0x1e0283, + 0x1c3448, + 0x21a043, + 0x226783, + 0x20f583, + 0x214e43, + 0x214883, + 0x24acc3, + 0x1c3448, + 0x20b642, + 0x21a043, + 0x238b87, + 0x33f84, + 0x214883, + 0x3b284, + 0x24acc3, + 0x12c85, + 0x20b642, + 0x203142, + 0x313002, + 0x201ac2, + 0x203cc2, + 0x20ea82, + 0x1874a, + 0x12c105, + 0x12c10a, + 0x152aa49, + 0x14bd4b, + 0x5f887, + 0x1bc3c6, + 0xa5286, + 0x67409, + 0x12b1c7, + 0x3504, + 0x14a150a, + 0x1540e, + 0x134309, + 0x482ea03, + 0x9e747, + 0x152986, + 0xf83, + 0x127dc5, 0xc1, - 0x5216543, - 0x222bc3, - 0x2f5503, - 0x343b43, - 0x243543, - 0x216443, - 0x2e8706, - 0x2296c3, - 0x20cb83, - 0x202883, - 0x793c8, - 0x209b84, - 0x3a2887, - 0x3a0f83, - 0x25e704, - 0x20d3c3, - 0x20d5c3, - 0x343b43, - 0xb46c7, - 0x9c4, - 0x12db83, - 0x10e645, + 0x521a043, + 0x226783, + 0x204703, + 0x20f583, + 0x20bc83, + 0x214e43, + 0x2f4006, + 0x214883, + 0x24acc3, + 0x23ae43, + 0x1c3448, + 0x200984, + 0x26b247, + 0x204ec3, + 0x271984, + 0x206f43, + 0x209943, + 0x20f583, + 0xf5d87, + 0x1bfd04, + 0x2d03, + 0x1bee85, 0x66000c2, - 0x53c43, - 0x6a16542, - 0x6e90b89, - 0x7096ac9, - 0x96f4d, - 0x9728d, - 0x31d0c2, - 0xb1b84, - 0x10e689, + 0xbec3, + 0x6a0b642, + 0x6e99909, + 0x709f509, + 0x9fa0d, + 0x9fd4d, + 0x313002, + 0x5c204, + 0x1beec9, + 0x10210c, 0x2003c2, - 0x76b1a88, - 0x105504, - 0x320b43, - 0x793c8, - 0x49e04, - 0x1407242, + 0x765c108, + 0x10b844, + 0x32b843, + 0x1c3448, + 0x8d304, + 0x1419002, 0x14005c2, - 0x1407242, - 0x151a146, - 0x23bb83, - 0x2cc803, - 0x7e16543, - 0x23a304, - 0x8622bc3, - 0x8f43b43, - 0x2042c2, - 0x2b1b84, - 0x2296c3, - 0x38c643, - 0x203c82, - 0x20cb83, - 0x221a42, - 0x30a303, - 0x201ec2, - 0x26a603, - 0x220b03, - 0x2089c2, - 0x793c8, - 0x82fdcc9, - 0x27b43, - 0x23bb83, - 0x20b2c8, - 0x8b8c643, - 0x203c82, - 0x30a303, - 0x201ec2, - 0x26a603, - 0x220b03, - 0x2089c2, - 0x259187, - 0x30a303, - 0x201ec2, - 0x26a603, - 0x220b03, - 0x2089c2, - 0x216543, - 0x4702, - 0x6c43, - 0x2bc2, - 0x13242, - 0xe8c2, - 0x11de42, - 0x4a42, - 0x4da82, - 0x253c43, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2b1b84, - 0x243543, - 0x216443, - 0x21b544, - 0x2296c3, - 0x20cb83, - 0x204642, - 0x21f6c3, - 0x793c8, - 0x216543, - 0x222bc3, - 0x343b43, - 0x216443, - 0x2296c3, - 0x20cb83, - 0x8503, - 0x2d4c2, - 0x253c43, - 0x216542, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2b1b84, - 0x2296c3, - 0x20cb83, - 0x355b45, - 0x22a042, + 0x1419002, + 0x151fbc6, + 0x2405c3, + 0x2507c3, + 0x7e1a043, + 0x23e084, + 0x8626783, + 0x8e0f583, + 0x206502, + 0x25c204, + 0x214883, + 0x2100c3, + 0x201802, + 0x24acc3, + 0x225542, + 0x313783, + 0x202fc2, + 0x201683, + 0x224e43, + 0x20d442, + 0x1c3448, + 0x82a2449, + 0x10210c, + 0x29083, + 0x2405c3, + 0x21ff08, + 0x8a100c3, + 0x201802, + 0x313783, + 0x202fc2, + 0x201683, + 0x224e43, + 0x20d442, + 0x3ae507, + 0x313783, + 0x202fc2, + 0x201683, + 0x224e43, + 0x20d442, + 0x21a043, + 0x2742, + 0x13cc3, + 0x1b42, + 0xa842, + 0x1c82, + 0x5942, + 0x3342, + 0x5502, + 0x20bec3, + 0x21a043, + 0x226783, + 0x20f583, + 0x25c204, + 0x20bc83, + 0x214e43, + 0x225a04, + 0x214883, + 0x24acc3, + 0x204d42, + 0x205443, + 0x1c3448, + 0x21a043, + 0x226783, + 0x20f583, + 0x214e43, + 0x214883, + 0x24acc3, + 0x1a42, + 0xc503, + 0x7982, + 0x20bec3, + 0x20b642, + 0x21a043, + 0x226783, + 0x20f583, + 0x25c204, + 0x214883, + 0x24acc3, + 0x33a505, + 0x22ccc2, 0x2000c2, - 0x793c8, - 0xaec0ad2, - 0x1472588, - 0x1b2b8a, - 0x3ec5, - 0x343b43, - 0x230d41, + 0x1c3448, + 0xaf12412, + 0xb2d9f88, + 0x10210c, + 0x1470708, + 0x16b8a, + 0x5985, + 0x53c7, + 0x20f583, + 0x201601, 0x2009c1, + 0x202d01, + 0x201501, + 0x200a41, + 0x22d881, 0x200a01, - 0x202c41, - 0x201b41, - 0x211101, - 0x209c01, - 0x230e41, - 0x2fd181, + 0x205c41, + 0x24a501, 0x200001, 0x2000c1, 0x200201, - 0x146c05, - 0x793c8, + 0x14f985, + 0x1c3448, 0x200101, - 0x201381, + 0x200cc1, 0x200501, - 0x201281, + 0x200bc1, 0x200041, 0x200801, 0x200181, - 0x200e01, + 0x200c01, 0x200701, 0x2004c1, - 0x200bc1, + 0x200ec1, 0x200581, 0x2003c1, - 0x200a81, - 0x2210c1, + 0x2015c1, + 0x207a81, 0x200401, 0x200741, 0x2007c1, 0x200081, - 0x2017c1, - 0x201641, - 0x207281, - 0x2024c1, - 0x208481, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x216542, - 0x216543, - 0x222bc3, + 0x201101, + 0x200f81, + 0x202d81, + 0x203481, + 0x2033c1, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x20b642, + 0x21a043, + 0x226783, 0x2003c2, - 0x20cb83, - 0x22a83, - 0xb46c7, - 0x1cdf07, - 0x32f46, - 0x4280a, - 0x95748, - 0x60c88, - 0x61607, - 0xbc3c4, - 0x15c246, - 0xeec85, - 0x10f7c5, - 0x129643, - 0x30846, - 0x13906, - 0x25dd04, - 0x336147, - 0x793c8, - 0x2e8fc4, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x16542, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x330b88, - 0x202304, - 0x23c4c4, - 0x20e804, - 0x39dac7, - 0x2e59c7, - 0x216543, - 0x23ec8b, - 0x33100a, - 0x38f947, - 0x300288, - 0x353348, - 0x222bc3, - 0x3c2e87, - 0x2f5503, - 0x214fc8, - 0x224309, - 0x2b1b84, - 0x243543, - 0x244688, - 0x216443, - 0x2e320a, - 0x2e8706, - 0x3b1d47, - 0x2296c3, - 0x2f1b46, - 0x3d2288, - 0x20cb83, - 0x275546, - 0x2fd6cd, - 0x2ffe48, - 0x305b0b, - 0x223bc6, - 0x354b47, - 0x21d985, - 0x22e68a, - 0x2fce05, - 0x26f9ca, - 0x22a042, - 0x201643, - 0x35a784, + 0x24acc3, + 0xf5d87, + 0x89207, + 0x38286, + 0x473ca, + 0x9e208, + 0x6bd08, + 0x6c747, + 0xc8b04, + 0x177f46, + 0xfaf05, + 0x1a4045, + 0xb8743, + 0x1b506, + 0x5f986, + 0x265a04, + 0x33e2c7, + 0x1c3448, + 0x2eef84, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0xb642, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x339688, + 0x3496c4, + 0x241004, + 0x211d44, + 0x2dab87, + 0x2f1a07, + 0x21a043, + 0x24354b, + 0x3b43ca, + 0x3a9b07, + 0x3f11c8, + 0x21e908, + 0x226783, + 0x33ba07, + 0x204703, + 0x217b48, + 0x225d89, + 0x25c204, + 0x20bc83, + 0x297b48, + 0x214e43, + 0x2eeb8a, + 0x2f4006, + 0x3b52c7, + 0x214883, + 0x2fe146, + 0x3e4088, + 0x24acc3, + 0x25e906, + 0x30568d, + 0x3070c8, + 0x30be4b, + 0x30f646, + 0x20d847, + 0x223305, + 0x3e890a, + 0x365905, + 0x26ec0a, + 0x22ccc2, + 0x200f83, + 0x260644, 0x200006, - 0x3bb603, - 0x2b4083, - 0x28bb03, - 0x202303, - 0x37a403, - 0x202002, - 0x39d805, - 0x2b5949, - 0x209983, - 0x2492c3, - 0x203b43, - 0x216c43, + 0x3c3043, + 0x2b3c83, + 0x2332c3, + 0x23ac83, + 0x3ec3c3, + 0x201902, + 0x3a52c5, + 0x2bfbc9, + 0x204d03, + 0x24da43, + 0x205d83, + 0x20cb03, 0x200201, - 0x2d2807, - 0x2eaa85, - 0x3c1fc3, - 0x26b383, - 0x3e9683, - 0x20e804, - 0x3c3303, - 0x2271c8, - 0x35bdc3, - 0x3e1ecd, - 0x284a88, - 0x20b486, - 0x2e9443, - 0x35a2c3, - 0x361ac3, - 0xda16543, - 0x23bdc8, - 0x23ec84, - 0x247203, - 0x249f03, + 0x2ced07, + 0x2f2345, + 0x3ca803, + 0x262603, + 0x3f2583, + 0x211d44, + 0x33be83, + 0x214188, + 0x377ac3, + 0x31c8cd, + 0x2901c8, + 0x2200c6, + 0x304103, + 0x38bc43, + 0x3af583, + 0xde1a043, + 0x240908, + 0x243544, + 0x24a083, + 0x24e8c3, 0x200106, - 0x24e888, - 0x266943, - 0x228fc3, - 0x2ba1c3, - 0x220a83, - 0x22e6c3, - 0x23a543, - 0x222bc3, - 0x22d743, - 0x255ec3, - 0x209a43, - 0x290583, - 0x325243, - 0x20ae83, - 0x232d43, - 0x3a4e85, - 0x25c504, - 0x25dfc7, - 0x25c082, - 0x260183, - 0x263c46, - 0x265743, - 0x266c03, - 0x2822c3, - 0x35cb03, - 0x21fb43, - 0x32d103, - 0x2a1807, - 0xe743b43, - 0x2d3103, - 0x207c83, - 0x20e443, - 0x26a7c3, - 0x217203, - 0x3b5945, - 0x37cac3, - 0x252749, - 0x2012c3, - 0x3139c3, - 0xea53203, - 0x2daf43, - 0x20e843, - 0x214808, - 0x2b5886, - 0x35c8c6, - 0x2be186, - 0x267347, - 0x202143, - 0x233243, - 0x216443, - 0x295846, - 0x2165c2, - 0x2e69c3, - 0x33c405, - 0x2296c3, - 0x31c887, - 0x160d903, - 0x29ae43, - 0x2183c3, - 0x23c9c3, - 0x23b843, - 0x20cb83, - 0x21de86, - 0x202fc6, - 0x37db83, - 0x29a8c3, - 0x21f6c3, - 0x259143, - 0x317783, - 0x309603, - 0x30ac03, - 0x219045, - 0x24c343, - 0x250046, - 0x21b103, - 0x2f4f88, - 0x22a543, - 0x22a549, - 0x37ad08, - 0x220548, - 0x22eac5, - 0x38ac4a, - 0x3e08ca, - 0x3e110b, - 0x3e1ac8, - 0x2aa6c3, - 0x230143, - 0x390b83, - 0x2f34c3, - 0x312588, - 0x355303, - 0x36c344, - 0x203bc2, - 0x22e683, - 0x24c0c3, + 0x252c48, + 0x242ec3, + 0x220ac3, + 0x2c5383, + 0x224dc3, + 0x3e8943, + 0x21c0c3, + 0x226783, + 0x20ff83, + 0x25aa43, + 0x265883, + 0x2307c3, + 0x340403, + 0x213703, + 0x201d03, + 0x3ac745, + 0x2673c4, + 0x268507, + 0x2698c2, + 0x26a803, + 0x26ee86, + 0x270683, + 0x270a03, + 0x28e3c3, + 0x378803, + 0x221943, + 0x201c83, + 0x2ad347, + 0xea0f583, + 0x240243, + 0x20afc3, + 0x211983, + 0x231a43, + 0x21cb03, + 0x22b2c5, + 0x388583, + 0x24e349, + 0x200c03, + 0x31ac43, + 0xee5b543, + 0x22bd83, + 0x203c83, + 0x219608, + 0x2bfb06, + 0x3785c6, + 0x2ca886, + 0x271607, + 0x2252c3, + 0x2384c3, + 0x214e43, + 0x29e306, + 0x20ffc2, + 0x2f33c3, + 0x344245, + 0x214883, + 0x32ad07, + 0x1608c43, + 0x2a1943, + 0x241a83, + 0x241503, + 0x247043, + 0x24acc3, + 0x366386, + 0x3bfdc6, + 0x389a83, + 0x3407c3, + 0x205443, + 0x21dcc3, + 0x31d4c3, + 0x310483, + 0x314143, + 0x212c85, + 0x2423c3, + 0x2423c6, + 0x21bd03, + 0x3c3688, + 0x236883, + 0x236889, + 0x263988, + 0x224888, + 0x22e2c5, + 0x23c04a, + 0x23d60a, + 0x24174b, + 0x245088, + 0x2ce083, + 0x216ec3, + 0x314183, + 0x2edd03, + 0x315888, + 0x334d83, + 0x3c8704, + 0x205e02, + 0x23fac3, + 0x265603, 0x2007c3, - 0x3d8883, - 0x281003, - 0x202883, - 0x22a042, - 0x2d3703, - 0x241403, - 0x31a2c3, - 0x31b444, - 0x35a784, - 0x227083, - 0x793c8, - 0xdf1854c, - 0xe2ac245, - 0xbb705, + 0x3af603, + 0x283143, + 0x23ae43, + 0x22ccc2, + 0x2233c3, + 0x246143, + 0x31fd43, + 0x321d84, + 0x260644, + 0x2355c3, + 0x1c3448, + 0xe31e00c, + 0xe6ea545, + 0xdefc5, 0x2000c2, - 0x200ac2, - 0x202002, - 0x202cc2, + 0x200b02, + 0x201902, + 0x2029c2, 0x200202, - 0x202402, - 0x250cc2, - 0x202bc2, + 0x205202, + 0x244b02, + 0x201b42, 0x200382, - 0x200c42, - 0x30df02, - 0x203742, - 0x277782, - 0x200a82, - 0x2160c2, - 0x208402, - 0x219d02, - 0x2037c2, - 0x2cb042, - 0x205d42, - 0x200682, - 0x214f42, - 0x212742, - 0x202b02, - 0x201702, - 0x203782, - 0x202a02, - 0xc2, - 0xac2, - 0x2002, - 0x2cc2, - 0x202, - 0x2402, - 0x50cc2, - 0x2bc2, - 0x382, - 0xc42, - 0x10df02, - 0x3742, - 0x77782, - 0xa82, - 0x160c2, - 0x8402, - 0x19d02, - 0x37c2, - 0xcb042, - 0x5d42, - 0x682, - 0x14f42, - 0x12742, - 0x2b02, - 0x1702, - 0x3782, - 0x2a02, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x1642, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x16542, - 0x216542, - 0x20cb83, - 0x10216543, - 0x343b43, - 0x216443, - 0xeb2c7, - 0x7ca83, - 0x2386c2, - 0x793c8, - 0x216543, - 0x222bc3, - 0x343b43, - 0x30103, - 0x2296c3, - 0xd903, - 0x7ca83, - 0x20cb83, - 0xe042, - 0x2001c2, - 0x15ca1c5, - 0x146c05, - 0x20cd42, - 0x793c8, - 0x16542, - 0x23dec2, - 0x204202, - 0x202702, - 0x23a382, - 0x24ba82, - 0x10f7c5, - 0x201482, - 0x203c82, - 0x201102, - 0x203382, - 0x208402, - 0x2473c2, - 0x20b5c2, - 0x21c282, - 0x11278384, - 0x142, - 0xb46c7, - 0x15a43, - 0x1b63cd, - 0xeed09, - 0xef94b, - 0xf1748, - 0x64f09, - 0x114786, - 0x343b43, - 0x793c8, - 0x9c4, - 0x12db83, - 0x10e645, - 0x793c8, - 0xebe47, - 0x12455f47, - 0x12a5f244, - 0x62246, - 0x10e689, - 0xb448e, - 0x13e247, - 0x15d8303, - 0x12e0ad42, - 0x9989, - 0xa144, - 0x2000c2, - 0x25dd04, - 0x216542, - 0x216543, - 0x2104c2, - 0x222bc3, - 0x1a003, - 0x200382, - 0x2e8fc4, - 0x243543, - 0x256e02, - 0x2296c3, - 0x4ba82, - 0x2003c2, - 0x20cb83, - 0x24d906, - 0x33538f, - 0x602, - 0x723543, - 0x2f5dca, - 0x793c8, - 0x216542, - 0x2f5503, - 0x343b43, - 0x216443, - 0xd903, - 0x147b5e07, - 0x157cd06, - 0x13f046, - 0x14bc4b88, - 0x1db944, - 0x14ebe40a, - 0x15abe40d, - 0xb4488, - 0x142e44b, - 0x147888a, - 0x15c66b43, - 0xf3949, - 0x16104b48, - 0x1664c347, - 0x15e360a, - 0x1513e47, - 0xaec8b, - 0x16a9068c, - 0xa5545, - 0xcf9c5, - 0x11c5c9, - 0x1a0c84, - 0x117703, - 0x152be545, - 0x124443, - 0x15635c43, - 0x124443, - 0x1d7607, - 0x2bdc2, - 0x6502, - 0x6502, - 0x4182, - 0x6502, - 0x4a42, - 0xd42, - 0x3242, - 0x146c05, - 0xb46c7, - 0x1db944, - 0x102784, - 0x216542, - 0x216543, - 0x343b43, - 0x2296c3, - 0x2000c2, - 0x200c82, - 0x206342, - 0x17a16543, - 0x247382, - 0x222bc3, - 0x201282, - 0x234402, - 0x343b43, - 0x2038c2, - 0x271cc2, - 0x22f402, - 0x200cc2, - 0x29a402, - 0x200802, - 0x200d82, - 0x205102, - 0x2870c2, - 0x2027c2, - 0x132a0c, - 0x2c1442, - 0x25adc2, - 0x230c02, - 0x253582, - 0x216443, - 0x200bc2, - 0x2296c3, - 0x20f502, - 0x298642, - 0x20cb83, - 0x249342, - 0x202b02, - 0x20a0c2, - 0x2014c2, - 0x2010c2, - 0x215a82, - 0x20d782, - 0x232982, - 0x22cec2, - 0x325d0a, - 0x36918a, - 0x39ecca, - 0x3e9b42, - 0x20cec2, - 0x2be702, - 0x17f8cc49, - 0x183bb68a, - 0x14380c7, - 0x18601682, - 0x1430483, - 0x2c02, - 0x1bb68a, - 0x14f0ce, - 0x21d684, - 0xe8805, - 0x18e16543, - 0x48383, - 0x222bc3, - 0x256d44, - 0x343b43, - 0x2b1b84, - 0x243543, - 0x13e049, - 0x133e86, - 0x216443, - 0xf1dc4, - 0x1b03, - 0x2296c3, - 0x149f05, - 0x20d903, - 0x20cb83, - 0x1561c04, - 0x24c343, - 0x114bc4, - 0x201643, - 0x793c8, - 0x154db43, - 0x123486, - 0x155c1c4, - 0x1a0d45, - 0x1a0a8a, - 0x130602, - 0x199a16cd, - 0x1b3dc6, - 0x147f11, - 0x19f8cc49, - 0x1a0dc8, - 0x42008, - 0x20869487, - 0x3b42, - 0x18cdc7, - 0x208ce, - 0x146c0b, - 0x148d8b, - 0x1c0dca, - 0x34347, - 0x793c8, - 0xb4188, - 0xfd87, - 0x20c1fe0b, - 0x22a87, - 0x4242, - 0x3288d, - 0x163907, - 0x127b0a, - 0x12510c, - 0x1252cf, - 0x1ca4cf, - 0x212eb34d, - 0x2e702, - 0x16542, - 0x904c8, - 0x214e91cc, - 0x1aab8a, - 0xeb94a, - 0x7d54a, - 0x84888, - 0x1db88, - 0x68608, - 0xebe08, - 0x17bbc8, - 0x3242, - 0x1ca24f, - 0xcaa8b, - 0x1dcf08, - 0x3e1c7, - 0x874ca, - 0x3aa4b, - 0x51b89, - 0x873c7, - 0x136f46, - 0x1da88, - 0x1e0a8c, - 0xf4547, - 0x31a0a, - 0x1c74c8, - 0x32f4e, - 0x3370e, - 0x3418b, - 0x3518b, - 0x3678b, - 0xfc849, - 0x880cb, - 0xb688d, - 0x158a8b, - 0xf7a8d, - 0xf7e0d, - 0x12378a, - 0x15a5cb, - 0x1e150b, - 0x3f545, - 0x219c4bd0, - 0x21c41a88, - 0x3610f, - 0x7854f, - 0x2254d, - 0x17a710, - 0x13242, - 0x22258908, - 0x1cdd88, - 0x1b0350, - 0x106a4e, - 0x2275bd85, - 0x555cb, - 0x13d150, - 0x1dc8a, - 0x35349, - 0x6ff47, - 0x70287, - 0x70447, - 0x71587, - 0x72407, - 0x72787, - 0x734c7, - 0x73a07, - 0x73f07, - 0x74287, - 0x74947, - 0x74b07, - 0x74cc7, - 0x74e87, - 0x75207, - 0x756c7, - 0x75ec7, - 0x76287, - 0x768c7, - 0x76b87, - 0x76d47, - 0x77047, - 0x77647, - 0x77847, - 0x78d07, - 0x78ec7, - 0x79087, - 0x79807, - 0x7a047, - 0x7a8c7, - 0x7d387, - 0x7d7c7, - 0x7db47, - 0x7dd07, - 0x7e107, - 0x7e547, - 0x7ea07, - 0x7ef87, - 0x7f147, - 0x7f307, - 0x7f747, - 0x7fd07, - 0x80247, - 0x80847, - 0x80a07, - 0x810c7, - 0x81607, - 0xc342, - 0x6870a, - 0x1a608, - 0x1bbfcc, - 0x12fb47, - 0x44405, - 0xc3d91, - 0x13dc6, - 0x12100a, - 0x9034a, - 0x62246, - 0xb7f4b, - 0x642, - 0x39c91, - 0xc5889, - 0xa0689, - 0xa12c6, - 0x5102, - 0x9c50a, - 0xb4e49, - 0xb558f, - 0xb5b8e, - 0xb7288, - 0x22a17a92, - 0x19b88, - 0x22f2fd07, - 0x1ec82, - 0x15c709, - 0x15490a, - 0x23347589, - 0x19de09, - 0x19de0c, - 0x15f4b, - 0x436ce, - 0xe6cc, - 0xf364f, - 0x1bfdce, - 0x4594c, - 0x5e789, - 0x658d1, - 0x65e88, - 0x7bd12, - 0x7cd4d, - 0x7e6cd, - 0x8564b, - 0x8b795, - 0x932c9, - 0x18500a, - 0x1b0049, - 0x1d4350, - 0x99acb, - 0x9ee0f, - 0xa3fcb, - 0xad6cc, - 0xbac90, - 0xd844a, - 0x18264d, - 0x19210e, - 0xbc48a, - 0xc090c, - 0x1997d4, - 0xc5511, - 0xca64b, - 0xccc8f, - 0xd048d, - 0xd42ce, - 0xd55cc, - 0xd5dcc, - 0xd814b, - 0x14284e, - 0x197d50, - 0x1aa38b, - 0xddacd, - 0xe730f, - 0xec90c, - 0x108b4e, - 0x10c891, - 0x18214c, - 0x11ca07, - 0x144e8d, - 0x15ffcc, - 0x1693d0, - 0x17208d, - 0x172dc7, - 0x195a10, - 0x1a5888, - 0x1abd0b, - 0xbd9cf, - 0x1bc248, - 0x68e8d, - 0x111f10, - 0x174389, - 0x237c4b88, - 0x23ac2a86, - 0xc3943, - 0x52a89, - 0x54c9, - 0xcbc45, - 0x7bc2, - 0x18fd89, - 0x62c8a, - 0x23e7c1c6, - 0x147c1cd, - 0x24363b04, - 0x1da806, - 0x2630a, - 0x2778d, - 0x246da54b, - 0x2484f809, - 0x2b203, - 0x11b88a, - 0xe9951, - 0xe9d89, - 0xeb8c7, - 0xec648, - 0xecd07, - 0x12fc08, - 0x14808b, - 0x1326c9, - 0xf2550, - 0xf2a0c, - 0x24ef31cd, - 0xf5c48, - 0xf7685, - 0x1d0608, - 0x19a8ca, - 0x16c507, - 0x1cc2, - 0x25239155, - 0x13de4a, - 0x1363c9, - 0x5688, - 0xa2549, - 0x1df185, - 0x11c70a, - 0x97c4f, - 0xa55cb, - 0x15ee8c, - 0xc8052, - 0x1b5a06, - 0x9a905, - 0x15f148, - 0xfa0cb, - 0xfa9d1, - 0x143847, - 0x5788a, - 0x25704a05, - 0x1b560c, - 0x13a843, - 0x1953c6, - 0x473c2, - 0x10ad8b, - 0x10b8ca, - 0x150bc4c, - 0xf48c8, - 0xf7c48, - 0x25a05706, - 0x1b7287, - 0x4a02, - 0x1ec2, - 0x1a6e50, - 0x67dc7, - 0x67ecf, - 0x30846, - 0x12270e, - 0x9d3cb, - 0x46c88, - 0x51f49, - 0x117052, - 0x11820d, - 0x118d88, - 0xef809, - 0x19c60d, - 0x112c9, - 0x6824b, - 0x69d88, - 0x73d08, - 0x75388, - 0x771c9, - 0x773ca, - 0x799cc, - 0x1e17ca, - 0xf14ca, - 0x1177c7, - 0xa38ca, - 0x738d, - 0x174cd1, - 0x25ed45c6, - 0x17768b, - 0xbe0c, - 0x414c8, - 0x3d609, - 0x14c6cd, - 0x57110, - 0x190c8d, - 0x6502, - 0x6540d, - 0x4a42, - 0x66342, - 0x11770a, - 0x263d034a, - 0x25c4a, - 0x26680b48, - 0x120f0a, - 0x12f4cb, - 0x3398c, - 0x1203ca, - 0x2692064f, - 0x120a0e, - 0x26de9a05, - 0x12bf48, - 0xe042, - 0x1420a83, - 0x1a38e20e, - 0x1ab2eb8e, - 0x1b202cca, - 0x1bb7c04e, - 0x1c32d84e, - 0x1cb3408c, - 0x14380c7, - 0x14380c9, - 0x1430483, - 0x1d3419cc, - 0x1db54e89, - 0x1e36d309, - 0x1eba0889, - 0x2c02, - 0x1a3511, - 0x12ead1, - 0x2c0d, - 0x17bf91, - 0x12d791, - 0x133fcf, - 0x14190f, - 0x154dcc, - 0x16d24c, - 0x1a07cc, - 0x1b764d, - 0x17d415, - 0xc510c, - 0xe140c, - 0x1439d0, - 0x14a18c, - 0x18758c, - 0x18df59, - 0x1bed19, - 0x1cabd9, - 0x1cc7d4, - 0x1d2454, - 0x1e8694, - 0x5e54, - 0xff14, - 0x1f2c51c9, - 0x1f9e8949, - 0x202e14c9, - 0x1a666089, - 0x2c02, - 0x1ae66089, - 0x2c02, - 0x5e4a, - 0x2c02, - 0x1b666089, - 0x2c02, - 0x5e4a, - 0x2c02, - 0x1be66089, - 0x2c02, - 0x1c666089, - 0x2c02, - 0x1ce66089, - 0x2c02, - 0x5e4a, - 0x2c02, - 0x1d666089, - 0x2c02, - 0x5e4a, - 0x2c02, - 0x1de66089, - 0x2c02, - 0x1e666089, - 0x2c02, - 0x5e4a, - 0x2c02, - 0x1ee66089, - 0x2c02, - 0x5e4a, - 0x2c02, - 0x1f666089, - 0x2c02, - 0x1fe66089, - 0x2c02, - 0x20666089, - 0x2c02, - 0x5e4a, - 0x2c02, - 0x1400401, - 0x147f05, - 0x1c0dc4, - 0x8903, - 0x8502, - 0x54642, - 0x1419303, - 0x1403603, - 0x14fea83, - 0x18e20e, - 0x12eb8e, - 0x89e8e, - 0x2cca, - 0x17c04e, - 0x12d84e, - 0x13408c, - 0x1419cc, - 0x154e89, - 0x16d309, - 0x1a0889, - 0xc51c9, - 0x1e8949, - 0xe14c9, - 0x143a8d, - 0x6109, - 0x101c9, - 0x3d1c2, - 0x1cbcc4, - 0x1cec84, - 0x1d1104, - 0x1df604, - 0xaef44, - 0xacdc4, - 0x4a9c4, - 0x35644, - 0x1a704, - 0x136fc4, - 0x7b0c9, - 0x7b0cc, - 0x158286, - 0x15828e, - 0x7ce84, - 0x155cf03, - 0x14a007, - 0x148ae0c, - 0x9983, - 0x136fc4, - 0x13242, - 0xe91c8, - 0xd6b04, - 0x1e9706, - 0xdd5c4, - 0x121646, - 0x1f8c2, - 0x7281, - 0x27c44, - 0x69306, - 0x15b83, - 0x9983, - 0x71703, - 0xc7e43, - 0x14803, - 0xf7a03, - 0xc8045, - 0x5adc2, - 0x148a42, - 0x1a1e88, - 0xee7c7, - 0x132747, - 0x3242, - 0x2000c2, - 0x216542, - 0x2104c2, - 0x218242, - 0x200382, - 0x2003c2, - 0x201ec2, - 0x216543, - 0x222bc3, - 0x343b43, - 0x26a7c3, - 0x2296c3, - 0x20cb83, - 0x793c8, - 0x216543, - 0x222bc3, - 0x2296c3, - 0x20cb83, - 0xb303, - 0x343b43, - 0xb1b84, - 0x2000c2, - 0x253c43, - 0x29216543, - 0x3a5287, - 0x343b43, - 0x21b283, - 0x21b544, - 0x2296c3, - 0x20cb83, - 0x23098a, - 0x24d905, - 0x21f6c3, - 0x213402, - 0x793c8, - 0x296df98a, - 0xe01, - 0x793c8, - 0x16542, - 0x138402, - 0x29e4f58b, - 0x2a2093c4, - 0x163a45, - 0x1403ec5, - 0xe91c6, - 0x2a603ec5, - 0x5fa83, - 0x1b0243, - 0x9c4, - 0x12db83, - 0x10e645, - 0x146c05, - 0x793c8, - 0x22a87, - 0x16543, - 0x1b4bcd, - 0x2ae42647, - 0x1386, - 0x2b17be85, - 0x186012, - 0x1447, - 0x1e48a, - 0x17588, - 0x1e387, - 0x7368a, - 0x1bd188, - 0x110a47, - 0x165d8f, - 0x3db87, - 0x4bb86, - 0x13d150, - 0x19350f, - 0x1b009, - 0x1da884, - 0x2b40150e, - 0x5b0c9, - 0x74fc6, - 0x1113c9, - 0x190a86, - 0x6ac6, - 0xb8e4c, - 0x3ac4a, - 0x51d07, - 0x14140a, - 0x1909, - 0x25e8c, - 0x2954a, - 0x6b44a, - 0x10e689, - 0x1da806, - 0x51dca, - 0x11934a, - 0xa954a, - 0x114309, - 0xe8b88, - 0xe8e06, - 0xef08d, - 0x5b88b, - 0xcc205, - 0x2bb1e14c, - 0x13e247, - 0x10fcc9, - 0xd6187, - 0xc5c14, - 0x11230b, - 0x1dcd4a, - 0x116eca, - 0xb080d, - 0x152f6c9, - 0x117fcc, - 0x118b8b, - 0x31a03, - 0x31a03, - 0x32f46, - 0x31a03, - 0xe91c8, - 0x157243, - 0x4ebc4, - 0x5fc83, - 0x14a9607, - 0x51f05, - 0x15186c3, - 0x5c549, - 0xc8045, - 0xfa0cb, - 0x14ecb83, - 0x152e06, - 0x1523947, - 0x1d45c7, - 0x2c97ce89, - 0x1d1a86, - 0x53c43, - 0x793c8, - 0x16542, - 0x56d44, - 0x43ac3, - 0x155b45, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x203b43, - 0x216543, - 0x222bc3, - 0x2f5503, - 0x343b43, - 0x216443, - 0x2296c3, - 0x20cb83, - 0x2a0843, - 0x201643, - 0x203b43, - 0x25dd04, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x20e603, - 0x2192c3, - 0x213402, - 0x2e17cf85, - 0x1438003, - 0x216543, - 0x222bc3, - 0x21a003, - 0x2f5503, - 0x343b43, - 0x2b1b84, - 0x34b203, - 0x233243, - 0x216443, - 0x2296c3, - 0x7ca83, - 0x20cb83, - 0x21f6c3, - 0x2ee0fc03, - 0xc7f49, - 0x16542, - 0x225103, - 0x2fa16543, - 0x222bc3, - 0x252183, - 0x343b43, - 0x2207c3, - 0x233243, - 0x20cb83, - 0x2037c3, - 0x3df304, - 0x793c8, - 0x30216543, - 0x222bc3, - 0x2b7343, - 0x343b43, - 0x216443, - 0x21b544, - 0x2296c3, - 0x20cb83, - 0x238743, - 0x793c8, - 0x30a16543, - 0x222bc3, - 0x2f5503, - 0x20d903, - 0x20cb83, - 0x793c8, - 0x14380c7, - 0x253c43, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2b1b84, - 0x21b544, - 0x2296c3, - 0x20cb83, - 0x146c05, - 0xb46c7, - 0xc5e4b, - 0x31a3ca06, - 0x31efdb4b, - 0xea184, - 0xcc205, - 0x1472588, - 0x2f20d, - 0x1c4b88, - 0x136fc4, - 0x3264ccc5, - 0x27804, - 0x16542, - 0x1a143, - 0x158185, - 0x386c2, - 0x34aac5, - 0x793c8, - 0x33e98f0d, - 0x343a11ca, - 0x24642, - 0x5483, - 0x164f4f, - 0x18242, - 0x7ce84, - 0x136fc4, - 0x16542, - 0x2000c2, - 0x253c43, - 0x216543, - 0x343b43, - 0x2b1b84, - 0x216443, - 0x21b544, - 0x2296c3, - 0x20cb83, - 0x21f6c3, - 0x216543, - 0x222bc3, - 0x2296c3, - 0x20cb83, - 0x19045, - 0x331408, - 0x25dd04, - 0x379ac6, - 0x3a0686, - 0x793c8, - 0x2b6643, - 0x2f6689, - 0x21c495, - 0x1c49f, - 0x216543, - 0xf4d87, - 0x38db12, - 0x16a146, - 0x182c45, - 0x1dc8a, - 0x35349, - 0x38d8cf, - 0x2e8fc4, - 0x237a05, - 0x313790, - 0x2b1087, - 0x20d903, - 0x2c2308, - 0x13846, - 0x29fc4a, - 0x26fb04, - 0x304443, - 0x213402, - 0x2fe64b, - 0x222bc3, - 0x343b43, - 0xd903, - 0x15b044, - 0x216543, - 0x222bc3, - 0x343b43, - 0x216443, - 0x2296c3, - 0xd903, - 0x20cb83, - 0x309a43, - 0x216542, - 0x187003, - 0x149c04, - 0x2296c3, - 0x20cb83, - 0x364419c5, - 0x1de746, - 0x216543, - 0x222bc3, - 0x343b43, - 0x216443, - 0x20cb83, - 0x216543, - 0x222bc3, - 0x343b43, - 0x21b283, - 0x233c83, - 0x20cb83, - 0x53c43, - 0x216542, - 0x216543, - 0x222bc3, - 0x2296c3, - 0xd903, - 0x20cb83, - 0x19f42, - 0x2000c2, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x3ec5, - 0x63a09, - 0x9983, - 0x25dd04, - 0x216543, - 0x222bc3, - 0x28d4c4, - 0x2296c3, - 0x20cb83, - 0x793c8, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x7ca83, - 0x20cb83, - 0x1b7409, - 0xe804, - 0x216543, - 0x3242, - 0x222bc3, - 0x2f5503, - 0x20e443, - 0x216443, - 0x2296c3, - 0xd903, - 0x20cb83, - 0x2a02, - 0x216543, - 0x222bc3, - 0x343b43, - 0x3636c4, - 0x2b1b84, - 0x2296c3, - 0x20cb83, - 0x201643, - 0x4702, - 0x216542, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x7ca83, - 0x20cb83, - 0x793c8, - 0x216543, - 0x222bc3, - 0x343b43, - 0x284103, - 0xe103, - 0x1b283, - 0x2296c3, - 0x7ca83, - 0x20cb83, - 0x38bc6, - 0x325d0a, - 0x3453c9, - 0x35fd4b, - 0x36084a, - 0x36918a, - 0x37860b, - 0x39084a, - 0x3979ca, - 0x39ecca, - 0x39ef4b, - 0x3c5589, - 0x3d368a, - 0x3d3acb, - 0x3dfecb, - 0x3e914a, - 0x4042, - 0x216543, - 0x222bc3, - 0x2f5503, - 0x216443, - 0x2296c3, - 0xd903, - 0x20cb83, - 0x3ecb, - 0x106a47, - 0x69a08, - 0x19c744, - 0x1db944, - 0x98e48, - 0xedac6, - 0x1481c6, - 0x13a09, - 0x793c8, - 0x216543, - 0x1dc84, - 0x26ff44, - 0x215d42, - 0x21b544, - 0x30eb85, - 0x203b43, - 0x25dd04, - 0x216543, - 0x23ec84, - 0x222bc3, - 0x256d44, - 0x2e8fc4, - 0x2b1b84, - 0x233243, - 0x2296c3, - 0x20cb83, - 0x2655c5, - 0x20e603, - 0x21f6c3, - 0x27d683, - 0x2d1984, - 0x323404, - 0x34bd45, - 0x793c8, - 0x32e744, - 0x3c2086, - 0x30e7c4, - 0x216542, - 0x2c8447, - 0x250707, - 0x254744, - 0x2ee845, - 0x372285, - 0x2b96c5, - 0x2b1b84, - 0x267408, - 0x25d206, - 0x392c88, - 0x287105, - 0x2efe85, - 0x257204, - 0x20cb83, - 0x305504, - 0x3770c6, - 0x24da03, - 0x2d1984, - 0x26fac5, - 0x38fd04, - 0x2aacc4, - 0x213402, - 0x38f846, - 0x3b8fc6, - 0x315f85, - 0x2000c2, - 0x253c43, - 0xedc46, - 0x3b616542, - 0x231d44, - 0x63dc5, - 0x200382, - 0x216443, - 0x2a9542, - 0x2296c3, - 0x2003c2, - 0x301a46, - 0x202b03, - 0x1da785, - 0x201643, - 0x793c8, - 0x793c8, - 0x343b43, - 0x7ca83, - 0x2000c2, - 0x3c216542, - 0x343b43, - 0x274c43, - 0x34b203, - 0x2093c4, - 0x2296c3, - 0x20cb83, - 0x793c8, - 0x2000c2, - 0x3ca16542, - 0x216543, - 0x2296c3, - 0xd903, - 0x20cb83, - 0x682, - 0x2091c2, - 0x22a042, - 0x21b283, - 0x2faf43, - 0x2000c2, - 0x146c05, - 0x793c8, - 0xb46c7, - 0x216542, - 0x222bc3, - 0x256d44, - 0x204f03, - 0x343b43, - 0x20e443, - 0x216443, - 0x2296c3, - 0x20b243, - 0x20cb83, - 0x23d343, - 0x1643, - 0x13ff13, - 0x142f14, - 0x146c05, - 0xb46c7, - 0x1e489, - 0x1e1e06, - 0x19108b, - 0x32f46, - 0x60ac7, - 0x145246, - 0x649, - 0x15d3ca, - 0x9560d, - 0x1b60cc, - 0x119cca, - 0x46688, - 0x10f7c5, - 0x1e4c8, - 0x30846, - 0x1d1806, - 0x13906, - 0x602, - 0x213242, - 0x15cb84, - 0x1d4b06, - 0x1255d0, - 0x14dbf0e, - 0x1a1146, - 0x41dcc, - 0x3e37cd0b, - 0x146c05, - 0x152c0b, - 0x3e7d1744, - 0x1c0f87, - 0x2c191, - 0x12140a, - 0x216543, - 0x3ea8ad08, - 0x73605, - 0x89288, - 0x2a2c4, - 0x62e85, - 0x3ec0b186, - 0x1bc60b, - 0xc3d86, - 0x72206, - 0x9a6ca, - 0x16c5cc, - 0x1c2003, - 0x1db944, - 0x3f218004, - 0x5c549, - 0x192e07, - 0xac00a, - 0x14df889, - 0x605, - 0xb6803, - 0x3f63d487, - 0x149f05, - 0x1565b86, - 0x157ac46, - 0x3fb92f4f, - 0xb800c, - 0x107588, - 0x3fc473c3, - 0x10a3c4, - 0xfe88b, - 0x1d694b, - 0x4025240c, - 0x14110c3, - 0xcddc8, - 0xfeb05, - 0xca909, - 0xeb643, - 0x12f7c8, - 0x1426246, - 0x95c87, - 0x4074c6c9, - 0x41a7a6c8, - 0x9dc07, - 0xcf9ca, - 0x41fc9408, - 0x11884d, - 0x12248, - 0x9983, - 0x146a249, - 0x14c203, - 0x32f46, - 0xe91c8, - 0x1a704, - 0x1d8645, - 0xfea83, - 0x1497d03, - 0x20a87, - 0x40a20a83, - 0x40fc2486, - 0x41240644, - 0x4170ba87, - 0xe91c4, - 0xe91c4, - 0xe91c4, - 0xe91c4, - 0x3ec5, - 0x1a18c8, - 0x148209, - 0x41, - 0x216543, - 0x222bc3, - 0x343b43, - 0x216443, - 0x2296c3, - 0x20cb83, - 0x2000c2, - 0x216542, - 0x343b43, - 0x2042c2, - 0x2296c3, - 0x20cb83, - 0x202b03, - 0x3835cf, - 0x38398e, - 0x793c8, - 0x216543, - 0x4e6c7, - 0x222bc3, - 0x343b43, - 0x243543, - 0x2296c3, - 0x20cb83, - 0x1a1084, - 0x12dcc4, - 0x9c04, - 0x224503, - 0x3a2347, - 0x202302, - 0x277c09, - 0x200ac2, - 0x3a714b, - 0x2e808a, - 0x2ec409, - 0x200542, - 0x22a686, - 0x256255, - 0x3a7295, - 0x259fd3, - 0x3a7813, - 0x22d0c2, - 0x22d0c5, - 0x363e0c, - 0x27ff8b, - 0x281405, - 0x202cc2, - 0x30a8c2, - 0x37ed06, - 0x203b42, - 0x2d4b06, - 0x21df0d, - 0x349c8c, - 0x3c4c44, - 0x200882, - 0x205242, - 0x27c0c8, - 0x200202, - 0x32dd86, - 0x39a18f, - 0x32dd90, - 0x3abc44, - 0x256415, - 0x25a153, - 0x20a883, - 0x3630ca, - 0x211d47, - 0x39f1c9, - 0x3129c7, - 0x328c42, - 0x200282, - 0x3cb7c6, - 0x207dc2, - 0x793c8, - 0x202502, - 0x20bd42, - 0x212e47, - 0x38d507, - 0x38d511, - 0x221a05, - 0x221a0e, - 0x22204f, - 0x204242, - 0x2f1c07, - 0x224b48, - 0x2016c2, - 0x2295c2, - 0x227406, - 0x22740f, - 0x23ff50, - 0x237242, - 0x204182, - 0x336588, - 0x210903, - 0x2920c8, - 0x2cb30d, - 0x204183, - 0x3a04c8, - 0x28e48f, - 0x28e84e, - 0x316b8a, - 0x3b3ed1, - 0x3b4350, - 0x21b9cd, - 0x21bd0c, - 0x386987, - 0x363247, - 0x379b89, - 0x20cd02, - 0x202402, - 0x26274c, - 0x262a4b, - 0x200d42, - 0x2d8306, - 0x20c602, - 0x200482, - 0x22e702, - 0x216542, - 0x3dbec4, - 0x241787, - 0x213b02, - 0x248d87, - 0x24a7c7, - 0x215a42, - 0x219d82, - 0x24e585, - 0x20c542, - 0x250e0e, - 0x39654d, - 0x222bc3, - 0x243c8e, - 0x2c764d, - 0x3c4143, - 0x2026c2, - 0x2730c4, - 0x2b3802, - 0x213642, - 0x3a6a05, - 0x3acc07, - 0x250d02, - 0x218242, - 0x256947, - 0x25c8c8, - 0x25c082, - 0x29a986, - 0x2625cc, - 0x26290b, - 0x20eb02, - 0x26c34f, - 0x26c710, - 0x26cb0f, - 0x26ced5, - 0x26d414, - 0x26d90e, - 0x26dc8e, - 0x26e00f, - 0x26e3ce, - 0x26e754, - 0x26ec53, - 0x26f10d, - 0x2817c9, - 0x2975c3, - 0x204342, - 0x322205, - 0x204f06, - 0x200382, - 0x2bfd47, - 0x343b43, - 0x200642, - 0x23e448, - 0x3b4111, - 0x3b4550, - 0x202102, - 0x296907, - 0x202642, - 0x25c247, - 0x207bc2, - 0x208309, - 0x37ecc7, - 0x3e5848, - 0x20afc6, - 0x208703, - 0x208705, - 0x225e82, - 0x2004c2, - 0x3cbbc5, - 0x36bd85, - 0x20b402, - 0x237843, - 0x352f87, - 0x3c3c47, 0x203f02, - 0x38f0c4, - 0x271f43, - 0x33eec9, - 0x3c7348, - 0x209d42, - 0x210442, - 0x22cac7, - 0x231745, - 0x20c708, - 0x327287, - 0x20f543, - 0x3d4986, - 0x21b84d, - 0x21bbcc, - 0x223046, - 0x204202, - 0x31de42, - 0x201582, - 0x28e30f, - 0x28e70e, - 0x372307, - 0x202042, - 0x3d2185, - 0x3d2186, - 0x228882, - 0x200bc2, - 0x298346, - 0x210783, - 0x3c2c46, - 0x2dd585, - 0x2dd58d, - 0x2de195, - 0x2ded4c, - 0x2df0cd, - 0x2df412, - 0x203742, - 0x277782, - 0x202802, - 0x3437c6, - 0x20e586, - 0x43296084, - 0x201cc2, - 0x204f86, - 0x201102, - 0x3a2b45, - 0x205c02, - 0x250f49, - 0x22d58c, - 0x22d8cb, - 0x2003c2, - 0x25e3c8, - 0x211c02, - 0x200a82, - 0x27de46, - 0x266005, - 0x200a87, - 0x2fca45, - 0x2824c5, - 0x23d7c2, - 0x21e582, - 0x208402, - 0x29f107, - 0x301b0d, - 0x301e8c, - 0x25d707, - 0x29a902, - 0x219d02, - 0x3e8008, - 0x38ff08, - 0x2e5e08, - 0x3bc204, - 0x342ac7, - 0x363b83, - 0x206bc2, - 0x203482, - 0x302889, - 0x233347, - 0x2037c2, - 0x27e245, - 0x24cec2, - 0x204682, - 0x30b0c3, - 0x30b0c6, - 0x309602, - 0x30a282, - 0x200402, - 0x2abc86, - 0x273007, - 0x213582, - 0x200902, - 0x291f0f, - 0x243acd, - 0x39e2ce, - 0x2c74cc, - 0x20cbc2, - 0x202a82, - 0x20ae05, - 0x324106, - 0x200b82, - 0x205d42, + 0x215142, + 0x20d3c2, + 0x282182, + 0x207002, + 0x20ea82, + 0x2035c2, + 0x216402, + 0x205442, + 0x24bf42, + 0x209982, 0x200682, - 0x243e44, - 0x2c4b44, - 0x36c186, - 0x201ec2, - 0x292d47, - 0x23f643, - 0x23f648, - 0x2408c8, - 0x24ad47, - 0x251646, - 0x204ac2, - 0x2118c3, - 0x2118c7, - 0x28a6c6, - 0x2ed245, - 0x27f908, - 0x202d82, - 0x35b4c7, - 0x203782, - 0x352902, - 0x204102, - 0x2221c9, - 0x24b302, - 0x14448, - 0x201b82, - 0x25d983, - 0x32e887, - 0x200f02, - 0x22d70c, - 0x22da0b, - 0x2abf06, - 0x223e85, - 0x43609d83, - 0x22bdc2, - 0x202a02, - 0x2cf7c6, - 0x209003, - 0x363447, - 0x211482, - 0x2008c2, - 0x2560d5, - 0x3a7455, - 0x259e93, - 0x3a7993, - 0x279587, - 0x294d91, - 0x2f9010, - 0x2a27d2, - 0x2a7411, - 0x2aae48, - 0x2aae50, - 0x372f4f, - 0x3a5e53, - 0x3abf92, - 0x2c2690, - 0x2bec4f, - 0x2c2bd2, - 0x2c4191, - 0x2d73d3, - 0x2dd112, - 0x2e3d4f, - 0x2e664e, - 0x2e7e92, - 0x2ec211, - 0x2ed70f, - 0x2f58ce, - 0x2f7251, - 0x2f8450, - 0x2ff012, - 0x307751, - 0x309ad0, - 0x30b50f, - 0x366211, - 0x355510, - 0x37f0c6, - 0x31e787, - 0x234ac7, - 0x201c02, - 0x28ce85, - 0x313507, - 0x22a042, - 0x203f82, - 0x3d0545, - 0x228183, - 0x35c606, - 0x301ccd, - 0x30200c, - 0x205002, - 0x363c8b, - 0x27fe4a, - 0x22cf8a, - 0x2ceb09, - 0x300a8b, - 0x3273cd, - 0x313c0c, - 0x2477ca, - 0x24ec8c, - 0x27aa4b, - 0x28124c, - 0x28418e, - 0x2a0b0b, - 0x2eafcc, - 0x2f3103, - 0x2ef706, - 0x3c9402, - 0x308542, - 0x2651c3, - 0x2017c2, - 0x23d203, - 0x351d46, - 0x26d087, - 0x2e2846, - 0x3aad48, - 0x352e08, - 0x306d06, - 0x208e42, - 0x31594d, - 0x315c8c, - 0x3d6b07, - 0x319b07, - 0x221e02, - 0x21f8c2, - 0x211842, - 0x289c82, - 0x3377d6, - 0x33c555, - 0x33f9d6, - 0x344113, - 0x3447d2, - 0x356dd3, - 0x357512, - 0x3b7ccf, - 0x3c6b58, - 0x3c8ed7, - 0x3c98d9, - 0x3cb218, - 0x3cbdd8, - 0x3cccd7, - 0x3ced97, - 0x3d1216, - 0x3d6013, - 0x3d6f55, - 0x3d77d2, - 0x3d7c53, - 0x30182, - 0x43a13a04, - 0x43fc4b88, - 0x3ec5, - 0x216542, - 0x2296c3, - 0x386c2, - 0x20cb83, - 0x216543, - 0x222bc3, - 0x343b43, - 0x216443, - 0x21b544, - 0x2296c3, - 0x20cb83, - 0x202b03, + 0x217ac2, + 0x201a42, + 0x206382, + 0x201042, + 0x230802, + 0x2019c2, + 0xc2, + 0xb02, + 0x1902, + 0x29c2, + 0x202, + 0x5202, + 0x44b02, + 0x1b42, + 0x382, + 0x3f02, + 0x15142, + 0xd3c2, + 0x82182, + 0x7002, + 0xea82, + 0x35c2, + 0x16402, + 0x5442, + 0x4bf42, + 0x9982, + 0x682, + 0x17ac2, + 0x1a42, + 0x6382, + 0x1042, + 0x30802, + 0x19c2, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0xf82, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0xa0789, + 0xb642, + 0x20b642, + 0x24acc3, + 0x10a1a043, + 0x20f583, + 0x1b1749, + 0x214e43, + 0xf5d07, + 0x2445c2, + 0x1c3448, + 0x21a043, + 0x226783, + 0x20f583, + 0x16e83, + 0x214883, + 0x24acc3, + 0x79c2, + 0x2001c2, + 0x1427d45, + 0x14f985, + 0x213c82, + 0x1c3448, + 0xb642, + 0x242882, + 0x206442, + 0x10210c, + 0x20da42, + 0x231a82, + 0x218882, + 0x1a4045, + 0x200dc2, + 0x201802, + 0x217a02, + 0x208e02, + 0x2035c2, + 0x24a242, + 0x214942, + 0x2b60c2, + 0x11a7f604, + 0x142, + 0xf5d87, + 0x15943, + 0x1db18d, + 0xfaf89, + 0xf140b, + 0xfdd48, + 0x73ec9, + 0x11b446, + 0x20f583, + 0x1c3448, + 0x1bfd04, + 0x2d03, + 0x1bee85, + 0x1c3448, + 0x1ec6c7, + 0x12c5ea87, + 0x13269384, + 0x6d446, + 0x1beec9, + 0xbea8e, + 0x10210c, + 0x146087, + 0x15bc683, + 0x13602142, + 0x149f49, + 0x1ed5c4, 0x2000c2, - 0x2070c2, - 0x44e9bcc5, - 0x4529b285, - 0x4567ad86, - 0x793c8, - 0x45ac3205, - 0x216542, - 0x2104c2, - 0x45f336c5, - 0x4628b685, - 0x4668c587, - 0x46a93f89, - 0x46e1eb44, + 0x265a04, + 0x20b642, + 0x21a043, + 0x203142, + 0x226783, + 0x26dc3, + 0x200382, + 0x2eef84, + 0x20bc83, + 0x2593c2, + 0x214883, + 0x18882, + 0x2003c2, + 0x24acc3, + 0x219086, + 0x33d48f, + 0x733483, + 0x1c3448, + 0x20b642, + 0x204703, + 0x20f583, + 0x214e43, + 0x14bdabc7, + 0x14a7606, + 0x1f3d06, + 0xf2389, + 0x14fcd6c8, + 0x1e6304, + 0x152cab0a, + 0x163988, + 0x15c16a87, + 0xd9f88, + 0xbea88, + 0x15e86cb, + 0x147fb0a, + 0x16070943, + 0x103189, + 0x1650b188, + 0x16b8e487, + 0x1463d4a, + 0x1507c07, + 0xba74b, + 0x16e8a2cc, + 0x16bf05, + 0xdc4c5, + 0x123409, + 0x1dbf44, + 0x11d443, + 0x156cac45, + 0x12ee43, + 0x15a35ac3, + 0x12ee43, + 0x15942, + 0x21c2, + 0xba42, + 0xba42, + 0x3d82, + 0xba42, + 0x3342, + 0x45c2, + 0x101c2, + 0x14f985, + 0xf5d87, + 0x1e6304, + 0x109484, + 0x20b642, + 0x21a043, + 0x20f583, + 0x214883, + 0x2000c2, + 0x209582, + 0x20aa82, + 0x17e1a043, + 0x24a202, + 0x226783, + 0x200bc2, + 0x203942, + 0x20f583, + 0x216e82, + 0x261042, + 0x22fcc2, + 0x20ad02, + 0x2a4fc2, + 0x200802, + 0x204142, + 0x201742, + 0x21dd82, + 0x209bc2, + 0x4484c, + 0x2cd142, + 0x283382, + 0x22b242, + 0x202582, + 0x214e43, + 0x201942, + 0x214883, + 0x20b482, + 0x24fdc2, + 0x24acc3, + 0x24dac2, + 0x206382, + 0x2213c2, + 0x200e02, + 0x22c602, + 0x215982, + 0x209b02, + 0x25c442, + 0x22b282, + 0x33060a, + 0x375dca, + 0x3a8f8a, + 0x3f43c2, + 0x2039c2, + 0x22b982, + 0x182fe909, + 0x187d6f0a, + 0x154be47, + 0x18a00fc2, + 0x1446b83, + 0x2902, + 0x1d6f0a, + 0x16e3ce, + 0x2346c4, + 0x107245, + 0x1921a043, + 0x4b8c3, + 0x226783, + 0x2607c4, + 0x20f583, + 0x25c204, + 0x20bc83, + 0x145e89, + 0x51fc6, + 0x214e43, + 0x100d44, + 0x1443, + 0x214883, + 0x9bf05, + 0x208c43, + 0x24acc3, + 0x1440704, + 0x2423c3, + 0x195547c4, + 0xd2a48, + 0x200f83, + 0x1c3448, + 0x6502, + 0x1527143, + 0x1333c6, + 0x1577ec4, + 0x4c85, + 0x1dbd4a, + 0x138682, + 0x1a00578d, + 0x1bdcc6, + 0x152051, + 0x1a6fe909, + 0x15d4ca, + 0x4d08, + 0x167d48, + 0x152e8e, + 0x89e53, + 0x210a78c7, + 0x1d42, + 0x148210, + 0x152c8c, + 0xfea94, + 0x1b87c7, + 0x24c0e, + 0x14f98b, + 0x1519cb, + 0x1c740a, + 0x133907, + 0x1c3448, + 0xb3d88, + 0xf747, + 0x21422bcb, + 0x23e46, + 0x26647, + 0x3ac2, + 0xef7cd, + 0x13e705, + 0x1d647, + 0x133c4a, + 0x1402cc, + 0x14048f, + 0xae74f, + 0x16e3c2, + 0xb642, + 0x9a148, + 0x21903e8c, + 0x1b204a, + 0x21f656ca, + 0xf638a, + 0x86cca, + 0x8ffc8, + 0x2d785, + 0x728c8, + 0xf6848, + 0x1ec688, + 0x153648, + 0x101c2, + 0xae4cf, + 0x1427dcd, + 0x6d8b, + 0xd5448, + 0x42b87, + 0x5940a, + 0x3e7cb, + 0xa9cc9, + 0x59307, + 0xf8506, + 0x2d688, + 0x3d7cc, + 0x1e9987, + 0x244ca, + 0xa3c8, + 0x11780e, + 0x12078e, + 0x13374b, + 0x16600b, + 0x3828b, + 0x3d309, + 0x4318b, + 0x4864d, + 0x4b94b, + 0x4ca4d, + 0x4cdcd, + 0x5a30a, + 0x6048b, + 0x56a0b, + 0x5a045, + 0x221cd710, + 0x80392, + 0x33011, + 0x176752, + 0x35f8f, + 0x7f7cf, + 0x15118d, + 0x85250, + 0xa842, + 0x22620948, + 0x1e9808, + 0x64f50, + 0x12c88e, + 0x22b77a85, + 0x5e68b, + 0x144f90, + 0xaaecb, + 0x1bc3cc, + 0x729ca, + 0x1661c9, + 0x735c8, + 0x78887, + 0x78bc7, + 0x78d87, + 0x79cc7, + 0x7b747, + 0x7bc07, + 0x7c307, + 0x7c747, + 0x7d207, + 0x7d587, + 0x7da47, + 0x7dc07, + 0x7ddc7, + 0x7df87, + 0x7e307, + 0x7e687, + 0x7ff87, + 0x80807, + 0x812c7, + 0x81587, + 0x81747, + 0x81a47, + 0x82047, + 0x82247, + 0x82bc7, + 0x82d87, + 0x82f47, + 0x83207, + 0x83847, + 0x83fc7, + 0x86b07, + 0x86f47, + 0x87747, + 0x87907, + 0x87f47, + 0x882c7, + 0x88c87, + 0x89087, + 0x893c7, + 0x89587, + 0x899c7, + 0x8a5c7, + 0x8b707, + 0x8bcc7, + 0x8be87, + 0x8c307, + 0x8cc47, + 0xef42, + 0xf694a, + 0x1b308, + 0x1c41cc, + 0x124c87, + 0x58f85, + 0x61591, + 0x7286, + 0x137bca, + 0x99fca, + 0x6d446, + 0x3f78b, + 0x642, + 0x3c691, + 0x131809, + 0xab8c9, + 0xace06, + 0x1742, + 0x70d0a, + 0xbf0c9, + 0xbf80f, + 0xbfe0e, + 0xc1bc8, + 0x22f53092, + 0x18208, + 0x232737c7, + 0xc468f, + 0x7142, + 0x178409, + 0x10044a, + 0x2361a389, + 0xdaec9, + 0xdaecc, + 0x19a4b, + 0x5824e, + 0x11c0c, + 0x102e8f, + 0x1c980e, + 0x50fcc, + 0x64d49, + 0x71a11, + 0x88448, + 0x92f12, + 0x94d8d, + 0x993cd, + 0x9ee4b, + 0x167f15, + 0x191549, + 0x1b6d0a, + 0x1df109, + 0xa27d0, + 0xa914b, + 0xb1c8f, + 0xb928b, + 0xc710c, + 0xc77d0, + 0xdfdca, + 0xf884d, + 0x12b38e, + 0x19f6ca, + 0xc8bcc, + 0xcf7d4, + 0x131491, + 0x1c470b, + 0xd82cf, + 0xd930d, + 0xda3ce, + 0xddf0c, + 0xde64c, + 0xdfacb, + 0xe1c0e, + 0xe4490, + 0xe534b, + 0xf740d, + 0x10fd8f, + 0x10eacc, + 0x11704e, + 0x185451, + 0x12ae8c, + 0x169d07, + 0x16bb8d, + 0x17600c, + 0x180f50, + 0x19b74d, + 0x19c3c7, + 0x1a5c90, + 0x1b3048, + 0xc814b, + 0xca18f, + 0x1c4448, + 0x57b8d, + 0x119c50, + 0x182fc9, + 0x23bcd6c8, + 0x23ece206, + 0xcf503, + 0x1ade89, + 0xade49, + 0xd4345, + 0xaf02, + 0x59889, + 0x6de0a, + 0x242933c6, + 0x14933cd, + 0x24706444, + 0x1e4986, + 0x28b4a, + 0x2af0d, + 0x24ae5b8b, + 0x1e9e08, + 0x24c65589, + 0x24343, + 0x17c7ca, + 0xf53d1, + 0xf5809, + 0xf6307, + 0xf7148, + 0xf8b87, + 0x736c8, + 0xae5cb, + 0x13b509, + 0x101590, + 0x101a4c, + 0x101ec9, + 0x10210c, + 0x2530250d, + 0x1037c8, + 0x103cc5, + 0x1d0fc8, + 0x1a4f4a, + 0x1b8ec7, + 0x25c2, + 0x25679555, + 0x145c8a, + 0x13e549, + 0x1ef4c8, + 0xae009, + 0x9605, + 0x12ab8a, + 0x1a07, + 0xa050f, + 0x16bf8b, + 0x1ec90c, + 0x30712, + 0xc0906, + 0x1580588, + 0x8e5c5, + 0x11d688, + 0x1e4acb, + 0xe6ad1, + 0x179d47, + 0x6e40a, + 0x18784c, + 0x25b0b045, + 0x1b72cc, + 0x25d129ce, + 0x142743, + 0x19ec86, + 0x4a242, + 0x11468b, + 0x11564a, + 0x151640c, + 0x1e9d08, + 0x4cc08, + 0x263ef546, + 0x17ef87, + 0x23f8e, + 0x1534c7, + 0x3b02, + 0x2fc2, + 0x188850, + 0x77e47, + 0x77f4f, + 0x1b506, + 0xa8b4e, + 0xb424b, + 0x5e0c8, + 0xaa089, + 0x150652, + 0x11dccd, + 0x11e848, + 0xf12c9, + 0x1a718d, + 0xe889, + 0x782cb, + 0x7ae88, + 0x7e488, + 0x80f88, + 0x81bc9, + 0x81dca, + 0x8254c, + 0x2398a, + 0xe094a, + 0x11d507, + 0x43a8a, + 0xf90c8, + 0x1d3e0d, + 0x62ad1, + 0x266da6c6, + 0x16d20b, + 0x3b48c, + 0xff48, + 0x1dc8c9, + 0x16548d, + 0x79f10, + 0x150dcc, + 0x15450d, + 0x10384f, + 0xba42, + 0x1df30d, + 0x3342, + 0x96c2, + 0x11d44a, + 0x26bd0d0a, + 0x32e4a, + 0x26e8bfc8, + 0x137aca, + 0x12460b, + 0x126c47, + 0x1b41cc, + 0x120a0c, + 0x12940a, + 0x2712968f, + 0x129a4c, + 0x129d47, + 0x12b70e, + 0x275f4285, + 0x1eab88, + 0x79c2, + 0x1424dc3, + 0x1aa0494e, + 0x1b2029ce, + 0x1bb2658a, + 0x1c33718e, + 0x1ca082ce, + 0x1d353c8c, + 0x154be47, + 0x155d589, + 0x1446b83, + 0x1db5ce8c, + 0x1e20a849, + 0x1ebd7e09, + 0x1f3dbb49, + 0x2902, + 0x4891, + 0x2911, + 0x1264cd, + 0x1370d1, + 0x1d4fd1, + 0x153bcf, + 0x15cdcf, + 0x1cc20c, + 0x1d7d4c, + 0x1dba8c, + 0xec7cd, + 0xfd515, + 0x13c14c, + 0x13e80c, + 0x179ed0, + 0x1c5acc, + 0x1c8a8c, + 0x1d17d9, + 0x1d9759, + 0x8019, + 0xa594, + 0xf8d4, + 0x107d4, + 0x10d54, + 0x1a994, + 0x1fa0fb89, + 0x20010a89, + 0x20b3e8c9, + 0x1ae88649, + 0x2902, + 0x1b688649, + 0x2902, + 0x800a, + 0x2902, + 0x1be88649, + 0x2902, + 0x800a, + 0x2902, + 0x1c688649, + 0x2902, + 0x1ce88649, + 0x2902, + 0x1d688649, + 0x2902, + 0x800a, + 0x2902, + 0x1de88649, + 0x2902, + 0x800a, + 0x2902, + 0x1e688649, + 0x2902, + 0x1ee88649, + 0x2902, + 0x800a, + 0x2902, + 0x1f688649, + 0x2902, + 0x800a, + 0x2902, + 0x1fe88649, + 0x2902, + 0x20688649, + 0x2902, + 0x20e88649, + 0x2902, + 0x800a, + 0x2902, + 0x1400401, + 0x152045, + 0x1c7404, + 0x1412f43, + 0x15f2603, + 0x141d983, + 0x94ec4, + 0x13b848, + 0x494e, + 0x29ce, + 0x9280e, + 0x12658a, + 0x13718e, + 0x82ce, + 0x153c8c, + 0x15ce8c, + 0xa849, + 0x1d7e09, + 0x1dbb49, + 0xfb89, + 0x10a89, + 0x13e8c9, + 0xfd70d, + 0x11009, + 0x1ac49, + 0x150a84, + 0x1720c4, + 0x199884, + 0x1cacc4, + 0xbaa04, + 0x1b9944, + 0x1e6a84, + 0x69004, + 0x1b404, + 0x642c4, + 0x334c9, + 0x334cc, + 0x159186, + 0x15918e, + 0x94ec4, + 0x159bf43, + 0x7e87, + 0x149440c, + 0x4d03, + 0x642c4, + 0xa842, + 0x51887, + 0x103e88, + 0x191dc8, + 0x4fd44, + 0x1cb8c6, + 0x54d47, + 0xe8b44, + 0x11c0c6, + 0x216c2, + 0x2d81, + 0x1d3a44, + 0x89cc6, + 0x22603, + 0xa842, + 0x4d03, + 0xe0143, + 0x30503, + 0x14743, + 0x117783, + 0x30705, + 0x83382, + 0x151682, + 0x1bf708, + 0xfa807, + 0x15743, + 0x13b587, + 0x101c2, + 0xf2389, + 0x2000c2, + 0x20b642, + 0x203142, + 0x21b5c2, + 0x200382, + 0x2003c2, + 0x202fc2, + 0x21a043, + 0x226783, + 0x20f583, + 0x231a43, + 0x214883, + 0x24acc3, + 0x1c3448, + 0x21a043, + 0x226783, + 0x214883, + 0x24acc3, + 0x13b83, + 0x20f583, + 0x5c204, + 0x2000c2, + 0x20bec3, + 0x29a1a043, + 0x3acb47, + 0x20f583, + 0x222043, + 0x225a04, + 0x214883, + 0x24acc3, + 0x228d8a, + 0x219085, + 0x205443, + 0x249902, + 0x1c3448, + 0x29eea54a, + 0xc01, + 0x1c3448, + 0xb642, + 0x140242, + 0x2a66530b, + 0x2aa1c1c4, + 0x106385, + 0x1405985, + 0x103e86, + 0x2ae05985, + 0x6a043, + 0xa7343, + 0x1bfd04, + 0x2d03, + 0x1bee85, + 0x14f985, + 0x1c3448, + 0x26647, + 0x1a043, + 0x38d4d, + 0x2b647207, + 0xcc6, + 0x2b953ac5, + 0x1b7892, + 0xd87, + 0x2f38a, + 0x2cf48, + 0x2f287, + 0x170aca, + 0x1becc8, + 0x7ac47, + 0x15ef8f, + 0x574c7, + 0x68e06, + 0x144f90, + 0x148e0c6, + 0x5058f, + 0x1bc09, + 0x1e4a04, + 0x2bc00e4e, + 0x51bc9, + 0x7e0c6, + 0xeb09, + 0x119186, + 0x9dc6, + 0xc3acc, + 0x3e9ca, + 0xa9e47, + 0x115f4a, + 0x1249, + 0x10514c, + 0x2b74a, + 0x5b00a, + 0x1beec9, + 0x1e4986, + 0xa9f0a, + 0x11edca, + 0xb6b4a, + 0x16f909, + 0xf4dc8, + 0xf5046, + 0xfb54d, + 0x10210c, + 0x6700b, + 0xd4905, + 0x2c38a7cc, + 0x146087, + 0x1e3989, + 0xdea07, + 0xbe494, + 0x11a04b, + 0xd528a, + 0x1504ca, + 0xbc64d, + 0x1524809, + 0x11da8c, + 0x11e64b, + 0x16a157, + 0x16ac95, + 0x3983, + 0x3983, + 0x38286, + 0x3983, + 0x103e88, + 0x15ee43, + 0x53544, + 0x1f184, + 0x1f18c, + 0x6a303, + 0x14b6c07, + 0xf79cd, + 0xaa045, + 0x151e183, + 0x1536ac8, + 0x67409, + 0x1b1749, + 0x30705, + 0x1e4acb, + 0x1c49cb, + 0x150ed43, + 0x150ed48, + 0x152986, + 0x145a4c7, + 0xa2a47, + 0x2d0a7789, + 0x14746, + 0xbec3, + 0x1c3448, + 0xb642, + 0x607c4, + 0x10210c, + 0x31d03, + 0x13a505, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x205d83, + 0x21a043, + 0x226783, + 0x204703, + 0x20f583, + 0x214e43, + 0x214883, + 0x24acc3, + 0x319283, + 0x200f83, + 0x205d83, + 0x265a04, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x211b43, + 0x212f03, + 0x249902, + 0x2e8a7885, + 0x1437143, + 0x21a043, + 0x226783, + 0x226dc3, + 0x204703, + 0x20f583, + 0x25c204, + 0x20de83, + 0x2384c3, + 0x214e43, + 0x214883, + 0x24acc3, + 0x205443, + 0x2f629e03, + 0x30609, + 0xb642, + 0x3f3903, + 0x3021a043, + 0x226783, + 0x259f43, + 0x20f583, + 0x224b03, + 0x2384c3, + 0x24acc3, + 0x205fc3, + 0x3c80c4, + 0x1c3448, + 0x30a1a043, + 0x226783, + 0x2c1c83, + 0x20f583, + 0x214e43, + 0x225a04, + 0x214883, + 0x24acc3, + 0x227603, + 0x1c3448, + 0x3121a043, + 0x226783, + 0x204703, + 0x10210c, + 0x208c43, + 0x24acc3, + 0x1c3448, + 0x154be47, + 0x20bec3, + 0x21a043, + 0x226783, + 0x20f583, + 0x25c204, + 0x225a04, + 0x214883, + 0x24acc3, + 0x14f985, + 0xf5d87, + 0xbe6cb, + 0x32241546, + 0xf5c04, + 0xd4905, + 0x1470708, + 0x2facd, + 0x1cd6c8, + 0x32a407c5, + 0x2af84, + 0xb642, + 0x18b43, + 0x159085, + 0x445c2, + 0x35cc45, + 0x1c3448, + 0x343341cd, + 0x3460510a, + 0x3982, + 0x20883, + 0x10210c, + 0x17290f, + 0x1b5c2, + 0x94ec4, + 0x642c4, + 0xb642, + 0x2000c2, + 0x20bec3, + 0x21a043, + 0x20f583, + 0x25c204, + 0x214e43, + 0x225a04, + 0x214883, + 0x24acc3, + 0x205443, + 0x21a043, + 0x226783, + 0x214883, + 0x24acc3, + 0x12c85, + 0x339e48, + 0x265a04, + 0x3d4506, + 0x3d7c06, + 0x1c3448, + 0x320543, + 0x23ab49, + 0x318455, + 0x11845f, + 0x21a043, + 0x9ebc7, + 0x221b92, + 0x18dc86, + 0x190485, + 0x729ca, + 0x1661c9, + 0x22194f, + 0xf5207, + 0x2eef84, + 0x225105, + 0x31aa10, + 0x284ac7, + 0x10210c, + 0x208c43, + 0x2a1948, + 0x64146, + 0x2937ca, + 0x2311c4, + 0x30ad83, + 0x249902, + 0x30614b, + 0x1c3203, + 0x226783, + 0x20f583, + 0x197184, + 0x21a043, + 0x226783, + 0x20f583, + 0x214e43, + 0x214883, + 0x24acc3, + 0x310783, + 0x20b642, + 0x3cc83, + 0x100b04, + 0x214883, + 0x24acc3, + 0x36846ac5, + 0x1dc686, + 0x21a043, + 0x226783, + 0x20f583, + 0x214e43, + 0x24acc3, + 0x21a043, + 0x226783, + 0x20f583, + 0x222043, + 0x222383, + 0x24acc3, + 0xbec3, + 0x20b642, + 0x21a043, + 0x226783, + 0x214883, + 0x24acc3, + 0x26c02, + 0x2000c2, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x5985, + 0x6a0c9, + 0x4d03, + 0x265a04, + 0x21a043, + 0x226783, + 0x230944, + 0x214883, + 0x24acc3, + 0x1c3448, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x13bf09, + 0x11d44, + 0x21a043, + 0x101c2, + 0x226783, + 0x204703, + 0x211983, + 0x214e43, + 0x214883, + 0x24acc3, + 0x19c2, + 0x21a043, + 0x226783, + 0x20f583, + 0x3b9544, + 0x25c204, + 0x214883, + 0x24acc3, + 0x200f83, + 0x2742, + 0x20b642, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x161243, + 0x1c3448, + 0x21a043, + 0x226783, + 0x20f583, + 0x37ee83, + 0xf2c3, + 0x22043, + 0x214883, + 0x24acc3, + 0x3a086, + 0x33060a, + 0x34e149, + 0x369a8b, + 0x369eca, + 0x375dca, + 0x386bcb, + 0x39b20a, + 0x3a280a, + 0x3a8f8a, + 0x3a920b, + 0x3ce989, + 0x3de04a, + 0x3de88b, + 0x3ede8b, + 0x3f2fca, + 0x6282, + 0x21a043, + 0x226783, + 0x204703, + 0x214e43, + 0x214883, + 0x24acc3, + 0x610b, + 0x12c887, + 0x73b48, + 0x1a72c4, + 0x1e6304, + 0xa2388, + 0xf9b06, + 0xae706, + 0x23b87, + 0x12a947, + 0x3589, + 0x1c3448, + 0x21a043, + 0x727c4, + 0x278884, + 0x204e42, + 0x225a04, + 0x252f05, + 0x205d83, + 0x265a04, + 0x21a043, + 0x243544, + 0x226783, + 0x2607c4, + 0x2eef84, + 0x25c204, + 0x2384c3, + 0x214883, + 0x24acc3, + 0x2cf905, + 0x211b43, + 0x205443, + 0x236d03, + 0x223984, + 0x333344, + 0x246c85, + 0x1c3448, + 0x3ebc44, + 0x209f46, + 0x3bf004, + 0x20b642, + 0x230b07, + 0x256387, + 0x25d444, + 0x2fa885, + 0x39b945, + 0x239805, + 0x25c204, + 0x2716c8, + 0x2680c6, + 0x32f248, + 0x2f8245, + 0x2fc3c5, + 0x27a004, + 0x24acc3, + 0x30b844, + 0x385bc6, + 0x219183, + 0x223984, + 0x26ed05, + 0x259804, + 0x2b7944, + 0x249902, + 0x3a1ec6, + 0x3c1786, + 0x31be45, + 0x2000c2, + 0x20bec3, + 0xf9c86, + 0x3be0b642, + 0x220ac4, + 0x1981c4, + 0x6f005, + 0x200382, + 0x214e43, + 0x2736c2, + 0x214883, + 0x2003c2, + 0x308746, + 0x219303, + 0x1e4905, + 0x200f83, + 0x1c3448, + 0x1c3448, + 0x20f583, + 0x10210c, + 0x2000c2, + 0x3ca0b642, + 0x20f583, + 0x27dd43, + 0x20de83, + 0x21c1c4, + 0x214883, + 0x24acc3, + 0x1c3448, + 0xc0847, + 0x2000c2, + 0x3d20b642, + 0x21a043, + 0x214883, + 0x24acc3, + 0x682, + 0x20ea02, + 0x22ccc2, + 0x222043, + 0x305103, + 0x2000c2, + 0x14f985, + 0x1c3448, + 0xf5d87, + 0x20b642, + 0x226783, + 0x2607c4, + 0x207783, + 0x20f583, + 0x211983, + 0x214e43, + 0x214883, + 0x21c243, + 0x24acc3, + 0x2190c3, + 0xd2a48, + 0xf83, + 0x147593, + 0x14b954, + 0x14f985, + 0xf5d87, + 0x2f389, + 0x11c806, + 0x16f34b, + 0x38286, + 0x6bb47, + 0x1bc006, + 0x649, + 0x16278a, + 0x9e0cd, + 0x1dae8c, + 0x11f74a, + 0xab348, + 0x1a4045, + 0x2f3c8, + 0x1b506, + 0x1d9206, + 0x5f986, + 0x20a842, + 0x178884, + 0xe0146, + 0x14e754e, + 0x5086, + 0x7a60c, + 0x3e6a760b, + 0x14f985, + 0x15278b, + 0x3eb67b87, + 0x3ef67b8a, + 0x3f3d9144, + 0x88c9, + 0xfdc8, + 0x1c75c7, + 0x2de11, + 0x130dca, + 0x21a043, + 0x3f694308, + 0x170a45, + 0x1a0e88, + 0x36604, + 0x6e005, + 0xb8647, + 0x3f9d6d46, + 0xe044b, + 0x3ffc7cc9, + 0x181c5, + 0x61586, + 0x168e86, + 0xa528a, + 0xd184c, + 0x1ca843, + 0x1e6304, + 0x403d2484, + 0x67409, + 0x113107, + 0x10070a, + 0x14ea449, + 0x605, + 0x120703, + 0x406420c7, + 0x9bf05, + 0x1573546, + 0x14638c6, + 0x3f84c, + 0x10d308, + 0x40930fc5, + 0x40c4a243, + 0x113844, + 0x1d78b, + 0x14b0cb, + 0x4125ac0c, + 0x142d843, + 0xd61c8, + 0x1c49cb, + 0xb8509, + 0xd5603, + 0x124908, + 0x1428a86, + 0x9e747, + 0x41765489, + 0x42af0c48, + 0xbaf47, + 0xdc4ca, + 0x42f6a688, + 0x11e30d, + 0x1cc989, + 0x112c8, + 0x4d03, + 0x1486089, + 0x642c4, + 0x187d45, + 0x47143, + 0x38286, + 0x103e88, + 0x6502, + 0x1b404, + 0xaa345, + 0x1addc4, + 0x1437dc3, + 0x24dc7, + 0x41a24dc3, + 0x41fb8246, + 0x42244e04, + 0x42601b07, + 0x103e84, + 0x17ef87, + 0x103e84, + 0x17ef87, + 0x103e84, + 0x103e84, + 0x17ef87, + 0x5989, + 0x41, + 0x21a043, + 0x226783, + 0x20f583, + 0x214e43, + 0x214883, + 0x24acc3, + 0x2000c2, + 0x20b642, + 0x20f583, + 0x206502, + 0x214883, + 0x24acc3, + 0x219303, + 0x38ef8f, + 0x38f34e, + 0x1c3448, + 0x21a043, + 0x52a87, + 0x226783, + 0x20f583, + 0x20bc83, + 0x214883, + 0x24acc3, + 0x4fc4, + 0x2e44, + 0xa04, + 0x203a83, + 0x203a87, + 0x203f42, + 0x27ee89, + 0x200b02, + 0x388b4b, + 0x2b154a, + 0x2b7d09, + 0x200542, + 0x2369c6, + 0x25ed95, + 0x388c95, + 0x261ad3, + 0x389213, + 0x204302, + 0x22bb45, + 0x3ea8cc, + 0x287c8b, + 0x269e45, + 0x2029c2, + 0x314102, + 0x377546, + 0x201d42, + 0x29ca06, + 0x36640d, + 0x3a3dcc, + 0x3cd784, + 0x200882, + 0x214202, + 0x2932c8, + 0x200202, + 0x202f06, + 0x3a480f, + 0x202f10, + 0x2ff204, + 0x25ef55, + 0x261c53, + 0x217143, + 0x35c78a, + 0x392b47, + 0x398a89, + 0x315cc7, + 0x21da82, + 0x200282, + 0x3d2386, + 0x20b102, + 0x1c3448, + 0x211f02, + 0x202642, + 0x2121c7, + 0x398e07, + 0x398e11, + 0x225505, + 0x22550e, + 0x225fcf, + 0x203ac2, + 0x227547, + 0x227708, + 0x201002, + 0x229b02, + 0x2143c6, + 0x2143cf, + 0x27b1d0, + 0x236f02, + 0x203d82, + 0x230c48, + 0x203d83, + 0x29b148, + 0x247d4d, + 0x2063c3, + 0x3d7a48, + 0x26c00f, + 0x26c3ce, + 0x35018a, + 0x2f4111, + 0x2f4590, + 0x3b0b8d, + 0x3b0ecc, + 0x3f3787, + 0x35c907, + 0x3d45c9, + 0x216f42, + 0x205202, + 0x26d8cc, + 0x26dbcb, + 0x2045c2, + 0x2dfc86, + 0x212f82, + 0x200482, + 0x36e3c2, + 0x20b642, + 0x239244, + 0x246887, + 0x203682, + 0x24d507, + 0x24f347, + 0x215942, + 0x218402, + 0x252945, + 0x203402, + 0x2d0bce, + 0x215b8d, + 0x226783, + 0x25880e, + 0x231e8d, + 0x34cc83, + 0x2017c2, + 0x2990c4, + 0x211542, + 0x22e042, + 0x3add05, + 0x3b3c47, + 0x257682, + 0x21b5c2, + 0x25f487, + 0x267788, + 0x2698c2, + 0x28e646, + 0x26d74c, + 0x26da8b, + 0x205b02, + 0x274b0f, + 0x274ed0, + 0x2752cf, + 0x275695, + 0x275bd4, + 0x2760ce, + 0x27644e, + 0x2767cf, + 0x276b8e, + 0x276f14, + 0x277413, + 0x2778cd, + 0x28ce09, + 0x2a0083, + 0x206582, + 0x364805, + 0x207786, + 0x200382, + 0x2e4f47, + 0x20f583, + 0x200642, + 0x38bcc8, + 0x2f4351, + 0x2f4790, + 0x204182, + 0x29f347, + 0x2040c2, + 0x271107, + 0x20af02, + 0x254e89, + 0x377507, + 0x29f808, + 0x3d6b86, + 0x305003, + 0x39e645, + 0x20b602, + 0x2004c2, + 0x34cb85, + 0x370845, + 0x209a42, + 0x237743, + 0x352b07, + 0x3d9487, + 0x203c82, + 0x39ac04, + 0x20a243, + 0x3f3b89, + 0x20a248, + 0x212a82, + 0x20fe02, + 0x22e807, + 0x3584c5, + 0x285788, + 0x286547, + 0x20ddc3, + 0x2dffc6, + 0x3b0a0d, + 0x3b0d8c, + 0x3a1086, + 0x206442, + 0x205942, + 0x200ec2, + 0x26be8f, + 0x26c28e, + 0x39b9c7, + 0x2024c2, + 0x214e45, + 0x214e46, + 0x22ab02, + 0x201942, + 0x2a0d06, + 0x24fb03, + 0x3d1206, + 0x2e8b05, + 0x2e8b0d, + 0x2e9095, + 0x2e990c, + 0x2e9c8d, + 0x2e9fd2, + 0x20d3c2, + 0x282182, + 0x10210c, + 0x202202, + 0x379cc6, + 0x211ac6, + 0x4429eb44, + 0x2025c2, + 0x207806, + 0x217a02, + 0x254405, + 0x203cc2, + 0x215c89, + 0x2161cc, + 0x21650b, + 0x2003c2, + 0x268908, + 0x201982, + 0x207002, + 0x287a46, + 0x2885c5, + 0x394447, + 0x358845, + 0x27a8c5, + 0x204d82, + 0x22f482, + 0x2035c2, + 0x2b1f87, + 0x30880d, + 0x308b8c, + 0x2517c7, + 0x28e5c2, + 0x216402, + 0x379688, + 0x259a08, + 0x327448, + 0x3c4404, + 0x2e1e87, + 0x3064c3, + 0x209ec2, + 0x211b42, + 0x309589, + 0x317c07, + 0x205442, + 0x288085, + 0x221e42, + 0x223c42, + 0x30f203, + 0x30f206, + 0x310482, + 0x313702, + 0x200402, + 0x234586, + 0x357f07, + 0x21d602, + 0x200902, + 0x29af8f, + 0x25864d, + 0x2db38e, + 0x231d0c, + 0x20c802, + 0x2026c2, + 0x3d69c5, + 0x32eb06, + 0x201d82, + 0x209982, + 0x200682, + 0x232004, + 0x354204, + 0x360a46, + 0x202fc2, + 0x29bdc7, + 0x234683, + 0x249088, + 0x249a48, + 0x250e47, + 0x38e646, + 0x201a82, + 0x232603, + 0x232607, + 0x2875c6, + 0x2d6385, + 0x257ec8, + 0x2075c2, + 0x2fc8c7, + 0x230802, + 0x2a7382, + 0x206342, + 0x2030c9, + 0x209202, + 0x111908, + 0x201682, + 0x2b0b43, + 0x336e87, + 0x201b02, + 0x21634c, + 0x21664b, + 0x3a1106, + 0x30f905, + 0x4462b803, + 0x2021c2, + 0x2019c2, + 0x2d7cc6, + 0x234b83, + 0x3b92c7, + 0x20ea42, + 0x2008c2, + 0x25ec15, + 0x388e55, + 0x261993, + 0x389393, + 0x279a47, + 0x28b891, + 0x295090, + 0x29a312, + 0x29d851, + 0x2a1cc8, + 0x2a1cd0, + 0x2a5d0f, + 0x2b1313, + 0x2b7ad2, + 0x2c3490, + 0x376b8f, + 0x39c552, + 0x2c83d1, + 0x2cb893, + 0x2ce352, + 0x2e874f, + 0x2eb08e, + 0x2efed2, + 0x2f2f91, + 0x2f384f, + 0x2f6dce, + 0x2f96d1, + 0x2fbd50, + 0x3047d2, + 0x307e91, + 0x30ca90, + 0x30d4cf, + 0x310811, + 0x314290, + 0x314d46, + 0x327a47, + 0x2284c7, + 0x2027c2, + 0x296485, + 0x3e0bc7, + 0x22ccc2, + 0x205a42, + 0x3d0f05, + 0x20c703, + 0x378306, + 0x3089cd, + 0x308d0c, + 0x207882, + 0x3ea74b, + 0x287b4a, + 0x28a70a, + 0x22ba49, + 0x2d6e8b, + 0x30798d, + 0x28668c, + 0x31ae8a, + 0x25018c, + 0x25360b, + 0x269c8c, + 0x28414e, + 0x28c48b, + 0x2acb0c, + 0x2ccf43, + 0x37ef06, + 0x36a682, + 0x227e42, + 0x26fd83, + 0x201102, + 0x220983, + 0x2da0c6, + 0x275847, + 0x2dd0c6, + 0x3b2208, + 0x352988, + 0x32cb46, + 0x20b382, + 0x31b80d, + 0x31bb4c, + 0x34b287, + 0x31f587, + 0x226402, + 0x2216c2, + 0x209142, + 0x292602, + 0x33f716, + 0x344395, + 0x347056, + 0x34d093, + 0x34d752, + 0x35e9d3, + 0x35f512, + 0x3c048f, + 0x3cfb98, + 0x3d1e17, + 0x3d5419, + 0x3d7198, + 0x3d8058, + 0x3d8bd7, + 0x3d9d97, + 0x3dc056, + 0x3e0713, + 0x3e0d95, + 0x3e17d2, + 0x3e1c53, + 0x16f02, + 0x44a03584, + 0x44fcd6c8, + 0x5985, + 0x20b642, + 0x214883, + 0x445c2, + 0x24acc3, + 0x21a043, + 0x226783, + 0x20f583, + 0x214e43, + 0x225a04, + 0x214883, + 0x24acc3, + 0x219303, + 0x2000c2, + 0x204502, + 0x45ea6b05, + 0x462a6305, + 0x46653946, + 0x1c3448, + 0x46ace985, + 0x20b642, + 0x203142, + 0x46f25e05, + 0x47294c85, + 0x47695b87, + 0x47af7ec9, + 0x47fbb404, 0x200382, 0x200642, - 0x4725a945, - 0x4769b3c9, - 0x47b36dc8, - 0x47ebb2c5, - 0x4834ff07, - 0x4861cf88, - 0x48b18f85, - 0x48e21486, - 0x4924b649, - 0x496f9ec8, - 0x49ad5408, - 0x49ea4e8a, - 0x4a387144, - 0x4a6b2605, - 0x4aad1108, - 0x4ae876c5, - 0x21ab82, - 0x4b2e3303, - 0x4b6aff46, - 0x4bba9148, - 0x4bf53fc6, - 0x4c273148, - 0x4c7da086, - 0x4ca4fb84, - 0x4ce04cc2, - 0x4d6e2c47, - 0x4dab7d44, - 0x4de85287, - 0x4e3e3047, + 0x4826ab45, + 0x486a6449, + 0x48baaf08, + 0x48ec7645, + 0x49359c47, + 0x4961e1c8, + 0x49b14945, + 0x49eb0206, + 0x4a2564c9, + 0x4a78d7c8, + 0x4aade488, + 0x4aeb0c4a, + 0x4b23cdc4, + 0x4b6bd045, + 0x4bab9cc8, + 0x4be59605, + 0x21f082, + 0x4c2024c3, + 0x4c6bbc86, + 0x4ca4c1c8, + 0x4ceffb06, + 0x4d358048, + 0x4d7a9686, + 0x4da43e44, + 0x4de01f42, + 0x4e6ee3c7, + 0x4eac2644, + 0x4ee909c7, + 0x4f3e8187, 0x2003c2, - 0x4e6a8485, - 0x4ea7fa84, - 0x4efafd07, - 0x4f23cc07, - 0x4f690046, - 0x4fa8c145, - 0x4fea2f07, - 0x502cdf88, - 0x507e33c7, - 0x50abb909, - 0x50ee3405, - 0x5131f287, - 0x5169b0c6, - 0x2780b, - 0x51a2e2c8, - 0x230c4d, - 0x271d09, - 0x27f48b, - 0x29868b, - 0x2b744b, - 0x2d24cb, - 0x32430b, - 0x3245cb, - 0x324a89, - 0x325f8b, - 0x32624b, - 0x3283cb, - 0x328fca, - 0x32950a, - 0x329b0c, - 0x32fecb, - 0x33040a, - 0x34218a, - 0x34c2ce, - 0x34d44e, - 0x34d7ca, - 0x34f78a, - 0x35044b, - 0x35070b, - 0x35120b, - 0x36e7cb, - 0x36edca, - 0x36fa8b, - 0x36fd4a, - 0x36ffca, - 0x37024a, - 0x391a8b, - 0x39944b, - 0x39bc0e, - 0x39bf8b, - 0x3a7e4b, - 0x3a9ecb, - 0x3ada8a, - 0x3add09, - 0x3adf4a, - 0x3afa0a, - 0x3c654b, - 0x3d3d8b, - 0x3d4f4a, - 0x3d5a4b, - 0x3dbc4b, - 0x3e8b8b, - 0x51e8d908, - 0x522946c9, - 0x526ab689, - 0x52af0788, - 0x359645, - 0x20dec3, - 0x25cd84, - 0x2cbb05, - 0x21e886, - 0x221205, - 0x293a44, - 0x2bfc48, - 0x31fc85, - 0x29d144, - 0x20d007, - 0x2aa84a, - 0x24104a, - 0x372407, - 0x3a9307, - 0x2ec787, - 0x291247, - 0x313305, - 0x219686, - 0x372c47, - 0x35a804, - 0x2c9046, - 0x3dc846, - 0x203345, - 0x333144, - 0x2a80c6, - 0x2a9a07, - 0x22fa86, + 0x4f6b54c5, + 0x4fa84804, + 0x4ffb69c7, + 0x50247947, + 0x50698f06, + 0x50a1a705, + 0x50eaf707, + 0x513ce308, + 0x51663b07, + 0x51ac4449, + 0x51eeed85, + 0x52316ec7, + 0x526a6146, + 0x2af8b, + 0x52a33c88, + 0x22ec0d, + 0x261089, + 0x28970b, + 0x2a66cb, + 0x2bf2cb, + 0x2cd90b, + 0x32ed0b, + 0x32efcb, + 0x32f9c9, + 0x33088b, + 0x330b4b, + 0x33110b, + 0x33244a, + 0x33298a, + 0x332f8c, + 0x337e8b, + 0x33848a, + 0x34ac0a, + 0x354ace, + 0x35570e, + 0x355a8a, + 0x358e4a, + 0x35a38b, + 0x35a64b, + 0x35b14b, + 0x37ca4b, + 0x37d04a, + 0x37dd0b, + 0x37dfca, + 0x37e24a, + 0x37e4ca, + 0x39c14b, + 0x3a360b, + 0x3a678e, + 0x3a6b0b, + 0x3aeb4b, + 0x3b034b, + 0x3b490a, + 0x3b4b89, + 0x3b4dca, + 0x3b66ca, + 0x3cf58b, + 0x3deb4b, + 0x3df64a, + 0x3e014b, + 0x3e660b, + 0x3f2a0b, + 0x52e96f08, + 0x5329d189, + 0x536b8389, + 0x53afcdc8, + 0x3607c5, + 0x203ec3, + 0x267c44, + 0x397685, + 0x3bb146, + 0x3574c5, + 0x29c844, + 0x2e4e48, + 0x328f45, + 0x2a88c4, + 0x206a87, + 0x2b74ca, + 0x325b4a, + 0x39bac7, + 0x23f147, + 0x2f7287, + 0x26acc7, + 0x3bfb05, + 0x3bbd86, + 0x249647, + 0x2606c4, + 0x2d2d86, + 0x302a46, + 0x3cb6c5, + 0x37b304, + 0x2b5106, 0x2b6407, - 0x23e343, - 0x39f546, - 0x3367c5, - 0x28c687, - 0x27588a, - 0x23e544, - 0x21ad88, - 0x2ba709, - 0x2c9607, - 0x3c6006, - 0x267608, - 0x37ae89, - 0x39f384, - 0x322584, - 0x30c2c5, - 0x21b448, - 0x2dbb47, - 0x30a449, - 0x3d8f48, - 0x31b5c6, - 0x361b46, - 0x2a5ac8, - 0x36d846, - 0x29b285, - 0x290106, - 0x285988, - 0x28e206, - 0x261acb, - 0x38a106, - 0x2a6f8d, - 0x20d485, - 0x2b7c06, - 0x21d045, - 0x3c8609, - 0x2e4747, - 0x3d2008, - 0x3c4f86, - 0x2a6209, - 0x2c48c6, - 0x275805, - 0x216b86, - 0x2d7cc6, - 0x2e02c9, - 0x2cc886, - 0x31d5c7, - 0x2dec05, - 0x20c043, - 0x261c45, - 0x2bc687, - 0x3640c6, - 0x20d389, - 0x27ad86, - 0x285486, - 0x226a89, - 0x28fb09, - 0x2aea87, - 0x201dc8, - 0x29f949, - 0x28cb08, - 0x3e5e06, - 0x2e8945, - 0x2834ca, - 0x285506, - 0x3cfc86, - 0x2e2b85, - 0x25ec08, - 0x358d07, - 0x239a8a, - 0x257686, - 0x303885, - 0x30aa86, - 0x2048c7, - 0x3c5ec7, - 0x2ac545, - 0x2759c5, - 0x23fdc6, - 0x36a446, - 0x269f46, - 0x2d15c4, - 0x28ebc9, - 0x2966c6, - 0x3097ca, - 0x232148, - 0x31ef88, - 0x24104a, - 0x2421c5, - 0x2a9945, - 0x3def48, - 0x2ce108, - 0x23ae87, - 0x288686, - 0x33a388, - 0x20b607, - 0x28d208, - 0x2ca506, - 0x290f08, - 0x2a1dc6, - 0x287287, - 0x29ea46, - 0x2a80c6, - 0x2313ca, - 0x3dbf46, - 0x2e8949, - 0x2abb86, - 0x212f8a, - 0x24fb89, - 0x3024c6, - 0x2cd844, - 0x3222cd, - 0x28b4c7, - 0x39fe06, - 0x2d52c5, - 0x2c4945, - 0x394246, - 0x2ae109, - 0x369787, - 0x286386, - 0x393386, - 0x293ac9, - 0x2e37c4, - 0x3025c4, - 0x30f188, - 0x2fbec6, - 0x2adc88, - 0x216b08, - 0x260507, - 0x30e2c9, - 0x347a47, - 0x2c30ca, - 0x30334f, - 0x2396ca, - 0x20ac05, - 0x285bc5, - 0x216945, - 0x3cd547, - 0x204483, - 0x201fc8, - 0x2f6086, - 0x2f6189, - 0x2f5f86, - 0x2e0c87, - 0x2a5fc9, - 0x3d1f08, - 0x3c87c7, - 0x322d43, - 0x3596c5, - 0x204405, - 0x2d140b, - 0x287784, - 0x300084, - 0x282c86, - 0x322f07, - 0x3947ca, - 0x3b0887, - 0x29bf07, - 0x28b685, - 0x3de685, - 0x2934c9, - 0x2a80c6, - 0x3b070d, - 0x354745, - 0x2c7183, - 0x20dac3, - 0x258b05, - 0x33ac85, - 0x267608, - 0x286cc7, - 0x245246, - 0x2ab306, - 0x235745, - 0x23c847, - 0x3e4107, - 0x25d0c7, - 0x2b268a, - 0x39f608, - 0x2d15c4, - 0x28df87, - 0x28a847, - 0x35df46, - 0x2a1447, - 0x2ea808, - 0x35d588, - 0x27a306, - 0x3a9548, - 0x2cc904, - 0x372c46, - 0x266286, - 0x246046, - 0x2025c6, - 0x214ac4, - 0x291306, - 0x2d3e46, - 0x2a5386, - 0x224006, - 0x20d986, - 0x2ea646, - 0x245148, - 0x2c6648, - 0x2e5688, - 0x221408, - 0x3deec6, - 0x20f1c5, - 0x27b9c6, - 0x2bb345, - 0x397087, - 0x246005, - 0x217943, - 0x26a545, - 0x23b844, - 0x20dac5, - 0x223a03, - 0x2c4707, - 0x3aa1c8, - 0x2b64c6, - 0x2d630d, - 0x285b86, - 0x2a4905, - 0x2221c3, - 0x2d0ac9, - 0x2e3946, - 0x2a34c6, - 0x29c484, - 0x239647, - 0x2f43c6, - 0x303ac5, - 0x244243, - 0x211184, - 0x28aa06, - 0x219784, - 0x3c11c8, - 0x2064c9, - 0x369d09, - 0x2ada8a, - 0x2495cd, - 0x23e8c7, - 0x206986, - 0x21e5c4, - 0x293f89, - 0x2924c8, - 0x294546, - 0x242b06, - 0x2a1447, - 0x2c3b06, - 0x223686, - 0x3d0c06, - 0x3e30ca, - 0x21cf88, - 0x234885, - 0x245749, - 0x270b0a, - 0x33b008, - 0x2a8cc8, - 0x2a3448, - 0x3e450c, - 0x3996c5, - 0x2ab588, - 0x2ca006, - 0x29dac6, - 0x2dab47, - 0x3b0785, - 0x290285, - 0x369bc9, - 0x210b07, - 0x2f6145, - 0x2286c7, - 0x20dac3, - 0x2dc505, - 0x229108, - 0x2cc507, - 0x2a8b89, - 0x2e1dc5, - 0x30a804, - 0x31dc08, - 0x2cb5c7, - 0x3c8988, - 0x22aa48, - 0x392005, - 0x353b46, - 0x2ab406, - 0x30c689, - 0x266387, - 0x2bbb86, - 0x2585c7, - 0x215103, - 0x21eb44, - 0x2e6fc5, - 0x23c984, - 0x2526c4, - 0x28db87, - 0x2743c7, - 0x286544, - 0x2a89d0, - 0x333847, - 0x3de685, - 0x25084c, - 0x22a804, - 0x2c1108, - 0x287189, - 0x2be9c6, - 0x32f908, - 0x27a484, - 0x282f88, - 0x23a086, - 0x231248, - 0x2a93c6, - 0x2d2d4b, - 0x331b85, - 0x2e6e48, - 0x21a484, - 0x28f78a, - 0x2a8b89, - 0x29e946, - 0x21b6c8, - 0x2657c5, - 0x2d00c4, - 0x2c1006, - 0x25cf88, - 0x28d908, - 0x3356c6, - 0x36c104, - 0x283446, - 0x347ac7, - 0x285187, - 0x2a144f, - 0x346f47, - 0x395747, - 0x368945, - 0x3410c5, - 0x2ae749, - 0x2f8c06, - 0x28c7c5, - 0x28fe07, - 0x2de9c8, - 0x219805, - 0x29ea46, - 0x231f88, - 0x353fca, - 0x32c888, - 0x2980c7, - 0x303786, - 0x245706, - 0x2003c3, - 0x211c03, - 0x270cc9, - 0x29f7c9, - 0x2bb806, - 0x2e1dc5, - 0x3a97c8, - 0x21b6c8, - 0x2a7d08, - 0x3d0c8b, - 0x2d6547, - 0x31d409, - 0x2a16c8, - 0x329f44, - 0x3e3a48, - 0x299dc9, - 0x2bbe85, - 0x3cd447, - 0x21ebc5, - 0x28d808, - 0x29bb4b, - 0x2a2c50, - 0x2b7845, - 0x21a3cc, - 0x245405, - 0x28b703, - 0x2b49c6, - 0x2d3004, - 0x27fb86, - 0x2a9a07, - 0x221404, - 0x24cf48, - 0x201e8d, - 0x342545, - 0x23e904, - 0x2b60c4, - 0x395489, - 0x2afa88, - 0x332047, - 0x23a108, - 0x28ec88, - 0x286685, - 0x3cd987, - 0x286607, - 0x2f6447, - 0x2759c9, - 0x3c3009, - 0x375346, - 0x21bf06, - 0x28fec6, - 0x31a6c5, - 0x3c7104, - 0x3cf306, - 0x3d9dc6, - 0x2866c8, - 0x20458b, - 0x2fba47, - 0x21e5c4, - 0x2f4306, - 0x2eab47, - 0x38c785, - 0x3a1b45, - 0x266844, - 0x3c2f86, - 0x3cf388, - 0x293f89, - 0x254986, - 0x2922c8, - 0x303b86, - 0x360fc8, - 0x3603cc, - 0x286546, - 0x2a45cd, - 0x2a4a4b, - 0x31d685, - 0x3e4247, - 0x2cc986, - 0x3c5d88, - 0x3753c9, - 0x21d3c8, - 0x3de685, - 0x2893c7, - 0x28cc08, - 0x3c3709, - 0x2f4046, - 0x26af8a, - 0x3c5b08, - 0x21d20b, - 0x2d668c, - 0x283088, - 0x28a286, - 0x22de48, - 0x353c47, - 0x224e49, - 0x29b2cd, - 0x2a7fc6, - 0x3dc948, - 0x2c6509, - 0x2d16c8, - 0x291008, - 0x2d4c8c, - 0x2d5947, - 0x2d7887, - 0x275805, - 0x2c9987, - 0x2de888, - 0x2c1086, - 0x25480c, - 0x306808, - 0x2e1708, - 0x3cf646, - 0x327e47, - 0x375544, - 0x221408, - 0x29594c, - 0x243f8c, - 0x20ac85, - 0x2033c7, - 0x36c086, - 0x327dc6, - 0x39d8c8, - 0x224dc4, - 0x22fa8b, - 0x292e8b, - 0x303786, - 0x201d07, - 0x208805, - 0x27d905, - 0x22fbc6, - 0x265785, - 0x287745, - 0x2e0107, - 0x223a09, - 0x36a604, - 0x247245, - 0x30b005, - 0x3477c8, - 0x3a89c5, - 0x2d7089, - 0x3982c7, - 0x3982cb, - 0x302206, - 0x244e89, - 0x333088, - 0x2931c5, - 0x2f6548, - 0x3c3048, - 0x283d07, - 0x2455c7, - 0x28dc09, - 0x231187, - 0x29a109, - 0x2b984c, - 0x2bb808, - 0x2bf649, - 0x2c0787, - 0x28ed49, - 0x38fbc7, - 0x2d6788, - 0x3c1585, - 0x372bc6, - 0x2d5308, - 0x2fa4c8, - 0x2709c9, - 0x287787, - 0x27e305, - 0x207789, - 0x31f546, - 0x29b0c4, - 0x37f506, - 0x3a8fc8, - 0x23bc07, - 0x204788, - 0x3a9609, - 0x353907, - 0x2a7e46, - 0x3e3d84, - 0x26a5c9, - 0x3cd808, - 0x3cf507, - 0x291846, - 0x2044c6, - 0x3cfc04, - 0x2f3b46, - 0x207843, - 0x331709, - 0x331b46, - 0x2b7e85, - 0x2ab306, - 0x224185, - 0x28d088, - 0x205387, - 0x3c2786, - 0x333706, - 0x31ef88, - 0x2ae8c7, - 0x2a8005, - 0x2a87c8, - 0x3d4188, - 0x3c5b08, - 0x2452c5, - 0x372c46, - 0x369ac9, - 0x30c504, - 0x22400b, - 0x22338b, - 0x234789, - 0x20dac3, - 0x263745, - 0x2b62c6, - 0x246508, - 0x2fb584, - 0x2b64c6, - 0x2b27c9, - 0x3201c5, - 0x2e0046, - 0x2cb5c6, - 0x21b6c4, - 0x2a8e4a, - 0x2b7dc8, - 0x2fa4c6, - 0x371545, - 0x201b87, - 0x33aec7, - 0x353b44, - 0x2235c7, - 0x245fc4, - 0x245fc6, - 0x202003, - 0x2759c5, - 0x2bdc85, - 0x347188, - 0x28e145, - 0x286289, - 0x221247, - 0x22124b, - 0x2afd4c, - 0x2b034a, - 0x34ff07, - 0x20ac43, - 0x284b88, - 0x302585, - 0x219885, - 0x359784, - 0x2d6686, - 0x287186, - 0x2f3b87, - 0x26030b, - 0x214ac4, - 0x368a84, - 0x2bf884, - 0x2dfe06, - 0x221404, - 0x21b548, - 0x359585, - 0x249c05, - 0x2a7c47, - 0x3e4349, - 0x33ac85, - 0x39424a, - 0x2deb09, - 0x2ae3ca, - 0x3e3209, - 0x31c284, - 0x393445, - 0x2c3c08, - 0x3afdcb, - 0x30c2c5, - 0x216c86, - 0x24a884, - 0x2867c6, - 0x353789, - 0x2eac47, - 0x27af48, - 0x249946, - 0x347a47, - 0x28d908, - 0x3780c6, - 0x3e3e04, - 0x3b2687, - 0x384f05, - 0x396107, - 0x221484, - 0x2cc906, - 0x3aea88, - 0x2a4c08, - 0x32a647, - 0x306e08, - 0x2a1e85, - 0x20d904, - 0x240f48, - 0x29ae44, - 0x2168c5, - 0x3ae984, - 0x20b707, - 0x296787, - 0x28ee88, - 0x322f46, - 0x28e0c5, - 0x286088, - 0x32ca88, - 0x2ad9c9, - 0x223686, - 0x239b08, - 0x28f60a, - 0x38c808, - 0x318f85, - 0x27bbc6, - 0x2adfc8, - 0x28948a, - 0x232b87, - 0x292905, - 0x29df48, - 0x272e04, - 0x25ec86, - 0x2d7f88, - 0x20d986, - 0x3d55c8, - 0x237bc7, - 0x20cf06, - 0x2cd844, - 0x326687, - 0x2c6a84, - 0x353747, - 0x3cf84d, - 0x234805, - 0x2cc30b, - 0x244206, - 0x25e4c8, - 0x24cf04, - 0x26a146, - 0x28aa06, - 0x22e187, - 0x2a428d, - 0x3089c7, - 0x2c70c8, - 0x294145, - 0x219948, - 0x2dbac6, - 0x2a1f08, - 0x3e0d46, - 0x36c9c7, - 0x2e2d89, - 0x338587, - 0x294808, - 0x269145, - 0x2357c8, - 0x327d05, - 0x2334c5, - 0x379205, - 0x20af03, - 0x202644, - 0x245745, - 0x24b649, - 0x372a06, - 0x2ea908, - 0x289685, - 0x2c9847, - 0x2a90ca, - 0x2dff89, - 0x2d7bca, - 0x2e5708, - 0x22850c, - 0x28fe8d, - 0x31e443, - 0x3d54c8, - 0x211145, - 0x353d86, - 0x3d1d86, - 0x321f85, - 0x2586c9, - 0x30db85, - 0x286088, - 0x2648c6, - 0x36ad46, - 0x2af1c9, - 0x266e47, - 0x29be06, - 0x2a9048, - 0x245f48, - 0x2f0987, - 0x2e050e, - 0x2dbd05, - 0x3c3605, - 0x20d888, - 0x3a21c7, - 0x204502, - 0x2d4944, - 0x27fa8a, - 0x3cf5c8, - 0x3c3186, - 0x2a6108, - 0x2ab406, - 0x340f48, - 0x2bbb88, - 0x233484, - 0x2c9c05, - 0x70e7c4, - 0x70e7c4, - 0x70e7c4, - 0x201f03, - 0x204346, - 0x286546, - 0x2aa3cc, - 0x20cf43, - 0x270b06, - 0x201fc4, - 0x2e38c8, - 0x2b2605, - 0x27fb86, - 0x2d1208, - 0x2e6386, - 0x3c2706, - 0x29e748, - 0x2e7047, - 0x230f49, - 0x2f04ca, - 0x274544, - 0x246005, - 0x30a405, - 0x2e3646, - 0x23e906, - 0x2aa146, - 0x382006, - 0x231084, - 0x23108b, - 0x239644, - 0x201c05, - 0x2bab85, - 0x2605c6, - 0x20ec48, - 0x28fd47, - 0x331ac4, - 0x211583, - 0x272905, - 0x37f3c7, - 0x28fc4b, - 0x347087, - 0x2d1108, - 0x2c9d47, - 0x276a06, - 0x271fc8, - 0x2cf3cb, - 0x2cba46, - 0x212949, - 0x2cf545, - 0x322d43, - 0x2e0046, - 0x237ac8, - 0x215ec3, - 0x29acc3, - 0x28d906, - 0x2ab406, - 0x37604a, - 0x28a2c5, - 0x28a84b, - 0x2ab24b, - 0x217e03, - 0x209b03, - 0x2c3044, - 0x2e4887, - 0x237b44, - 0x29b2c4, - 0x2c9e84, - 0x38cb08, - 0x371488, - 0x211b89, - 0x2e3488, - 0x3a0087, - 0x224006, - 0x2ea54f, - 0x2dbe46, - 0x2e4dc4, - 0x3712ca, - 0x37f2c7, - 0x2c6b86, - 0x29b109, - 0x211b05, - 0x3472c5, - 0x211c46, - 0x235903, - 0x272e49, - 0x21d106, - 0x3a93c9, - 0x3947c6, - 0x2759c5, - 0x20b085, - 0x202643, - 0x2e49c8, - 0x332207, - 0x2f6084, - 0x2e3748, - 0x29d844, - 0x31ff46, - 0x2b49c6, - 0x247dc6, - 0x2e6d09, - 0x219805, - 0x2a80c6, - 0x25c0c9, - 0x2db246, - 0x2ea646, - 0x3abbc6, - 0x209085, - 0x3ae986, - 0x36c9c4, - 0x3c1585, - 0x2d5304, - 0x2c8f46, - 0x354704, - 0x201c03, - 0x292585, - 0x23d308, - 0x35a407, - 0x2fb609, - 0x292808, - 0x2a5891, - 0x2cb64a, - 0x3036c7, - 0x237d06, - 0x201fc4, - 0x2d5408, - 0x293688, - 0x2a5a4a, - 0x2d6e4d, - 0x216b86, - 0x29e846, - 0x326746, - 0x2ac3c7, - 0x2c7185, - 0x30d607, - 0x201e85, - 0x398404, - 0x3c2d46, - 0x2884c7, - 0x272b4d, - 0x2adf07, - 0x2bfb48, - 0x286389, - 0x27bac6, - 0x2f3fc5, - 0x2e9284, - 0x3a90c6, - 0x353a46, - 0x3cf746, - 0x2a6988, - 0x22d503, - 0x21b783, - 0x32c105, - 0x322606, - 0x2bbb45, - 0x249b48, - 0x2a9bca, - 0x239084, - 0x2e38c8, - 0x2a3448, - 0x3a9947, - 0x37b249, - 0x2d0e08, - 0x294007, - 0x2d3fc6, - 0x20d98a, - 0x3a9148, - 0x31dac9, - 0x2afb48, - 0x222849, - 0x35d787, - 0x208f45, - 0x2ab806, - 0x2c0f08, - 0x281fc8, - 0x261d08, - 0x342688, - 0x201c05, - 0x200d04, - 0x23bec8, - 0x24a604, - 0x3e3004, - 0x2759c5, - 0x29d187, - 0x3e4109, - 0x22df87, - 0x226b05, - 0x282e86, - 0x370d46, - 0x20ed44, - 0x2af4c6, - 0x28ac84, - 0x3d4886, - 0x3e3ec6, - 0x215d06, - 0x3de685, - 0x249a07, - 0x20ac43, - 0x22bf49, - 0x31ed88, - 0x293e84, - 0x293e8d, - 0x2a4d08, - 0x3082c8, - 0x31da46, - 0x2e2e89, - 0x2dff89, - 0x353485, - 0x2a9cca, - 0x27cb0a, - 0x291a4c, - 0x291bc6, - 0x284786, - 0x2dc446, - 0x3a6ac9, - 0x353fc6, - 0x2ae906, - 0x30dc46, - 0x221408, - 0x306e06, - 0x2e43cb, - 0x29d305, - 0x249c05, - 0x285285, - 0x30ef06, - 0x20d943, - 0x247d46, - 0x2ade87, - 0x2d52c5, - 0x2f4ec5, - 0x2c4945, - 0x2f9646, - 0x336cc4, - 0x336cc6, - 0x2a3d09, - 0x30ed8c, - 0x398148, - 0x25cf04, - 0x39d6c6, - 0x244306, - 0x237ac8, - 0x21b6c8, - 0x30ec89, - 0x201b87, - 0x2fbc09, - 0x27d9c6, - 0x216b04, - 0x210484, - 0x28df04, - 0x28d908, - 0x3e3f4a, - 0x33ac06, - 0x368807, - 0x396387, - 0x244f85, - 0x2b9304, - 0x299d86, - 0x2c71c6, - 0x205483, - 0x31ebc7, - 0x22a948, - 0x3535ca, - 0x202148, - 0x273148, - 0x354745, - 0x237105, - 0x2fbb45, - 0x245346, - 0x246e46, - 0x316a45, - 0x331949, - 0x2b910c, - 0x34ca47, - 0x2a5ac8, - 0x282185, - 0x70e7c4, - 0x236b04, - 0x2cc644, - 0x3d0ac6, - 0x2ad28e, - 0x347347, - 0x2ac5c5, - 0x30c48c, - 0x29d707, - 0x288447, - 0x2c8989, - 0x21ae49, - 0x292905, - 0x31ed88, - 0x369ac9, - 0x3c59c5, - 0x2d5208, - 0x2c1f86, - 0x2411c6, - 0x24fb84, - 0x2aa648, - 0x206743, - 0x203f44, - 0x272985, - 0x39b187, - 0x26a445, - 0x28f4c9, - 0x29b80d, - 0x2b2ec6, - 0x2115c4, - 0x288608, - 0x22384a, - 0x3e9847, - 0x2b0c45, - 0x203f83, - 0x2ab40e, - 0x2e4acc, - 0x33b107, - 0x2ad447, - 0x4d39a7c7, - 0x143386, - 0x27804, - 0x212fc3, - 0x354005, - 0x2cc645, - 0x2a64c8, - 0x2a3289, - 0x25ce06, - 0x237b44, - 0x303606, - 0x245d0b, - 0x2da2cc, - 0x257b47, - 0x2e4685, - 0x3d4088, - 0x2f0745, - 0x3712c7, - 0x2e2c47, - 0x2494c5, - 0x20d943, - 0x2abd84, - 0x288cc5, - 0x36a505, - 0x36a506, - 0x2a0088, - 0x2884c7, - 0x3d2086, - 0x3cfb06, - 0x379146, - 0x3dcac9, - 0x3cda87, - 0x25cc86, - 0x2da446, - 0x387046, - 0x2b7d05, - 0x218586, - 0x3b5545, - 0x3a8a48, - 0x29cdcb, - 0x2998c6, - 0x3963c4, - 0x222e09, - 0x221244, - 0x2c1f08, - 0x311007, - 0x290f04, - 0x2d02c8, - 0x2d6984, - 0x2b7d44, - 0x293dc5, - 0x342586, - 0x38ca47, - 0x235f03, - 0x2a7f05, - 0x34bb44, - 0x3c3646, - 0x353508, - 0x32c785, - 0x29ca89, - 0x207985, - 0x3ca8c8, - 0x326c47, - 0x331c48, - 0x2cff07, - 0x395809, - 0x291186, - 0x397c06, - 0x29fa84, - 0x223f45, - 0x3151cc, - 0x285287, - 0x285a87, - 0x23e548, - 0x2b2ec6, - 0x2addc4, - 0x37ddc4, - 0x28da89, - 0x2dc546, - 0x293547, - 0x27b884, - 0x2af5c6, - 0x3de9c5, - 0x2e2ac7, - 0x2e4346, - 0x26ae49, - 0x2d2747, - 0x2a1447, - 0x2af046, - 0x291785, - 0x28c108, - 0x21cf88, - 0x36db46, - 0x32c7c5, - 0x2d8fc6, - 0x20d083, - 0x2a6349, - 0x2a9ece, - 0x2cfc48, - 0x29d948, - 0x36d94b, - 0x29ccc6, - 0x396284, - 0x28fa84, - 0x2a9fca, - 0x21a2c7, - 0x25cd45, - 0x212949, - 0x2d3f05, - 0x3e3047, - 0x29e6c4, - 0x206647, - 0x216a08, - 0x2c96c6, - 0x2cca89, - 0x2d0f0a, - 0x21a246, - 0x2a4846, - 0x2bab05, - 0x39c545, - 0x3b0e47, - 0x24f388, - 0x3de908, - 0x233486, - 0x20b105, - 0x23e68e, - 0x2d15c4, - 0x2a6445, - 0x282809, - 0x2f8a08, - 0x298006, - 0x2a82cc, - 0x2a97d0, - 0x2acecf, - 0x2ae648, - 0x34ff07, - 0x3de685, - 0x245745, - 0x38c8c9, - 0x29e149, - 0x283546, - 0x30c347, - 0x39d7c5, - 0x23ae89, - 0x35dfc6, - 0x353e0d, - 0x28ddc9, - 0x29b2c4, - 0x2cf6c8, - 0x23bf89, - 0x33adc6, - 0x284d85, - 0x397c06, - 0x27ae09, - 0x27b708, - 0x20f1c5, - 0x28f704, - 0x2a848b, - 0x33ac85, - 0x246586, - 0x2901c6, - 0x259446, - 0x3d0e8b, - 0x29cb89, - 0x225005, - 0x396f87, - 0x2cb5c6, - 0x25e646, - 0x28f388, - 0x2d40c9, - 0x2bf90c, - 0x37f1c8, - 0x31d186, - 0x3356c3, - 0x38adc6, - 0x302505, - 0x28b388, - 0x20ab06, - 0x3c8888, - 0x3b0905, - 0x267305, - 0x326d88, - 0x3b6ec7, - 0x3d1cc7, - 0x2f3b87, - 0x32f908, - 0x350048, - 0x2f1086, - 0x2c8d87, - 0x21ea07, - 0x39558a, - 0x210843, - 0x30ef06, - 0x23e605, - 0x27fa84, - 0x286389, - 0x395784, - 0x2c96c4, - 0x2a9444, - 0x2ad44b, - 0x332147, - 0x23e8c5, - 0x2a1b88, - 0x282e86, - 0x282e88, - 0x28a206, - 0x298945, - 0x298b85, - 0x29a546, - 0x30e148, - 0x29b048, - 0x286546, - 0x2a19cf, - 0x2a5e10, - 0x20d485, - 0x20ac43, - 0x237405, - 0x31d348, - 0x29e049, - 0x3c5b08, - 0x30c148, - 0x25ae48, - 0x332207, - 0x282b49, - 0x3c8a88, - 0x2b3944, - 0x2a92c8, - 0x347889, - 0x2c9307, - 0x2bc7c4, - 0x22e048, - 0x2497ca, - 0x2ee946, - 0x216b86, - 0x223549, - 0x2a9a07, - 0x2e0b08, - 0x244808, - 0x3d01c8, - 0x2796c5, - 0x386605, - 0x249c05, - 0x2cc605, - 0x2c6347, - 0x20d945, - 0x2d52c5, - 0x386b86, - 0x3c5a47, - 0x3afd07, - 0x249ac6, - 0x2e5c45, - 0x246586, - 0x205405, - 0x2c1d88, - 0x2f9e44, - 0x2db2c6, - 0x351e44, - 0x2d00c8, - 0x2db3ca, - 0x286ccc, - 0x2aaa05, - 0x2ac486, - 0x2bfac6, - 0x3b6806, - 0x31d204, - 0x3df285, - 0x289ac7, - 0x2a9a89, - 0x2e03c7, - 0x70e7c4, - 0x70e7c4, - 0x331fc5, - 0x312a84, - 0x2a7a8a, - 0x282d06, - 0x3698c4, - 0x203345, - 0x2c5405, - 0x2c70c4, - 0x28fe07, - 0x207907, - 0x2dfe08, - 0x2d90c8, - 0x20f1c9, - 0x29ae48, - 0x29494b, - 0x239704, - 0x29eb45, - 0x28c845, - 0x2f3b09, - 0x2d40c9, - 0x222d08, - 0x3d8dc8, - 0x2605c4, - 0x244345, - 0x20dec3, - 0x2e3605, - 0x2a8146, - 0x2a30cc, - 0x21d006, - 0x284c86, - 0x298285, - 0x2f96c8, - 0x2dac86, - 0x237e86, - 0x216b86, - 0x22b48c, - 0x27d4c4, - 0x37928a, - 0x2981c8, - 0x2a2f07, - 0x34ba46, - 0x25cec7, - 0x303205, - 0x291846, - 0x35ecc6, - 0x3728c7, - 0x2d0c04, - 0x20b805, - 0x282804, - 0x398487, - 0x282a48, - 0x28460a, - 0x28ca87, - 0x2b7907, - 0x34fe87, - 0x2f0889, - 0x2a30ca, - 0x208fc3, - 0x35a3c5, - 0x215d43, - 0x2c9ec9, - 0x36cc48, - 0x368947, - 0x3c5c09, - 0x21d086, - 0x3c1648, - 0x2c4685, - 0x32cb8a, - 0x20df09, - 0x27a1c9, - 0x2dab47, - 0x293789, - 0x215c08, - 0x3e3c46, - 0x2ac648, - 0x2f5207, - 0x231187, - 0x2deb07, - 0x2cdf88, - 0x39ab06, - 0x249585, - 0x289ac7, - 0x2a4348, - 0x3790c4, - 0x309684, - 0x29bd07, - 0x2bbf07, - 0x36994a, - 0x3e3bc6, - 0x3ce54a, - 0x2d4887, - 0x2d1387, - 0x20b8c4, - 0x29a1c4, - 0x2e29c6, - 0x2f4644, - 0x2f464c, - 0x310f45, - 0x216849, - 0x3caa44, - 0x2c7185, - 0x2237c8, - 0x27a545, - 0x394246, - 0x29e284, - 0x2a6d0a, - 0x2dddc6, - 0x3501ca, - 0x3e33c7, - 0x2048c5, - 0x235905, - 0x244fca, - 0x281f05, - 0x2ada86, - 0x24a604, - 0x2c31c6, - 0x3b0f05, - 0x20abc6, - 0x32a64c, - 0x22b70a, - 0x27cc04, - 0x224006, - 0x2a9a07, - 0x2e42c4, - 0x221408, - 0x2ed306, - 0x396209, - 0x3dd0c9, - 0x2bb909, - 0x2241c6, - 0x2f5306, - 0x2ac787, - 0x331888, - 0x2f5109, - 0x332147, - 0x2a1d06, - 0x347ac7, - 0x326605, - 0x2d15c4, - 0x2ac347, - 0x21ebc5, - 0x293d05, - 0x200cc7, - 0x249388, - 0x3d4006, - 0x2a51cd, - 0x2a66cf, - 0x2ab24d, - 0x223444, - 0x23d406, - 0x2e7b48, - 0x30dc05, - 0x245488, - 0x283bca, - 0x29b2c4, - 0x2c67c6, - 0x215307, - 0x214ac7, - 0x2e7109, - 0x2ac605, - 0x2c70c4, - 0x2c9b4a, - 0x2d09c9, - 0x293887, - 0x2a5486, - 0x33adc6, - 0x244286, - 0x3b2746, - 0x2e69cf, - 0x2e7a09, - 0x306e06, - 0x267246, - 0x20c049, - 0x2c8e87, - 0x201543, - 0x209046, - 0x211c03, - 0x321e48, - 0x26a007, - 0x2ae849, - 0x2b4848, - 0x3d1e08, - 0x2878c6, - 0x225a89, - 0x34c985, - 0x2a7d04, - 0x209007, - 0x3a6b45, - 0x223444, - 0x23e988, - 0x21a584, - 0x2c8bc7, - 0x3aa146, - 0x23fe85, - 0x2afb48, - 0x33ac8b, - 0x31f287, - 0x245246, - 0x2dbec4, - 0x3da006, - 0x2759c5, - 0x21ebc5, - 0x28be89, - 0x28fa09, - 0x2311c4, - 0x231205, - 0x224045, - 0x32ca06, - 0x31ee88, - 0x2d3506, - 0x22a78b, - 0x2be84a, - 0x2d0005, - 0x298c06, - 0x238d85, - 0x386ac5, - 0x2a35c7, - 0x30f188, - 0x29aec4, - 0x34ae06, - 0x29b0c6, - 0x215dc7, - 0x322d04, - 0x28aa06, - 0x3cd645, - 0x3cd649, - 0x2f5504, - 0x30a549, - 0x286546, - 0x2d5a08, - 0x224045, - 0x396485, - 0x20abc6, - 0x2bf809, - 0x21ae49, - 0x284d06, - 0x2f8b08, - 0x29b948, - 0x238d44, - 0x2ca304, - 0x2ca308, - 0x39ff08, - 0x2fbd09, - 0x2a80c6, - 0x216b86, - 0x33a24d, - 0x2b64c6, - 0x360289, - 0x30e485, - 0x211c46, - 0x22e2c8, - 0x336c05, - 0x21ea44, - 0x2759c5, - 0x28f088, - 0x2a7849, - 0x2828c4, - 0x2cc906, - 0x27a40a, - 0x33b008, - 0x369ac9, - 0x27600a, - 0x3c5b86, - 0x2a6888, - 0x371085, - 0x298448, - 0x303285, - 0x21cf49, - 0x33ca09, - 0x234702, - 0x2cf545, - 0x28c906, - 0x286487, - 0x2b0dc5, - 0x34b946, - 0x319908, - 0x2b2ec6, - 0x2c3ac9, - 0x285b86, - 0x28f208, - 0x2b8cc5, - 0x24e406, - 0x36cac8, - 0x28d908, - 0x35d688, - 0x31b648, - 0x218584, - 0x20c8c3, - 0x2c3d04, - 0x28cc86, - 0x326644, - 0x29d887, - 0x237d89, - 0x2db645, - 0x244806, - 0x209046, - 0x29fecb, - 0x2c6ac6, - 0x20c886, - 0x2de708, - 0x361b46, - 0x2046c3, - 0x212403, - 0x2d15c4, - 0x239a05, - 0x3039c7, - 0x282a48, - 0x282a4f, - 0x2899cb, - 0x31ec88, - 0x2cc986, - 0x31ef8e, - 0x20abc3, - 0x303944, - 0x2c6a45, - 0x2c6f46, - 0x299e8b, - 0x29d246, - 0x232009, - 0x23fe85, - 0x251748, - 0x20e288, - 0x21ad0c, - 0x2ad486, - 0x2e3646, - 0x2e1dc5, - 0x2945c8, - 0x286cc5, - 0x329f48, - 0x2a864a, - 0x2ab689, - 0x70e7c4, - 0x2000c2, - 0x53216542, - 0x200382, - 0x2b1b84, - 0x201582, - 0x28d4c4, - 0x204cc2, - 0xd903, - 0x2003c2, - 0x202b02, - 0x793c8, - 0xe804, - 0x216543, - 0x222bc3, - 0x343b43, - 0x87c2, - 0x54202, - 0x216443, - 0x2296c3, - 0x20cb83, - 0x2a042, - 0x6502, - 0x4a42, - 0x253c43, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2b1b84, - 0x2296c3, - 0x20cb83, - 0x20f7c3, - 0x25dd04, - 0x216543, - 0x23ec84, - 0x222bc3, - 0x2e8fc4, - 0x343b43, - 0x2b1087, - 0x216443, - 0x20d903, - 0x2c2308, - 0x20cb83, - 0x29fc4b, - 0x304443, - 0x24d906, - 0x213402, - 0x2fe64b, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x216543, - 0x222bc3, - 0x343b43, - 0x20cb83, - 0x21b103, - 0x2072c3, - 0x2000c2, - 0x793c8, - 0x235ec5, - 0x21ec48, - 0x3585c8, - 0x216542, - 0x363605, - 0x347c07, - 0x202bc2, - 0x24d147, - 0x200382, - 0x25be87, - 0x34c049, - 0x277f48, - 0x3d0049, - 0x214182, - 0x20e107, - 0x387c84, - 0x347cc7, - 0x2be747, - 0x2687c2, - 0x216443, - 0x203742, - 0x204cc2, - 0x2003c2, - 0x208402, - 0x200902, - 0x202b02, - 0x2e5245, - 0x227445, - 0x16542, - 0x22bc3, - 0x216543, - 0x222bc3, - 0x22de83, - 0x343b43, - 0x20e443, - 0x2296c3, - 0x20cb83, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x216543, - 0x222bc3, - 0x343b43, - 0x158286, - 0x55fa5a4b, - 0x216443, - 0x2296c3, - 0x7ca83, - 0x20cb83, - 0x175285, - 0x12b83, - 0x101, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2b1b84, - 0x243543, - 0x2296c3, - 0x7ca83, - 0x20cb83, - 0x2203c3, - 0x56869306, - 0x20a83, - 0x70945, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x216542, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x7ca83, - 0x20cb83, - 0x6482, - 0x793c8, - 0x38c43, - 0xd903, - 0x7ca83, - 0x4f344, - 0x1480c44, - 0xf0b45, - 0x2000c2, - 0x397344, - 0x216543, - 0x222bc3, - 0x343b43, - 0x24cc43, - 0x2b96c5, - 0x243543, - 0x21b283, - 0x2296c3, - 0x257743, - 0x20cb83, - 0x202b03, - 0x2192c3, - 0x201643, - 0x11d783, - 0x5c2, - 0x386c2, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x2000c2, - 0x253c43, - 0x216542, - 0x3242, - 0x222bc3, - 0x343b43, - 0x2b1b84, - 0x2296c3, - 0x20cb83, - 0x202b02, - 0x793c8, - 0x343b43, - 0x7ca83, - 0x793c8, - 0x7ca83, - 0x2cc803, - 0x216543, - 0x23a304, - 0x222bc3, - 0x343b43, - 0x2042c2, - 0x216443, - 0x2296c3, - 0xd903, - 0x20cb83, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2042c2, - 0x233243, - 0x2296c3, - 0x20cb83, - 0x2faf43, - 0x202b03, - 0x2000c2, - 0x216542, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x24d905, - 0x1143c6, - 0x6ff44, - 0x329c4, - 0x25dd04, - 0x213402, - 0x882, - 0x793c8, - 0x3242, - 0x54202, - 0x2a02, - 0x2000c2, - 0x146c05, - 0x24948, - 0xe9883, - 0x216542, - 0x45c44, - 0x5b910646, - 0x1db84, - 0xc5e4b, - 0x42746, - 0x1cdf07, - 0x174bc9, - 0x222bc3, - 0x53188, - 0x5318b, - 0x5360b, - 0x539cb, - 0x53d0b, - 0x53fcb, - 0x5440b, - 0x18c86, - 0x343b43, - 0x154645, - 0x10e584, - 0x20b6c3, - 0x11b487, - 0x133604, - 0xed184, - 0x77984, - 0x2296c3, - 0x84e06, - 0xac8c4, - 0x7ca83, - 0x20cb83, - 0x305504, - 0x132747, - 0x113fc9, - 0xc5c08, - 0x1c8dc4, - 0x147e04, - 0x179dc3, - 0x13906, - 0x12248, - 0x18d445, - 0x1a1f49, - 0x39fc3, - 0x13ea86, - 0x146c05, - 0x216542, - 0x216543, - 0x222bc3, - 0x343b43, - 0x216443, - 0x20d903, - 0x20cb83, - 0x304443, - 0x213402, - 0x793c8, - 0x216543, - 0x222bc3, - 0x343b43, - 0x26a7c3, - 0x21b544, - 0x2296c3, - 0xd903, - 0x20cb83, - 0x216543, - 0x222bc3, - 0x2e8fc4, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x24d906, - 0x222bc3, - 0x343b43, - 0x1e803, - 0x7ca83, - 0x20cb83, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x146c05, - 0x1cdf07, - 0x69c3, - 0x39fc3, - 0x793c8, - 0x343b43, - 0x216543, - 0x222bc3, - 0x343b43, - 0x722c3, - 0x2296c3, - 0x20cb83, - 0x5ee16543, - 0x222bc3, - 0x2296c3, - 0x20cb83, - 0x793c8, - 0x2000c2, - 0x216542, - 0x216543, - 0x343b43, - 0x2296c3, - 0x2003c2, - 0x20cb83, - 0x33cf47, - 0x2f67cb, - 0x2153c3, - 0x283208, - 0x331607, - 0x349506, - 0x234d45, - 0x363749, - 0x24d688, - 0x37e649, - 0x3ae5d0, - 0x37e64b, - 0x3aaa09, - 0x2069c3, - 0x2fed09, - 0x23b286, - 0x23b28c, - 0x235f88, - 0x3e5c48, - 0x35c449, - 0x2cd20e, - 0x34be0b, - 0x2c340c, - 0x203b43, - 0x279d4c, - 0x203b49, - 0x300187, - 0x23c4cc, - 0x2c024a, - 0x21d684, - 0x21d68d, - 0x279c08, - 0x20f7cd, - 0x28a5c6, - 0x25dd0b, - 0x314149, - 0x2674c7, - 0x32cdc6, - 0x3339c9, - 0x35310a, - 0x30a088, - 0x304044, - 0x2bc2c7, - 0x24ea07, - 0x202744, - 0x2208c4, - 0x209cc9, - 0x30d489, - 0x20a888, - 0x2303c5, - 0x2140c5, - 0x20f086, - 0x21d549, - 0x283e4d, - 0x216d88, - 0x20ef87, - 0x234dc8, - 0x25b186, - 0x3e11c4, - 0x26b385, - 0x3e2f06, - 0x3e7984, - 0x203a47, - 0x20588a, - 0x216784, - 0x21a186, - 0x21a989, - 0x21a98f, - 0x21cc4d, - 0x21e706, - 0x224550, - 0x224946, - 0x226187, - 0x227f07, - 0x227f0f, - 0x229309, - 0x22cc86, - 0x22e907, - 0x22e908, - 0x22ed09, - 0x206e88, - 0x317a87, - 0x20c903, - 0x391906, - 0x37a588, - 0x2cd4ca, - 0x204189, - 0x22cb43, - 0x363506, - 0x34ac4a, - 0x282647, - 0x2fffca, - 0x31034e, - 0x229446, - 0x3d6847, - 0x24b006, - 0x203c06, - 0x38640b, - 0x218d8a, - 0x2f6e0d, - 0x2f53c7, - 0x274588, - 0x274589, - 0x27458f, - 0x2fb78c, - 0x2fb0c9, - 0x287bce, - 0x2b118a, - 0x20c606, - 0x2e9106, - 0x30cd4c, - 0x3bb08c, - 0x3d8388, - 0x338487, - 0x208c45, - 0x347e84, - 0x36430e, - 0x3109c4, - 0x3406c7, - 0x36be4a, - 0x3806d4, - 0x38a70f, - 0x2280c8, - 0x3917c8, - 0x38c34d, - 0x38c34e, - 0x3b4bc9, - 0x238308, - 0x23830f, - 0x23c1cc, - 0x23c1cf, - 0x23d147, - 0x23f90a, - 0x240acb, - 0x241348, - 0x244547, - 0x24be0d, - 0x362546, - 0x21d846, - 0x247bc9, - 0x26bac8, - 0x24db08, - 0x24db0e, - 0x26b907, - 0x308585, - 0x24f085, - 0x220744, - 0x3497c6, - 0x20a788, - 0x3a2983, - 0x2bf30e, - 0x24c1c8, - 0x3e534b, - 0x3c7807, - 0x2332c5, - 0x279ec6, - 0x2ba1c7, - 0x33e8c8, - 0x32c449, - 0x23cb05, - 0x2925c8, - 0x22fe06, - 0x3b3cca, - 0x364209, - 0x23c589, - 0x23c58b, - 0x33b7c8, - 0x202609, - 0x230486, - 0x3c298a, - 0x2a104a, - 0x23fb0c, - 0x371707, - 0x277d4a, - 0x39f78b, - 0x39f799, - 0x351a48, - 0x24d985, - 0x24bfc6, - 0x296489, - 0x250206, - 0x22b24a, - 0x2163c6, - 0x232d44, - 0x2dce0d, + 0x22ef06, + 0x320307, + 0x242d03, + 0x3cb3c6, + 0x230e85, + 0x295c87, + 0x27e84a, + 0x362244, + 0x21b988, + 0x2c3d89, + 0x381307, + 0x356306, + 0x28d588, + 0x3e8509, + 0x3622c4, + 0x287144, + 0x2d01c5, + 0x225908, + 0x2e7187, + 0x3138c9, + 0x23de88, + 0x321f06, + 0x240646, + 0x2b1a08, + 0x37bb06, + 0x2a6305, + 0x298fc6, + 0x290d88, + 0x297a46, + 0x26cc0b, + 0x2a2e06, + 0x2b3f8d, + 0x209805, + 0x2c2506, + 0x21e285, + 0x2d0389, + 0x32a287, + 0x214cc8, + 0x2c2ac6, + 0x2b2549, + 0x3a3886, + 0x27e7c5, + 0x21e4c6, + 0x2e4146, + 0x2eb409, + 0x2d4e06, + 0x214f47, + 0x2ac7c5, + 0x204343, + 0x264a45, + 0x2d2bc7, + 0x3db5c6, + 0x209709, + 0x253946, + 0x299206, + 0x24db09, + 0x2989c9, + 0x2ba547, + 0x36b208, + 0x2a4649, + 0x296108, + 0x2e5606, + 0x2f4b85, + 0x28f48a, + 0x299286, + 0x3d0646, + 0x2ee305, + 0x266b88, + 0x3af747, + 0x23c48a, + 0x262186, + 0x328245, + 0x313fc6, + 0x2a71c7, + 0x3561c7, + 0x2aec85, + 0x27e985, + 0x27b046, + 0x27bd86, + 0x285d86, + 0x245f84, + 0x297389, + 0x29f106, + 0x2ed9ca, + 0x21f648, + 0x316bc8, + 0x325b4a, + 0x24c385, + 0x2b6345, + 0x2093c8, + 0x32c608, + 0x24e687, + 0x2dd546, + 0x342288, + 0x220247, + 0x296808, + 0x2d3dc6, + 0x299c88, + 0x2ad906, + 0x2f83c7, + 0x317e46, + 0x2b5106, + 0x234eca, + 0x2392c6, + 0x2f4b89, + 0x371946, + 0x21230a, + 0x243e49, + 0x3091c6, + 0x2d5a44, + 0x3648cd, + 0x294ac7, + 0x20b986, + 0x2de345, + 0x3a3905, + 0x39dc06, + 0x383609, + 0x39fe87, + 0x291786, + 0x376546, + 0x27d809, + 0x360d04, + 0x3092c4, + 0x3ec208, + 0x38fb86, + 0x2ac248, + 0x2f20c8, + 0x288a47, + 0x2ff509, + 0x3d5d07, + 0x2ce84a, + 0x30a04f, + 0x24eaca, + 0x3d67c5, + 0x290fc5, + 0x214c85, + 0x2ff147, + 0x292403, + 0x36b408, + 0x23a546, + 0x23a649, + 0x359646, + 0x22a647, + 0x2b2309, + 0x214bc8, + 0x2d0547, + 0x32cfc3, + 0x360845, + 0x2a6d05, + 0x245dcb, + 0x2596c4, + 0x381204, + 0x28ec46, 0x32d187, - 0x232d49, - 0x252185, - 0x2522c8, - 0x252f49, - 0x254744, - 0x254e07, - 0x254e08, - 0x255287, - 0x273b48, - 0x25cac7, - 0x2dfac5, - 0x26420c, - 0x2646c9, - 0x3b930a, - 0x266cc9, - 0x2fee09, - 0x26700c, - 0x26974b, - 0x26ac88, - 0x26bcc8, - 0x26f504, - 0x290988, - 0x291d49, - 0x2c0307, - 0x21abc6, - 0x2a9607, - 0x3d4bc9, - 0x21070b, - 0x247047, - 0x21fc47, - 0x3e3507, - 0x20f744, - 0x20f745, - 0x2e8cc5, - 0x357f0b, - 0x30df44, - 0x3b6648, - 0x25974a, - 0x22fec7, - 0x3e5007, - 0x299452, - 0x3d4786, - 0x239c86, - 0x340ace, - 0x3e5786, - 0x29ddc8, - 0x29f2cf, - 0x20fb88, - 0x243948, - 0x2e75ca, - 0x2e75d1, - 0x2af74e, - 0x20294a, - 0x20294c, - 0x238507, - 0x238510, - 0x3d9e48, - 0x2af945, - 0x2ba4ca, - 0x3e79cc, - 0x2a204d, - 0x20e446, - 0x20e447, - 0x20e44c, - 0x20f3cc, - 0x26a98c, - 0x39304b, - 0x3a4f04, - 0x205604, - 0x2be009, - 0x37de47, - 0x361f89, - 0x2a0e89, - 0x2bff07, - 0x2c00c6, - 0x2c00c9, - 0x2c04c3, - 0x2b2fca, - 0x37a447, - 0x37b94b, - 0x2f6c8a, - 0x25bfc4, - 0x3ceb46, - 0x28cd09, - 0x2f44c4, - 0x2e4e4a, - 0x302645, - 0x2d1b85, - 0x2d1b8d, - 0x2d1ece, - 0x2722c5, - 0x33bc06, - 0x24d507, - 0x25d40a, - 0x231c86, - 0x37ee04, - 0x301887, - 0x300e4b, - 0x273847, - 0x2420c4, - 0x316546, - 0x31654d, - 0x2eba8c, - 0x3d1a86, - 0x216f8a, - 0x221d46, - 0x227bc8, - 0x2fd2c7, - 0x2dafca, - 0x3e7346, - 0x28aa83, - 0x354806, - 0x213448, - 0x36dc0a, - 0x25aa07, - 0x25aa08, - 0x2985c4, - 0x2a5c47, - 0x31f5c8, - 0x2f3cc8, - 0x2f1188, - 0x32a8ca, - 0x2efe85, - 0x2cb207, - 0x260e13, - 0x276586, - 0x38d188, - 0x22bb49, - 0x24d008, - 0x28794b, - 0x2ca108, - 0x2eb7c4, - 0x326e86, - 0x324186, - 0x3423c9, - 0x2dae07, - 0x264308, - 0x2aa246, - 0x200bc4, - 0x3de805, - 0x33f188, - 0x39000a, - 0x2dca88, - 0x2e1046, - 0x2a6a8a, - 0x36a688, - 0x3bc6c8, - 0x2e50c8, - 0x2e5906, - 0x2e7d46, - 0x3b20cc, - 0x2e8310, - 0x2e8705, - 0x20f988, - 0x288910, - 0x20f990, - 0x3ae44e, - 0x3b1d4e, - 0x3b1d54, - 0x3ba5cf, - 0x3ba986, - 0x202811, - 0x209613, - 0x32cf48, - 0x363c05, - 0x283748, - 0x32d685, - 0x348fcc, - 0x2718c9, - 0x310809, - 0x2fbfc7, - 0x368f49, - 0x3a8747, - 0x313386, - 0x26b187, - 0x2649c5, - 0x212bc3, - 0x21e803, - 0x2433c4, - 0x21574d, - 0x3c3dcf, - 0x200c05, - 0x348ec6, - 0x22a447, - 0x235d07, - 0x355bc6, - 0x355bcb, - 0x2b0505, - 0x289146, - 0x3baf07, - 0x25e109, - 0x22eb86, - 0x3881c5, - 0x20368b, - 0x20de06, - 0x22f7c5, - 0x24fa08, - 0x2a3b08, - 0x2b3ccc, - 0x2b3cd0, - 0x2b89c9, - 0x2cad07, - 0x34de4b, - 0x2f0c46, - 0x31794a, - 0x38cf0b, - 0x314c4a, - 0x2f9406, - 0x2fae05, - 0x331506, - 0x292a88, - 0x3a5c0a, - 0x38bfdc, - 0x30450c, - 0x304808, - 0x24d905, - 0x38f6c7, - 0x2cce46, - 0x39da45, - 0x2210c6, - 0x355d88, - 0x2d0c47, - 0x2cd108, - 0x27664a, - 0x35b5cc, - 0x3a2c09, - 0x35b847, - 0x243e44, - 0x204a06, - 0x2434ca, + 0x39e18a, + 0x25d687, + 0x2318c7, + 0x294c85, + 0x3dc5c5, + 0x391749, + 0x2b5106, + 0x25d50d, + 0x300285, + 0x2d1d83, + 0x208e03, + 0x220b45, + 0x342b85, + 0x28d588, + 0x291f47, + 0x24b286, + 0x2b8006, + 0x235205, + 0x241387, + 0x3d30c7, + 0x267f87, + 0x2bd0ca, + 0x3cb488, + 0x245f84, + 0x2977c7, + 0x293e47, + 0x367346, + 0x2acf87, + 0x36da88, + 0x362948, + 0x29c146, + 0x23f388, + 0x2d4e84, + 0x249646, + 0x28d846, + 0x302c46, + 0x349986, + 0x2198c4, + 0x26ad86, + 0x2dd246, + 0x2b1146, + 0x234ec6, + 0x208cc6, + 0x2fe846, + 0x24b188, + 0x2cfec8, + 0x2f16c8, + 0x3576c8, + 0x209346, + 0x20f0c5, + 0x264a06, + 0x2c76c5, + 0x338e87, + 0x23df45, + 0x2180c3, + 0x312185, + 0x320d44, + 0x208e05, + 0x201983, + 0x35b707, + 0x2e5188, + 0x3203c6, + 0x2c57cd, + 0x290f86, + 0x2b06c5, + 0x2030c3, + 0x2d9949, + 0x360e86, + 0x2afcc6, + 0x21e5c4, + 0x24ea47, + 0x3db7c6, + 0x328485, + 0x258dc3, + 0x20e744, + 0x294006, + 0x3bbe84, + 0x3c7808, + 0x3da549, + 0x29c609, + 0x2b960a, + 0x25588d, + 0x38c147, + 0x39b606, + 0x22f4c4, + 0x2f7ec9, + 0x29b548, + 0x29d006, + 0x2476c6, + 0x2acf87, + 0x2f7746, + 0x222986, + 0x371346, + 0x3e820a, + 0x21e1c8, + 0x237505, + 0x371149, + 0x3e8f0a, + 0x398548, + 0x2b5d08, + 0x2afc48, + 0x3034cc, + 0x331385, + 0x2b8288, + 0x2d4046, + 0x375c46, + 0x2e5a47, + 0x25d585, + 0x299145, + 0x29c4c9, + 0x20f447, + 0x23a605, + 0x229507, + 0x208e03, + 0x2e7b45, + 0x229bc8, + 0x2ee7c7, + 0x2b5bc9, + 0x3e4245, + 0x303bc4, + 0x322fc8, + 0x248007, + 0x2d0708, + 0x257148, + 0x39f5c5, + 0x279386, + 0x2b8106, + 0x23ef49, + 0x28d947, + 0x2c7c06, + 0x3cbe87, + 0x20bd43, + 0x3bb404, + 0x36b845, + 0x2414c4, + 0x24e2c4, + 0x298447, + 0x27d6c7, + 0x291944, + 0x2b5a10, + 0x325f87, + 0x3dc5c5, + 0x20d0cc, + 0x256f04, + 0x2c4c48, + 0x2f82c9, + 0x2cb606, + 0x324a48, + 0x264984, + 0x28ef48, + 0x234386, + 0x234d48, + 0x2b69c6, + 0x2cf24b, + 0x3c3845, + 0x36b6c8, + 0x21b184, + 0x3da98a, + 0x2b5bc9, + 0x268b86, + 0x3b0888, + 0x29ed45, + 0x2d8f44, + 0x2c4b46, + 0x267e48, + 0x296f08, + 0x33d7c6, + 0x37b484, + 0x28f406, + 0x3d5d87, + 0x2908c7, + 0x2acf8f, + 0x34fcc7, + 0x39f007, + 0x375b05, + 0x336705, + 0x2ba209, + 0x2ed686, + 0x295dc5, + 0x298cc7, + 0x2eac88, + 0x245c05, + 0x317e46, + 0x21f488, + 0x2ffb0a, + 0x20bfc8, + 0x2a0a87, + 0x30a486, + 0x371106, + 0x2003c3, + 0x21c543, + 0x3e90c9, + 0x2a44c9, + 0x2c4346, + 0x3e4245, + 0x303348, + 0x3b0888, + 0x2b4d48, + 0x3713cb, + 0x2c5a07, + 0x326909, + 0x2ad208, + 0x2402c4, + 0x3d2a08, + 0x2a4189, + 0x2c7f05, + 0x2632c7, + 0x3bb485, + 0x296e08, + 0x2a698b, + 0x2af450, + 0x2c2145, + 0x21b0cc, + 0x24b445, + 0x294d03, + 0x2d78c6, + 0x2dc744, + 0x29ce86, + 0x2b6407, + 0x209344, + 0x3c4c48, + 0x36b2cd, + 0x3b0745, + 0x255d84, + 0x364644, + 0x39ed49, + 0x2af188, + 0x33ab87, + 0x234408, + 0x297448, + 0x291a85, + 0x3e9407, + 0x291a07, + 0x23a907, + 0x27e989, + 0x33bb89, + 0x264346, + 0x3b10c6, + 0x298d86, + 0x32e605, + 0x3cb204, + 0x3d8606, + 0x3da306, + 0x291ac8, + 0x2a6e8b, + 0x362107, + 0x22f4c4, + 0x3db706, + 0x3f3e07, + 0x2fe445, + 0x300645, + 0x28de04, + 0x33bb06, + 0x3d8688, + 0x2f7ec9, + 0x257906, + 0x29b348, + 0x328546, + 0x36c748, + 0x2df20c, + 0x291946, + 0x2b038d, + 0x2b080b, + 0x215005, + 0x3d3207, + 0x2d4f06, + 0x356088, + 0x2643c9, + 0x2c5d08, + 0x3dc5c5, + 0x2adb87, + 0x296208, + 0x3b85c9, + 0x21d3c6, + 0x25780a, + 0x355e08, + 0x2c5b4b, + 0x3a044c, + 0x28f048, + 0x292c06, + 0x348c48, + 0x2ff787, + 0x3581c9, + 0x2a634d, + 0x2b5006, + 0x2d0048, + 0x2cfd89, + 0x2da988, + 0x299d88, + 0x2ddc4c, + 0x2df647, + 0x2e0bc7, + 0x27e7c5, + 0x2b9f47, + 0x2eab48, + 0x2c4bc6, + 0x26990c, + 0x30c788, + 0x2ecb08, + 0x357986, + 0x333f87, + 0x264544, + 0x3576c8, + 0x29e40c, + 0x258b0c, + 0x3d6845, + 0x3cb747, + 0x37b406, + 0x333f06, + 0x3a5388, + 0x227984, + 0x22ef0b, + 0x2025cb, + 0x30a486, + 0x36b147, + 0x3495c5, + 0x287085, + 0x22f046, + 0x29ed05, + 0x259685, + 0x2ebf47, + 0x2298c9, + 0x206744, + 0x24a0c5, + 0x30f585, + 0x21a5c8, + 0x361c45, + 0x2e1149, + 0x2c6447, + 0x2c644b, + 0x308f06, + 0x24aec9, + 0x37b248, + 0x292e05, + 0x23aa08, + 0x33bbc8, + 0x367a47, + 0x234187, + 0x2984c9, + 0x234c87, + 0x2a2bc9, + 0x2bd90c, + 0x2c4348, + 0x3a0289, + 0x2deb87, + 0x297509, + 0x228087, + 0x3a0548, + 0x2ff6c5, + 0x2495c6, + 0x2de388, + 0x30a588, + 0x3e8dc9, + 0x2596c7, + 0x2b9805, + 0x3d4209, + 0x3a84c6, + 0x2a6144, + 0x315186, + 0x24c048, + 0x252787, + 0x2a7088, + 0x23f449, + 0x32dc47, + 0x2b4e86, + 0x3d2d44, + 0x312209, + 0x3e9288, + 0x357847, + 0x29ab46, + 0x2a6dc6, + 0x3d05c4, + 0x381b86, + 0x208d83, + 0x203ec9, + 0x3c3806, + 0x23f6c5, + 0x2b8006, + 0x2d0845, + 0x296688, + 0x220787, + 0x297d46, + 0x325e46, + 0x316bc8, + 0x2ba387, + 0x2b5045, + 0x2b5808, + 0x3def48, + 0x355e08, + 0x24b305, + 0x249646, + 0x29c3c9, + 0x23edc4, + 0x30fa8b, + 0x22268b, + 0x237409, + 0x208e03, + 0x26e945, + 0x39bfc6, + 0x24bbc8, + 0x311244, + 0x3203c6, + 0x2bd209, + 0x3762c5, + 0x2ebe86, + 0x248006, + 0x217604, + 0x2c26ca, + 0x23f608, + 0x30a586, + 0x37fdc5, + 0x3eb247, + 0x342dc7, + 0x279384, + 0x2228c7, + 0x23df04, + 0x23df06, + 0x20d183, + 0x27e985, + 0x2ca445, + 0x34ff08, + 0x297985, + 0x291689, + 0x2bba87, + 0x35750b, + 0x2bba8c, + 0x2bc08a, + 0x359c47, + 0x206b43, + 0x2902c8, + 0x309285, + 0x245c85, + 0x360904, + 0x3a0446, + 0x2f82c6, + 0x381bc7, + 0x28884b, + 0x2198c4, + 0x3aae84, + 0x2e4a84, + 0x2ea9c6, + 0x209344, + 0x225a08, + 0x360705, + 0x255ec5, + 0x2b4c87, + 0x3d3309, + 0x342b85, + 0x39dc0a, + 0x2ac6c9, + 0x2ab14a, + 0x3e8349, + 0x328744, + 0x376605, + 0x2f7848, + 0x3b6a8b, + 0x2d01c5, + 0x2f2246, + 0x24f404, + 0x291bc6, + 0x32dac9, + 0x3f3f07, + 0x253b08, + 0x255c06, + 0x3d5d07, + 0x296f08, + 0x386686, + 0x3d2dc4, + 0x270b47, + 0x391445, + 0x3a0a47, + 0x264884, + 0x2d4e86, + 0x342f08, + 0x2b09c8, + 0x3e4e07, + 0x32cc48, + 0x2ad9c5, + 0x208c44, + 0x325a48, + 0x2d79c4, + 0x2174c5, + 0x3a5184, + 0x220347, + 0x29f1c7, + 0x297648, + 0x2d0886, + 0x297905, + 0x291488, + 0x20c1c8, + 0x2b9549, + 0x222986, + 0x23c508, + 0x3da80a, + 0x2fe4c8, + 0x314945, + 0x264c06, + 0x2ac588, + 0x2adc4a, + 0x237f47, + 0x29b985, + 0x2a9588, + 0x2c0644, + 0x266c06, + 0x2e1a48, + 0x208cc6, + 0x3dfcc8, + 0x26cf47, + 0x206986, + 0x2d5a44, + 0x2445c7, + 0x2d1044, + 0x32da87, + 0x357b8d, + 0x237485, + 0x38340b, + 0x258d86, + 0x268a08, + 0x3636c4, + 0x285f86, + 0x294006, + 0x348f87, + 0x2b004d, + 0x30e947, + 0x2d1cc8, 0x2a0f85, - 0x22054c, - 0x220c08, - 0x236f48, - 0x32794c, - 0x33878c, - 0x35cf89, - 0x361d87, - 0x24808c, - 0x2fce84, - 0x322a4a, - 0x3e23cc, - 0x254fcb, - 0x255c8b, - 0x259186, - 0x25f087, - 0x238747, - 0x23874f, - 0x311a51, - 0x2ee312, - 0x25f3cd, - 0x25f3ce, - 0x25f70e, - 0x3ba788, - 0x3ba792, - 0x2fc688, - 0x2b1987, - 0x259c4a, - 0x2125c8, - 0x3e5745, - 0x2c618a, - 0x224cc7, - 0x2f0d84, - 0x20b5c3, - 0x23f1c5, - 0x2e7847, - 0x306587, - 0x2a224e, - 0x3dc44d, - 0x316209, - 0x207385, - 0x34f9c3, - 0x33e246, - 0x267c45, - 0x3e5588, - 0x22d149, - 0x24c005, - 0x24c00f, - 0x2c5f47, - 0x234bc5, - 0x3c81ca, - 0x20d746, - 0x246809, - 0x3599cc, - 0x37eec9, - 0x2111c6, - 0x25954c, - 0x3357c6, - 0x30fac8, - 0x38c686, - 0x278b86, - 0x2c6c44, - 0x386d83, - 0x3e380a, - 0x209211, - 0x2fb28a, - 0x3e19c5, - 0x263e87, - 0x261707, - 0x2e20c4, - 0x31f6cb, - 0x3cfec8, - 0x2cf7c6, - 0x23e5c5, - 0x257104, - 0x26f9c9, - 0x2008c4, - 0x218407, - 0x37e8c5, - 0x37e8c7, - 0x340d05, - 0x212483, - 0x2b1848, - 0x2484ca, - 0x235f03, - 0x235f0a, - 0x2ae286, - 0x24bd8f, - 0x26b889, - 0x2bf290, - 0x2e2248, - 0x2e1809, - 0x2a5007, - 0x3164cf, - 0x3c5fc4, - 0x2e9044, - 0x2247c6, - 0x25d8c6, - 0x252c0a, - 0x24cb06, - 0x2bcc47, - 0x317dc8, - 0x317fc7, - 0x3196c7, - 0x31aa0a, - 0x319fcb, - 0x271385, - 0x2edf48, - 0x20c183, - 0x3c17cc, - 0x2089cf, - 0x22158d, - 0x35e207, - 0x236c89, - 0x35d247, - 0x2cbd48, - 0x3808cc, - 0x2eb6c8, - 0x3e16c8, - 0x33438e, - 0x345b94, - 0x3460a4, - 0x360d8a, - 0x37ea8b, - 0x3a8804, - 0x3a8809, - 0x2c6848, - 0x24fe05, - 0x3a248a, - 0x2b39c7, - 0x258bc4, - 0x253c43, - 0x216543, - 0x23ec84, - 0x222bc3, - 0x343b43, - 0x2b1b84, - 0x243543, - 0x216443, - 0x2e8306, - 0x21b544, - 0x2296c3, - 0x20cb83, - 0x21f6c3, + 0x2d1608, + 0x2e7106, + 0x2ada48, + 0x23da86, + 0x20ce47, + 0x2251c9, + 0x3636c7, + 0x29d2c8, + 0x289b05, + 0x235288, + 0x333e45, + 0x317d85, + 0x378d45, + 0x21e503, + 0x299044, + 0x2a9785, + 0x2564c9, + 0x381986, + 0x36db88, + 0x3a13c5, + 0x2d3047, + 0x32a58a, + 0x2ebdc9, + 0x2e404a, + 0x2f1748, + 0x22934c, + 0x298d4d, + 0x3777c3, + 0x3dfbc8, + 0x20e705, + 0x2ff8c6, + 0x214a46, + 0x364585, + 0x3cbf89, + 0x3ea105, + 0x291488, + 0x26fa46, + 0x37a4c6, + 0x2bac89, + 0x233387, + 0x2a6c46, + 0x32a508, + 0x302b48, + 0x2fcfc7, + 0x2eb64e, + 0x2e7345, + 0x3b84c5, + 0x208bc8, + 0x3b90c7, + 0x229942, + 0x2dda04, + 0x29cd8a, + 0x357908, + 0x33bd06, + 0x2b2448, + 0x2b8106, + 0x336588, + 0x2c7c08, + 0x317d44, + 0x2d3805, + 0x7bf004, + 0x7bf004, + 0x7bf004, + 0x204043, + 0x206586, + 0x291946, + 0x2b6dcc, + 0x2069c3, + 0x264886, + 0x20d144, + 0x360e08, + 0x2bd045, + 0x29ce86, + 0x2b9dc8, + 0x2f2cc6, + 0x297cc6, + 0x21d148, + 0x36b8c7, + 0x234a49, + 0x32438a, + 0x263b44, + 0x23df45, + 0x313885, + 0x360b86, + 0x38c186, + 0x3d3746, + 0x385306, + 0x234b84, + 0x234b8b, + 0x23dd04, + 0x22a6c5, + 0x2c7005, + 0x288b06, + 0x20ac08, + 0x298c07, + 0x204284, + 0x273443, + 0x2c0145, + 0x315047, + 0x298b0b, + 0x34fe07, + 0x2b9cc8, + 0x2d8147, + 0x281406, + 0x261348, + 0x2d75cb, + 0x3975c6, + 0x210249, + 0x2d7745, + 0x32cfc3, + 0x2ebe86, + 0x26ce48, + 0x211903, + 0x2a17c3, + 0x233d86, + 0x2b8106, + 0x3848ca, + 0x292c45, + 0x293e4b, + 0x2b7f4b, + 0x242e83, + 0x201f03, + 0x2ce7c4, + 0x32a3c7, + 0x26cec4, + 0x23ee44, + 0x2d3ec4, + 0x2fe7c8, + 0x37fd08, + 0x21c4c9, + 0x2eee08, + 0x378fc7, + 0x234ec6, + 0x36d7cf, + 0x2e7486, + 0x2f0e44, + 0x37fb4a, + 0x314f47, + 0x2d1146, + 0x2a6189, + 0x21c445, + 0x27be45, + 0x21c586, + 0x2353c3, + 0x2c0689, + 0x21e346, + 0x23f209, + 0x39e186, + 0x27e985, + 0x3d6c45, + 0x206043, + 0x347e48, + 0x33ad47, + 0x23a544, + 0x360c88, + 0x3aac04, + 0x3e3f86, + 0x2d78c6, + 0x24a886, + 0x36b589, + 0x245c05, + 0x2b5106, + 0x2839c9, + 0x2e6246, + 0x2fe846, + 0x3b2f06, + 0x204105, + 0x3a5186, + 0x20ce44, + 0x2ff6c5, + 0x2de384, + 0x2d2586, + 0x300244, + 0x2027c3, + 0x29b605, + 0x241f48, + 0x235707, + 0x3112c9, + 0x29b888, + 0x2b17d1, + 0x24808a, + 0x30a3c7, + 0x26d086, + 0x20d144, + 0x2de488, + 0x3e5088, + 0x2b198a, + 0x2e0f0d, + 0x21e4c6, + 0x21d246, + 0x244686, + 0x2aeb07, + 0x2d1d85, + 0x325147, + 0x360d45, + 0x2c6584, + 0x3d1306, + 0x249487, + 0x2c038d, + 0x2ac4c7, + 0x2e4d48, + 0x291789, + 0x264b06, + 0x21d345, + 0x245b84, + 0x24c146, + 0x2ff406, + 0x357a86, + 0x2b2cc8, + 0x216143, + 0x209503, + 0x3ead45, + 0x262286, + 0x2c7bc5, + 0x255e08, + 0x2b65ca, + 0x279484, + 0x360e08, + 0x2afc48, + 0x32a787, + 0x234009, + 0x2d9c88, + 0x2c44c7, + 0x2dd3c6, + 0x208cca, + 0x24c1c8, + 0x322e89, + 0x2af248, + 0x21fb49, + 0x362b47, + 0x3837c5, + 0x3715c6, + 0x2c4a48, + 0x297088, + 0x359f08, + 0x217608, + 0x22a6c5, + 0x204584, + 0x240a08, + 0x24f184, + 0x3e8144, + 0x27e985, + 0x2a8907, + 0x3d30c9, + 0x348d87, + 0x23c545, + 0x28ee46, + 0x37f5c6, + 0x20ad04, + 0x2bb106, + 0x294284, + 0x293b86, + 0x3d2e86, + 0x211746, + 0x3dc5c5, + 0x255cc7, + 0x206b43, + 0x32e089, + 0x3169c8, + 0x2f7dc4, + 0x2f7dcd, + 0x2b0ac8, + 0x2f6108, + 0x322e06, + 0x2252c9, + 0x2ebdc9, + 0x32d7c5, + 0x2b66ca, + 0x2abc0a, + 0x3cd0cc, + 0x3cd246, + 0x28fec6, + 0x2e7a86, + 0x3a1209, + 0x2ffb06, + 0x2ba3c6, + 0x3ea1c6, + 0x3576c8, + 0x20bfc6, + 0x2f060b, + 0x2a8a85, + 0x255ec5, + 0x2909c5, + 0x3ebf86, + 0x208c83, + 0x24a806, + 0x2ac447, + 0x2de345, + 0x3c35c5, + 0x3a3905, + 0x2fb286, + 0x32d884, + 0x33ee46, + 0x2a8e89, + 0x3ebe0c, + 0x2c62c8, + 0x267dc4, + 0x38d6c6, + 0x258e86, + 0x26ce48, + 0x3b0888, + 0x3ebd09, + 0x3eb247, + 0x38f8c9, + 0x288146, + 0x237004, + 0x361784, + 0x2987c4, + 0x296f08, + 0x3d2f0a, + 0x342b06, + 0x3759c7, + 0x3a0cc7, + 0x24afc5, + 0x2bb8c4, + 0x2a4146, + 0x2d1dc6, + 0x220883, + 0x316807, + 0x257048, + 0x32d90a, + 0x358908, + 0x358048, + 0x300285, + 0x22e485, + 0x362205, + 0x24b386, + 0x24f886, + 0x350045, + 0x204109, + 0x2bb6cc, + 0x318007, + 0x2b1a08, + 0x2a2f45, + 0x7bf004, + 0x2ca484, + 0x2ee904, + 0x213346, + 0x2b8e4e, + 0x27bec7, + 0x2aed05, + 0x23ed4c, + 0x2b4587, + 0x249407, + 0x24de49, + 0x21ba49, + 0x29b985, + 0x3169c8, + 0x29c3c9, + 0x355cc5, + 0x2de288, + 0x3ce506, + 0x325cc6, + 0x243e44, + 0x2ce008, + 0x255783, + 0x206184, + 0x2c01c5, + 0x3a5b07, + 0x355145, + 0x3da6c9, + 0x2a398d, + 0x2b3046, + 0x3f3684, + 0x2dd4c8, + 0x22970a, + 0x3cba07, + 0x246205, + 0x2061c3, + 0x2b810e, + 0x347f4c, + 0x398647, + 0x2b9007, + 0x4e3a4e47, + 0x136c46, + 0x2af84, + 0x203f43, + 0x2ffb45, + 0x2ee905, + 0x2b2808, + 0x2afa89, + 0x267cc6, + 0x26cec4, + 0x30a306, + 0x390c0b, + 0x2fa98c, + 0x26e6c7, + 0x2f08c5, + 0x3dee48, + 0x2fcd85, + 0x37fb47, + 0x2ee3c7, + 0x255785, + 0x208c83, + 0x246384, + 0x3638c5, + 0x206645, + 0x206646, + 0x2a4d08, + 0x249487, + 0x214d46, + 0x3d04c6, + 0x378c86, + 0x2d5009, + 0x3e9507, + 0x267b46, + 0x2fab06, + 0x23ccc6, + 0x2c2605, + 0x2185c6, + 0x3b7205, + 0x361cc8, + 0x2a81cb, + 0x2a36c6, + 0x3a0d04, + 0x2fefc9, + 0x2bba84, + 0x3ce488, + 0x318dc7, + 0x299c84, + 0x2d9148, + 0x2e0704, + 0x2c2644, + 0x2f7d05, + 0x3b0786, + 0x2fe707, + 0x234643, + 0x2b4f45, + 0x250504, + 0x3b8506, + 0x32d848, + 0x20bec5, + 0x2a7e89, + 0x359c45, + 0x264888, + 0x23ec07, + 0x3c3908, + 0x2d8d87, + 0x39f0c9, + 0x26ac06, + 0x2e4346, + 0x2a4784, + 0x30f9c5, + 0x3de58c, + 0x2909c7, + 0x290e87, + 0x38bdc8, + 0x2b3046, + 0x2ac384, + 0x327b84, + 0x298349, + 0x2e7b86, + 0x2b2387, + 0x3490c4, + 0x2bb206, + 0x3b7645, + 0x2ee247, + 0x2f0586, + 0x2576c9, + 0x2cec47, + 0x2acf87, + 0x2bab06, + 0x29aa85, + 0x295708, + 0x21e1c8, + 0x37be06, + 0x20bf05, + 0x3936c6, + 0x206b03, + 0x2b2689, + 0x3d34ce, + 0x2d7fc8, + 0x3aad08, + 0x37bc0b, + 0x2a80c6, + 0x3a0bc4, + 0x297cc4, + 0x3d35ca, + 0x21afc7, + 0x267c05, + 0x210249, + 0x2dd305, + 0x3e8187, + 0x246444, + 0x2a2647, + 0x2f1fc8, + 0x3813c6, + 0x2da1c9, + 0x2d9d8a, + 0x21af46, + 0x2b0606, + 0x2c6f85, + 0x3a70c5, + 0x399347, + 0x255108, + 0x3b7588, + 0x317d46, + 0x3d6cc5, + 0x38bf0e, + 0x245f84, + 0x2b2785, + 0x28e7c9, + 0x2ed488, + 0x2a09c6, + 0x2b530c, + 0x2b61d0, + 0x2b8a8f, + 0x2ba108, + 0x359c47, + 0x3dc5c5, + 0x2a9785, + 0x2fe589, + 0x2a9789, + 0x28f506, + 0x2d0247, + 0x3a5285, + 0x24e689, + 0x3673c6, + 0x2ff94d, + 0x298689, + 0x23ee44, + 0x2d7bc8, + 0x240ac9, + 0x342cc6, + 0x2904c5, + 0x2e4346, + 0x2539c9, + 0x233b08, + 0x20f0c5, + 0x2a4c84, + 0x2b54cb, + 0x342b85, + 0x24bc46, + 0x299086, + 0x3ae7c6, + 0x24b60b, + 0x2a7f89, + 0x2281c5, + 0x338d87, + 0x248006, + 0x2718c6, + 0x2ee688, + 0x225b89, + 0x2e4b0c, + 0x314e48, + 0x323c06, + 0x33d7c3, + 0x23c1c6, + 0x309205, + 0x294988, + 0x3d66c6, + 0x2d0608, + 0x25d705, + 0x2715c5, + 0x3a0048, + 0x3aaac7, + 0x214987, + 0x381bc7, + 0x324a48, + 0x359d88, + 0x2d1506, + 0x2d23c7, + 0x3bb2c7, + 0x39ee4a, + 0x203cc3, + 0x3ebf86, + 0x267f05, + 0x284804, + 0x291789, + 0x39f044, + 0x235784, + 0x2b6a44, + 0x2b900b, + 0x33ac87, + 0x2fb245, + 0x2ad6c8, + 0x28ee46, + 0x28ee48, + 0x292b86, + 0x2a1445, + 0x2a20c5, + 0x2a5106, + 0x279208, + 0x2a60c8, + 0x291946, + 0x2ad50f, + 0x2b2150, + 0x209805, + 0x206b43, + 0x2856c5, + 0x326848, + 0x2a9689, + 0x355e08, + 0x21e448, + 0x26afc8, + 0x33ad47, + 0x28eb09, + 0x2d0808, + 0x2a56c4, + 0x2b68c8, + 0x21a689, + 0x2d2907, + 0x2d2d04, + 0x348e48, + 0x255a8a, + 0x3221c6, + 0x21e4c6, + 0x222849, + 0x2b6407, + 0x2ebc48, + 0x2464c8, + 0x3d0b88, + 0x279b85, + 0x3b7e85, + 0x255ec5, + 0x2ee8c5, + 0x3cf007, + 0x208c85, + 0x2de345, + 0x207906, + 0x355d47, + 0x3b69c7, + 0x255d86, + 0x2f1c85, + 0x24bc46, + 0x220805, + 0x2e4888, + 0x32c584, + 0x2e62c6, + 0x398c44, + 0x2d8f48, + 0x2e63ca, + 0x291f4c, + 0x2b7685, + 0x2aebc6, + 0x2e4cc6, + 0x3e9fc6, + 0x323c84, + 0x3c8045, + 0x292447, + 0x2b6489, + 0x2eb507, + 0x7bf004, + 0x7bf004, + 0x33ab05, + 0x315d84, + 0x2b4aca, + 0x28ecc6, + 0x39ffc4, + 0x3cb6c5, + 0x3c4605, + 0x2d1cc4, + 0x298cc7, + 0x3d4387, + 0x2ea9c8, + 0x3937c8, + 0x20f0c9, + 0x2d79c8, + 0x29d40b, + 0x20cf04, + 0x317f45, + 0x295e45, + 0x381b49, + 0x225b89, + 0x2feec8, + 0x23dd08, + 0x288b04, + 0x258ec5, + 0x203ec3, + 0x360b45, + 0x2b5186, + 0x2af8cc, + 0x21e246, + 0x2903c6, + 0x2a0c45, + 0x2fb308, + 0x2e9786, + 0x26d206, + 0x21e4c6, + 0x22a3cc, + 0x286c44, + 0x378dca, + 0x2a0b88, + 0x2af707, + 0x250406, + 0x267d87, + 0x309f05, + 0x29ab46, + 0x368d86, + 0x381847, + 0x2357c4, + 0x220445, + 0x28e7c4, + 0x2c6607, + 0x28ea08, + 0x28fd4a, + 0x296087, + 0x2c2207, + 0x359bc7, + 0x2fcec9, + 0x2af8ca, + 0x234b43, + 0x2356c5, + 0x211783, + 0x2d3f09, + 0x362c88, + 0x375b07, + 0x355f09, + 0x21e2c6, + 0x227a08, + 0x35b685, + 0x20c2ca, + 0x3839c9, + 0x29c009, + 0x2e5a47, + 0x3e5189, + 0x211648, + 0x3d2c06, + 0x2aed88, + 0x204407, + 0x234c87, + 0x2ac6c7, + 0x3ce308, + 0x386186, + 0x255845, + 0x292447, + 0x2b0108, + 0x378c04, + 0x2ed884, + 0x2a6b47, + 0x2c7f87, + 0x29c24a, + 0x3d2b86, + 0x3c834a, + 0x2dd947, + 0x245d47, + 0x220504, + 0x2a2c84, + 0x2ee146, + 0x3e9a84, + 0x3e9a8c, + 0x318d05, + 0x217449, + 0x2af004, + 0x2d1d85, + 0x229688, + 0x20bb45, + 0x39dc06, + 0x237e44, + 0x2aa98a, + 0x2c6a06, + 0x2afdca, + 0x263b07, + 0x2a71c5, + 0x2353c5, + 0x24b00a, + 0x28d4c5, + 0x2b9606, + 0x24f184, + 0x2ce946, + 0x399405, + 0x3d6786, + 0x3e4e0c, + 0x3f278a, + 0x2abd04, + 0x234ec6, + 0x2b6407, + 0x2f0504, + 0x3576c8, + 0x2d6446, + 0x3a0b49, + 0x2f8649, + 0x2c4449, + 0x30fc46, + 0x204506, + 0x2aeec7, + 0x204048, + 0x204309, + 0x33ac87, + 0x2ad846, + 0x3d5d87, + 0x244545, + 0x245f84, + 0x2aea87, + 0x3bb485, + 0x29ccc5, + 0x394687, + 0x255648, + 0x3dedc6, + 0x2b0f8d, + 0x2b2a0f, + 0x2b7f4d, + 0x222744, + 0x242046, + 0x2f3508, + 0x3ea185, + 0x24b4c8, + 0x36790a, + 0x23ee44, + 0x2d2686, + 0x217e87, + 0x2198c7, + 0x36b989, + 0x2aed45, + 0x2d1cc4, + 0x2d374a, + 0x2d9849, + 0x3e5287, + 0x36be46, + 0x342cc6, + 0x258e06, + 0x270c06, + 0x32f48f, + 0x2f33c9, + 0x20bfc6, + 0x271506, + 0x23b6c9, + 0x2d24c7, + 0x200e83, + 0x22a546, + 0x21c543, + 0x364448, + 0x285e47, + 0x2ba309, + 0x2b9b48, + 0x214ac8, + 0x318146, + 0x232c89, + 0x38f805, + 0x23c104, + 0x383887, + 0x3a1285, + 0x222744, + 0x38c208, + 0x21b284, + 0x2d2207, + 0x2e5106, + 0x27b105, + 0x2af248, + 0x342b8b, + 0x316ec7, + 0x24b286, + 0x2e7504, + 0x3a9606, + 0x27e985, + 0x3bb485, + 0x295489, + 0x2988c9, + 0x234cc4, + 0x234d05, + 0x214b85, + 0x20c146, + 0x316ac8, + 0x2dcc46, + 0x256e8b, + 0x2cb48a, + 0x2d8e85, + 0x2a2146, + 0x23a245, + 0x357e45, + 0x2b5e87, + 0x3ec208, + 0x279284, + 0x260c46, + 0x2a6146, + 0x211807, + 0x32cf84, + 0x294006, + 0x2ff245, + 0x2ff249, + 0x204704, + 0x3139c9, + 0x291946, + 0x2df708, + 0x214b85, + 0x3a0dc5, + 0x3d6786, + 0x2e4a09, + 0x21ba49, + 0x290446, + 0x2ed588, + 0x23ee48, + 0x23a204, + 0x2d3bc4, + 0x2d3bc8, + 0x20ba88, + 0x38f9c9, + 0x2b5106, + 0x21e4c6, + 0x34214d, + 0x3203c6, + 0x2df0c9, + 0x228285, + 0x21c586, + 0x233c88, + 0x33ed85, + 0x3bb304, + 0x27e985, + 0x2981c8, + 0x2b4889, + 0x28e884, + 0x2d4e86, + 0x2f098a, + 0x398548, + 0x29c3c9, + 0x290b0a, + 0x355e86, + 0x2b2bc8, + 0x37f905, + 0x2a0e08, + 0x309f85, + 0x21e189, + 0x344849, + 0x231e42, + 0x2d7745, + 0x295f06, + 0x291887, + 0x284805, + 0x328146, + 0x31f388, + 0x2b3046, + 0x2f7709, + 0x290f86, + 0x2ee508, + 0x2c3945, + 0x2533c6, + 0x20cf48, + 0x296f08, + 0x362a48, + 0x321f88, + 0x2185c4, + 0x232783, + 0x2f7944, + 0x296286, + 0x244584, + 0x3aac47, + 0x26d109, + 0x2e6645, + 0x2464c6, + 0x22a546, + 0x2a4b4b, + 0x2d1086, + 0x285906, + 0x2e9608, + 0x240646, + 0x2a6fc3, + 0x211483, + 0x245f84, + 0x23c405, + 0x328387, + 0x28ea08, + 0x28ea0f, + 0x29234b, + 0x3168c8, + 0x2d4f06, + 0x316bce, + 0x24b443, + 0x328304, + 0x2d1005, + 0x2d1b46, + 0x2a424b, + 0x2a89c6, + 0x21f509, + 0x27b105, + 0x38e748, + 0x209c08, + 0x21b90c, + 0x2b9046, + 0x360b86, + 0x3e4245, + 0x29d088, + 0x20cf45, + 0x2402c8, + 0x2b568a, + 0x2b8389, + 0x7bf004, 0x2000c2, - 0x253c43, - 0x216542, - 0x216543, - 0x23ec84, - 0x222bc3, - 0x343b43, - 0x243543, - 0x2e8306, - 0x2296c3, - 0x20cb83, - 0x793c8, - 0x216543, - 0x222bc3, - 0x2f5503, - 0x606296c3, - 0x7ca83, - 0x20cb83, - 0x60a01704, - 0xc1442, - 0x793c8, - 0x216543, - 0x222bc3, - 0x343b43, - 0x216443, - 0x21b544, - 0x2296c3, - 0x20cb83, - 0x2000c2, - 0x28bb03, - 0x216542, - 0x222bc3, - 0x343b43, - 0x216443, - 0x2296c3, - 0x20cb83, - 0x204182, - 0x204042, - 0x216542, - 0x216543, - 0x2080c2, - 0x2005c2, - 0x2b1b84, - 0x28d4c4, - 0x233ec2, - 0x21b544, + 0x5420b642, + 0x200382, + 0x25c204, + 0x200ec2, + 0x230944, + 0x201f42, 0x2003c2, - 0x20cb83, - 0x21f6c3, - 0x259186, - 0x22a042, - 0x204a42, - 0x208f02, - 0x61e0fb83, - 0x62202943, - 0x62186, - 0x62186, - 0x25dd04, - 0x20d903, - 0x1a16cd, - 0xa60a, - 0x1a02cc, - 0x8d34c, - 0x62c691cf, - 0x7074d, - 0x15c104, - 0x75104, - 0xffd44, - 0x146c05, - 0x95d89, - 0x17488c, - 0x34347, - 0x17f06, - 0x1f2c8, - 0x22a87, - 0x29e88, - 0x1beaca, - 0x1e1c47, - 0x174ac9, - 0x632ea205, - 0xea209, - 0x6343df0b, - 0x123308, - 0x3ecb, - 0x17ce88, - 0x18484a, - 0x132bce, - 0x6397448a, - 0x12808d, - 0x1b4bcd, - 0x144ce0b, - 0xeb94a, - 0x1db84, - 0x53846, - 0x89288, - 0x1dcf08, - 0x3e1c7, - 0x1e485, - 0x63eabe08, - 0x1d74c7, - 0x51b89, - 0xf4547, - 0x1c74c8, - 0x32649, - 0x48404, - 0x48985, - 0xc9ce, - 0x1402c7, - 0x6462cd86, - 0xb8d0d, - 0x1cdd88, - 0xedb48, - 0x64b7cb46, - 0x6557cb48, - 0xb3588, - 0x13d150, - 0x5fc8c, - 0x70607, - 0x71b07, - 0x75c07, - 0x7c947, - 0xc342, - 0x1d8707, - 0x18f4c, - 0x116b05, - 0xb8847, - 0xb3b86, - 0xb4e49, - 0xb7288, - 0x1ec82, + 0x206382, + 0x1c3448, + 0x11d44, + 0x21a043, + 0x226783, + 0x20f583, + 0xb882, + 0x5cf02, + 0x214e43, + 0x214883, + 0x24acc3, + 0x2ccc2, + 0xba42, + 0x3342, + 0x20bec3, + 0x21a043, + 0x226783, + 0x20f583, + 0x25c204, + 0x214883, + 0x24acc3, + 0x24f6c3, + 0x265a04, + 0x21a043, + 0x243544, + 0x226783, + 0x2eef84, + 0x20f583, + 0x284ac7, + 0x214e43, + 0x208c43, + 0x2a1948, + 0x24acc3, + 0x2937cb, + 0x30ad83, + 0x219086, + 0x249902, + 0x30614b, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x21a043, + 0x226783, + 0x20f583, + 0x24acc3, + 0x21bd03, + 0x203783, + 0x2000c2, + 0x1c3448, + 0x235d45, + 0x3bb508, + 0x2ef0c8, + 0x20b642, + 0x3b9485, + 0x3d5ec7, + 0x201b42, + 0x3c4e47, + 0x200382, + 0x2696c7, + 0x246f89, + 0x27f1c8, + 0x3d0a09, + 0x213c02, + 0x20f2c7, + 0x393f04, + 0x3d5f87, + 0x2cb387, + 0x2dbe82, + 0x214e43, + 0x20d3c2, + 0x201f42, + 0x2003c2, + 0x2035c2, + 0x200902, + 0x206382, + 0x283b85, + 0x214405, + 0xb642, + 0x26783, + 0x21a043, + 0x226783, + 0x207ec3, + 0x20f583, + 0x211983, + 0x214883, + 0x24acc3, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x21a043, + 0x226783, + 0x20f583, + 0x159186, + 0x56ea590b, + 0x214e43, + 0x214883, + 0x24acc3, + 0x1a3d05, + 0x11f03, + 0x101, + 0x21a043, + 0x226783, + 0x20f583, + 0x25c204, + 0x20bc83, + 0x214883, + 0x24acc3, + 0x221c03, + 0x57889cc6, + 0x24dc3, + 0x1a85, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x20b642, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0xabc2, + 0x1c3448, + 0x3a103, + 0x550c4, + 0x148c0c4, + 0xfd185, + 0x1ad803, + 0x2000c2, + 0x339144, + 0x21a043, + 0x226783, + 0x20f583, + 0x23b9c3, + 0x239805, + 0x20bc83, + 0x222043, + 0x214883, + 0x262243, + 0x24acc3, + 0x219303, + 0x212f03, + 0x200f83, + 0x15103, 0x5c2, - 0x190a86, - 0x67cb, - 0x6ac6, - 0x15c9c4, - 0x10f887, - 0x5e789, - 0x932c9, - 0x1bc248, - 0x54202, - 0x1971c9, - 0x17988, - 0x104e4a, - 0x65ada54b, - 0x145149, - 0x12506, - 0xdf889, - 0xeb8c7, - 0xec009, - 0xed548, - 0xeeac7, - 0xefe09, - 0xf2185, - 0xf2550, - 0x1e84c6, - 0x10f7c5, - 0x120047, - 0xb6a4d, - 0x4ab45, - 0xfec06, - 0xff487, - 0x105518, - 0xf48c8, - 0x80d4a, - 0x4a02, - 0x663a540b, - 0x666df98a, - 0x55a4a, - 0x6334d, - 0x1702, - 0xd9c46, - 0x30846, - 0xa7248, - 0xb700a, - 0x46c88, - 0x79289, - 0x118d88, - 0x6f68e, - 0x16208, - 0x13e247, - 0x66bb0284, - 0x12764d, - 0x10ba05, - 0x1a2f48, - 0x4fec8, - 0x66eaf2c8, - 0x114786, - 0x6502, - 0xcf5c4, - 0x110b46, - 0x6724b348, - 0x13906, - 0x678ddecb, - 0xe042, - 0xacc09, - 0x12d408, - 0x164647, - 0x35b4a, - 0x40407, + 0x445c2, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x2000c2, + 0x20bec3, + 0x20b642, + 0x101c2, + 0x226783, + 0x20f583, + 0x25c204, + 0x214883, + 0x24acc3, + 0x206382, + 0x1c3448, + 0x20f583, + 0x1c3448, + 0x2507c3, + 0x21a043, + 0x23e084, + 0x226783, + 0x20f583, + 0x206502, + 0x214e43, + 0x214883, + 0x24acc3, + 0x21a043, + 0x226783, + 0x20f583, + 0x206502, + 0x2384c3, + 0x214883, + 0x24acc3, + 0x305103, + 0x219303, + 0x2000c2, + 0x20b642, + 0x20f583, + 0x214883, + 0x24acc3, + 0x219085, + 0x16f9c6, + 0x78884, + 0xc47c4, + 0x265a04, + 0x249902, + 0x882, + 0x1c3448, + 0x101c2, + 0x5cf02, + 0x19c2, + 0x2000c2, + 0x14f985, + 0x27348, + 0x104543, + 0x20b642, + 0x49344, + 0x5cd61806, + 0x2d784, + 0xbe6cb, + 0x47306, + 0x89207, + 0x629c9, + 0x226783, + 0x5b4c8, + 0x5b4cb, + 0x5b94b, + 0x5c6cb, + 0x5ca0b, + 0x5cccb, + 0x5d10b, + 0x128c6, + 0x20f583, + 0x100185, + 0x1c0044, + 0x220303, + 0x121dc7, + 0x12f3c6, + 0x13b0c5, + 0xca04, + 0xf9004, + 0x82384, + 0x214883, + 0x90546, + 0x149204, + 0x24acc3, + 0x30b844, + 0x13b587, + 0x16f5c9, + 0xbe488, + 0x1e3885, + 0xf644, + 0x1d60c4, + 0x467c3, + 0x1d4803, + 0x5f986, + 0x112c8, + 0x198d45, + 0x1bf7c9, + 0x15ac3, + 0x112cc6, + 0x14f985, + 0x20b642, + 0x21a043, + 0x226783, + 0x20f583, + 0x214e43, + 0x208c43, + 0x24acc3, + 0x30ad83, + 0x249902, + 0x1c3448, + 0x21a043, + 0x226783, + 0x20f583, + 0x231a43, + 0x225a04, + 0x214883, + 0x24acc3, + 0x21a043, + 0x226783, + 0x2eef84, + 0x20f583, + 0x214883, + 0x24acc3, + 0x219086, + 0x226783, + 0x20f583, + 0x1fe83, + 0x24acc3, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x14f985, + 0x89207, + 0x9043, + 0x15ac3, + 0xba02, + 0x1c3448, + 0x20f583, + 0x21a043, + 0x226783, + 0x20f583, + 0x3e03, + 0x1a2a48, + 0x214883, + 0x24acc3, + 0x6061a043, + 0x226783, + 0x214883, + 0x24acc3, + 0x1c3448, + 0x2000c2, + 0x20b642, + 0x21a043, + 0x20f583, + 0x214883, + 0x2003c2, + 0x24acc3, + 0x344d87, + 0x23ac8b, + 0x217f43, + 0x28f1c8, + 0x203dc7, + 0x392fc6, + 0x228745, + 0x3b95c9, + 0x218e08, + 0x284ec9, + 0x284ed0, + 0x38a44b, + 0x3b1ec9, + 0x209043, + 0x207b09, + 0x23fd06, + 0x23fd0c, + 0x235e08, + 0x3f02c8, + 0x378149, + 0x2d884e, + 0x246d4b, + 0x2cae4c, + 0x205d83, + 0x2828cc, + 0x205d89, + 0x3f10c7, + 0x24100c, + 0x2ccaca, + 0x2346c4, + 0x2c5fcd, + 0x282788, + 0x3dcd4d, + 0x2874c6, + 0x265a0b, + 0x36f749, + 0x271787, + 0x20c506, + 0x326109, + 0x3a97ca, + 0x3bc848, + 0x30a984, + 0x2c8a07, + 0x252dc7, + 0x349b04, + 0x224c04, + 0x3ed149, + 0x324fc9, + 0x3d6448, + 0x33a645, + 0x213b45, + 0x20ef86, + 0x2c5e89, + 0x37ebcd, + 0x21c688, + 0x20ee87, + 0x2287c8, + 0x251c86, + 0x241804, + 0x3676c5, + 0x3e8046, + 0x3ef204, + 0x205c87, + 0x20864a, + 0x217384, + 0x21ae86, + 0x21ee89, + 0x21ee8f, + 0x21f84d, + 0x21fd86, + 0x226f50, + 0x227346, + 0x2289c7, + 0x229dc7, + 0x229dcf, + 0x22b509, + 0x22e9c6, + 0x22f607, + 0x22f608, + 0x22fe09, + 0x213f08, + 0x3133c7, + 0x2327c3, + 0x238a06, + 0x33a348, + 0x2d8b0a, + 0x2063c9, + 0x218f43, + 0x3b9386, + 0x260a8a, + 0x245207, + 0x3f0f0a, + 0x3ca8ce, + 0x22b646, + 0x34afc7, + 0x364ec6, + 0x205206, + 0x3b7c8b, + 0x2129ca, + 0x25404d, + 0x2045c7, + 0x3ea348, + 0x3ea349, + 0x3ea34f, + 0x31144c, + 0x387a89, + 0x2c16ce, + 0x284bca, + 0x380186, + 0x303dc6, + 0x32004c, + 0x3240cc, + 0x32d5c8, + 0x3635c7, + 0x20d6c5, + 0x3d6144, + 0x34a24e, + 0x224444, + 0x3eb647, + 0x3be48a, + 0x3ee394, + 0x23790f, + 0x229f88, + 0x2388c8, + 0x21c10d, + 0x21c10e, + 0x238d49, + 0x34be48, + 0x34be4f, + 0x240d0c, + 0x240d0f, + 0x241d87, + 0x24408a, + 0x2453cb, + 0x246088, + 0x247b07, + 0x38df4d, + 0x36eac6, + 0x2c6186, + 0x24a689, + 0x274708, + 0x252248, + 0x25224e, + 0x23ad87, + 0x30e505, + 0x254705, + 0x224a84, + 0x393286, + 0x3d6348, + 0x26b343, + 0x2cc04e, + 0x38e308, + 0x3a1fcb, + 0x3a9ec7, + 0x317b85, + 0x282a46, + 0x2c5387, + 0x36f048, + 0x371dc9, + 0x241645, + 0x29b648, + 0x362546, + 0x3bdbca, + 0x34a149, + 0x2410c9, + 0x2410cb, + 0x343608, + 0x3499c9, + 0x2cdc86, + 0x2801ca, + 0x28c9ca, + 0x24428c, + 0x371c47, + 0x27efca, + 0x20b30b, + 0x20b319, + 0x2dcdc8, + 0x219105, + 0x2e82c6, + 0x2e2f49, + 0x242586, + 0x311cca, + 0x219ec6, + 0x201d04, + 0x2e844d, + 0x201d07, + 0x333549, + 0x259f45, + 0x25aac8, + 0x25b289, + 0x25d444, + 0x25db47, + 0x25db48, + 0x25de87, + 0x27c888, + 0x267987, + 0x21d585, + 0x26f44c, + 0x26f849, + 0x34deca, + 0x270f89, + 0x207c09, + 0x2712cc, + 0x27330b, + 0x274108, + 0x274908, + 0x277cc4, + 0x299708, + 0x29adc9, + 0x2ccb87, + 0x21f0c6, + 0x2b6c07, + 0x2e0209, + 0x24fa8b, + 0x3991c7, + 0x2a8707, + 0x263c47, + 0x3dccc4, + 0x3dccc5, + 0x2f4f05, + 0x35ff0b, + 0x3e23c4, + 0x3db408, + 0x2bdd8a, + 0x362607, + 0x3efec7, + 0x2a3252, + 0x293a86, + 0x23c686, + 0x33610e, + 0x29f746, + 0x2a9408, + 0x2aa48f, + 0x3dd108, + 0x2584c8, + 0x31004a, + 0x310051, + 0x2bb38e, + 0x280cca, + 0x280ccc, + 0x2704c7, + 0x34c050, + 0x3da388, + 0x2bb585, + 0x2c67ca, + 0x3ef24c, + 0x2633cd, + 0x211986, + 0x211987, + 0x21198c, + 0x21348c, + 0x23760c, + 0x2c8d8b, + 0x3ac7c4, + 0x20b3c4, + 0x2ca709, + 0x327c07, + 0x239d89, + 0x28c809, + 0x2cc787, + 0x2cc946, + 0x2cc949, + 0x2ccd43, + 0x2b314a, + 0x33a207, + 0x3ec40b, + 0x253eca, + 0x269804, + 0x3f4106, + 0x296309, + 0x3cc144, + 0x2f0eca, + 0x309345, + 0x2db705, + 0x2db70d, + 0x2dba4e, + 0x368f45, + 0x343a46, + 0x218c87, + 0x2514ca, + 0x224746, + 0x282484, + 0x301007, + 0x2e5f8b, + 0x370c87, + 0x367e04, + 0x31a606, + 0x31a60d, + 0x2f64cc, + 0x214746, + 0x21c88a, + 0x226346, + 0x3d39c8, + 0x27b587, + 0x22be0a, + 0x363cc6, + 0x2044c3, + 0x300346, + 0x254948, + 0x37beca, + 0x2a37c7, + 0x2a37c8, + 0x2a6604, + 0x293c87, + 0x3a8548, + 0x2d0988, + 0x32f7c8, + 0x2d318a, + 0x2fc3c5, + 0x247c47, + 0x280b13, + 0x28b3c6, + 0x255308, + 0x22dac9, + 0x3c4d08, + 0x3181cb, + 0x2d4148, + 0x2e60c4, + 0x3a0146, + 0x32eb86, + 0x3b05c9, + 0x2e5e47, + 0x26f548, + 0x29ac46, + 0x394584, + 0x339b85, + 0x3dc748, + 0x259b0a, + 0x2e80c8, + 0x2ec306, + 0x2b2dca, + 0x2067c8, + 0x2e0508, + 0x2f1148, + 0x2f1946, + 0x2f3706, + 0x3b564c, + 0x2f3c10, + 0x2f4005, + 0x23bc88, + 0x23bc90, + 0x3dcf10, + 0x284d4e, + 0x3b52ce, + 0x3b52d4, + 0x3ba58f, + 0x3ba946, + 0x3f0991, + 0x349bd3, + 0x20c688, + 0x3ea6c5, + 0x28f708, + 0x3263c5, + 0x351c0c, + 0x218949, + 0x224289, + 0x231107, + 0x3bdfc9, + 0x3619c7, + 0x3bfb86, + 0x3674c7, + 0x202a85, + 0x211f43, + 0x21fe83, + 0x284704, + 0x21564d, + 0x39950f, + 0x3945c5, + 0x218846, + 0x236787, + 0x235b87, + 0x2e1686, + 0x2e168b, + 0x2bc245, + 0x215a46, + 0x3baec7, + 0x268649, + 0x22b386, + 0x22e385, + 0x3ecbcb, + 0x3f2686, + 0x21b645, + 0x243cc8, + 0x2a4948, + 0x2b38cc, + 0x2b38d0, + 0x2bc389, + 0x2c12c7, + 0x331a0b, + 0x2dbfc6, + 0x31328a, + 0x3b890b, + 0x35484a, + 0x329f06, + 0x304fc5, + 0x339f46, + 0x29bb08, + 0x2a5aca, + 0x21bd9c, + 0x3b8c0c, + 0x30ae48, + 0x219085, + 0x226987, + 0x2d8486, + 0x2dab05, + 0x223606, + 0x2e1848, + 0x2d9ac7, + 0x2d8748, + 0x28b48a, + 0x2fc9cc, + 0x2544c9, + 0x3c7e07, + 0x232004, + 0x297206, + 0x25804a, + 0x28c905, + 0x22488c, + 0x224f48, + 0x311fc8, + 0x333a8c, + 0x2385cc, + 0x239949, + 0x239b87, + 0x2509cc, + 0x365984, + 0x25e28a, + 0x21dd0c, + 0x288dcb, + 0x3acf0b, + 0x3ae506, + 0x26d587, + 0x26ffc7, + 0x34c28f, + 0x319791, + 0x2fa352, + 0x26ffcd, + 0x26ffce, + 0x27030e, + 0x3ba748, + 0x3ba752, + 0x365e48, + 0x25c007, + 0x265e4a, + 0x260048, + 0x29f705, + 0x3cee4a, + 0x227887, + 0x2dc104, + 0x220203, + 0x397405, + 0x3102c7, + 0x301d07, + 0x2635ce, + 0x3e3b8d, + 0x31a2c9, + 0x289f05, + 0x3291c3, + 0x346086, + 0x272405, + 0x3a2208, + 0x20d949, + 0x2e8305, + 0x38e14f, + 0x2be7c7, + 0x2285c5, + 0x3aa88a, + 0x209ac6, + 0x2ab4c9, + 0x35c24c, + 0x36ed09, + 0x20e786, + 0x2bdb8c, + 0x373686, + 0x3e2a48, + 0x210106, + 0x27fe06, + 0x2d1204, + 0x207e03, + 0x3b188a, + 0x2a3d11, + 0x263f4a, + 0x3a9c45, + 0x26f0c7, + 0x26c847, + 0x2d4b04, + 0x3a864b, + 0x3d0888, + 0x2d7cc6, + 0x38be45, + 0x279f04, + 0x26ec09, + 0x2008c4, + 0x3d2887, + 0x33c805, + 0x33c807, + 0x336345, + 0x25ff03, + 0x25bec8, + 0x26b54a, + 0x234643, + 0x235d8a, + 0x234646, + 0x38decf, + 0x2744c9, + 0x2cbfd0, + 0x229188, + 0x2ecc09, + 0x2b0dc7, + 0x31a58f, + 0x3562c4, + 0x2ef004, + 0x2271c6, + 0x358686, + 0x3ae00a, + 0x26aa06, + 0x2c9407, + 0x31d888, + 0x31da87, + 0x31f147, + 0x32134a, + 0x31fa4b, + 0x325785, + 0x2f9f88, + 0x229783, + 0x3d880c, + 0x20d44f, + 0x32dd8d, + 0x2b7187, + 0x237209, + 0x24e147, + 0x2d4448, + 0x3ee58c, + 0x308548, + 0x256bc8, + 0x33c44e, + 0x34e914, + 0x34ee24, + 0x36c50a, + 0x38aacb, + 0x361a84, + 0x361a89, + 0x2d2708, + 0x255545, + 0x203bca, + 0x29cb07, + 0x220c04, + 0x20bec3, + 0x21a043, + 0x243544, + 0x226783, + 0x20f583, + 0x25c204, + 0x20bc83, + 0x214e43, + 0x2f3c06, + 0x225a04, + 0x214883, + 0x24acc3, + 0x205443, + 0x2000c2, + 0x20bec3, + 0x20b642, + 0x21a043, + 0x243544, + 0x226783, + 0x20f583, + 0x20bc83, + 0x2f3c06, + 0x214883, + 0x24acc3, + 0x1c3448, + 0x21a043, + 0x226783, + 0x204703, + 0x214883, + 0x24acc3, + 0x20bec3, + 0x1c3448, + 0x21a043, + 0x226783, + 0x20f583, + 0x214e43, + 0x225a04, + 0x214883, + 0x24acc3, + 0x2000c2, + 0x2332c3, + 0x20b642, + 0x226783, + 0x20f583, + 0x214e43, + 0x214883, + 0x24acc3, + 0x203d82, + 0x206282, + 0x20b642, + 0x21a043, + 0x20c942, + 0x2005c2, + 0x25c204, + 0x230944, + 0x2225c2, + 0x225a04, + 0x2003c2, + 0x24acc3, + 0x205443, + 0x3ae506, + 0x22ccc2, + 0x203342, + 0x22dec2, + 0x62e2acc3, + 0x632584c3, + 0x6d386, + 0x6d386, + 0x265a04, + 0x208c43, + 0x578d, + 0x1d61ca, + 0x1a5486, + 0x1d784c, + 0x63eae24d, + 0x9694c, + 0x64489b8f, + 0x1e8b4d, + 0x177e04, + 0x7e204, + 0xee044, + 0x14f985, + 0x9e849, + 0x6268c, + 0x133907, + 0x18b86, + 0x210c8, + 0x26647, + 0x2cb08, + 0x1c588a, + 0x11c647, + 0x628c9, + 0x64adb105, + 0xf9209, + 0x64c428cb, + 0x133248, + 0x154e0b, + 0x610b, + 0xa7788, + 0x44a0a, + 0x1830ce, + 0x650becca, + 0xe6dcd, + 0x38d4d, + 0x15c4b0b, + 0xf638a, + 0x2d784, + 0x91cc6, + 0x1a0e88, + 0xd5448, + 0x42b87, + 0x2f385, + 0x1e1307, + 0xa9cc9, + 0x1e9987, + 0xa3c8, + 0xef589, + 0x5fe44, + 0x66605, + 0x85a4e, + 0x147947, + 0x6562eac6, + 0xc398d, + 0x1e9808, + 0xf9b88, + 0x65a64f46, + 0x664a7448, + 0x18860a, + 0xb3708, + 0x144f90, + 0x6a30c, + 0x78f47, + 0x7a307, + 0x7ebc7, + 0x845c7, + 0xef42, + 0x12c307, + 0x12b8c, + 0x150105, + 0x19fb07, + 0xbe1c6, + 0xbf0c9, + 0xc1bc8, + 0x7142, + 0x5c2, + 0x119186, + 0x19b44b, + 0x9dc6, + 0x1786c4, + 0x1a4107, + 0x64d49, + 0x191549, + 0x1c4448, + 0x5cf02, + 0x138fc9, + 0x18108, + 0xf280a, + 0xd5dc8, + 0x66ae5b8b, + 0x1bbf09, + 0x5ff86, + 0xea449, + 0xf6307, + 0xf6bc9, + 0xf9508, + 0xfad47, + 0xfc349, + 0x1011c5, + 0x101590, + 0x10210c, + 0x1c88c6, + 0x1a4045, + 0x1d95c7, + 0x4880d, + 0x36a89, + 0x672cebc3, + 0x4f585, + 0x140806, + 0x106587, + 0x10b858, + 0x1e9d08, + 0x8b1ca, + 0x23f8e, + 0x3b02, + 0x6766020b, + 0x67aea54a, + 0x1accca, + 0x72c0d, + 0x1042, + 0xe39c6, + 0x1b506, + 0xc32c8, + 0xc0e0a, + 0x5e0c8, + 0x1c3309, + 0x11e848, + 0x7ca4e, + 0x19d08, + 0x146087, + 0x67ea7384, + 0xd708d, + 0xd2a48, + 0x115785, + 0x14c8, + 0x42248, + 0x680268ca, + 0x686bad88, + 0x11b446, + 0xba42, + 0xd77c4, + 0x7ad46, + 0x68923d88, + 0x5f986, + 0x690c6b0b, + 0x79c2, + 0x64244e04, + 0x27e83, + 0x1b9789, + 0x1f88, + 0x14a587, + 0x359ca, + 0xc0b47, 0x401, 0x81, - 0x183c47, - 0x116348, - 0x642c1503, - 0x1616c4, - 0xc1508, - 0xc1708, - 0xc1908, - 0x69c07, - 0x9b583, - 0x64e40644, - 0x652a0803, + 0x18f607, + 0x11a408, + 0xcd208, + 0xcd408, + 0xcd608, + 0x73d47, + 0xb98c3, + 0x65e44e04, + 0x662aba43, 0xc1, - 0x267c6, + 0xfeb46, 0xc1, 0x201, - 0x267c6, - 0x9b583, - 0x65f36fc4, - 0x18b2c4, - 0x1a845, - 0x88e45, - 0x10f9c4, - 0x16684, - 0x54644, - 0x1c4b88, - 0x1866cc, - 0xe01, - 0x192c3, - 0x27804, - 0x1c4b88, - 0x677c4b88, - 0x674c3, - 0x79943, - 0x27d47, - 0x5f07, - 0x156d145, - 0x57e04, - 0x10dfc7, - 0x16542, - 0x88e04, - 0x21d684, - 0x216543, - 0x256d44, - 0x2b1b84, - 0x2296c3, - 0x22ba05, - 0x2203c3, - 0x24c343, - 0x355b45, - 0x201643, - 0x1df83, - 0x68a16543, - 0x222bc3, - 0x56d44, - 0x4f03, - 0x343b43, + 0xfeb46, + 0xb98c3, + 0x66e642c4, + 0x197b44, + 0x20f85, + 0x166d85, + 0x1a4244, + 0x1a184, + 0x5d344, + 0x1416c47, + 0x1464207, + 0x1cd6c8, + 0x161e4c, + 0xc01, + 0x12f03, + 0x2af84, + 0x30705, + 0x1cd6c8, + 0x68fcd6c8, + 0x71783, + 0x83343, + 0x18ec3, + 0x1d3b47, + 0x80c7, + 0x15e2945, + 0x64744, + 0x79087, + 0xb642, + 0x166d44, + 0xc2bca, + 0x2346c4, + 0x21a043, + 0x2607c4, + 0x25c204, + 0x214883, + 0x22d985, + 0x221c03, + 0x2423c3, + 0x33a505, + 0x200f83, + 0x29f83, + 0x6a61a043, + 0x226783, + 0x607c4, + 0x7783, + 0x20f583, 0x200181, - 0x1b283, - 0x216443, - 0x28d4c4, - 0x21b544, - 0x2296c3, - 0x57743, - 0x20cb83, - 0x202b03, - 0x793c8, + 0x22043, + 0x214e43, + 0x230944, + 0x225a04, + 0x214883, + 0x62243, + 0x24acc3, + 0x219303, + 0x1c3448, 0x2000c2, - 0x253c43, - 0x216542, - 0x216543, - 0x222bc3, - 0x2f5503, + 0x20bec3, + 0x20b642, + 0x21a043, + 0x226783, + 0x204703, 0x2005c2, - 0x2b1b84, - 0x243543, - 0x216443, - 0x2296c3, - 0x20d903, - 0x20cb83, - 0x201643, - 0x8904, - 0x793c8, - 0xf0007, - 0x16542, - 0x13f105, - 0x5fdcf, - 0xfa946, - 0x1472588, - 0x1190ce, - 0x69a0bc42, - 0x20bc88, - 0x20ad46, - 0x257f86, - 0x39a587, - 0x69e00c82, - 0x6a2bf108, - 0x22588a, - 0x270088, - 0x200ac2, - 0x37b789, - 0x2713c7, - 0x21ab46, - 0x2b1589, - 0x2cb344, - 0x349406, - 0x2d8d04, - 0x223984, - 0x263789, - 0x3e2106, - 0x236b05, - 0x274145, - 0x3e04c7, - 0x2d3b87, - 0x2d8684, - 0x322006, - 0x3061c5, - 0x20b585, - 0x238cc5, - 0x337047, - 0x3c7645, - 0x2533c9, - 0x3411c5, - 0x33ea04, - 0x231bc7, - 0x379ece, - 0x208509, - 0x340989, - 0x36ce06, - 0x249048, - 0x370e4b, - 0x2ab90c, - 0x31a746, - 0x2c32c7, - 0x2f19c5, - 0x31270a, - 0x20a989, - 0x201189, - 0x207d06, - 0x3bacc5, - 0x24f485, - 0x385e09, - 0x238e4b, - 0x3871c6, - 0x352106, - 0x20ef84, - 0x323bc6, - 0x308608, - 0x3cd246, - 0x228d06, - 0x204b88, - 0x206347, - 0x207ac9, - 0x20a245, - 0x793c8, - 0x3d7444, - 0x319c44, - 0x213f45, - 0x344589, - 0x22adc7, - 0x22adcb, - 0x22c88a, - 0x232345, - 0x6a606e82, - 0x2f6b47, - 0x6aa34fc8, - 0x207f47, - 0x21c245, - 0x2c858a, - 0x16542, - 0x289c0b, - 0x28ab0a, - 0x22bd06, - 0x2122c3, - 0x214ccd, - 0x3c338c, - 0x3dec0d, - 0x29e685, - 0x2bdd45, - 0x3a29c7, - 0x214609, - 0x225786, - 0x24c985, - 0x37f7c8, - 0x2d9c83, - 0x3588c8, - 0x323ac8, - 0x39f407, - 0x3c7188, - 0x2251c9, - 0x2d7a47, - 0x2f6347, - 0x36cfc8, - 0x37b644, - 0x37b647, - 0x28a4c8, - 0x361486, - 0x205acf, - 0x323607, - 0x321b06, - 0x361ec5, - 0x22c3c3, - 0x250b47, - 0x251243, - 0x255446, - 0x257d06, - 0x25a606, - 0x29c885, - 0x273b43, - 0x396e48, - 0x38b949, - 0x3a3c8b, - 0x25a788, - 0x25c785, - 0x25eb45, - 0x6ae5c082, - 0x26b249, - 0x3d1907, - 0x2891c5, - 0x263687, - 0x264dc6, - 0x3b2605, - 0x267a8b, - 0x26ac84, - 0x26fc45, - 0x26fd87, - 0x281a06, - 0x281e45, - 0x290dc7, - 0x291487, - 0x2ae244, - 0x37468a, - 0x297688, - 0x371109, - 0x2acac5, - 0x347486, - 0x3087ca, - 0x274046, - 0x23b8c7, - 0x2780cd, - 0x2b0049, - 0x394d85, - 0x37d287, - 0x32bbc8, - 0x36c888, - 0x3c3ac7, - 0x3ce246, - 0x22d347, - 0x257783, - 0x357f04, - 0x380f85, - 0x3b1447, - 0x3bbe49, - 0x287f08, - 0x23b7c5, - 0x382fc4, - 0x2574c5, - 0x26510d, - 0x200cc2, - 0x221ec6, - 0x2f8e06, - 0x33f34a, - 0x39e886, - 0x3afc45, - 0x2d91c5, - 0x2d91c7, - 0x3b3b0c, - 0x2b340a, - 0x298d86, - 0x2e7c45, - 0x323a06, - 0x299287, - 0x29ab06, - 0x29c78c, - 0x2b16c9, - 0x6b226c47, - 0x29f685, - 0x29f686, - 0x2a0288, - 0x24c885, - 0x2b0785, - 0x2b2048, - 0x2b224a, - 0x6b6870c2, - 0x6ba10f82, - 0x368b05, - 0x317b83, - 0x23d9c8, - 0x20b383, - 0x2b24c4, - 0x24694b, - 0x2231c8, - 0x2c1bc8, - 0x6bf4a9c9, - 0x2b8309, - 0x2b8c06, - 0x2b9e48, - 0x2ba049, - 0x2ba946, - 0x2baac5, - 0x251986, - 0x2bb089, - 0x2d46c7, - 0x24e2c6, - 0x273307, - 0x37bd07, - 0x39d584, - 0x6c2f4bc9, - 0x39dc88, - 0x2bf008, - 0x200e07, - 0x2dc706, - 0x20db89, - 0x257f47, - 0x3c840a, - 0x3ce388, - 0x21f107, - 0x221886, - 0x29ac4a, - 0x3a6c88, - 0x2f8885, - 0x22f6c5, - 0x31bd47, - 0x324849, - 0x32864b, - 0x3bc408, - 0x341249, - 0x25b607, - 0x2cdbcc, - 0x2ce30c, - 0x2ce60a, - 0x2ce88c, - 0x2d8888, - 0x2d8a88, - 0x2d8c84, - 0x2d9409, - 0x2d9649, - 0x2d988a, - 0x2d9b09, - 0x2d9e87, - 0x3cb8cc, - 0x3e7f06, - 0x277a88, - 0x274106, - 0x392b46, - 0x394c87, - 0x3ab788, - 0x3499cb, - 0x207e07, - 0x263fc9, - 0x28d5c9, - 0x252907, - 0x24b5c4, - 0x26bfc7, - 0x2d2bc6, - 0x218946, - 0x217145, - 0x2db8c8, - 0x310704, - 0x310706, - 0x2b32cb, - 0x266749, - 0x25b246, - 0x228f09, - 0x214006, - 0x38f0c8, - 0x271f43, - 0x3bae45, - 0x218a89, - 0x3e97c5, - 0x308104, - 0x3b7146, - 0x36aa05, - 0x260006, - 0x31c407, - 0x2109c6, - 0x2374cb, - 0x3c2887, - 0x267786, - 0x27e3c6, - 0x3e0586, - 0x2d8649, - 0x20308a, - 0x2cfdc5, - 0x2fcb0d, - 0x2b2346, - 0x259946, - 0x2e2146, - 0x227b45, - 0x2f2847, - 0x233587, - 0x27ec0e, - 0x216443, - 0x2dc6c9, - 0x3a1c09, - 0x312b07, - 0x276e87, - 0x291945, - 0x2f3e45, - 0x6c609e0f, - 0x2e1a47, - 0x2e1c08, - 0x2e1f04, - 0x2e2446, - 0x6ca4f102, - 0x2e5b86, - 0x2e8306, - 0x30f40e, - 0x35870a, - 0x2c7906, - 0x21498a, - 0x20d109, - 0x23f7c5, - 0x30bfc8, - 0x3dc706, - 0x2be208, - 0x343648, - 0x285dcb, - 0x39a685, - 0x3c76c8, - 0x204ccc, - 0x21c107, - 0x259b86, - 0x36a848, - 0x349688, - 0x6ce4ba82, - 0x32e38b, - 0x211e89, - 0x20a449, - 0x3c2187, - 0x3a8bc8, - 0x6d21e1c8, - 0x32c1cb, - 0x268d09, - 0x29420d, - 0x306f08, - 0x3c5088, - 0x6d603c82, - 0x210c84, - 0x6da386c2, - 0x377a06, - 0x6de00e42, - 0x3022ca, - 0x2b0606, - 0x22fc48, - 0x2b1e48, - 0x260946, - 0x2c37c6, - 0x3090c6, - 0x3e5505, - 0x2417c4, - 0x6e235504, - 0x3597c6, - 0x281447, - 0x6e684ec7, - 0x391e0b, - 0x208149, - 0x2bdd8a, - 0x2d9304, - 0x258208, - 0x24e08d, - 0x302bc9, - 0x302e08, - 0x303089, - 0x305504, - 0x251104, - 0x28c445, - 0x20508b, - 0x223146, - 0x359605, - 0x23f349, - 0x3220c8, - 0x2aeb04, - 0x312889, - 0x21eec5, - 0x2d3bc8, - 0x2f6a07, - 0x340d88, - 0x28cf06, - 0x206d47, - 0x2ecf49, - 0x203809, - 0x22f845, - 0x2b0d05, - 0x6ea1f182, - 0x33e7c4, - 0x244985, - 0x39a486, - 0x34b885, - 0x303c87, - 0x3598c5, - 0x281a44, - 0x36cec6, - 0x24ca07, - 0x3a01c6, - 0x32c605, - 0x212788, - 0x20af45, - 0x21b207, - 0x22c649, - 0x26688a, - 0x2344c7, - 0x2344cc, - 0x236ac6, - 0x242d89, - 0x24c505, - 0x24c7c8, - 0x22ea03, - 0x230445, - 0x2c7d85, - 0x286a07, - 0x6ee01242, - 0x2fe1c7, - 0x2eef06, - 0x3ad646, - 0x2f2006, - 0x3495c6, - 0x24b9c8, - 0x283885, - 0x321bc7, - 0x321bcd, - 0x20b5c3, - 0x3e83c5, - 0x3c7f87, - 0x2fe508, - 0x3c7b45, - 0x21f908, - 0x35b2c6, - 0x2ea3c7, - 0x2f5685, - 0x39a706, - 0x3973c5, - 0x22554a, - 0x2f9546, - 0x2315c7, - 0x320285, - 0x2fdec7, - 0x301804, - 0x308086, - 0x30bf05, - 0x23640b, - 0x2d2a49, - 0x28bc0a, - 0x22f8c8, - 0x377b48, - 0x30fecc, - 0x310c87, - 0x31ea88, - 0x391308, - 0x3d65c5, - 0x32a40a, - 0x34f9c9, - 0x6f200ec2, - 0x210606, - 0x24c004, - 0x300c89, - 0x247989, - 0x24eec7, - 0x284447, - 0x2a0d09, - 0x32aac8, - 0x32aacf, - 0x22dd46, - 0x2e9ecb, - 0x261445, - 0x261447, - 0x3572c9, - 0x22a186, - 0x312807, - 0x2ee685, - 0x23a944, - 0x34cb86, - 0x2174c4, - 0x2c9147, - 0x360648, - 0x6f7babc8, - 0x30d045, - 0x30d187, - 0x351bc9, - 0x211c44, - 0x24a5c8, - 0x6fb04c88, - 0x2e20c4, - 0x33ed08, - 0x32ce84, - 0x217389, - 0x227a85, - 0x6fe13402, - 0x22dd85, - 0x2ed405, - 0x3b69c8, - 0x23cf87, - 0x702008c2, - 0x3c2645, - 0x2e4146, - 0x25fb06, - 0x33e788, - 0x348688, - 0x34b846, - 0x37dcc6, - 0x2f00c9, - 0x3ad586, - 0x22a04b, - 0x349345, - 0x259386, - 0x261f88, - 0x362646, - 0x29e506, - 0x22000a, - 0x2e530a, - 0x22be45, - 0x24f187, - 0x27f886, - 0x70605002, - 0x3c80c7, - 0x38fb05, - 0x308744, - 0x308745, - 0x258106, - 0x27df47, - 0x2247c5, - 0x247a44, - 0x2e2708, - 0x29e5c5, - 0x355387, - 0x383485, - 0x225485, - 0x265c84, - 0x265c89, + 0x25c204, + 0x20bc83, + 0x214e43, + 0x214883, + 0x208c43, + 0x24acc3, + 0x200f83, + 0xd384, + 0x1c3448, + 0x110cc7, + 0xb642, + 0x139b05, + 0x6a44f, + 0xe6a46, + 0x10210c, + 0x1470708, + 0x11eb4e, + 0x6b602242, + 0x23b308, + 0x3d6906, + 0x2e20c6, + 0x3a4c07, + 0x6ba09582, + 0x6becbe48, + 0x232a8a, + 0x2789c8, + 0x200b02, + 0x33a049, + 0x3257c7, + 0x21f046, + 0x25bc09, + 0x247d84, + 0x392ec6, + 0x2e24c4, + 0x201904, + 0x26e989, + 0x31cb06, + 0x312885, + 0x27d445, + 0x239547, + 0x2cc4c7, + 0x381d44, + 0x364606, + 0x3cdf45, + 0x2201c5, + 0x23a185, + 0x251e47, + 0x3a9d05, + 0x25b709, + 0x348a05, + 0x36f184, + 0x224687, + 0x3d490e, + 0x3eb909, + 0x335fc9, + 0x3cbb86, + 0x24d7c8, + 0x37f6cb, + 0x3716cc, + 0x32e686, + 0x2cad07, + 0x2fdfc5, + 0x315a0a, + 0x3d6549, + 0x200ac9, + 0x20b046, + 0x3bac85, + 0x255205, + 0x37afc9, + 0x23a30b, + 0x23ce46, + 0x35ba46, + 0x20cc44, + 0x25a746, + 0x30e588, + 0x3d7746, + 0x363b86, + 0x207408, + 0x20aa87, + 0x20ae09, + 0x20df45, + 0x1c3448, + 0x3e1284, + 0x31f6c4, + 0x2139c5, + 0x34d509, + 0x22d407, + 0x22d40b, + 0x22e5ca, + 0x231045, + 0x6c208982, + 0x220587, + 0x6c6327c8, + 0x3791c7, + 0x3b1405, + 0x2457ca, + 0xb642, + 0x29258b, + 0x29410a, + 0x27c446, + 0x211343, + 0x21784d, + 0x2090cc, + 0x21ce8d, + 0x246405, + 0x3ab085, + 0x26b387, + 0x22c209, + 0x232986, + 0x26a885, + 0x315448, + 0x25a643, + 0x2ef3c8, + 0x25a648, + 0x3cb287, + 0x3f39c8, + 0x362349, + 0x2e0d87, + 0x23a807, + 0x3e27c8, + 0x380384, + 0x380387, + 0x2873c8, + 0x36d0c6, + 0x3d144f, + 0x238107, + 0x364106, + 0x239cc5, + 0x22e043, + 0x257347, + 0x396b43, + 0x25e506, + 0x264646, + 0x266206, + 0x2a7c85, + 0x27c883, + 0x338c48, + 0x3ab5c9, + 0x26638b, + 0x266748, + 0x267645, + 0x269105, + 0x6ca698c2, + 0x367589, + 0x3d9307, + 0x215ac5, + 0x26e887, + 0x26fe86, + 0x270ac5, + 0x27224b, + 0x274104, + 0x278585, + 0x2786c7, + 0x28d046, + 0x28d405, + 0x299b47, + 0x29a787, + 0x383744, + 0x26248a, + 0x2beec8, + 0x37f989, + 0x349405, + 0x27c006, + 0x30e74a, + 0x27d346, + 0x320dc7, + 0x27f34d, + 0x2bbd89, + 0x38ae05, + 0x3d4e47, + 0x20c848, + 0x20cd08, + 0x3485c7, + 0x335c86, + 0x215f87, + 0x26e303, + 0x31ca84, + 0x38c645, + 0x3b9c87, + 0x3c4049, + 0x22c048, + 0x320cc5, + 0x240244, + 0x25a985, + 0x39080d, + 0x20ad02, + 0x2264c6, + 0x2cdb86, + 0x31050a, + 0x3a8b46, + 0x3b6905, + 0x3938c5, + 0x3938c7, + 0x3bda0c, + 0x2b358a, + 0x2a22c6, + 0x20d2c5, + 0x25a586, + 0x2a3087, + 0x2a57c6, + 0x2a7b8c, + 0x25bd49, + 0x6ce4dcc7, + 0x2aa845, + 0x2aa846, + 0x2aac08, + 0x25a205, + 0x2bc5c5, + 0x2bca88, + 0x2bcc8a, + 0x6d21dd82, + 0x6d610682, + 0x21e645, + 0x244583, + 0x33ef48, + 0x21ffc3, + 0x2bcf04, + 0x2ab60b, + 0x371ac8, + 0x39fcc8, + 0x6db5cb49, + 0x2c2fc9, + 0x2c3886, + 0x2c5008, + 0x2c5209, + 0x2c6dc6, + 0x2c6f45, + 0x259106, + 0x2c7409, + 0x2da7c7, + 0x253286, + 0x359787, + 0x3a9987, + 0x3a8104, + 0x6dfe2609, + 0x2dad48, + 0x2cbd48, + 0x3947c7, + 0x2e7d46, + 0x208ec9, + 0x2e2787, + 0x347c4a, + 0x3c8188, + 0x27c147, + 0x2efac6, + 0x2a174a, + 0x3db8c8, + 0x2ed305, + 0x2c11c5, + 0x30b487, + 0x38ed49, + 0x32258b, + 0x338108, + 0x348a89, + 0x266a47, + 0x2d5fcc, + 0x2d668c, + 0x2d698a, + 0x2d6c0c, + 0x2e2048, + 0x2e2248, + 0x2e2444, + 0x2e3189, + 0x2e33c9, + 0x2e360a, + 0x2e3889, + 0x2e3c07, + 0x34c88c, + 0x379586, + 0x27ed08, + 0x27d406, + 0x2f5fc6, + 0x38ad07, + 0x39d088, + 0x39348b, + 0x20b147, + 0x26f209, + 0x296bc9, + 0x24e507, + 0x2e2704, + 0x367787, + 0x2cf0c6, + 0x2194c6, + 0x21ca45, + 0x2c2dc8, + 0x3618c4, + 0x3618c6, + 0x2b344b, + 0x28dd09, + 0x251d46, + 0x22c4c9, + 0x213a86, + 0x39ac08, + 0x20a243, + 0x3bae05, + 0x222149, + 0x3cb985, + 0x302884, + 0x390f86, + 0x3bcbc5, + 0x26a686, + 0x323247, + 0x2fe346, + 0x3bb84b, + 0x2800c7, + 0x28d706, + 0x2921c6, + 0x239606, + 0x381d09, + 0x2d394a, + 0x2fac05, + 0x24bd4d, + 0x2bcd86, + 0x2d4b86, + 0x229086, + 0x3d3945, + 0x301887, + 0x268c87, + 0x31ce8e, + 0x214e43, + 0x2e7d09, + 0x3bf489, + 0x315e07, + 0x281887, + 0x3d3845, + 0x2d0b05, + 0x6e3ed28f, + 0x2ece47, + 0x2ed008, + 0x2edc44, + 0x2eddc6, + 0x6e654782, + 0x2f1bc6, + 0x2f3c06, + 0x10210c, + 0x20220e, + 0x2ef20a, + 0x232146, + 0x21978a, + 0x206b89, + 0x249205, + 0x32a108, + 0x3e3e46, + 0x2ca908, + 0x379b48, + 0x2911cb, + 0x3a4d05, + 0x3a9d88, + 0x20754c, + 0x3b12c7, + 0x265d86, + 0x3bca08, + 0x393148, + 0x6ea18882, + 0x392c8b, + 0x20e149, + 0x20a049, + 0x3b7f47, + 0x3666c8, + 0x6efeae08, + 0x25fbcb, + 0x257a09, + 0x26fb4d, + 0x32cd48, + 0x2d7dc8, + 0x6f201802, + 0x222ac4, + 0x6f6445c2, + 0x36d586, + 0x6fa03282, + 0x308fca, + 0x273186, + 0x22f0c8, + 0x25c4c8, + 0x26b9c6, + 0x2cb206, + 0x30f086, + 0x3a2185, + 0x2468c4, + 0x6ff8dd84, + 0x360946, + 0x269e87, + 0x70290607, + 0x39f3cb, + 0x3793c9, + 0x3ab0ca, + 0x393a04, + 0x2e2a48, + 0x25304d, + 0x3098c9, + 0x309b08, + 0x309d89, + 0x30b844, + 0x2bc884, + 0x295a45, + 0x253c8b, + 0x371a46, + 0x360785, + 0x248449, + 0x3646c8, + 0x270b04, + 0x315b89, + 0x3bb785, + 0x2cc508, + 0x23aec7, + 0x3363c8, + 0x296506, + 0x213dc7, + 0x2f8dc9, + 0x3ecd49, + 0x21b6c5, + 0x2462c5, + 0x70623cc2, + 0x36ef44, + 0x2fcc45, + 0x3a4b06, + 0x328085, + 0x2691c7, + 0x328645, + 0x28a984, + 0x3cbc46, + 0x26a907, + 0x2547c6, + 0x371f85, + 0x21dfc8, + 0x3d6b05, + 0x221fc7, + 0x22c6c9, + 0x28de4a, + 0x234787, + 0x23478c, + 0x312846, + 0x24ab49, + 0x252105, + 0x25a148, + 0x21b503, + 0x2cdc45, + 0x2fc705, + 0x243007, + 0x70a00b82, + 0x305cc7, + 0x2d7386, + 0x389c86, + 0x2e8f06, + 0x393086, + 0x256848, + 0x28f845, + 0x3641c7, + 0x3641cd, + 0x220203, + 0x379a45, + 0x3aa647, 0x306008, - 0x2017c6, - 0x347706, - 0x3b6c06, - 0x70bd38c8, - 0x3dc2c7, - 0x31490d, - 0x314ecc, - 0x3154c9, - 0x315709, - 0x70f75ac2, - 0x3db703, - 0x22bec3, - 0x2d2c85, - 0x3b154a, - 0x33e646, - 0x34ce85, - 0x31cbc4, - 0x31cbcb, - 0x33508c, - 0x33594c, - 0x335c55, - 0x33698d, - 0x338a8f, - 0x338e52, - 0x3392cf, - 0x339692, - 0x339b13, - 0x339fcd, - 0x33a58d, - 0x33a90e, - 0x33b2ce, - 0x33b9cc, - 0x33bd8c, - 0x33c1cb, - 0x33cc4e, - 0x33d552, - 0x33e40c, - 0x33f5d0, - 0x34cfd2, - 0x34e1cc, - 0x34e88d, - 0x34ebcc, - 0x350dd1, - 0x35228d, - 0x355f8d, - 0x35658a, - 0x35680c, - 0x357ccc, - 0x35930c, - 0x359ccc, - 0x35dad3, - 0x35e550, - 0x35e950, - 0x35f34d, - 0x35f94c, - 0x360ac9, - 0x36290d, - 0x362c53, - 0x364b11, - 0x365313, - 0x36664f, - 0x366a0c, - 0x366d0f, - 0x3670cd, - 0x3676cf, - 0x367a90, - 0x36850e, - 0x36d54e, - 0x36de90, - 0x36ea8d, - 0x36f40e, - 0x36f78c, - 0x3708d3, - 0x3725ce, - 0x373310, - 0x373711, - 0x373b4f, - 0x373f13, - 0x37564d, - 0x37598f, - 0x375d4e, - 0x3762d0, - 0x3766c9, - 0x377d50, - 0x37824f, - 0x3788cf, - 0x378c92, - 0x37c3ce, - 0x37d94d, - 0x37e00d, - 0x37e34d, - 0x37f9cd, - 0x37fd0d, - 0x380050, - 0x38044b, - 0x380d4c, - 0x3810cc, - 0x3816cc, - 0x3819ce, - 0x390450, - 0x392492, - 0x39290b, - 0x3938ce, - 0x393c4e, - 0x3944ce, - 0x394a4b, - 0x71394ed6, - 0x395e0d, - 0x396994, - 0x39768d, - 0x399cd5, - 0x39b8cd, - 0x39c24f, - 0x39cb8f, - 0x3a3f4f, - 0x3a430e, - 0x3a468d, - 0x3a6611, - 0x3aaf4c, - 0x3ab24c, - 0x3ab54b, - 0x3ab98c, - 0x3ac40f, - 0x3ac7d2, - 0x3acdcd, - 0x3ae1cc, - 0x3aec8c, - 0x3aef8d, - 0x3af2cf, - 0x3af68e, - 0x3b120c, - 0x3b17cd, - 0x3b1b0b, - 0x3b23cc, - 0x3b318d, - 0x3b34ce, - 0x3b3849, - 0x3b50d3, - 0x3b798d, - 0x3b808d, - 0x3b868c, - 0x3b8d0e, - 0x3b958f, - 0x3b994c, - 0x3b9c4d, - 0x3b9f8f, - 0x3ba34c, - 0x3bb38c, - 0x3bb90c, - 0x3bbc0c, - 0x3bc8cd, - 0x3bcc12, - 0x3bd38c, - 0x3bd68c, - 0x3bd991, - 0x3bddcf, - 0x3be18f, - 0x3be553, - 0x3bf34e, - 0x3bf6cf, - 0x3bfa8c, - 0x717c014e, - 0x3c04cf, - 0x3c0896, - 0x3c1b92, - 0x3c528c, - 0x3c618f, - 0x3c680d, - 0x3d294f, - 0x3d2d0c, - 0x3d300d, - 0x3d334d, - 0x3d51ce, - 0x3d5d0c, - 0x3d914c, - 0x3d9450, - 0x3daa91, - 0x3daecb, - 0x3db30c, - 0x3db60e, - 0x3dd8d1, - 0x3ddd0e, - 0x3de08d, - 0x3e5f8b, - 0x3e688f, - 0x3e74d4, - 0x2038c2, - 0x2038c2, - 0x204cc3, - 0x2038c2, - 0x204cc3, - 0x2038c2, - 0x201082, - 0x2519c5, - 0x3dd5cc, - 0x2038c2, - 0x2038c2, - 0x201082, - 0x2038c2, - 0x2a0905, - 0x266885, - 0x2038c2, - 0x2038c2, - 0x20bd42, - 0x2a0905, - 0x337209, - 0x36480c, - 0x2038c2, - 0x2038c2, - 0x2038c2, - 0x2038c2, - 0x2519c5, - 0x2038c2, - 0x2038c2, - 0x2038c2, - 0x2038c2, - 0x20bd42, - 0x337209, - 0x2038c2, - 0x2038c2, - 0x2038c2, - 0x266885, - 0x2038c2, - 0x266885, - 0x36480c, - 0x3dd5cc, - 0x253c43, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2b1b84, - 0x2296c3, - 0x20cb83, - 0x3c4f, - 0x12d248, - 0x6f7c4, - 0xd903, - 0x17b4c8, - 0x1d5b83, - 0x2000c2, - 0x72616542, - 0x249f03, - 0x23adc4, - 0x204f03, - 0x36c284, - 0x239c86, - 0x220e43, - 0x3b7004, - 0x2999c5, - 0x216443, - 0x2296c3, - 0x7ca83, - 0x20cb83, - 0x23098a, - 0x259186, - 0x393fcc, - 0x793c8, - 0x216542, - 0x216543, - 0x222bc3, - 0x343b43, - 0x233243, - 0x2e8306, - 0x2296c3, - 0x20cb83, - 0x21f6c3, - 0x39fc3, - 0xb4388, - 0x731e7c45, - 0x7c4c7, - 0xb1845, - 0x52547, - 0x146c05, - 0x4009, - 0xad42, - 0x1c138a, - 0x73f2d5c5, - 0x146c05, - 0x34347, - 0x16108, - 0x10d8e, - 0x95292, - 0x130e0b, - 0x1e1d46, - 0x742ea205, - 0x7479e04c, - 0x10de07, - 0xb46c7, - 0x1b620a, - 0x44ad0, - 0x17be85, - 0xc5e4b, - 0x1dcf08, - 0x3e1c7, - 0x3aa4b, - 0x51b89, - 0x873c7, - 0xf4547, - 0x187407, - 0x3e106, - 0x1c74c8, - 0x74c32f46, - 0x46bc7, - 0xc7e86, - 0xb8d0d, - 0x96110, - 0x75013242, - 0x1cdd88, - 0x184590, - 0x18ed0c, - 0x7578f54d, - 0x68508, - 0x6898b, - 0x76447, - 0x19a49, - 0x62246, - 0xa0488, - 0x5102, - 0x9c50a, - 0x36947, - 0xb8847, - 0xb4e49, - 0xb7288, - 0x154645, - 0x190a86, - 0x6ac6, - 0x1040ce, - 0x422ce, - 0x4aecf, - 0x5e789, - 0x932c9, - 0x9c08b, - 0xbb44f, - 0x1dd2cc, - 0xd4f4b, - 0x1b9248, - 0x191d07, - 0x19b308, - 0xbc0cb, - 0xbca0c, - 0xbce0c, - 0xbd20c, - 0xbd50d, - 0x1bc248, - 0x5adc2, - 0x1971c9, - 0x46688, - 0xda88b, - 0xdc906, - 0xe3acb, - 0x13d08b, - 0xeddca, - 0xeec85, - 0xf2550, - 0xf8286, - 0x583c6, - 0x10f7c5, - 0x120047, - 0xfa348, - 0xff487, - 0xff747, - 0x69587, - 0xd1846, - 0x17784a, - 0xb400a, - 0x30846, - 0xb860d, - 0x46c88, - 0x118d88, - 0xef809, - 0x1b2a09, - 0xcc205, - 0x176a8c, - 0xbd70b, - 0x10d989, - 0x112cc4, - 0x114549, - 0x114786, - 0x143506, - 0x4a42, - 0x13906, - 0x80c8b, - 0x11de07, - 0x11dfc7, - 0xe042, - 0xde645, - 0x9204, - 0x101, - 0x5b843, - 0x74b26806, - 0xa0803, - 0x382, - 0x1504, - 0xac2, - 0x5dd04, - 0x882, - 0x8502, - 0x4702, - 0x128c42, - 0x4182, - 0xea202, - 0xd42, - 0x2e702, - 0x3fb82, - 0xc542, - 0x3242, - 0x57f02, - 0x22bc3, - 0x942, - 0x2bc2, - 0x18242, - 0xeb02, - 0x642, - 0x3b342, - 0x1ec82, - 0x8e82, - 0x5502, - 0x5c2, - 0x43543, - 0x2642, - 0x6002, - 0x54202, - 0x7bc2, - 0x9d42, - 0x10442, - 0x205c2, - 0x11de42, - 0x1582, - 0x10f082, - 0x77782, - 0xa9542, - 0x296c3, - 0x602, - 0x4ba82, - 0x1cc2, - 0x2d4c2, - 0x2f7c5, - 0x59c2, - 0x4cec2, - 0x179e43, - 0x682, - 0x4a02, - 0x1702, - 0x4ac2, - 0xb5c2, - 0x8c2, - 0x6502, - 0x4a42, - 0x3ec5, - 0x75a01082, - 0x75eecb83, - 0x9983, - 0x76201082, - 0x9983, - 0xdc1c7, - 0x215483, - 0x2000c2, - 0x216543, - 0x222bc3, - 0x2f5503, - 0x2005c3, - 0x233243, - 0x2296c3, - 0x20d903, - 0x20cb83, - 0x2a0843, - 0xcc244, - 0x143845, - 0x1084c5, - 0x1a143, - 0x793c8, - 0x216543, - 0x222bc3, - 0x2f5503, - 0x216443, - 0x2296c3, - 0x20d903, - 0x7ca83, - 0x20cb83, - 0x216543, - 0x222bc3, - 0x20cb83, - 0x216543, - 0x222bc3, - 0x343b43, - 0x200181, - 0x216443, - 0x2296c3, - 0x257743, - 0x20cb83, - 0x1a3904, - 0x253c43, - 0x216543, - 0x222bc3, - 0x2163c3, - 0x2f5503, - 0x322603, - 0x285483, - 0x2b05c3, - 0x205383, - 0x343b43, - 0x2b1b84, - 0x2296c3, - 0x20cb83, - 0x201643, - 0x202304, - 0x239843, - 0x3b43, - 0x2133c3, - 0x32f308, - 0x29ac84, - 0x20020a, - 0x25afc6, - 0x1519c4, - 0x3bd047, - 0x22820a, - 0x22dc09, - 0x3c9ec7, - 0x3cc38a, - 0x253c43, - 0x368b8b, - 0x20c389, - 0x31f4c5, - 0x20cd87, - 0x16542, - 0x216543, - 0x226f07, - 0x2224c5, - 0x2d8e09, - 0x222bc3, - 0x34bc46, - 0x32a4c3, - 0xd2b03, - 0x11bc06, - 0x17a2c6, - 0x20dc7, - 0x229a46, - 0x231f45, - 0x20a307, - 0x319507, - 0x78f43b43, - 0x34e407, - 0x3b29c3, - 0x2712c5, - 0x2b1b84, - 0x2c2188, - 0x3db94c, - 0x2c1305, - 0x2b01c6, - 0x226dc7, - 0x35b907, - 0x2678c7, - 0x26c148, - 0x31ae8f, - 0x27b905, - 0x24a007, - 0x2151c7, - 0x28974a, - 0x37f609, - 0x330145, - 0x34da0a, - 0x101546, - 0xcc787, - 0x2d7e45, - 0x2f5744, - 0x340486, - 0xcb946, - 0x256ec7, - 0x25acc7, - 0x3b5b48, - 0x3d07c5, - 0x2223c6, - 0x2f048, - 0x228c85, - 0x28e46, - 0x240305, - 0x288284, - 0x21ef87, - 0x24b80a, - 0x2aab88, - 0x3e3cc6, - 0x33243, - 0x2efe85, - 0x3d8586, - 0x3cbb06, - 0x30f6c6, - 0x216443, - 0x3ad047, - 0x215145, - 0x2296c3, - 0x2ee08d, - 0x20d903, - 0x3b5c48, - 0x243444, - 0x281d05, - 0x2b2506, - 0x32e106, - 0x259287, - 0x268bc7, - 0x27c805, - 0x20cb83, - 0x3a20c7, - 0x24b489, - 0x36a249, - 0x382d0a, - 0x23d7c2, - 0x271284, - 0x3211c4, - 0x2fda07, - 0x2fe088, - 0x300709, - 0x3e8289, - 0x301107, - 0x10a949, - 0x2132c6, - 0x103e46, - 0x305504, - 0x3b4e4a, - 0x307e08, - 0x308f89, - 0x309246, - 0x2c7245, - 0x2aaa48, - 0x2dcb8a, - 0x27d683, - 0x202486, - 0x301207, - 0x2c8885, - 0x3c10c5, - 0x24da03, - 0x2d1984, - 0x22f685, - 0x291587, - 0x306145, - 0x2f2cc6, - 0x166105, - 0x2c79c3, - 0x2c79c9, - 0x281acc, - 0x2d06cc, - 0x3416c8, - 0x2a3e47, - 0x3101c8, - 0x110e47, - 0x3111ca, - 0x31188b, - 0x20c4c8, - 0x32e208, - 0x25d306, - 0x272145, - 0x33b5ca, - 0x2ecbc5, - 0x213402, - 0x2db6c7, - 0x27d046, - 0x377045, - 0x313149, - 0x27b485, - 0x1dea48, - 0x29d645, - 0x270e89, - 0x3d84c6, - 0x3407c8, - 0x31dd83, - 0x212c46, - 0x3b7086, - 0x31d845, - 0x31d849, - 0x2cee49, - 0x271ec7, - 0x120d84, - 0x320d87, - 0x3e8189, - 0x228405, - 0x418c8, - 0x379cc5, - 0x3a14c5, - 0x36bc09, - 0x202cc2, - 0x35a344, - 0x204542, + 0x3aa205, + 0x221708, + 0x230406, + 0x2aba87, + 0x2f5f05, + 0x3a4d86, + 0x3391c5, + 0x35388a, + 0x2fb186, + 0x2dda87, + 0x2350c5, + 0x2fdb87, + 0x300f84, + 0x302806, + 0x32a045, + 0x23628b, + 0x2cef49, + 0x36838a, + 0x21b748, + 0x30c4c8, + 0x30e14c, + 0x313c87, + 0x3166c8, + 0x35f308, + 0x36d6c5, + 0x322bca, + 0x3291c9, + 0x70e01b82, + 0x2a8506, + 0x22bbc4, + 0x22bbc9, + 0x2868c9, + 0x31b047, + 0x284407, + 0x28c689, + 0x2d3388, + 0x2d338f, + 0x216986, + 0x2f594b, + 0x272085, + 0x272087, + 0x33fc89, + 0x22ce06, + 0x315b07, + 0x2fa6c5, + 0x23e6c4, + 0x358386, + 0x21cdc4, + 0x2d2e87, + 0x33d8c8, + 0x713bab88, + 0x3c18c5, + 0x3ccb87, + 0x2dcf49, + 0x21c584, + 0x24f148, + 0x7170b2c8, + 0x2d4b04, + 0x312f48, + 0x20c5c4, + 0x21cc89, + 0x228fc5, + 0x71a49902, + 0x2169c5, + 0x2d6545, + 0x20cb48, + 0x241bc7, + 0x71e008c2, + 0x3b8405, + 0x2f0386, + 0x266086, + 0x36ef08, + 0x346a48, + 0x328046, + 0x32c486, + 0x310d89, + 0x389bc6, + 0x22cccb, + 0x351f85, + 0x3ae706, + 0x35a188, + 0x36ebc6, + 0x2a9b46, + 0x222dca, + 0x283c4a, + 0x390b05, + 0x27c587, + 0x257e46, + 0x72207882, + 0x3aa787, + 0x3e2105, + 0x30e6c4, + 0x30e6c5, + 0x2e2946, + 0x328bc7, + 0x2271c5, + 0x283dc4, + 0x3cdc48, + 0x2a9c05, + 0x2fbbc7, + 0x334e05, + 0x3537c5, + 0x231704, + 0x231709, + 0x3cdd88, + 0x201106, + 0x21a506, + 0x20dbc6, + 0x726c8fc8, + 0x30c347, + 0x34664d, + 0x3de28c, + 0x3e6d89, + 0x31b5c9, + 0x72b84342, + 0x3e60c3, + 0x24e603, + 0x2cf185, + 0x3b9d8a, + 0x346486, + 0x3afd85, + 0x323644, + 0x32364b, + 0x33d18c, + 0x33dacc, + 0x33ddd5, + 0x33eb0d, + 0x34098f, + 0x340d52, + 0x3411cf, + 0x341592, + 0x341a13, + 0x341ecd, + 0x34248d, + 0x34280e, + 0x34310e, + 0x34380c, + 0x343bcc, + 0x34400b, + 0x344a8e, + 0x345392, + 0x34624c, + 0x346c50, + 0x355292, + 0x35648c, + 0x356b4d, + 0x356e8c, + 0x35ad11, + 0x35bbcd, + 0x35db8d, + 0x35e18a, + 0x35e40c, + 0x35fccc, + 0x36048c, + 0x36100c, + 0x366ed3, + 0x368610, + 0x368a10, + 0x36908d, + 0x36968c, + 0x36c249, + 0x36fb4d, + 0x36fe93, + 0x3724d1, + 0x372cd3, + 0x37380f, + 0x373bcc, + 0x373ecf, + 0x37428d, + 0x37488f, + 0x374c50, + 0x3756ce, + 0x37b80e, + 0x37c150, + 0x37cd0d, + 0x37d68e, + 0x37da0c, + 0x37f153, + 0x38154e, + 0x381f50, + 0x382351, + 0x38278f, + 0x382b53, + 0x383ecd, + 0x38420f, + 0x3845ce, + 0x384b50, + 0x384f49, + 0x386310, + 0x38680f, + 0x386e8f, + 0x387252, + 0x387e8e, + 0x38984d, + 0x389e0d, + 0x38a14d, + 0x38af4d, + 0x38b28d, + 0x38b5d0, + 0x38b9cb, + 0x38c40c, + 0x38c78c, + 0x38cd8c, + 0x38d08e, + 0x39ae10, + 0x39c9d2, + 0x39ce4b, + 0x39d28e, + 0x39d60e, + 0x39de8e, + 0x39e40b, + 0x72f9e796, + 0x3a074d, + 0x3a1714, + 0x3a24cd, + 0x3a4355, + 0x3a644d, + 0x3a6dcf, + 0x3a770f, + 0x3ab80f, + 0x3abbce, + 0x3abf4d, + 0x3ad911, + 0x3b240c, + 0x3b270c, + 0x3b2a0b, + 0x3b2ccc, + 0x3b344f, + 0x3b3812, + 0x3b3e0d, + 0x3b504c, + 0x3b594c, + 0x3b5c4d, + 0x3b5f8f, + 0x3b634e, + 0x3b9a4c, + 0x3ba00d, + 0x3ba34b, + 0x3bc18c, + 0x3bd08d, + 0x3bd3ce, + 0x3bd749, + 0x3be713, + 0x3c014d, + 0x3c084d, + 0x3c0e4c, + 0x3c14ce, + 0x3c1a0f, + 0x3c1dcc, + 0x3c20cd, + 0x3c240f, + 0x3c27cc, + 0x3c2dcc, + 0x3c3b0c, + 0x3c3e0c, + 0x3c500d, + 0x3c5352, + 0x3c5dcc, + 0x3c60cc, + 0x3c63d1, + 0x3c680f, + 0x3c6bcf, + 0x3c6f93, + 0x3c8d8e, + 0x3c910f, + 0x3c94cc, + 0x733c9b8e, + 0x3c9f0f, + 0x3ca2d6, + 0x3cadd2, + 0x3ce68c, + 0x3cf1cf, + 0x3cf84d, + 0x3dd30f, + 0x3dd6cc, + 0x3dd9cd, + 0x3ddd0d, + 0x3df8ce, + 0x3e040c, + 0x3e2c4c, + 0x3e2f50, + 0x3e5451, + 0x3e588b, + 0x3e5ccc, + 0x3e5fce, + 0x3e72d1, + 0x3e770e, + 0x3e7a8d, + 0x3f074b, + 0x3f170f, + 0x3f20d4, + 0x216e82, + 0x216e82, + 0x206c43, + 0x216e82, + 0x206c43, + 0x216e82, + 0x214f82, + 0x259145, + 0x3e6fcc, + 0x216e82, + 0x216e82, + 0x214f82, + 0x216e82, + 0x2ac905, + 0x28de45, + 0x216e82, + 0x216e82, 0x202642, - 0x2ffc05, - 0x351748, - 0x2cc145, - 0x2da043, - 0x2da045, - 0x2e5d83, - 0x212202, - 0x333544, - 0x36a603, - 0x200a82, - 0x2c4d84, - 0x318f43, - 0x203482, - 0x269503, - 0x2307c4, - 0x3093c3, - 0x25be04, - 0x201ec2, - 0x21f5c3, - 0x214a83, - 0x202d82, - 0x352902, - 0x2cec89, - 0x204942, - 0x296884, - 0x21ef42, - 0x2603c4, - 0x213284, - 0x2d7284, - 0x204a42, - 0x247e02, - 0x35d143, - 0x2a2683, - 0x291704, - 0x2e1184, - 0x307fc4, - 0x31fe44, - 0x31d303, - 0x208f03, - 0x3014c4, - 0x322cc4, - 0x322e06, - 0x229782, - 0x16542, - 0x4ab43, - 0x216542, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x14c45, + 0x2ac905, + 0x33f149, + 0x3721cc, + 0x216e82, + 0x216e82, + 0x216e82, + 0x216e82, + 0x259145, + 0x216e82, + 0x216e82, + 0x216e82, + 0x216e82, + 0x202642, + 0x33f149, + 0x216e82, + 0x216e82, + 0x216e82, + 0x28de45, + 0x216e82, + 0x28de45, + 0x3721cc, + 0x3e6fcc, + 0x20bec3, + 0x21a043, + 0x226783, + 0x20f583, + 0x25c204, + 0x214883, + 0x24acc3, + 0x5e8f, + 0x1dc8, + 0x7cb84, + 0xeaec8, 0x2000c2, - 0x253c43, - 0x216543, - 0x222bc3, - 0x206203, - 0x343b43, - 0x2b1b84, - 0x2cef44, - 0x21b544, - 0x2296c3, - 0x20cb83, - 0x21f6c3, - 0x305b04, - 0x20bc43, - 0x21bcc3, - 0x37dc04, - 0x379ac6, - 0x2079c3, - 0x146c05, - 0xb46c7, - 0x203643, - 0x7aa176c8, - 0x209a43, - 0x2c45c3, - 0x24c243, - 0x233243, - 0x3c2545, - 0xcd43, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x212343, - 0x203e43, - 0x793c8, - 0x216543, - 0x222bc3, - 0x343b43, - 0x243543, - 0x2296c3, - 0x28ea04, - 0x7ca83, - 0x20cb83, - 0x2cce44, - 0x146c05, - 0x2d3605, - 0xb46c7, - 0x216542, - 0x2104c2, - 0x200382, - 0x204cc2, - 0xd903, - 0x2003c2, - 0x12dc04, - 0x216543, - 0x23ec84, - 0x222bc3, - 0x343b43, - 0x216443, - 0x2296c3, - 0x20cb83, - 0x793c8, - 0x216543, - 0x222bc3, - 0x343b43, - 0x216443, - 0x21b544, - 0x2296c3, - 0xd903, - 0x20cb83, - 0x202b03, - 0x25dd04, - 0x793c8, - 0x216543, - 0x20d903, - 0x1a143, - 0x11a5c4, - 0x21d684, - 0x793c8, - 0x16542, - 0x216543, - 0x256d44, - 0x2b1b84, - 0x20d903, - 0x203c82, - 0x7ca83, - 0x20cb83, - 0x24c343, - 0xd1984, - 0x355b45, - 0x213402, - 0x323543, - 0x10e689, - 0xebd86, - 0x1c4688, - 0x2000c2, - 0x793c8, - 0x216542, - 0x222bc3, - 0x343b43, - 0x2005c2, - 0xd903, - 0x20cb83, + 0x7420b642, + 0x24e8c3, + 0x23eb44, + 0x207783, + 0x20f584, + 0x23c686, + 0x213883, + 0x390e44, + 0x2b1b85, + 0x214e43, + 0x214883, + 0x24acc3, + 0x228d8a, + 0x3ae506, + 0x39d98c, + 0x1c3448, + 0x20b642, + 0x21a043, + 0x226783, + 0x20f583, + 0x2384c3, + 0x2f3c06, + 0x214883, + 0x24acc3, + 0x205443, + 0x15ac3, + 0xbe988, + 0x74d4c5c5, + 0x833c7, + 0x5bec5, + 0x1f2c7, + 0x14f985, + 0xaa204, + 0xaa20a, + 0x6249, + 0x2142, + 0x1d02ca, + 0x75b26305, + 0x14f985, + 0x133907, + 0x19c08, + 0x1048e, + 0x9dd52, + 0x13990b, + 0x11c746, + 0x75edb105, + 0x762db10c, + 0x1e2287, + 0xf5d87, + 0x1dafca, + 0x48cd0, + 0x153ac5, + 0xbe6cb, + 0xd5448, + 0x42b87, + 0x3e7cb, + 0xa9cc9, + 0x59307, + 0x1e9987, + 0x3d087, + 0x42ac6, + 0xa3c8, + 0x76838286, + 0x5e007, + 0x30546, + 0xc398d, + 0xe2bd0, + 0x76c0a842, + 0x1e9808, + 0x19a110, + 0x19a84c, + 0x773a1bcd, + 0x727c8, + 0x72f4b, + 0x809c7, + 0xd1709, + 0x6d446, + 0xaae08, + 0x1742, + 0x70d0a, + 0x38447, + 0x19fb07, + 0xbf0c9, + 0xc1bc8, + 0x100185, + 0xe9c7, + 0x119186, + 0x9dc6, + 0x10aa0e, + 0x4c48e, + 0x164d8f, + 0x64d49, + 0x191549, + 0xabe4b, + 0xded0f, + 0x183bcc, + 0xdd68b, + 0x14de08, + 0x19f2c7, + 0x1ad388, + 0xc880b, + 0xc91cc, + 0xc95cc, + 0xc99cc, + 0xc9ccd, + 0x1c4448, + 0x83382, + 0x138fc9, + 0xab348, + 0xe578b, + 0xe7f46, + 0xefc4b, + 0x144ecb, + 0xf9e0a, + 0xfaf05, + 0x101590, + 0x104606, + 0x1cbd86, + 0x1a4045, + 0x1d95c7, + 0xf1e48, + 0x106587, + 0x106847, + 0xa79c7, + 0x29a86, + 0x16d3ca, + 0xb3c0a, + 0x1b506, + 0x19f8cd, + 0x5e0c8, + 0x11e848, + 0xf12c9, + 0x8af89, + 0xd4905, + 0x16018c, + 0xc9ecb, + 0x1c7bc9, + 0x18ec84, + 0x11b209, + 0x11b446, + 0x11506, + 0x3342, + 0x5f986, + 0x8b10b, + 0x127647, + 0x127807, + 0x79c2, + 0xe9545, + 0x19d84, + 0x101, + 0x66fc3, + 0x76644746, + 0xaba43, + 0x382, + 0xe44, + 0xb02, + 0x65a04, + 0x882, + 0xc502, + 0x2742, + 0x1da82, + 0x3d82, + 0x27e82, + 0x45c2, + 0x16e3c2, + 0x3cc82, + 0x3402, + 0x101c2, + 0x64842, + 0x26783, + 0x942, + 0x1b42, + 0x1b5c2, + 0x5b02, + 0x642, + 0x30fc2, + 0x7142, + 0x2502, + 0x13f82, + 0x5c2, + 0xbc83, + 0x40c2, + 0x1ac2, + 0x5cf02, + 0xaf02, + 0x12a82, 0xfe02, - 0x82, - 0xc2, - 0x1cc547, - 0x14a709, - 0x3a43, - 0x793c8, - 0x17d0c3, - 0x7e3e71c7, - 0x16543, - 0x10508, - 0x22bc3, - 0x143b43, - 0x432c6, - 0x43543, - 0x15d8c8, - 0xd5c08, - 0x1c1ac3, - 0x83646, - 0x7e5a9d85, - 0x16443, - 0x98e48, - 0xdfc08, - 0x103d03, - 0x7e8ef3c6, - 0xf3585, - 0x1a1dc4, - 0x3c787, - 0x296c3, - 0x4f83, - 0xcb83, - 0x4642, - 0x15b0ca, - 0xc205, - 0x7303, - 0x7eed308c, - 0xffcc3, - 0x10ba84, - 0x11ac8b, - 0x11b248, - 0x15d184, - 0x9a402, - 0x4b343, - 0x145fdc7, - 0x157a147, - 0x14da108, - 0x144b343, - 0x1c4b88, - 0x1ad30b, - 0x14182, - 0x132747, - 0x114bc4, - 0x2000c2, - 0x216542, - 0x23ec84, - 0x343b43, - 0x216443, - 0x2296c3, - 0x20cb83, - 0x216543, - 0x222bc3, - 0x343b43, - 0x233243, - 0x2296c3, - 0x20cb83, - 0x204683, - 0x202b03, - 0x39fc3, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, + 0x24902, + 0x5942, + 0xec2, + 0x19b302, + 0x82182, + 0x736c2, + 0x14883, 0x602, - 0x1a143, - 0x143b43, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2b1b84, - 0x233243, - 0x2296c3, - 0x20cb83, - 0x22a042, + 0x18882, + 0x25c2, + 0x7982, + 0x1b645, + 0x8782, + 0x21e42, + 0x1d4883, + 0x682, + 0x3b02, + 0x1042, + 0x1a82, + 0x14942, + 0x8c2, + 0xba42, + 0x3342, + 0x5985, + 0x77614f82, + 0x77b0ed43, + 0x4d03, + 0x77e14f82, + 0x4d03, + 0xe7807, + 0x205683, + 0x2000c2, + 0x21a043, + 0x226783, + 0x204703, + 0x2005c3, + 0x2384c3, + 0x214883, + 0x208c43, + 0x24acc3, + 0x319283, + 0x1ad803, + 0x1ad804, + 0x180286, + 0xd4944, + 0x179d45, + 0x10e445, + 0x18b43, + 0x1c3448, + 0x21a043, + 0x226783, + 0x204703, + 0x214e43, + 0x214883, + 0x208c43, + 0x24acc3, + 0x21a043, + 0x226783, + 0x24acc3, + 0x21a043, + 0x226783, + 0x20f583, + 0x200181, + 0x214e43, + 0x214883, + 0x262243, + 0x24acc3, + 0x5b84, + 0x20bec3, + 0x21a043, + 0x226783, + 0x219ec3, + 0x204703, + 0x262283, + 0x245143, + 0x2bc303, + 0x220783, + 0x20f583, + 0x25c204, + 0x214883, + 0x24acc3, + 0x200f83, + 0x3496c4, + 0x235843, + 0x5d83, + 0x2548c3, + 0x337908, + 0x2a1784, + 0x20020a, + 0x26b146, + 0xdcd44, + 0x3beb87, + 0x22a0ca, + 0x216849, + 0x3d0147, + 0x3d5a0a, + 0x20bec3, + 0x21e6cb, + 0x37ff09, + 0x3a8445, + 0x3c30c7, + 0xb642, + 0x21a043, + 0x321187, + 0x351105, + 0x2e25c9, + 0x2370e, + 0x226783, + 0x246b86, + 0x322c83, + 0xcf003, + 0x122446, + 0x3946, + 0x13807, + 0x215186, + 0x21f445, + 0x20e007, + 0x31ef87, + 0x7aa0f583, + 0x3566c7, + 0x28af43, + 0xc1089, + 0x3256c5, + 0x25c204, + 0x2cde88, + 0x3e630c, + 0x2cd005, + 0x2bbf06, + 0x321047, + 0x3c7ec7, + 0x28fb87, + 0x297fc8, + 0x3217cf, + 0x349145, + 0x208a47, + 0x217d47, + 0x3a148a, + 0x315289, + 0x32bd05, + 0x32700a, + 0x10de86, + 0xd4d07, + 0x2e1485, + 0x398204, + 0x347b06, + 0x1974c6, + 0x260947, + 0x2e68c7, + 0x348748, + 0x213045, + 0x351006, + 0x2f908, + 0x363b05, + 0x2c406, + 0x2c0a45, + 0x243344, + 0x297e47, + 0x25668a, + 0x2b7808, + 0x3d2c86, + 0x384c3, + 0x2fc3c5, + 0x21ea46, + 0x34cac6, + 0x2024c6, + 0x214e43, + 0x3b4087, + 0x10210c, + 0x217cc5, + 0x214883, + 0x2fa0cd, + 0x208c43, + 0x348848, + 0x284784, + 0x21ed45, + 0x2bcf46, + 0x203286, + 0x3ae607, + 0x25fa87, + 0x283705, + 0x24acc3, + 0x3b8fc7, + 0x3bf949, + 0x323ec9, + 0x39054a, + 0x204d82, + 0x325684, + 0x337d84, + 0x3059c7, + 0x305b88, + 0x307609, + 0x379909, + 0x3082c7, + 0x113e89, + 0x2630c6, + 0x10a786, + 0x30b844, + 0x238fca, + 0x30db08, + 0x30ef49, + 0x30f386, + 0x2d1e45, + 0x2b76c8, + 0x2e81ca, + 0x236d03, + 0x349846, + 0x3083c7, + 0x237e45, + 0x891c8, + 0x3c7705, + 0x219183, + 0x223984, + 0x56cc9, + 0x2c1185, + 0x29a887, + 0x3cdec5, + 0x2ed1c6, + 0x107d85, + 0x232203, + 0x232209, + 0x21eb0c, + 0x2d954c, + 0x316208, + 0x2a8fc7, + 0x3f0d88, + 0x118c07, + 0x318f8a, + 0x3195cb, + 0x380048, + 0x203388, + 0x2681c6, + 0x2614c5, + 0x34340a, + 0x2184c5, + 0x249902, + 0x2e66c7, + 0x27b8c6, + 0x385b45, + 0x398389, + 0x233885, + 0x1b76c8, + 0x2b44c5, + 0x325289, + 0x32d706, + 0x3eb748, + 0x324583, + 0x211fc6, + 0x390ec6, + 0x326e05, + 0x326e09, + 0x28aa89, + 0x261247, + 0x12ba84, + 0x32ba87, + 0x379809, + 0x22a2c5, + 0x469c8, + 0x3d4705, + 0x205585, + 0x3706c9, + 0x2029c2, + 0x235644, + 0x203d42, + 0x2040c2, + 0x2edf05, + 0x37e948, + 0x2d4845, + 0x2e3dc3, + 0x2e3dc5, + 0x2f1dc3, + 0x211282, + 0x2342c4, + 0x206743, + 0x207002, + 0x2fd284, + 0x314903, + 0x211b42, + 0x289ec3, + 0x21b484, + 0x30f503, + 0x269644, + 0x202fc2, + 0x2213c3, + 0x219883, + 0x2075c2, + 0x2a7382, + 0x28a8c9, + 0x20dfc2, + 0x29f2c4, + 0x206782, + 0x288904, + 0x263084, + 0x30c944, + 0x203342, + 0x24a8c2, + 0x239b03, + 0x2ae143, + 0x29aa04, + 0x2ec444, + 0x329104, + 0x32bc04, + 0x326803, + 0x2f7cc3, + 0x30de04, + 0x32cf44, + 0x32d086, + 0x205402, + 0xb642, + 0x4f583, + 0x20b642, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x177c5, + 0x2000c2, + 0x20bec3, + 0x21a043, + 0x226783, + 0x201b43, + 0x20f583, + 0x25c204, + 0x28ab84, + 0x225a04, + 0x214883, + 0x24acc3, + 0x205443, + 0x30be44, + 0x3346c3, + 0x251943, + 0x389b04, + 0x3d4506, + 0x204243, + 0x14f985, + 0xf5d87, + 0x288583, + 0x7c62d088, + 0x265883, + 0x2cfcc3, + 0x21e803, + 0x2384c3, + 0x3b8305, + 0x1c3083, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x2113c3, + 0x206083, + 0x1c3448, + 0x21a043, + 0x226783, + 0x20f583, + 0x20bc83, + 0x214883, + 0x26c584, + 0x24acc3, + 0x2d8484, + 0x14f985, + 0x36dd05, + 0xf5d87, + 0x20b642, + 0x203142, + 0x200382, + 0x201f42, + 0x2003c2, + 0x2d84, + 0x21a043, + 0x243544, + 0x226783, + 0x20f583, + 0x214e43, + 0x214883, + 0x24acc3, + 0x1c3448, + 0x21a043, + 0x226783, + 0x20f583, + 0x214e43, + 0x225a04, + 0x214883, + 0x24acc3, + 0x219303, + 0x265a04, + 0x1c3448, + 0x21a043, + 0x208c43, + 0x18b43, + 0x12e504, + 0x2346c4, + 0x1c3448, + 0xb642, + 0x21a043, + 0x2607c4, + 0x25c204, + 0x208c43, + 0x201802, + 0x24acc3, + 0x2423c3, + 0x23984, + 0x33a505, + 0x249902, + 0x333483, + 0x1beec9, + 0xf67c6, + 0x8c108, + 0x2000c2, + 0x1c3448, + 0x7fafe207, + 0x20b642, + 0x226783, + 0x20f583, + 0x2005c2, + 0x24acc3, + 0x54c2, + 0x82, + 0x23984, + 0xc2, + 0x1d5bc7, + 0x17149, + 0x5c83, + 0x1c3448, + 0x1da43, + 0x80330047, + 0x1a043, + 0xa8408, + 0x26783, + 0x85587, + 0xf583, + 0x1eeb86, + 0xbc83, + 0xb5fc8, + 0xdf908, + 0x1d8b03, + 0x8f606, + 0x8053b0c5, + 0x1b8b85, + 0x14e43, + 0xa2388, + 0xea7c8, + 0x69243, + 0x808fb886, + 0x102dc5, + 0x1bf644, + 0x412c7, + 0x14883, + 0x7803, + 0x4acc3, + 0x4d42, + 0x19720a, + 0x9c83, + 0x80edc7cc, + 0xedfc3, + 0x1b04, + 0x1215cb, + 0x121b88, + 0xa4fc2, + 0x123d83, + 0x1416c47, + 0x15d4b87, + 0x14e3e88, + 0x1523d83, + 0x1cd6c8, + 0x149a144, + 0x1eafcb, + 0x13c02, + 0x13b587, + 0x1547c4, + 0x2000c2, + 0x20b642, + 0x243544, + 0x20f583, + 0x214e43, + 0x214883, + 0x24acc3, + 0x21a043, + 0x226783, + 0x20f583, + 0x2384c3, + 0x214883, + 0x24acc3, + 0x229a83, + 0x219303, + 0x15ac3, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x18b43, + 0x26783, + 0x8300f583, + 0x833c7, + 0x21a043, + 0x226783, + 0x20f583, + 0x25c204, + 0x2384c3, + 0x214883, + 0x24acc3, + 0x22ccc2, 0x2000c1, 0x2000c2, 0x200201, - 0x338b82, - 0x793c8, - 0x224545, + 0x340a82, + 0x1c3448, + 0x226f45, 0x200101, - 0x16543, - 0x3a304, - 0x201381, + 0x1a043, + 0x3e084, + 0x200cc1, 0x200501, - 0x201281, - 0x251242, - 0x251244, - 0x251943, + 0x200bc1, + 0x2590c2, + 0x396b44, + 0x2590c3, 0x200041, 0x200801, 0x200181, - 0x18ab06, + 0x37d06, + 0x1e144c, 0x200701, - 0x30d307, - 0x312d8f, - 0x399086, + 0x324e47, + 0x306d0f, + 0x3ccd06, 0x2004c1, - 0x31a606, - 0x200bc1, + 0x32e546, + 0x200ec1, + 0x10210c, 0x200581, - 0x3e61ce, + 0x3c2a4e, 0x2003c1, - 0x20cb83, - 0x200a81, - 0x3a8d85, - 0x204642, - 0x24d905, + 0x24acc3, + 0x2015c1, + 0x83ed2ac4, + 0x23ba45, + 0x204d42, + 0x219085, 0x200401, 0x200741, 0x2007c1, - 0x213402, + 0x249902, 0x200081, - 0x201641, - 0x207281, - 0x2024c1, - 0x208481, - 0x5c549, - 0x793c8, - 0x216543, - 0x222bc3, - 0xac1c8, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x2203c3, - 0x2f43, - 0x216543, - 0x343b43, - 0x9a348, - 0x216443, - 0x2296c3, - 0x91c43, - 0x20cb83, - 0x82a99048, - 0x1e9343, - 0x12248, - 0xcd42, - 0x3c43, - 0x13242, - 0x4a42, - 0x146c05, - 0x793c8, - 0x9fb06, - 0x15edc7, - 0xd903, - 0x146c05, - 0x171684, - 0x1cdf88, - 0x4f344, - 0x106a47, - 0x60244, - 0xb1c0c, - 0x1db944, - 0xdaf45, - 0x5c549, - 0x16e507, - 0x28846, - 0x191ca, - 0x14f990a, - 0x793c8, - 0x7ca83, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x203b43, - 0x793c8, - 0x216543, - 0x222bc3, - 0x2e8fc4, - 0x20cb83, - 0x2655c5, - 0x2484c4, - 0x216543, - 0x222bc3, - 0x343b43, - 0x201582, - 0x2296c3, - 0x20cb83, - 0x2b03, - 0xedac6, - 0x12f6c4, - 0x124c46, - 0x253c43, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2296c3, - 0x20cb83, - 0x216542, - 0x216543, - 0x23a889, - 0x222bc3, - 0x2b79c9, - 0x343b43, - 0x216443, - 0x2296c3, - 0x84e04, - 0xd903, - 0x20cb83, - 0x305308, - 0x3e2687, - 0x355b45, - 0xd3a48, - 0x1db108, - 0x1cc547, - 0xfe30a, - 0x1c790b, - 0x11a847, - 0x48f08, - 0xf4a0a, - 0x26888, - 0x14a709, - 0x2f547, - 0x1ed87, - 0x10efc8, - 0x10508, - 0x4a2cf, - 0xaad45, - 0x1fc47, - 0x432c6, - 0x14cd47, - 0x130286, - 0x15d8c8, - 0xa3706, - 0x1405c7, - 0x1798c9, - 0x1df3c7, - 0xc6d09, - 0xcd749, - 0xd3386, - 0xd5c08, - 0xd3d05, - 0x86f4a, - 0xdfc08, - 0x103d03, - 0xe6008, - 0x3c787, - 0x133485, - 0x649d0, - 0x4f83, - 0x7ca83, - 0x179747, - 0x2d445, - 0xffa48, - 0x74505, - 0xffcc3, - 0x1a3108, - 0x1a1386, - 0x9ec09, - 0xba247, - 0x10e94b, - 0x77a04, - 0x113b84, - 0x11ac8b, - 0x11b248, - 0x11bb07, - 0x146c05, - 0x216543, - 0x222bc3, - 0x2f5503, - 0x20cb83, - 0x248783, - 0x343b43, - 0x7ca83, - 0x216543, - 0x222bc3, - 0x343b43, - 0x216443, - 0x2296c3, - 0x20cb83, - 0x9c1cb, + 0x200f81, + 0x202d81, + 0x203481, + 0x2033c1, + 0x2802, + 0x67409, + 0x1c3448, + 0x21a043, + 0x226783, + 0x1008c8, + 0x20f583, + 0x214883, + 0x24acc3, + 0x221c03, + 0x1f3503, + 0x21a043, + 0x20f583, + 0xa4f08, + 0x214e43, + 0x214883, + 0x2a783, + 0x24acc3, + 0x84f34308, + 0x1f31c3, + 0x112c8, + 0x13c82, + 0x17c3, + 0xa842, + 0x3342, + 0x14f985, + 0x1c3448, + 0xa4806, + 0x1ec847, + 0x14f985, + 0xb284, + 0x19a3c8, + 0x550c4, + 0x12c887, + 0x6af04, + 0x5c28c, + 0x1e6304, + 0x2bd85, + 0x67409, + 0x1f0487, + 0xe1548, + 0x2aac6, + 0x12e0a, + 0x157714a, + 0x127984, + 0x15886c3, + 0x1c3448, + 0x21a043, + 0x226783, + 0x20f583, + 0x214883, + 0x24acc3, + 0x205d83, + 0x1c3448, + 0x21a043, + 0x226783, + 0x2eef84, + 0x24acc3, + 0x2cf905, + 0x26b544, + 0x21a043, + 0x226783, + 0x20f583, + 0x200ec2, + 0x214883, + 0x24acc3, + 0x19303, + 0xf9b06, + 0xc8204, + 0x12fb86, + 0x20bec3, + 0x21a043, + 0x226783, + 0x20f583, + 0x200ec2, + 0x214883, + 0x24acc3, + 0x219303, + 0x20b642, + 0x21a043, + 0x23e609, + 0x226783, + 0x2c22c9, + 0x214e43, + 0x214883, + 0x90544, + 0x24acc3, + 0x30b648, + 0x245ac7, + 0x33a505, + 0x62386, + 0xcc388, + 0x13a509, + 0x1e5ac8, + 0x1d5bc7, + 0x105e0a, + 0x1a9fcb, + 0x12e787, + 0x4d688, + 0x1e244a, + 0xcea48, + 0x17149, + 0x302c7, + 0x1bb647, + 0x1ec048, + 0xa8408, + 0x4ee4f, + 0xb79c5, + 0xa8707, + 0x1eeb86, + 0x1afc47, + 0x12be46, + 0xb5fc8, + 0xc28c6, + 0x1eb547, + 0x135dc9, + 0x36c87, + 0x1b3209, + 0xd5949, + 0xdcac6, + 0xdf908, + 0xcc645, + 0xf808a, + 0xea7c8, + 0x69243, + 0xf2648, + 0x412c7, + 0x171045, + 0xa1050, + 0x7803, + 0x1eb3c7, + 0x16085, + 0x106b48, + 0x1ea2c5, + 0xedfc3, + 0x1688, + 0x52c6, + 0x164b89, + 0xc5407, + 0x1bf18b, + 0x82404, + 0x11ae04, + 0x1215cb, + 0x121b88, + 0x122347, + 0x14f985, + 0x21a043, + 0x226783, + 0x204703, + 0x24acc3, + 0x24c843, + 0x20f583, + 0x21a043, + 0x226783, + 0x20f583, + 0x214e43, + 0x214883, + 0x24acc3, + 0xabf8b, 0x2000c2, - 0x216542, - 0x20cb83, - 0xd42, - 0x1582, - 0x1642, - 0x793c8, - 0x1b7409, - 0x1c4b88, - 0x16542, + 0x20b642, + 0x24acc3, + 0x45c2, + 0xec2, + 0xf82, + 0x1c3448, + 0x13bf09, + 0x1cd6c8, + 0xb642, 0x2000c2, - 0x216542, + 0x20b642, 0x200382, 0x2005c2, - 0x202042, - 0x2296c3, - 0x148ec6, + 0x2024c2, + 0x214883, + 0x18846, 0x2003c2, - 0xd1984, + 0x23984, 0x2000c2, - 0x253c43, - 0x216542, - 0x216543, - 0x222bc3, + 0x20bec3, + 0x20b642, + 0x21a043, + 0x226783, 0x200382, - 0x343b43, - 0x243543, - 0x216443, - 0x21b544, - 0x2296c3, - 0x20b243, - 0xd903, - 0x20cb83, - 0x30ba84, - 0x201643, - 0x343b43, - 0x216542, - 0x216543, - 0x222bc3, - 0x343b43, - 0x216443, - 0x2296c3, - 0x20d903, - 0x20cb83, - 0x3c5747, - 0x216543, - 0x2868c7, - 0x3823c6, - 0x209843, - 0x21a003, - 0x343b43, - 0x20e443, - 0x2b1b84, + 0x20f583, + 0x20bc83, + 0x214e43, + 0x225a04, + 0x214883, + 0x21c243, + 0x24acc3, + 0x201b04, + 0x200f83, + 0x20f583, + 0x20b642, + 0x21a043, + 0x226783, + 0x20f583, + 0x214e43, + 0x214883, + 0x208c43, + 0x24acc3, + 0x3ceb47, + 0x21a043, + 0x242ec7, + 0x32b106, + 0x212e83, + 0x226dc3, + 0x20f583, + 0x211983, + 0x25c204, + 0x2580c4, + 0x34ae46, + 0x23bc83, + 0x214883, + 0x13404b, + 0x24acc3, + 0x2cf905, + 0x336d44, + 0x3db4c3, + 0x2543c3, + 0x2e66c7, + 0x23ae45, + 0x4f43, + 0x21a043, + 0x226783, + 0x20f583, + 0x214e43, + 0x214883, + 0x1c77c4, + 0x24acc3, + 0xbb43, + 0x8c314a8c, + 0xe28c3, + 0x68ec7, + 0x8b246, + 0x1d95c7, + 0x1369c5, + 0x214202, + 0x25e203, + 0x21c683, + 0x20bec3, + 0x8ce1a043, + 0x20c942, + 0x226783, + 0x207783, + 0x20f583, + 0x25c204, + 0x20de83, + 0x349143, + 0x214e43, + 0x225a04, + 0x8d203642, + 0x214883, + 0x24acc3, + 0x211b43, + 0x219d83, + 0x214903, + 0x22ccc2, + 0x200f83, + 0x1c3448, + 0x20f583, + 0x18b43, + 0x220c04, + 0x20bec3, + 0x20b642, + 0x21a043, 0x243544, - 0x3d66c6, - 0x202803, - 0x2296c3, - 0x127f0b, - 0x20cb83, - 0x2655c5, - 0x2f7184, - 0x3b6703, - 0x343483, - 0x2db6c7, - 0x2f6985, - 0x1a1003, - 0x216543, - 0x222bc3, - 0x343b43, - 0x216443, - 0x2296c3, - 0x1c1184, - 0x20cb83, - 0x1fa83, - 0x89f0b24c, - 0x58083, - 0x4bc47, - 0x80dc6, - 0x120047, - 0x133d85, - 0x205242, - 0x246dc3, - 0x211d43, - 0x253c43, - 0x8aa16543, - 0x2080c2, - 0x222bc3, - 0x204f03, - 0x343b43, - 0x2b1b84, - 0x34b203, - 0x27b903, - 0x216443, - 0x21b544, - 0x8ae06c02, - 0x2296c3, - 0x20cb83, - 0x20e603, - 0x209203, - 0x2883c3, - 0x22a042, - 0x201643, - 0x793c8, - 0x343b43, - 0x1a143, - 0x258bc4, - 0x253c43, - 0x216542, - 0x216543, - 0x23ec84, - 0x222bc3, - 0x343b43, - 0x2b1b84, - 0x243543, - 0x239104, - 0x28d4c4, - 0x2e8306, - 0x21b544, - 0x2296c3, - 0x20cb83, - 0x21f6c3, - 0x27d046, - 0x4290b, - 0x32f46, - 0xb6c0a, - 0x11faca, - 0x793c8, - 0x22f004, - 0x8c216543, - 0x32c744, - 0x222bc3, - 0x219a44, - 0x343b43, - 0x284103, - 0x216443, - 0x2296c3, - 0x7ca83, - 0x20cb83, - 0x31c03, - 0x348b0b, - 0x3d368a, - 0x3e8e4c, - 0xefc08, + 0x226783, + 0x20f583, + 0x25c204, + 0x20bc83, + 0x279504, + 0x230944, + 0x2f3c06, + 0x225a04, + 0x214883, + 0x24acc3, + 0x205443, + 0x27b8c6, + 0x474cb, + 0x38286, + 0x489ca, + 0x128d8a, + 0x1c3448, + 0x22f8c4, + 0x8e61a043, + 0x20be84, + 0x226783, + 0x2d1704, + 0x20f583, + 0x37ee83, + 0x214e43, + 0x214883, + 0x24acc3, + 0x23c83, + 0x35174b, + 0x3de04a, + 0x3f2ccc, + 0xfc148, 0x2000c2, - 0x216542, + 0x20b642, 0x200382, - 0x2b96c5, - 0x2b1b84, - 0x201582, - 0x216443, - 0x28d4c4, - 0x204cc2, + 0x239805, + 0x25c204, + 0x200ec2, + 0x214e43, + 0x230944, + 0x201f42, 0x2003c2, - 0x202b02, - 0x22a042, - 0x53c43, - 0x4042, - 0x2d5fc9, - 0x278a08, - 0x3d8a09, - 0x39d3c9, - 0x2116ca, - 0x21424a, - 0x208d02, - 0x22e702, - 0x16542, - 0x216543, - 0x213b02, - 0x24a1c6, - 0x378742, - 0x47402, - 0x201442, - 0x3c7c8e, - 0x21f60e, - 0x3d1b47, - 0x219cc2, - 0x222bc3, - 0x343b43, - 0x20bac2, + 0x206382, + 0x22ccc2, + 0xbec3, + 0x6282, + 0x2de849, + 0x27fc88, + 0x366989, + 0x3a7f49, + 0x23240a, + 0x31170a, + 0x202882, + 0x36e3c2, + 0xb642, + 0x21a043, + 0x203682, + 0x24ed46, + 0x3347c2, + 0x4a282, + 0x200d82, + 0x3aa34e, + 0x22140e, + 0x214807, + 0x218342, + 0x226783, + 0x20f583, + 0x2380c2, 0x2005c2, - 0x6a7c3, - 0x23ee8f, - 0x21ee02, - 0x2eae47, - 0x2e2587, - 0x2e61c7, - 0x2f0e4c, - 0x2f2e0c, - 0x258884, - 0x28c28a, - 0x21f542, - 0x207bc2, - 0x2cf304, + 0x31a43, + 0x24374f, + 0x24f082, + 0x3cdac7, + 0x2ccdc7, + 0x3382c7, + 0x2d12cc, + 0x2dc1cc, + 0x2208c4, + 0x29588a, + 0x221342, + 0x20af02, + 0x2d7504, 0x200702, - 0x2d8882, - 0x2f3044, - 0x21ab82, - 0x209d42, - 0x1b283, - 0x2a3787, - 0x288345, - 0x2205c2, - 0x319f04, - 0x30f082, - 0x2ef548, - 0x2296c3, - 0x3773c8, - 0x204d82, - 0x258a45, - 0x39b086, - 0x20cb83, - 0x2059c2, - 0x300947, - 0x4642, - 0x2504c5, - 0x203505, - 0x201782, - 0x207f02, - 0x3cfd8a, - 0x27c68a, - 0x279c42, - 0x2a94c4, - 0x200f02, - 0x271148, - 0x20e002, - 0x2b4bc8, - 0x17c1, - 0x316887, - 0x3174c9, - 0x203582, - 0x31c385, - 0x372b05, - 0x3d088b, - 0x3d6c4c, - 0x237288, - 0x332588, - 0x229782, - 0x259342, + 0x251ec2, + 0x2dc404, + 0x21f082, + 0x212a82, + 0x22043, + 0x2c2947, + 0x320f45, + 0x224902, + 0x31f984, + 0x39b302, + 0x2fba08, + 0x214883, + 0x385ec8, + 0x207602, + 0x220a85, + 0x3a5a06, + 0x24acc3, + 0x208782, + 0x307847, + 0x4d42, + 0x256145, + 0x37b505, + 0x2010c2, + 0x20b242, + 0x3d074a, + 0x28358a, + 0x2827c2, + 0x2b6ac4, + 0x201b02, + 0x325548, + 0x203b42, + 0x22a888, + 0x1101, + 0x31c507, + 0x31d209, + 0x2561c2, + 0x3231c5, + 0x381a85, + 0x21310b, + 0x34b3cc, + 0x236f48, + 0x33b3c8, + 0x205402, + 0x2a5982, 0x2000c2, - 0x793c8, - 0x216542, - 0x216543, + 0x1c3448, + 0x20b642, + 0x21a043, 0x200382, - 0x204cc2, - 0xd903, + 0x201f42, 0x2003c2, - 0x20cb83, - 0x202b02, + 0x24acc3, + 0x206382, 0x2000c2, - 0x146c05, - 0x8d616542, - 0x10b384, - 0x405c5, - 0x8e743b43, - 0x21b283, - 0x201582, - 0x2296c3, - 0x3e8603, - 0x8ea0cb83, - 0x2faf43, - 0x2dc2c6, - 0xf57c5, - 0x1602b03, - 0x146c05, - 0x148d8b, - 0x793c8, - 0x8dbb6d08, - 0x6be87, - 0x8deca7ca, - 0x791c7, - 0x10f7c5, - 0x8e200f89, - 0x2f20d, - 0x430c2, - 0x11b842, - 0xe01, - 0xe91c4, - 0xb530a, - 0x7c4c7, - 0x30044, - 0x30083, - 0x30084, - 0x8f201f02, - 0x8f600ac2, - 0x8fa03b42, - 0x8fe030c2, - 0x90208742, - 0x90604182, - 0xb46c7, - 0x90a16542, - 0x90e19d82, - 0x9121d802, - 0x91603242, - 0x21f603, - 0x2a2c4, - 0x91aac1c8, - 0x213643, - 0x91e18902, - 0x68508, - 0x92204982, - 0x63187, - 0x1b88c7, - 0x92600042, - 0x92a00d82, - 0x92e00182, - 0x932042c2, - 0x93605502, - 0x93a005c2, - 0x11f405, - 0x20af03, - 0x2f44c4, - 0x93e00702, - 0x94211b82, - 0x94605542, - 0x92b8b, - 0x94a00c42, - 0x95256e02, - 0x95601582, - 0x95a02042, - 0x98e48, - 0x95e28882, - 0x96200bc2, - 0x96603742, - 0x96a77782, - 0x96e06c02, - 0x97205782, - 0x97604cc2, - 0x97a18f02, - 0x97e0d502, - 0x9820f502, - 0xac8c4, - 0x332ec3, - 0x9863d1c2, - 0x98a0bbc2, - 0x98e0cfc2, - 0x992006c2, - 0x996003c2, - 0x99a00a82, - 0xfa6c8, - 0x9c347, - 0x99e037c2, - 0x9a202a82, - 0x9a602b02, - 0x9aa0a0c2, - 0x176a8c, - 0x9ae2bdc2, - 0x9b22ce82, - 0x9b602e02, - 0x9ba05002, - 0x9be08e42, - 0x9c211842, - 0x9c6089c2, - 0x9ca13342, - 0x9ce81202, - 0x9d281742, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x207c3, - 0xd2443, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x94f4b203, - 0x2207c3, - 0x3c25c4, - 0x3d8906, - 0x309a43, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x35c349, - 0x204042, - 0x271c43, - 0x2cda43, - 0x3b6945, - 0x204f03, - 0x34b203, - 0x2207c3, - 0x2e69c3, - 0x22e683, - 0x3ca009, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x34b203, - 0x2207c3, - 0x204042, - 0x204042, - 0x34b203, - 0x2207c3, - 0x9da16543, - 0x222bc3, - 0x39d603, - 0x216443, - 0x2296c3, - 0xd903, - 0x20cb83, - 0x793c8, - 0x216542, - 0x216543, - 0x2296c3, - 0x20cb83, - 0x145842, - 0x216543, - 0x222bc3, - 0x343b43, - 0x9e51d0c2, - 0x216443, - 0x2296c3, - 0xd903, - 0x20cb83, - 0x1381, - 0x21d684, - 0x216542, - 0x216543, - 0x200983, - 0x222bc3, - 0x256d44, - 0x2f5503, - 0x343b43, - 0x2b1b84, - 0x243543, - 0x216443, - 0x2296c3, - 0x20cb83, - 0x24c343, - 0x355b45, - 0x22e683, - 0x201643, + 0x14f985, + 0x8fa0b642, + 0x114bc4, + 0x44d85, + 0x90a0f583, + 0xc3fc4, + 0x222043, + 0x200ec2, + 0x214883, + 0x3c8a03, + 0x90e4acc3, + 0x305103, + 0x2e7906, + 0x198285, + 0x1619303, + 0x1bf3c5, + 0x14f985, + 0x1519cb, + 0x1c3448, + 0x8fe0dcc8, + 0x5aec7, + 0x903c488a, + 0x10210c, + 0x1c3247, + 0x1a4045, + 0x907ecf49, + 0x2facd, + 0x8a3c2, + 0x122182, + 0xc01, + 0x103e84, + 0xbf58a, + 0x833c7, + 0x16dc4, + 0x16e03, + 0x16e04, + 0x91604042, + 0x91a00b02, + 0x91e01d42, + 0x922016c2, + 0x9260f202, + 0x92a03d82, + 0xf5d87, + 0x92e0b642, + 0x93218402, + 0x9362b602, + 0x93a101c2, + 0x221403, + 0x36604, + 0x93f008c8, + 0x239cc3, + 0x94219482, + 0x727c8, + 0x94603f82, + 0x871c7, + 0x1c1087, + 0x94a00042, + 0x94e04142, + 0x95200182, + 0x95606502, + 0x95a13f82, + 0x95e005c2, + 0x1a8385, + 0x21e503, + 0x3cc144, + 0x96200702, + 0x9661c4c2, + 0x96a03e02, + 0x9bc0b, + 0x96e03f02, + 0x976593c2, + 0x97a00ec2, + 0x97e024c2, + 0xa2388, + 0x9822ab02, + 0x98601942, + 0x98a0d3c2, + 0x98e82182, + 0x99203642, + 0x99609082, + 0x99a01f42, + 0x99e12b42, + 0x9a209882, + 0x9a60b482, + 0x149204, + 0x23d1c3, + 0x9aa0b342, + 0x9ae1a182, + 0x9b206a42, + 0x9b6006c2, + 0x9ba003c2, + 0x9be07002, + 0x104c48, + 0xac107, + 0x9c205442, + 0x9c6026c2, + 0x9ca06382, + 0x9ce213c2, + 0x16018c, + 0x9d2021c2, + 0x9d62ebc2, + 0x9da07182, + 0x9de07882, + 0x9e20b382, + 0x9e609142, + 0x9ea0d442, + 0x9ee138c2, + 0x9f28c442, + 0x9f68cd82, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x24b03, + 0xcd883, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x9720de83, + 0x224b03, + 0x3b8384, + 0x366886, + 0x310783, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x378049, + 0x206282, + 0x370903, + 0x2d5c43, + 0x20cac5, + 0x207783, + 0x20de83, + 0x224b03, + 0x2f33c3, + 0x23fac3, + 0x227b89, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x20de83, + 0x224b03, + 0x206282, + 0x206282, + 0x20de83, + 0x224b03, + 0x9fe1a043, + 0x226783, + 0x3a8183, + 0x214e43, + 0x214883, + 0x24acc3, + 0x1c3448, + 0x20b642, + 0x21a043, + 0x214883, + 0x24acc3, + 0x14e5c2, + 0x21a043, + 0x226783, + 0x20f583, + 0xa0913002, + 0x214e43, + 0x214883, + 0x24acc3, + 0xcc1, + 0x2346c4, + 0x262603, + 0x20b642, + 0x21a043, + 0x3bfcc3, + 0x226783, + 0x2607c4, + 0x204703, + 0x20f583, + 0x25c204, + 0x20bc83, + 0x214e43, + 0x214883, + 0x208c43, + 0x24acc3, + 0x240f03, + 0x2423c3, + 0x33a505, + 0x23fac3, + 0x200f83, 0x882, - 0xd903, - 0x216542, - 0x216543, - 0x34b203, - 0x2296c3, - 0x20cb83, + 0x20b642, + 0x21a043, + 0x20de83, + 0x214883, + 0x24acc3, 0x2000c2, - 0x253c43, - 0x793c8, - 0x216543, - 0x222bc3, - 0x343b43, - 0x239c86, - 0x2b1b84, - 0x243543, - 0x21b544, - 0x2296c3, - 0x20cb83, - 0x21f6c3, - 0xe804, - 0x2e702, - 0x216543, - 0x20a83, - 0x222bc3, - 0x1582, - 0x2296c3, - 0x20cb83, - 0x10e104, - 0x6ff44, - 0x2a02, - 0x148bb07, - 0x125887, - 0x216543, - 0x32f46, - 0x222bc3, - 0x343b43, - 0xf1386, - 0x2296c3, - 0x20cb83, - 0x32f188, - 0x3323c9, - 0x341cc9, - 0x34b688, - 0x39d208, - 0x39d209, - 0x325d0a, - 0x36084a, - 0x3979ca, - 0x39ecca, - 0x3d368a, - 0x3dfecb, - 0x2fc28d, - 0x2fcf4f, - 0x247450, - 0x3621cd, - 0x3813cc, - 0x39ea0b, - 0x16108, - 0x13ec08, - 0x18a0c5, - 0x190209, - 0x1495c87, - 0xde645, + 0x20bec3, + 0x1c3448, + 0x21a043, + 0x226783, + 0x20f583, + 0x23c686, + 0x25c204, + 0x20bc83, + 0x225a04, + 0x214883, + 0x24acc3, + 0x205443, + 0x11d44, + 0x16e3c2, + 0x21a043, + 0x24dc3, + 0x226783, + 0xec2, + 0x214883, + 0x24acc3, + 0x791c4, + 0x78884, + 0x19c2, + 0x1568287, + 0x152347, + 0x21a043, + 0x38286, + 0x226783, + 0x20f583, + 0xfda46, + 0x214883, + 0x24acc3, + 0x337788, + 0x33b209, + 0x34a749, + 0x354348, + 0x3a7d88, + 0x3a7d89, + 0x33060a, + 0x369eca, + 0x3a280a, + 0x3a8f8a, + 0x3de04a, + 0x3ede8b, + 0x365a4d, + 0x24a2cf, + 0x24fe10, + 0x36e74d, + 0x38ca8c, + 0x3a8ccb, + 0x1a3447, + 0x13454e, + 0x138a0a, + 0x13af09, + 0x14a749, + 0x16c949, + 0x16cb8a, + 0x176f49, + 0x177889, + 0x17898b, + 0x19c08, + 0x112e48, + 0x59d09, + 0x149e747, + 0xe9545, + 0x21a043, + 0x226783, + 0x20f583, + 0x214e43, + 0x214883, + 0x24acc3, + 0x4acc3, 0x2000c2, - 0x2f67c5, - 0x209d03, - 0xa1e16542, - 0x222bc3, - 0x343b43, - 0x380b87, - 0x24c243, - 0x216443, - 0x2296c3, - 0x257743, - 0x20b243, - 0x20f1c3, - 0x20d903, - 0x20cb83, - 0x259186, - 0x213402, - 0x201643, - 0x793c8, + 0x23ac85, + 0x222003, + 0xa4e0b642, + 0x226783, + 0x20f583, + 0x2c1a07, + 0x21e803, + 0x214e43, + 0x214883, + 0x262243, + 0x21c243, + 0x20f0c3, + 0x208c43, + 0x24acc3, + 0x3ae506, + 0x249902, + 0x200f83, + 0x1c3448, 0x2000c2, - 0x253c43, - 0x216542, - 0x216543, - 0x222bc3, - 0x343b43, - 0x2b1b84, - 0x216443, - 0x2296c3, - 0x20cb83, - 0x202b03, - 0x125887, - 0x14182, - 0x10e684, - 0x1534746, + 0x20bec3, + 0x20b642, + 0x21a043, + 0x226783, + 0x20f583, + 0x25c204, + 0x214e43, + 0x214883, + 0x24acc3, + 0x219303, + 0x152347, + 0x13c02, + 0x148744, + 0x153a806, 0x2000c2, - 0x216542, - 0x343b43, - 0x216443, - 0x20cb83, + 0x20b642, + 0x20f583, + 0x214e43, + 0x24acc3, } // children is the list of nodes' children, the parent's wildcard bit and the @@ -9781,655 +9896,667 @@ var children = [...]uint32{ 0x40000000, 0x50000000, 0x60000000, - 0x17bc5e9, - 0x17c05ef, - 0x17c45f0, - 0x17e85f1, - 0x19405fa, - 0x1958650, - 0x196c656, - 0x198465b, - 0x19a4661, - 0x19c8669, - 0x19e0672, - 0x1a08678, - 0x1a0c682, - 0x1a34683, - 0x1a3868d, - 0x1a5068e, - 0x1a54694, + 0x17ac5e4, + 0x17b05eb, + 0x17b45ec, + 0x17d45ed, + 0x192c5f5, + 0x194064b, + 0x1954650, + 0x1968655, + 0x198465a, + 0x19a8661, + 0x19c066a, + 0x1a0c670, + 0x1a10683, + 0x1a38684, + 0x1a3c68e, + 0x1a5468f, 0x1a58695, - 0x1a98696, - 0x1a9c6a6, - 0x1aa06a7, - 0x21aa46a8, - 0x61aac6a9, - 0x21ab46ab, - 0x1afc6ad, - 0x1b046bf, - 0x21b086c1, - 0x1b2c6c2, - 0x1b306cb, - 0x1b446cc, - 0x1b486d1, - 0x1b686d2, - 0x1b986da, - 0x1bb46e6, - 0x1bbc6ed, - 0x1be46ef, - 0x1bf86f9, - 0x21bfc6fe, - 0x1c006ff, - 0x1c98700, - 0x1cac726, - 0x1cc072b, - 0x1cfc730, - 0x1d0c73f, - 0x1d20743, - 0x1d38748, - 0x1ddc74e, - 0x2010777, - 0x2018804, - 0x2201c806, - 0x22020807, - 0x208c808, - 0x20f8823, - 0x211083e, - 0x2124844, - 0x2128849, - 0x213084a, - 0x214884c, - 0x214c852, - 0x2170853, - 0x21c085c, - 0x21c4870, - 0x221c8871, - 0x21e8872, - 0x21ec87a, - 0x21f087b, - 0x221c87c, - 0x62220887, - 0x22228888, - 0x2222c88a, - 0x227088b, - 0x227489c, - 0x6227889d, - 0x229489e, - 0x22e88a5, - 0x222ec8ba, - 0x222f08bb, - 0x222f88bc, - 0x222fc8be, - 0x223008bf, - 0x223048c0, - 0x230c8c1, - 0x23108c3, - 0x2231c8c4, - 0x223248c7, - 0x23348c9, - 0x23448cd, - 0x23f88d1, - 0x23fc8fe, - 0x2240c8ff, - 0x22410903, - 0x22418904, - 0x2470906, - 0x247491c, - 0x247891d, - 0x29ec91e, - 0x29f0a7b, - 0x22a98a7c, - 0x22a9caa6, - 0x22aa0aa7, - 0x22aacaa8, - 0x22ab0aab, - 0x22abcaac, - 0x22ac0aaf, - 0x22ac4ab0, - 0x22ac8ab1, - 0x22accab2, - 0x22ad0ab3, - 0x22adcab4, - 0x22ae0ab7, - 0x22aecab8, - 0x22af0abb, - 0x22af4abc, - 0x22af8abd, - 0x22b04abe, - 0x22b08ac1, - 0x22b14ac2, - 0x22b18ac5, - 0x22b1cac6, - 0x22b20ac7, - 0x2b24ac8, - 0x22b28ac9, - 0x22b34aca, - 0x22b38acd, - 0x2b3cace, - 0x2b44acf, + 0x1a5c696, + 0x1aa0697, + 0x1aa46a8, + 0x1aa86a9, + 0x21aac6aa, + 0x61ab46ab, + 0x21abc6ad, + 0x1b046af, + 0x1b106c1, + 0x21b146c4, + 0x1b386c5, + 0x1b3c6ce, + 0x1b506cf, + 0x1b546d4, + 0x1b746d5, + 0x1ba46dd, + 0x1bc46e9, + 0x1bcc6f1, + 0x1bf46f3, + 0x1c106fd, + 0x21c14704, + 0x21c18705, + 0x1c1c706, + 0x1cb4707, + 0x1cc872d, + 0x1cdc732, + 0x1d14737, + 0x1d24745, + 0x1d38749, + 0x1d5074e, + 0x1df4754, + 0x202877d, + 0x203080a, + 0x2203480c, + 0x2203880d, + 0x20a480e, + 0x2110829, + 0x2128844, + 0x213c84a, + 0x214084f, + 0x2144850, + 0x214c851, + 0x2164853, + 0x2168859, + 0x218485a, + 0x21d8861, + 0x21dc876, + 0x221e0877, + 0x2200878, + 0x2204880, + 0x2208881, + 0x2238882, + 0x6223c88e, + 0x2224488f, + 0x22248891, + 0x228c892, + 0x622908a3, + 0x22a48a4, + 0x23048a9, + 0x223088c1, + 0x2230c8c2, + 0x223148c3, + 0x223188c5, + 0x2231c8c6, + 0x23208c7, + 0x23288c8, + 0x232c8ca, + 0x223388cb, + 0x223408ce, + 0x23508d0, + 0x23608d4, + 0x24148d8, + 0x2418905, + 0x22428906, + 0x2242c90a, + 0x2243490b, + 0x249090d, + 0x2494924, + 0x2498925, + 0x249c926, + 0x2a90927, + 0x2a94aa4, + 0x22b3caa5, + 0x22b40acf, + 0x22b44ad0, 0x22b50ad1, - 0x62b5cad4, - 0x2ba0ad7, - 0x2ba4ae8, - 0x22bc4ae9, - 0x22bc8af1, + 0x22b54ad4, + 0x22b60ad5, + 0x22b64ad8, + 0x22b68ad9, + 0x22b6cada, + 0x22b70adb, + 0x22b74adc, + 0x22b80add, + 0x22b84ae0, + 0x22b90ae1, + 0x22b94ae4, + 0x22b98ae5, + 0x22b9cae6, + 0x22ba8ae7, + 0x22bacaea, + 0x22bb8aeb, + 0x22bbcaee, + 0x22bc0aef, + 0x22bc4af0, + 0x2bc8af1, 0x22bccaf2, - 0x22bd4af3, - 0x22bdcaf5, - 0x22be0af7, - 0x22be4af8, - 0x22becaf9, - 0x22bf0afb, - 0x22bf4afc, - 0x2bf8afd, - 0x22c18afe, - 0x22c1cb06, - 0x22c20b07, - 0x22c24b08, - 0x22c28b09, - 0x22c34b0a, - 0x22c38b0d, - 0x2c3cb0e, - 0x2c44b0f, - 0x2c4cb11, - 0x2c50b13, - 0x2c6cb14, - 0x2c84b1b, - 0x2c88b21, - 0x2c98b22, - 0x2ca4b26, - 0x2cd8b29, - 0x2ce0b36, + 0x22bd8af3, + 0x22bdcaf6, + 0x2be0af7, + 0x2be8af8, + 0x62bf4afa, + 0x22bfcafd, + 0x2c40aff, + 0x22c60b10, + 0x22c64b18, + 0x22c68b19, + 0x22c70b1a, + 0x22c78b1c, + 0x22c7cb1e, + 0x22c80b1f, + 0x22c88b20, + 0x22c8cb22, + 0x22c90b23, + 0x2c94b24, + 0x22cc0b25, + 0x22cc4b30, + 0x22cc8b31, + 0x2cccb32, + 0x22cd0b33, + 0x22cd4b34, + 0x22ce0b35, 0x22ce4b38, - 0x2cfcb39, - 0x22d04b3f, - 0x22d08b41, - 0x22d10b42, - 0x2e0cb44, - 0x22e10b83, - 0x2e18b84, - 0x2e1cb86, - 0x22e20b87, - 0x2e24b88, - 0x2e54b89, - 0x2e58b95, - 0x2e5cb96, - 0x2e74b97, - 0x2e88b9d, - 0x2eb0ba2, - 0x2ed8bac, - 0x2edcbb6, - 0x62ee0bb7, - 0x2f14bb8, - 0x2f18bc5, - 0x22f1cbc6, - 0x2f20bc7, - 0x2f48bc8, - 0x2f4cbd2, - 0x2f70bd3, - 0x2f74bdc, - 0x2f88bdd, - 0x2f8cbe2, - 0x2f90be3, - 0x2fb0be4, - 0x2fd4bec, - 0x22fd8bf5, - 0x22fdcbf6, - 0x2fe0bf7, - 0x22fe4bf8, - 0x2fe8bf9, - 0x2fecbfa, - 0x2ff0bfb, - 0x2ff4bfc, - 0x3010bfd, - 0x23014c04, - 0x2301cc05, - 0x3020c07, - 0x3048c08, - 0x305cc12, - 0x30d0c17, - 0x30dcc34, - 0x30e0c37, - 0x3100c38, - 0x3118c40, - 0x311cc46, - 0x3130c47, - 0x3148c4c, - 0x3168c52, - 0x3180c5a, - 0x3188c60, - 0x31a4c62, - 0x31c0c69, - 0x31c4c70, - 0x31f0c71, - 0x3210c7c, - 0x3230c84, - 0x3298c8c, - 0x32b8ca6, - 0x32d8cae, - 0x32dccb6, - 0x32f4cb7, - 0x3338cbd, - 0x33b8cce, - 0x33f4cee, - 0x33f8cfd, - 0x3404cfe, - 0x3424d01, - 0x3428d09, - 0x344cd0a, - 0x3454d13, - 0x3494d15, - 0x34e8d25, - 0x34ecd3a, - 0x34f0d3b, - 0x35e4d3c, - 0x235ecd79, - 0x235f0d7b, - 0x235f4d7c, - 0x35f8d7d, - 0x235fcd7e, - 0x23600d7f, - 0x23604d80, - 0x3608d81, - 0x2360cd82, - 0x2361cd83, - 0x23620d87, - 0x23624d88, - 0x23628d89, - 0x2362cd8a, - 0x23638d8b, - 0x2363cd8e, - 0x3654d8f, - 0x3678d95, - 0x3698d9e, - 0x3d0cda6, - 0x23d10f43, - 0x23d14f44, - 0x23d18f45, - 0x23d1cf46, - 0x3d2cf47, - 0x3d4cf4b, - 0x3f0cf53, - 0x3fdcfc3, - 0x404cff7, - 0x40a5013, - 0x418d029, - 0x41e5063, - 0x4221079, - 0x431d088, - 0x43e90c7, - 0x44810fa, - 0x4511120, - 0x4575144, - 0x47ad15d, - 0x48651eb, - 0x4931219, - 0x497d24c, - 0x4a0525f, - 0x4a41281, - 0x4a91290, - 0x4b092a4, - 0x64b0d2c2, - 0x64b112c3, - 0x64b152c4, - 0x4b912c5, - 0x4bed2e4, - 0x4c692fb, - 0x4ce131a, - 0x4d61338, - 0x4dcd358, - 0x4ef9373, - 0x4f513be, - 0x64f553d4, - 0x4fed3d5, - 0x4ff53fb, - 0x24ff93fd, - 0x50813fe, - 0x50cd420, - 0x5135433, - 0x51dd44d, - 0x52a5477, - 0x530d4a9, - 0x54214c3, - 0x65425508, - 0x65429509, - 0x548550a, - 0x54e1521, - 0x5571538, - 0x55ed55c, - 0x563157b, - 0x571558c, - 0x57495c5, - 0x57a95d2, - 0x581d5ea, - 0x58a5607, - 0x58e5629, - 0x5955639, - 0x65959655, - 0x5981656, - 0x5985660, - 0x59b5661, - 0x59d166d, - 0x5a15674, - 0x5a25685, - 0x5a3d689, - 0x5ab568f, - 0x5abd6ad, + 0x2ce8b39, + 0x2cf0b3a, + 0x2cfcb3c, + 0x2d04b3f, + 0x2d20b41, + 0x2d38b48, + 0x2d3cb4e, + 0x2d4cb4f, + 0x2d58b53, + 0x2d8cb56, + 0x2d94b63, + 0x22d98b65, + 0x2db0b66, + 0x22db8b6c, + 0x22dbcb6e, + 0x22dc4b6f, + 0x2ed0b71, + 0x22ed4bb4, + 0x2edcbb5, + 0x2ee0bb7, + 0x22ee4bb8, + 0x2ee8bb9, + 0x2f34bba, + 0x2f38bcd, + 0x2f3cbce, + 0x2f58bcf, + 0x2f6cbd6, + 0x2f94bdb, + 0x2fbcbe5, + 0x2fc0bef, + 0x62fc4bf0, + 0x2ff4bf1, + 0x2ff8bfd, + 0x22ffcbfe, + 0x3000bff, + 0x3028c00, + 0x302cc0a, + 0x3050c0b, + 0x3054c14, + 0x306cc15, + 0x3070c1b, + 0x3074c1c, + 0x3094c1d, + 0x30b4c25, + 0x230b8c2d, + 0x30bcc2e, + 0x230c0c2f, + 0x30c4c30, + 0x30c8c31, + 0x30ccc32, + 0x30d0c33, + 0x30f0c34, + 0x230f4c3c, + 0x230fcc3d, + 0x3100c3f, + 0x3128c40, + 0x313cc4a, + 0x31bcc4f, + 0x31c4c6f, + 0x31c8c71, + 0x31e4c72, + 0x31fcc79, + 0x3200c7f, + 0x3214c80, + 0x322cc85, + 0x3248c8b, + 0x3260c92, + 0x3268c98, + 0x3284c9a, + 0x329cca1, + 0x32a0ca7, + 0x32c8ca8, + 0x32e8cb2, + 0x3304cba, + 0x3308cc1, + 0x336ccc2, + 0x3388cdb, + 0x33b0ce2, + 0x33b4cec, + 0x33ccced, + 0x3410cf3, + 0x3490d04, + 0x34d0d24, + 0x34d4d34, + 0x34e0d35, + 0x3500d38, + 0x3508d40, + 0x3528d42, + 0x3530d4a, + 0x3574d4c, + 0x35c8d5d, + 0x35ccd72, + 0x36dcd73, + 0x236e4db7, + 0x236e8db9, + 0x236ecdba, + 0x236f0dbb, + 0x236f4dbc, + 0x36f8dbd, + 0x236fcdbe, + 0x23700dbf, + 0x23704dc0, + 0x3708dc1, + 0x370cdc2, + 0x23710dc3, + 0x23720dc4, + 0x23728dc8, + 0x23730dca, + 0x23734dcc, + 0x2373cdcd, + 0x23740dcf, + 0x23744dd0, + 0x375cdd1, + 0x3780dd7, + 0x37a0de0, + 0x3e18de8, + 0x23e1cf86, + 0x23e20f87, + 0x23e24f88, + 0x23e28f89, + 0x3e38f8a, + 0x3e58f8e, + 0x4018f96, + 0x40e9006, + 0x415903a, + 0x41b1056, + 0x429906c, + 0x42f10a6, + 0x432d0bc, + 0x44290cb, + 0x44f510a, + 0x458d13d, + 0x461d163, + 0x4681187, + 0x48b91a0, + 0x497122e, + 0x4a3d25c, + 0x4a8928f, + 0x4b112a2, + 0x4b4d2c4, + 0x4b9d2d3, + 0x4c152e7, + 0x64c19305, + 0x64c1d306, + 0x64c21307, + 0x4c9d308, + 0x4cf9327, + 0x4d7533e, + 0x4ded35d, + 0x4e6d37b, + 0x4ed939b, + 0x50053b6, + 0x505d401, + 0x65061417, + 0x50f9418, + 0x510143e, + 0x25105440, + 0x518d441, + 0x51d9463, + 0x5241476, + 0x52e9490, + 0x53b14ba, + 0x54194ec, + 0x552d506, + 0x6553154b, + 0x6553554c, + 0x559154d, + 0x55ed564, + 0x567d57b, + 0x56f959f, + 0x573d5be, + 0x58215cf, + 0x5855608, + 0x58b5615, + 0x592962d, + 0x59b164a, + 0x59f166c, + 0x5a6167c, + 0x65a65698, + 0x5a89699, + 0x5a8d6a2, + 0x5abd6a3, 0x5ad96af, - 0x5aed6b6, - 0x5b116bb, - 0x25b156c4, - 0x5b416c5, - 0x5b456d0, - 0x5b4d6d1, - 0x5b616d3, - 0x5b816d8, - 0x5b916e0, - 0x5b9d6e4, - 0x5bd96e7, - 0x5bdd6f6, - 0x5be56f7, - 0x5bf96f9, - 0x5c216fe, - 0x5c2d708, - 0x5c3570b, - 0x5c5d70d, - 0x5c81717, - 0x5c99720, - 0x5c9d726, - 0x5ca5727, - 0x5cad729, - 0x5cc172b, - 0x5d71730, - 0x5d7575c, - 0x5d7d75d, - 0x5d8175f, - 0x5da5760, - 0x5dc9769, - 0x5de5772, - 0x5df9779, - 0x5e0d77e, - 0x5e15783, - 0x5e1d785, - 0x5e25787, - 0x5e3d789, - 0x5e4d78f, - 0x5e51793, - 0x5e6d794, - 0x66f579b, - 0x672d9bd, - 0x67599cb, - 0x67759d6, - 0x67799dd, - 0x2677d9de, - 0x679d9df, - 0x67bd9e7, - 0x68019ef, - 0x6809a00, - 0x2680da02, - 0x26811a03, - 0x6819a04, - 0x6a35a06, - 0x6a49a8d, - 0x26a4da92, - 0x6a51a93, - 0x6a59a94, - 0x26a5da96, - 0x26a61a97, - 0x26a6da98, - 0x26a7da9b, - 0x26a85a9f, - 0x26a91aa1, - 0x6a95aa4, - 0x26a99aa5, - 0x26ab1aa6, - 0x26ab9aac, - 0x26abdaae, - 0x26ac5aaf, - 0x26ac9ab1, - 0x26acdab2, - 0x26ad5ab3, - 0x6addab5, - 0x6af1ab7, - 0x6b19abc, - 0x6b55ac6, - 0x6b59ad5, - 0x6b91ad6, - 0x6bb5ae4, - 0x770daed, - 0x7711dc3, - 0x7715dc4, - 0x27719dc5, - 0x771ddc6, - 0x27721dc7, - 0x7725dc8, - 0x27731dc9, - 0x7735dcc, - 0x7739dcd, - 0x2773ddce, - 0x7741dcf, - 0x27749dd0, - 0x774ddd2, - 0x7751dd3, - 0x27761dd4, - 0x7765dd8, - 0x7769dd9, - 0x776ddda, - 0x7771ddb, - 0x27775ddc, - 0x7779ddd, - 0x777ddde, - 0x7781ddf, - 0x7785de0, - 0x2778dde1, - 0x7791de3, - 0x7795de4, - 0x7799de5, - 0x2779dde6, - 0x77a1de7, - 0x277a9de8, - 0x277addea, - 0x77c9deb, - 0x77e1df2, - 0x7825df8, - 0x7829e09, - 0x784de0a, - 0x7861e13, - 0x7865e18, + 0x5b1d6b6, + 0x5b2d6c7, + 0x5b456cb, + 0x5bbd6d1, + 0x5bc56ef, + 0x5be16f1, + 0x5bf56f8, + 0x5c156fd, + 0x25c19705, + 0x5c41706, + 0x5c45710, + 0x5c4d711, + 0x5c61713, + 0x5c7d718, + 0x5c8571f, + 0x5c91721, + 0x5c95724, + 0x5cd1725, + 0x5cd5734, + 0x5cdd735, + 0x5cf1737, + 0x5d1973c, + 0x5d21746, + 0x5d25748, + 0x5d49749, + 0x5d6d752, + 0x5d8575b, + 0x5d89761, + 0x5d91762, + 0x5d99764, + 0x5dad766, + 0x5e6976b, + 0x5e6d79a, + 0x5e7579b, + 0x5e7979d, + 0x5e9d79e, + 0x5ebd7a7, + 0x5ed97af, + 0x5ee97b6, + 0x5efd7ba, + 0x5f057bf, + 0x5f0d7c1, + 0x5f117c3, + 0x5f197c4, + 0x5f357c6, + 0x5f457cd, + 0x5f497d1, + 0x5f657d2, + 0x67ed7d9, + 0x68259fb, + 0x6851a09, + 0x6869a14, + 0x688da1a, + 0x68ada23, + 0x68f1a2b, + 0x68f9a3c, + 0x268fda3e, + 0x26901a3f, + 0x6909a40, + 0x6b4da42, + 0x26b51ad3, + 0x26b55ad4, + 0x6b69ad5, + 0x26b6dada, + 0x6b71adb, + 0x6b79adc, + 0x26b85ade, + 0x26b95ae1, + 0x26b9dae5, + 0x26ba9ae7, + 0x6badaea, + 0x26bb1aeb, + 0x26bc9aec, + 0x26bd1af2, + 0x26bd9af4, + 0x26bddaf6, + 0x26be5af7, + 0x6be9af9, + 0x26bedafa, + 0x6bf1afb, + 0x26bfdafc, + 0x6c05aff, + 0x6c19b01, + 0x6c1db06, + 0x6c45b07, + 0x6c81b11, + 0x6c85b20, + 0x6cbdb21, + 0x6ce5b2f, + 0x7841b39, + 0x7845e10, + 0x7849e11, + 0x2784de12, + 0x7851e13, + 0x27855e14, + 0x7859e15, + 0x27865e16, 0x7869e19, - 0x7a2de1a, - 0x27a31e8b, - 0x27a39e8c, - 0x27a3de8e, - 0x27a41e8f, - 0x7a49e90, - 0x7b25e92, - 0x27b31ec9, - 0x27b35ecc, - 0x27b39ecd, - 0x27b3dece, - 0x7b41ecf, - 0x7b6ded0, - 0x7b79edb, - 0x7b7dede, - 0x7ba1edf, - 0x7badee8, - 0x7bcdeeb, - 0x7bd1ef3, - 0x7c09ef4, - 0x7ebdf02, - 0x7f79faf, - 0x7f7dfde, - 0x7f81fdf, - 0x7f95fe0, - 0x7f99fe5, - 0x7fcdfe6, - 0x8005ff3, - 0x2800a001, - 0x8026002, - 0x804e009, - 0x8052013, - 0x8076014, - 0x809201d, - 0x80ba024, - 0x80ca02e, + 0x786de1a, + 0x27871e1b, + 0x7875e1c, + 0x2787de1d, + 0x7881e1f, + 0x7885e20, + 0x27895e21, + 0x7899e25, + 0x789de26, + 0x78a1e27, + 0x78a5e28, + 0x278a9e29, + 0x78ade2a, + 0x78b1e2b, + 0x78b5e2c, + 0x78b9e2d, + 0x278c1e2e, + 0x78c5e30, + 0x78c9e31, + 0x78cde32, + 0x278d1e33, + 0x78d5e34, + 0x278dde35, + 0x278e1e37, + 0x78fde38, + 0x790de3f, + 0x794de43, + 0x7951e53, + 0x7975e54, + 0x7989e5d, + 0x798de62, + 0x7999e63, + 0x7b61e66, + 0x27b65ed8, + 0x27b6ded9, + 0x27b71edb, + 0x27b75edc, + 0x7b7dedd, + 0x7c59edf, + 0x27c65f16, + 0x27c69f19, + 0x27c6df1a, + 0x27c71f1b, + 0x7c75f1c, + 0x7ca1f1d, + 0x7cb9f28, + 0x7cbdf2e, + 0x7cddf2f, + 0x7ce9f37, + 0x7d09f3a, + 0x7d0df42, + 0x7d45f43, + 0x800df51, + 0x80ca003, 0x80ce032, 0x80d2033, - 0x810e034, - 0x811a043, - 0x8142046, - 0x81de050, - 0x281e2077, - 0x81e6078, - 0x81f6079, - 0x281fa07d, - 0x820a07e, - 0x8226082, - 0x8246089, - 0x824a091, - 0x825e092, - 0x8272097, - 0x827609c, - 0x827a09d, - 0x827e09e, - 0x829e09f, - 0x834a0a7, - 0x834e0d2, - 0x836e0d3, - 0x839a0db, - 0x283aa0e6, - 0x83ae0ea, - 0x83be0eb, - 0x83f60ef, - 0x83fe0fd, - 0x84120ff, - 0x8432104, - 0x844e10c, - 0x845a113, - 0x8472116, - 0x84aa11c, - 0x84ae12a, - 0x858212b, - 0x8586160, - 0x859a161, - 0x85a2166, - 0x85ba168, - 0x85be16e, - 0x85ca16f, - 0x85d6172, - 0x85da175, - 0x85e2176, - 0x85e6178, - 0x860a179, - 0x864a182, - 0x864e192, - 0x866e193, - 0x86c219b, - 0x86f21b0, - 0x286f61bc, - 0x86fe1bd, - 0x87561bf, - 0x875a1d5, - 0x875e1d6, - 0x87621d7, - 0x87a61d8, - 0x87b61e9, - 0x87f61ed, - 0x87fa1fd, - 0x882a1fe, - 0x897620a, - 0x899e25d, - 0x89da267, - 0x8a02276, - 0x28a0a280, - 0x28a0e282, - 0x28a12283, - 0x8a1a284, - 0x8a26286, - 0x8b4a289, - 0x8b562d2, - 0x8b622d5, - 0x8b6e2d8, - 0x8b7a2db, + 0x80e6034, + 0x80ea039, + 0x811e03a, + 0x8156047, + 0x2815a055, + 0x8176056, + 0x819a05d, + 0x819e066, + 0x81be067, + 0x81da06f, + 0x81fe076, + 0x820e07f, + 0x8212083, + 0x8216084, + 0x824e085, + 0x825a093, + 0x8282096, + 0x282860a0, + 0x83220a1, + 0x283260c8, + 0x832a0c9, + 0x833a0ca, + 0x2833e0ce, + 0x83520cf, + 0x836e0d4, + 0x838e0db, + 0x83920e3, + 0x83a60e4, + 0x83ba0e9, + 0x83be0ee, + 0x83c60ef, + 0x83ca0f1, + 0x83ea0f2, + 0x84a20fa, + 0x284a6128, + 0x84aa129, + 0x84ca12a, + 0x84f6132, + 0x2850613d, + 0x850a141, + 0x8516142, + 0x855a145, + 0x855e156, + 0x8572157, + 0x859215c, + 0x85ae164, + 0x85ba16b, + 0x85da16e, + 0x860a176, + 0x8616182, + 0x86e6185, + 0x86ea1b9, + 0x86fe1ba, + 0x87021bf, + 0x871a1c0, + 0x871e1c6, + 0x872a1c7, + 0x87361ca, + 0x873a1cd, + 0x87421ce, + 0x87461d0, + 0x876a1d1, + 0x87a61da, + 0x87aa1e9, + 0x87ca1ea, + 0x881e1f2, + 0x884e207, + 0x28852213, + 0x885a214, + 0x88b2216, + 0x88b622c, + 0x88ba22d, + 0x88be22e, + 0x890222f, + 0x8912240, + 0x894e244, + 0x8952253, + 0x8982254, + 0x8ace260, + 0x8af22b3, + 0x8b322bc, + 0x8b622cc, + 0x28b6a2d8, + 0x28b6e2da, + 0x28b722db, + 0x8b7a2dc, 0x8b862de, - 0x8b922e1, - 0x8b9e2e4, - 0x8baa2e7, - 0x8bb62ea, - 0x8bc22ed, - 0x28bc62f0, - 0x8bd22f1, - 0x8bde2f4, - 0x8bea2f7, - 0x8bf22fa, - 0x8bfe2fc, - 0x8c0a2ff, - 0x8c16302, - 0x8c22305, - 0x8c2e308, - 0x8c3a30b, - 0x8c4630e, - 0x8c52311, - 0x8c5e314, - 0x8c6a317, - 0x8c7631a, - 0x8ca231d, - 0x8cae328, - 0x8cba32b, - 0x8cc632e, - 0x8cd2331, - 0x8cde334, - 0x8ce6337, + 0x8caa2e1, + 0x8cb632a, + 0x8cc232d, + 0x8cce330, + 0x8cda333, + 0x8ce6336, 0x8cf2339, 0x8cfe33c, 0x8d0a33f, 0x8d16342, 0x8d22345, - 0x8d2e348, - 0x8d3a34b, - 0x8d4634e, - 0x8d52351, + 0x28d26348, + 0x8d32349, + 0x8d3e34c, + 0x8d4a34f, + 0x8d52352, 0x8d5e354, 0x8d6a357, - 0x8d7235a, - 0x8d7e35c, - 0x8d8635f, - 0x8d92361, - 0x8d9e364, - 0x8daa367, - 0x8db636a, - 0x8dc236d, - 0x8dce370, - 0x8dda373, - 0x8de6376, - 0x8dea379, - 0x8df637a, - 0x8e1237d, - 0x8e16384, - 0x8e26385, - 0x8e4a389, - 0x8e4e392, - 0x8e92393, - 0x8e9a3a4, - 0x8eae3a6, - 0x8ee23ab, - 0x8f023b8, - 0x8f063c0, - 0x8f0e3c1, - 0x8f323c3, - 0x8f4a3cc, - 0x8f623d2, - 0x8f7a3d8, - 0x8f923de, - 0x28fda3e4, - 0x8fde3f6, - 0x900a3f7, - 0x901a402, - 0x902e406, + 0x8d7635a, + 0x8d8235d, + 0x8d8e360, + 0x8d9a363, + 0x8da6366, + 0x8db2369, + 0x8dbe36c, + 0x8dca36f, + 0x8dd6372, + 0x8e02375, + 0x8e0e380, + 0x8e1a383, + 0x8e26386, + 0x8e32389, + 0x8e3e38c, + 0x8e4638f, + 0x8e52391, + 0x8e5e394, + 0x8e6a397, + 0x8e7639a, + 0x8e8239d, + 0x8e8e3a0, + 0x8e9a3a3, + 0x8ea63a6, + 0x8eb23a9, + 0x8ebe3ac, + 0x8eca3af, + 0x8ed23b2, + 0x8ede3b4, + 0x8ee63b7, + 0x8ef23b9, + 0x8efe3bc, + 0x8f0a3bf, + 0x8f163c2, + 0x8f223c5, + 0x8f2e3c8, + 0x8f3a3cb, + 0x8f463ce, + 0x8f4a3d1, + 0x8f563d2, + 0x8f6e3d5, + 0x8f723db, + 0x8f823dc, + 0x8fa23e0, + 0x8fa63e8, + 0x8ff63e9, + 0x8ffa3fd, + 0x900e3fe, + 0x9042403, + 0x9062410, + 0x9066418, + 0x906e419, + 0x909241b, + 0x90aa424, + 0x90c242a, + 0x90da430, + 0x9102436, + 0x9116440, + 0x912e445, + 0x913244b, + 0x2917a44c, + 0x917e45e, + 0x91aa45f, + 0x91ba46a, + 0x91ce46e, } -// max children 650 (capacity 1023) -// max text offset 31341 (capacity 32767) +// max children 662 (capacity 1023) +// max text offset 32015 (capacity 32767) // max text length 36 (capacity 63) -// max hi 9227 (capacity 16383) -// max lo 9222 (capacity 16383) +// max hi 9331 (capacity 16383) +// max lo 9326 (capacity 16383) diff --git a/vendor/golang.org/x/text/internal/language/language.go b/vendor/golang.org/x/text/internal/language/language.go index 1e74d1af..6105bc7f 100644 --- a/vendor/golang.org/x/text/internal/language/language.go +++ b/vendor/golang.org/x/text/internal/language/language.go @@ -251,6 +251,13 @@ func (t Tag) Parent() Tag { // ParseExtension parses s as an extension and returns it on success. func ParseExtension(s string) (ext string, err error) { + defer func() { + if recover() != nil { + ext = "" + err = ErrSyntax + } + }() + scan := makeScannerString(s) var end int if n := len(scan.token); n != 1 { @@ -303,9 +310,17 @@ func (t Tag) Extensions() []string { // are of the allowed values defined for the Unicode locale extension ('u') in // https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. // TypeForKey will traverse the inheritance chain to get the correct value. +// +// If there are multiple types associated with a key, only the first will be +// returned. If there is no type associated with a key, it returns the empty +// string. func (t Tag) TypeForKey(key string) string { - if start, end, _ := t.findTypeForKey(key); end != start { - return t.str[start:end] + if _, start, end, _ := t.findTypeForKey(key); end != start { + s := t.str[start:end] + if p := strings.IndexByte(s, '-'); p >= 0 { + s = s[:p] + } + return s } return "" } @@ -329,13 +344,13 @@ func (t Tag) SetTypeForKey(key, value string) (Tag, error) { // Remove the setting if value is "". if value == "" { - start, end, _ := t.findTypeForKey(key) - if start != end { - // Remove key tag and leading '-'. - start -= 4 - + start, sep, end, _ := t.findTypeForKey(key) + if start != sep { // Remove a possible empty extension. - if (end == len(t.str) || t.str[end+2] == '-') && t.str[start-2] == '-' { + switch { + case t.str[start-2] != '-': // has previous elements. + case end == len(t.str), // end of string + end+2 < len(t.str) && t.str[end+2] == '-': // end of extension start -= 2 } if start == int(t.pVariant) && end == len(t.str) { @@ -381,14 +396,14 @@ func (t Tag) SetTypeForKey(key, value string) (Tag, error) { t.str = string(buf[:uStart+len(b)]) } else { s := t.str - start, end, hasExt := t.findTypeForKey(key) - if start == end { + start, sep, end, hasExt := t.findTypeForKey(key) + if start == sep { if hasExt { b = b[2:] } - t.str = fmt.Sprintf("%s-%s%s", s[:start], b, s[end:]) + t.str = fmt.Sprintf("%s-%s%s", s[:sep], b, s[end:]) } else { - t.str = fmt.Sprintf("%s%s%s", s[:start], value, s[end:]) + t.str = fmt.Sprintf("%s-%s%s", s[:start+3], value, s[end:]) } } return t, nil @@ -399,10 +414,10 @@ func (t Tag) SetTypeForKey(key, value string) (Tag, error) { // wasn't found. The hasExt return value reports whether an -u extension was present. // Note: the extensions are typically very small and are likely to contain // only one key-type pair. -func (t Tag) findTypeForKey(key string) (start, end int, hasExt bool) { +func (t Tag) findTypeForKey(key string) (start, sep, end int, hasExt bool) { p := int(t.pExt) if len(key) != 2 || p == len(t.str) || p == 0 { - return p, p, false + return p, p, p, false } s := t.str @@ -410,10 +425,10 @@ func (t Tag) findTypeForKey(key string) (start, end int, hasExt bool) { for p++; s[p] != 'u'; p++ { if s[p] > 'u' { p-- - return p, p, false + return p, p, p, false } if p = nextExtension(s, p); p == len(s) { - return len(s), len(s), false + return len(s), len(s), len(s), false } } // Proceed to the hyphen following the extension name. @@ -424,40 +439,28 @@ func (t Tag) findTypeForKey(key string) (start, end int, hasExt bool) { // Iterate over keys until we get the end of a section. for { - // p points to the hyphen preceding the current token. - if p3 := p + 3; s[p3] == '-' { - // Found a key. - // Check whether we just processed the key that was requested. - if curKey == key { - return start, p, true + end = p + for p++; p < len(s) && s[p] != '-'; p++ { + } + n := p - end - 1 + if n <= 2 && curKey == key { + if sep < end { + sep++ } - // Set to the next key and continue scanning type tokens. - curKey = s[p+1 : p3] + return start, sep, end, true + } + switch n { + case 0, // invalid string + 1: // next extension + return end, end, end, true + case 2: + // next key + curKey = s[end+1 : p] if curKey > key { - return p, p, true + return end, end, end, true } - // Start of the type token sequence. - start = p + 4 - // A type is at least 3 characters long. - p += 7 // 4 + 3 - } else { - // Attribute or type, which is at least 3 characters long. - p += 4 - } - // p points past the third character of a type or attribute. - max := p + 5 // maximum length of token plus hyphen. - if len(s) < max { - max = len(s) - } - for ; p < max && s[p] != '-'; p++ { - } - // Bail if we have exhausted all tokens or if the next token starts - // a new extension. - if p == len(s) || s[p+2] == '-' { - if curKey == key { - return start, p, true - } - return p, p, true + start = end + sep = p } } } @@ -465,7 +468,14 @@ func (t Tag) findTypeForKey(key string) (start, end int, hasExt bool) { // ParseBase parses a 2- or 3-letter ISO 639 code. // It returns a ValueError if s is a well-formed but unknown language identifier // or another error if another error occurred. -func ParseBase(s string) (Language, error) { +func ParseBase(s string) (l Language, err error) { + defer func() { + if recover() != nil { + l = 0 + err = ErrSyntax + } + }() + if n := len(s); n < 2 || 3 < n { return 0, ErrSyntax } @@ -476,7 +486,14 @@ func ParseBase(s string) (Language, error) { // ParseScript parses a 4-letter ISO 15924 code. // It returns a ValueError if s is a well-formed but unknown script identifier // or another error if another error occurred. -func ParseScript(s string) (Script, error) { +func ParseScript(s string) (scr Script, err error) { + defer func() { + if recover() != nil { + scr = 0 + err = ErrSyntax + } + }() + if len(s) != 4 { return 0, ErrSyntax } @@ -493,7 +510,14 @@ func EncodeM49(r int) (Region, error) { // ParseRegion parses a 2- or 3-letter ISO 3166-1 or a UN M.49 code. // It returns a ValueError if s is a well-formed but unknown region identifier // or another error if another error occurred. -func ParseRegion(s string) (Region, error) { +func ParseRegion(s string) (r Region, err error) { + defer func() { + if recover() != nil { + r = 0 + err = ErrSyntax + } + }() + if n := len(s); n < 2 || 3 < n { return 0, ErrSyntax } @@ -582,7 +606,14 @@ type Variant struct { // ParseVariant parses and returns a Variant. An error is returned if s is not // a valid variant. -func ParseVariant(s string) (Variant, error) { +func ParseVariant(s string) (v Variant, err error) { + defer func() { + if recover() != nil { + v = Variant{} + err = ErrSyntax + } + }() + s = strings.ToLower(s) if id, ok := variantIndex[s]; ok { return Variant{id, s}, nil diff --git a/vendor/golang.org/x/text/internal/language/parse.go b/vendor/golang.org/x/text/internal/language/parse.go index a2fdad89..47ee0fed 100644 --- a/vendor/golang.org/x/text/internal/language/parse.go +++ b/vendor/golang.org/x/text/internal/language/parse.go @@ -138,7 +138,7 @@ func (s *scanner) resizeRange(oldStart, oldEnd, newSize int) { b = make([]byte, n) copy(b, s.b[:oldStart]) } else { - b = s.b[:n:n] + b = s.b[:n] } copy(b[end:], s.b[oldEnd:]) s.b = b @@ -232,6 +232,13 @@ func Parse(s string) (t Tag, err error) { if s == "" { return Und, ErrSyntax } + defer func() { + if recover() != nil { + t = Und + err = ErrSyntax + return + } + }() if len(s) <= maxAltTaglen { b := [maxAltTaglen]byte{} for i, c := range s { @@ -483,7 +490,7 @@ func parseExtensions(scan *scanner) int { func parseExtension(scan *scanner) int { start, end := scan.start, scan.end switch scan.token[0] { - case 'u': + case 'u': // https://www.ietf.org/rfc/rfc6067.txt attrStart := end scan.scan() for last := []byte{}; len(scan.token) > 2; scan.scan() { @@ -503,27 +510,29 @@ func parseExtension(scan *scanner) int { last = scan.token end = scan.end } + // Scan key-type sequences. A key is of length 2 and may be followed + // by 0 or more "type" subtags from 3 to the maximum of 8 letters. var last, key []byte for attrEnd := end; len(scan.token) == 2; last = key { key = scan.token - keyEnd := scan.end - end = scan.acceptMinSize(3) + end = scan.end + for scan.scan(); end < scan.end && len(scan.token) > 2; scan.scan() { + end = scan.end + } // TODO: check key value validity - if keyEnd == end || bytes.Compare(key, last) != 1 { + if bytes.Compare(key, last) != 1 || scan.err != nil { // We have an invalid key or the keys are not sorted. // Start scanning keys from scratch and reorder. p := attrEnd + 1 scan.next = p keys := [][]byte{} for scan.scan(); len(scan.token) == 2; { - keyStart, keyEnd := scan.start, scan.end - end = scan.acceptMinSize(3) - if keyEnd != end { - keys = append(keys, scan.b[keyStart:end]) - } else { - scan.setError(ErrSyntax) - end = keyStart + keyStart := scan.start + end = scan.end + for scan.scan(); end < scan.end && len(scan.token) > 2; scan.scan() { + end = scan.end } + keys = append(keys, scan.b[keyStart:end]) } sort.Stable(bytesSort{keys, 2}) if n := len(keys); n > 0 { @@ -547,7 +556,7 @@ func parseExtension(scan *scanner) int { break } } - case 't': + case 't': // https://www.ietf.org/rfc/rfc6497.txt scan.scan() if n := len(scan.token); n >= 2 && n <= 3 && isAlpha(scan.token[1]) { _, end = parseTag(scan) diff --git a/vendor/golang.org/x/text/language/go1_1.go b/vendor/golang.org/x/text/language/go1_1.go index 380f4c09..c7435583 100644 --- a/vendor/golang.org/x/text/language/go1_1.go +++ b/vendor/golang.org/x/text/language/go1_1.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !go1.2 // +build !go1.2 package language diff --git a/vendor/golang.org/x/text/language/go1_2.go b/vendor/golang.org/x/text/language/go1_2.go index 38268c57..77aaaa29 100644 --- a/vendor/golang.org/x/text/language/go1_2.go +++ b/vendor/golang.org/x/text/language/go1_2.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build go1.2 // +build go1.2 package language diff --git a/vendor/golang.org/x/text/language/language.go b/vendor/golang.org/x/text/language/language.go index abfa17f6..289b3a36 100644 --- a/vendor/golang.org/x/text/language/language.go +++ b/vendor/golang.org/x/text/language/language.go @@ -412,6 +412,10 @@ func (t Tag) Extensions() []Extension { // are of the allowed values defined for the Unicode locale extension ('u') in // https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. // TypeForKey will traverse the inheritance chain to get the correct value. +// +// If there are multiple types associated with a key, only the first will be +// returned. If there is no type associated with a key, it returns the empty +// string. func (t Tag) TypeForKey(key string) string { if !compact.Tag(t).MayHaveExtensions() { if key != "rg" && key != "va" { diff --git a/vendor/golang.org/x/text/language/parse.go b/vendor/golang.org/x/text/language/parse.go index 11acfd88..59b04100 100644 --- a/vendor/golang.org/x/text/language/parse.go +++ b/vendor/golang.org/x/text/language/parse.go @@ -43,6 +43,13 @@ func Parse(s string) (t Tag, err error) { // https://www.unicode.org/reports/tr35/#Unicode_Language_and_Locale_Identifiers. // The resulting tag is canonicalized using the canonicalization type c. func (c CanonType) Parse(s string) (t Tag, err error) { + defer func() { + if recover() != nil { + t = Tag{} + err = language.ErrSyntax + } + }() + tt, err := language.Parse(s) if err != nil { return makeTag(tt), err @@ -79,6 +86,13 @@ func Compose(part ...interface{}) (t Tag, err error) { // tag is returned after canonicalizing using CanonType c. If one or more errors // are encountered, one of the errors is returned. func (c CanonType) Compose(part ...interface{}) (t Tag, err error) { + defer func() { + if recover() != nil { + t = Tag{} + err = language.ErrSyntax + } + }() + var b language.Builder if err = update(&b, part...); err != nil { return und, err @@ -142,6 +156,14 @@ var errInvalidWeight = errors.New("ParseAcceptLanguage: invalid weight") // Tags with a weight of zero will be dropped. An error will be returned if the // input could not be parsed. func ParseAcceptLanguage(s string) (tag []Tag, q []float32, err error) { + defer func() { + if recover() != nil { + tag = nil + q = nil + err = language.ErrSyntax + } + }() + var entry string for s != "" { if entry, s = split(s, ','); entry == "" { diff --git a/vendor/golang.org/x/text/language/tables.go b/vendor/golang.org/x/text/language/tables.go index 87e58a02..96b57f61 100644 --- a/vendor/golang.org/x/text/language/tables.go +++ b/vendor/golang.org/x/text/language/tables.go @@ -47,7 +47,7 @@ const ( _Zzzz = 251 ) -var regionToGroups = []uint8{ // 357 elements +var regionToGroups = []uint8{ // 358 elements // Entry 0 - 3F 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x00, @@ -98,8 +98,8 @@ var regionToGroups = []uint8{ // 357 elements 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, -} // Size: 381 bytes + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +} // Size: 382 bytes var paradigmLocales = [][3]uint16{ // 3 elements 0: [3]uint16{0x139, 0x0, 0x7b}, @@ -295,4 +295,4 @@ var matchRegion = []regionIntelligibility{ // 15 elements 14: {lang: 0x529, script: 0x3c, group: 0x80, distance: 0x5}, } // Size: 114 bytes -// Total table size 1471 bytes (1KiB); checksum: 4CB1CD46 +// Total table size 1472 bytes (1KiB); checksum: F86C669 diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go b/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go index e4c62289..8a7392c4 100644 --- a/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +++ b/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build go1.10 // +build go1.10 package bidirule diff --git a/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go b/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go index 02b9e1e9..bb0a9200 100644 --- a/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +++ b/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !go1.10 // +build !go1.10 package bidirule diff --git a/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go index d8c94e1b..42fa8d72 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.10 && !go1.13 // +build go1.10,!go1.13 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go index 16b11db5..56a0e1ea 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.13 && !go1.14 // +build go1.13,!go1.14 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go index 647f2d42..baacf32b 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.14 && !go1.16 // +build go1.14,!go1.16 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go index c937d097..f248effa 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.16 // +build go1.16 package bidi diff --git a/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go b/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go index 0ca0193e..f517fdb2 100644 --- a/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +++ b/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build !go1.10 // +build !go1.10 package bidi diff --git a/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go index 26fbd55a..f5a07882 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.10 && !go1.13 // +build go1.10,!go1.13 package norm diff --git a/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go index 2c58f09b..cb7239c4 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.13 && !go1.14 // +build go1.13,!go1.14 package norm diff --git a/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go index 7e1ae096..11b27330 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.14 && !go1.16 // +build go1.14,!go1.16 package norm diff --git a/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go index 9ea1b421..96a130d3 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build go1.16 // +build go1.16 package norm diff --git a/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go b/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go index 94290692..0175eae5 100644 --- a/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +++ b/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go @@ -1,5 +1,6 @@ // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. +//go:build !go1.10 // +build !go1.10 package norm diff --git a/vendor/modules.txt b/vendor/modules.txt index f330680f..ec5a0270 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -96,10 +96,10 @@ github.com/xeipuuv/gojsonpointer github.com/xeipuuv/gojsonreference # github.com/xeipuuv/gojsonschema v0.0.0-20170210233622-6b67b3fab74d github.com/xeipuuv/gojsonschema -# golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa +# golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 golang.org/x/crypto/md4 golang.org/x/crypto/pbkdf2 -# golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 +# golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 golang.org/x/net/http/httpguts golang.org/x/net/http/httpproxy golang.org/x/net/http2 @@ -112,7 +112,7 @@ golang.org/x/sync/semaphore golang.org/x/sys/internal/unsafeheader golang.org/x/sys/unix golang.org/x/sys/windows -# golang.org/x/text v0.3.5 +# golang.org/x/text v0.3.7 golang.org/x/text/internal/language golang.org/x/text/internal/language/compact golang.org/x/text/internal/tag